具有触摸功能的串口屏,相较于普通的TFT显示屏更适于进行桌面化管控。
区别于常规的界面设计,串口屏是通过软件先在电脑上进行效果设计及测试,在完成效果设计后,是通过串口一次性将设计结果全部下载给串口屏。
在使用时,是通过串口向显示屏发送指令来更新显示的内容或绘制的波形曲线。此外,它还可以通过触摸操作来选取功能或是设置参数。
本次使用的串口屏为7寸触摸屏,分辨率为800*480像素点。
其主界面如图1所示,它的设计界面如图2所示。
图1 主界面
图2 设计界面
在完成界面设计后,必须记录好设计时的关键信息,否则会影响后期的使用。
以更新日期为例,它是通过向标识地址发送数据来实现更新处理的。
若将日期更新为“2025-1-16”,其发送的指令为:
74 38 2E 74 78 74 3D 22 32 30 32 35 2D 30 31 2D 31 36 22 FF FF FF
即:t8.txt=“2025-01-16”0xff 0xff 0xff
若将时间更新为“12:30:00”,其发送的指令为:
74 39 2E 74 78 74 3D 22 31 32 3A 33 30 3A 30 30 22 FF FF FF
即:t9.txt=“12:30:00”0xff 0xff 0xff
其它内容的更新处理类此,这里就不再赘述。
使用触摸功能进行日期和时间设置的界面如图4所示,通过触摸相应的区域可改变设置的类型,通过模拟键盘可输入设置内容,通过功能项的触发,可将设置数据发送给开发板,以改变系统的计时值。
图3 连接接口
图4 设置界面
开发板的接收设置时间并更新显示的程序为:
uint8_t RQ[20]={0X74,0x39,0x2E,0x74,0x78,0x74,0x3D,0x22,0x31,0x32,0x3A,0x33,0x30,0x3A,0x30,0x30,0x22,0xFF,0xFF,0xFF};
LPUART_ReadBlocking(DEMO_LPUART, &ch, 7);
strncpy(rxbuff,&ch,strlen(&ch));
if(rxbuff[0]=='T')
{
RQ[8]=rxbuff[1];
RQ[9]=rxbuff[2];
RQ[11]=rxbuff[3];
RQ[12]=rxbuff[4];
RQ[14]=rxbuff[5];
RQ[15]=rxbuff[6];
LPUART_WriteBlocking(DEMO_LPUART, RQ, 20);
}
实现电子时钟计时效果的程序为:
int main(void)
{
uint32_t h,m,s;
Uint8_t f;
RESET_ReleasePeripheralReset(kUTICK0_RST_SHIFT_RSTn);
BOARD_InitPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("clock:\r\n");
UTICK_Init(EXAMPLE_UTICK);
strncpy(rxbuff,&ch,strlen(&ch));
f=1;
while (f)
{
if(rxbuff[0]=='T')
{
RQ[8]=rxbuff[1];
RQ[9]=rxbuff[2];
RQ[11]=rxbuff[3];
RQ[12]=rxbuff[4];
RQ[14]=rxbuff[5];
RQ[15]=rxbuff[6];
LPUART_WriteBlocking(DEMO_LPUART, RQ, 20);
f=0;
h=(RQ[8]-0x30)*10+(RQ[9]-0x30);
m=(RQ[11]-0x30)*10+(RQ[12]-0x30);
S=(RQ[14]-0x30)*10+(RQ[15]-0x30);
}
}
while (true)
{
UTickDelay(UTICK_TIME_1S);
if(s<59)
{
s=s+1;
}
else
{
s=0;
if(m<59)
{
m=m+1;
}
else
{
m=0;
h=(h+1)%24;
}
}
RQ[8]=h/10+0x30;
RQ[9]=h%10++0x30;
RQ[11]=m/10+0x30;
RQ[12]=m%10++0x30;
RQ[14]=s/10+0x30;
RQ[15]=s%10++0x30;
LPUART_WriteBlocking(DEMO_LPUART, RQ, 20);
}
}