wuyouwuyou

嵌入式程序优化之液晶使用

0
阅读(3559)

由于LCD的清屏函数经常使用,虽然可以使用Write_Cmd(0x01);进行清屏,但普通用户很查手册找到0x01命令字,即使找到了,也不便于记忆,所以这里在driver.h文件中将WriteCmd(0x01)这样的函数定义成了更容易记忆的函数clear_display()。

在启动函数中,要对系统板进行初始化,而对系统板进行初始化非常复杂,要考虑到配置信息,系统板的调试状态等等,这样在汇编代码中就难以实现。所以在设计过程中采用了周立功公司提供的代码模式,在汇编代码中只实现了对LPC2292芯片内部系统变量的初始化,各个模式下的堆栈的初始化。其他外围的初始化函数则放在了C语言中进行编写。即TargetResetInit()函数。这样最大限度的保证了代码的可重用性;并且外围电路改变时,只需改变外围电路的初始化函数或者只改变配置文件就可以了。

#define  RS (0x00000001<<27)  // 1:输入数据 ;0:输入命令

#define  RW (0x00000001<<28)  //1:读数据  0:写数据

#define  E  (1<<23)

void WriteCmd(unsigned char cmdcode)

{

   int temp;

   Check_Busy();

   IO0DIR=0xFFFFFFFF;

   IO2DIR=0x00FF0000;

   temp=(int)cmdcode;

   temp=temp<<16;

   IO0CLR=RS;

   IO0CLR=RW;

   IO2PIN=temp;

   IO0SET=E;

   IO0CLR=E;

}

在硬件电路中,12864液晶模块的控制管脚RS,RW和E分别与LPC2292芯片的P0.27,P0.28和P0.23管脚相连,所以定义RS为(0x00000001<<27)。

LCD写控制字函数是依照12864液晶模块的要求,写之前先检查LCD是否处于忙状态,如果忙的话,就一直等待直到空闲。然后选择IO管脚方向。由于在硬件电路中12864液晶模块的数据线接到了LPC2292芯片的D16——D23管脚上,所以这里使用P2管脚时要先将控制命令左移16位,即相应的控制字左移16位,与管脚对齐。接着就是将RS位和RW位清0,即选择输入命令模式和写数据。将左移16位后的控制命令写入P2管脚,准备好之后使能E管脚将控制命令写入12864液晶模块中,这之后又马上取消使能。