单片机与液晶显示器的接口及应用
Write_LCD_Data(xy/256);
Write_LCD_Cmd(0x24);
}
//初始化子程序
void Init_LCD(void)
{
Write_LCD_Cmd(0x90);
Write_LCD_Data(0x20);
Write_LCD_Data(0x00);
Write_LCD_Cmd(0x41);
Write_LCD_Data(0x20);
Write_LCD_Data(0x00);
Write_LCD_Cmd(0x43);
Write_LCD_Cmd(0x89);
Write_LCD_Cmd(0xa1);
Write_LCD_Data(0x0F);
Write_LCD_Data(0x00);
Write_LCD_Cmd(0x22);
Write_LCD_Cmd(0x9c);
}
3 汉字、字符和图形的显示程序
通过调用前面编写的驱动、初始化和清屏程序就可以方便的实现汉字、字符和图形的显示。本文以汉字显示为例介绍显示程序的编制。汉字既可以以文本方式显示也可以以图形方式显示。以文本方式显示时,每次开机都要先把汉字字模写进液晶显示模块的CGRAM,浪费了时间,而且由于CGRAM的容量只有2kb,显示的汉字有限,所以一般用图形方式显示汉字。以图形方式显示时先把汉字字模写在Flash存储器中,显示时再从Flash存储器中取出来,这样不用每次开机时都写汉字字模,节约时间,而且显示的汉字数量多。下面给出以图形方式显示汉字的通用子程序。汉字字模存储在Flash存储器中。
void put_hanzi (char c)
{
unsigned char kk=c;
unsigned int order;
unsigned int aaa;
static unsigned char previous=0x00;
if(previous==0) previous=c;
else
{
order=((unsigned int)
(previous-0xa1)*94+kk-0xa1);
previous=order%8;
aaa=32*previous;
order=order/8;
SCON=0;
SBUF=concode[0x52];
kk=order/128;
while(!TI);
SCON=0;
SBUF=concode[kk]; kk=order%128;
kk=1;
while(!TI);
SCON=0;
SBUF=concode[kk]; kk=aaa%256;
while(!TI);
SCON=0;
SBUF=concode[kk]; for(kk=0;kk4;kk++)
{
while(!TI);
SCON=0;
SBUF=concode[0xff]; }
while(!TI);
SCON=0x10;
for (kk=0;kk16;kk++)
{
Graph_Address(x,y*8+kk);
while(!RI);
previous=SBUF;
SCON=0x10;
write_lcd(concode[previous]);
ctrl(0xc0);
while(!RI);
previous=SBUF;
SCON=0x10;
write_lcd(concode[previous]);
ctrl(0xc0);
}
previous=0x00;
}
}
结束语
本文介绍的液晶显示模块已成功应用在便携式轨头断面激光检测仪中,由于其具有与MCU接口方便、显示功能强和编程简单等优点,具有广泛的应用价值。
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- SHARC引领第四代通用DSP高端应用潮流(09-27)
- 在应用可编程测控网络设计(03-15)
- 基于dsPIC33F系列单片机的应用程序升级方法(04-03)
- 采用混合时钟模式提高Linux时钟精度的方法(05-10)
- MSP430低功耗原理及其在海温测量中的应用(06-06)