大彩 串口屏

资料下载
在这里插入图片描述

视频
在这里插入图片描述

屏幕程序创建

创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主界面设置

实现按钮和文本的添加,实现画面的切换
在这里插入图片描述

在这里插入图片描述
下面注释4有点问题,切换画面还是会下传指令集,只是无法在软件中进行指令集的设置了
在这里插入图片描述
在这里插入图片描述

按钮界面

首先第一步同上添加背景图片,然后添加选中后的图片并点击裁剪。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

文本设置

直接设置成用户主机输入(屏幕上显示的数据来自于用户单片机输入)即可
在这里插入图片描述
在这里插入图片描述

工程下载

M 系列不支持 USB 和串口下载,只支持 SD 卡下载。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功
请添加图片描述

启动好一遍以后就可以将sd卡拿出来了,不然他会每次都从sd卡加载一遍。

指令

在这里插入图片描述
或者通过这样查看
在这里插入图片描述

测试

在这里插入图片描述

波特率 9600
1、复位设备

EE 07 35 5A 53 A5 FF FC FF FF

请添加图片描述
请添加图片描述
2、画面切换

EE B1 00 00 04 FF FC FF FF 

请添加图片描述
4、设置文本

EE B1 10 00 04 00 05 36 FF FC FF FF 

在这里插入图片描述
在这里插入图片描述

虚拟串口调试

使用虚拟串口工具创建串口
在这里插入图片描述
在这里插入图片描述
这样就 可以进行收发了 ,测试过 完全没问题

STM32

移植

需要移植以下文件
在这里插入图片描述

发送文本

其中发送命令只需要修改如下函数,就可以通过直接调用hmi_driver.h中的函数实现文本框文字修改等等操作,当然也可以通过查询命令,直接自己写

#include "hmi_user_uart.h"

/*!
*   \brief  发送1个字节
*   \param  t 发送的字节
*/
void  SendChar(uchar t)
{
    
    
	  HAL_UART_Transmit(&huart3, &t,1, 1000);
}

像以下两种方法皆可,一种通过直接调用api(实际也就是给你把命令组合起来发送),一种自己直接发送命令。

uint8_t nbuf[]={
    
    	0xEE,0xB1 ,0x00,0x00 ,0x00 ,0xFF ,0xFC,0xFF,0xFF };

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    
    
		//
    SetTextValue(0,2,(uchar *)"小米");
		HAL_Delay(1000);
		HAL_UART_Transmit(&huart3, nbuf, 9, 1000);

请添加图片描述

写字画图,并设置颜色

在这里插入图片描述
他这里用两个字节表示rgb(应该是3个字节正好对应255 255 255),那么应该用的就是RGB565,一个像素用2个字节表示。画完一个,可以改变另外颜色直接画,从而达到直接切换圆的颜色的效果。

//绿色圆和红色圆之间切换
				if(keyFlag[0]==0)//液体回流检测电路
				{
    
    
					keyFlag[0]=1;
				  SetFcolor(0x400);//绿色 EE 41 04 00  FF FC FF FF 
					GUI_CircleFill(730, 320, 10);//EE 53 02 E4 01 40 00 0A FF FC FF FF 
				}
				else
				{
    
    
				  keyFlag[0]=0;
					SetFcolor(0xF800);//红色 EE 41 F8 00  FF FC FF FF
					GUI_CircleFill(730, 320, 10);
				}

按钮

在这里插入图片描述

SetButtonValue(0,30,1);//EE B1 10 00 00 00 1E 01 FF FC FF FF

这样就可以切换开关了,切换开关的图片从阿里巴巴矢量图标库

该API在此.C中在这里插入图片描述

出现的问题

当我们使用如下函数进行改变文本的中文值的时候,我们需要设定keil的编译方法为GB2312,而不能是UTF-8。不然发送出去的字符串是乱码的。

SetTextValue(0,2,(uchar *)"小米");

void SetTextValue(uint16 screen_id,uint16 control_id,uchar *str)
{
    
    
    BEGIN_CMD();
    TX_8(0xB1);
    TX_8(0x10);
    TX_16(screen_id);
    TX_16(control_id);
    SendStrings(str);
    END_CMD();
}
//最最后面就是调用这个函数
void  SendChar(uchar t)
{
    
    
	  HAL_UART_Transmit(&huart3, &t,1, 1000);
}

猜你喜欢

转载自blog.csdn.net/chengcao123/article/details/128900072