本帖最后由 jinglixixi 于 2020-6-4 10:56 编辑
1. 串口触摸屏 串口触摸屏是一种占用GPIO口资源少的人机交互器件,它主要是通过内置的指令解释系统来工作的,通过串口对指令的收发,即可将触摸屏的指令发送给微控器以供分析处理;也可接收微控器发送来的指令来控制显示屏的输出。此外,串口触摸屏有多种档次,所提供的功能也有较大的差异,高档的串口屏甚至有语音播放功能,RTC计时功能等,是一种较有发展前途的显示器件。 串口屏可以制作出精美的操作界面,可通过触摸操作来设置工作参数等(如图1所示),其界面的设计是通过软件工具在电脑上来完成的,然后通过串口再下载到显示器的硬件上,这样就大大地节省了界面开发的时间,也提高界面的设计质量。 图1 参数设置界面
在串口触摸屏上是最多的指令是数据显示指令和绘制波形的数据添加指令,它通过对变量名的方式来定位输出显示内容。图2是对温度2的变量t12进行数据更新,图3是对指定的波形显示通道进行数据添加测试,图4是通过微控器向串口屏方式指令所得到的执行效果。 图2 数据更新测试
图3 多通道波形测试
图4 运行效果 2. 数据采集与波形显示 由于串口屏的波特率被设置为9600bps,故MM32 eMiniBoard开发板的通讯波特率也应设置为9600,其运行的相应主程序为: int main(void)
{
u16 ADCVAL;
float Temp;
delay_init();
uart_initwBaudRate(9600);
ADC1_SingleChannel( ADC_Channel_10);
while(1)
{
ADCVAL=Get_Adc_Average(ADC_Channel_10,5);
Temp=27.0+(ADCVAL-1800)/5.96;
Tem=Temp; // 数值比例及格式变换
dht_qx(); // 发送波形绘制指令
DHT_xs(); // 发送数据更新指令
delay_ms(1000);
}
}
相关的辅助函数有: void ta(void)
{
SendByte('.');
SendByte('t');
SendByte('x');
SendByte('t');
SendByte('=');
SendByte('"');
}
void tb(void)
{
SendByte('"');
SendByte(0xff);
SendByte(0xff);
SendByte(0xff);
}
void tc(void)
{
SendByte('a');
SendByte('d');
SendByte('d');
SendByte(' ');
SendByte('1');
SendByte('4');
SendByte(',');
SendByte('2');
SendByte(',');
}
void td(void)
{
SendByte(0xff);
SendByte(0xff);
SendByte(0xff);
}
void DHT_xs(void)
{
U8 i,ls;
U16 sd;
i=read_data();
if(i==1)
{
i = 0;
sd= Tem;
SendByte('t');
SendByte('8');
ta();
SendByte(sd%100/10+'0');
SendByte(sd%10+'0');
tb();
}
}
void dht_qx(void)
{
U16 sd;
sd= Tem;
tc(); // add 14,2, t ff ff ff
sd=sd*2;
if(sd>=100)
{
SendByte(sd/100+'0');
}
if(sd>=10)
{
SendByte(sd%100/10+'0');
}
SendByte(sd%10+'0');
td();
}
|