dat = 0x00600000&dat;//取出需要的数据位,看STA0,STA1是否准备好
delay_bus();
*AT91C_PIOA_SODR = RD;
delay_bus();
*AT91C_PIOA_SODR=CS;
}
3. 汉字显示
以本系统的显示模块LCM240128为例,液晶显示屏上横向的8个点是一个字节数据,某位为1则对应点变亮,对于240×128的显示模块来说,每行为240点,每列为128点。每个字节在显示缓冲区中均有对应的地址,液晶屏幕的左上角横向8个点对应液晶模块显示缓冲区的首地址。最常见的显示方式有两种,以常用的16×16点阵汉字为例,一种是先将左半部16个字节写入显示缓冲区,再写入右半部的16个字节;另一种则先写入上半部的16个字节,再写入下半部的16个字节。然后单片机通过接口电路,按照规定的时序将待显示汉字字模的所有字节按液晶控制器规定的方式,在预定位置写入液晶控制器缓冲区。程序如下:
void ShowHz(unsigned int lin,unsigned int column,unsigned int hzcode)
{
unsigned char i;
unsigned int StartAddr = 0;
StartAddr=lin*LineChar + column; //定位起始行
for(i=0;i<16;i++)
{
OutPortCom3((unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
OutPortCom2( HZTable[hzcode][i*2], 0xc0); //左半部 地址加一
OutPortCom2( HZTable[hzcode][i*2+1], 0xc4); //右半部 字模地址加一
StartAddr=StartAddr + LineChar;
}
}
4. 图形显示
固定格式的图形图像显示与在图形方式下显示汉字类似,即先确定点阵信息,再送入显示位置对应的缓冲区中。实际上,每个汉字都是一幅图像,只是在处理坐标数据时有所不同。与汉字显示的主要区别是:图形显示中数据需逐点生成并按一定算法逐点送入缓冲区单元;为获得良好的显示效果,标准图元(直线、圆、椭圆等)可利用图形学中的某些生成算法。由于硬件要求一次扫1行,因此必须先找到该点所在的行地址,然后在字节内计算点的位置,将该位置1;若是擦除,则将该位置0。画点是实现其它图形的基础,利用画点程序,只需按照图形学算法控制坐标变量x、y并移位,然后逐一画点,就能组成任何图形。
5. 动态显示
当动态显示图形时,用T6963C控制器的命令和功能编程,获得变参数的各种基本图形函数,以显示不同的图形,在动态图形显示之前将固定的图形采用屏拷贝方式保存下来,动态图形显示结束时恢复原来的图形。汉字字符和数字字符的固定显示在初始化过程中完成,动态显示则直接用覆盖的方式完成。
无论汉字、数字、英文字符或图形,液晶显示控制器都视为在规定区域根据给定数据控制各个点的显示,它们的显示控制原理并没有本质区别,这样在编程时就可以将所有显示内容都当作图形处理。驱动程序采用C语言编写,具有模块化的结构和代码可移植性,且通用性较好。
本文小结
采用点阵式图形液晶显示模块将使显示更直观、界面更丰富。直接访问方式的驱动程序比间接控制方式更精简一些,程序的运行效率也较高。本文中的程序采用C语言编写,通用性强、移植方便。该方法及程序在系统显示部分中,显示清晰、工作稳定。具有模块化结构和代码可移植性,且通用性较好,在嵌入式系统中有一定代表性和广泛用途。
本文关键字:处理器 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术