在工业应用中常遇到单片机直接驱动彩色液晶模块显示的情况,如水表仪器显示、广播控制设备信息显示等。较为高级的显示设备还可以兼备触摸功能。结合项目的实际开发,本文简单描述ARM7单片机通过串口输出实现液晶显示的一种方法,希望对大家有所帮助。
首先需要正确连接硬件模块。结合液晶模块的使用说明将硬件设备进行正确连接。串口一般用于接收显示指令、下载图片及发送触摸坐标等功能。硬件设备连接完毕后,首先进行串口的初始化配置。在实际应用中采用串口PDC传输通道进行数据的传输,这样可减少数据传输所需时钟周期,使得处理器更加高效。初始化配置如下:
AT91F_PMC_EnablePeriphClock();
AT91F_PIO_CfgPeriph();
AT91F_US_Configure();
AT91F_US_EnableTx();
AT91F_US_EnableRx();
串口初始化配置主要完成时钟使能、引脚配置、通信参数配置及PDC初始化。正确的参数配置是程序正常工作的前提,对于传输速率等的使用应参考显示终端的使用说明。
串口配置成功后即可驱动液晶模块进行显示。首先将需要显示的数据信息以十六进制形式存放在数组内,然后通过开启PDC传输将数据发往液晶模块进行显示。代码如下:
while(!(AT91C_BASE_US1->US_CSR &AT91C_US_ENDTX)); //等待上次传输完成
for(i=0; i<256; i++)
COM1TxBuffer[i]= Test_Data[i]; //Test_Data数组存放显示数据
AT91F_PDC_DisableTx(COM1_PDC);
COM1_PDC->PDC_TPR = (unsignedint)COM1TxBuffer;
COM1_PDC->PDC_TCR=256;
COM1_PDC->PDC_TNPR=0;
COM1_PDC->PDC_TNCR=0;
AT91F_PDC_EnableTx(COM1_PDC); //开启PDC数据传输通道
显示数组中存放的数据一般不只是包含要显示的数据,还包含了显示帧指令。比如在VTK系统智能显示终端上若采用快速显示字符串,则指令结构如下:
数据块 |
1 |
2 |
3 |
4 |
数据 |
0xAA |
0x98 |
0x01 0x02……. |
0xCC 0x33 0xC3 0x3C |
说明 |
帧头 固定 |
指令码 |
参数,最大为2K字节 |
帧结束符 |
显示终端的背景色、字体颜色设置、日期、时间设置及清屏等动作的显示方式需参考其使用说明。一般对应的指令码有所不同。
(文章原创,转载请声明)