论文部分内容阅读
摘要:LCD液晶显示已成为人机交互界面的根本。本文主要讲述如何实现用单片机来控制LCD液晶显示进行了一定的研究。本系统是采用89C51单片机为核心控制元件,并结合显示硬件的特点进行了软件设计,这种软硬件结合的方法一方面提高了运行速度,同时也节省了系统的存储空间。整个系统采用模块化设计方法,逻辑结构简洁明了,层次分明,易于扩展。
关键词:单片机;LCD; RS232;串行通信
中图分类号:TP334 文献标识码:A 文章编号:1671-864X(2014)10-0023-02
一、问题的提出
液晶显示器件近几十年来发展迅速,液晶显示屏Liquid Crystal Display简称LCD,类型主要有TFT、UFB、TFD、STN等。 LED液晶显示在亮度、功耗、可视角度和刷新速率等方面,都更具优势,功耗低更节能,有更好的视频表现性能,提供更宽的社角,可以显示文字、数字、图像和动画等多媒体信息,LCD产业也成为国家产业布局的重点领域。小到智能手机、数码相机、电子表,大到电脑显示屏、智能电视都在普遍用到LCD显示屏。LCD在显示市场中起到主导地位,已成为显示产业中发展速度最快、市场应用最为广泛的显示器件,是目前众多显示媒体的最佳选择,它将在更为广泛的领域中起到更重要的作用。因此,LCD是目前显示器件中一个最理想的选择。LCD显示技术是计算机技术及电子通信技术的结合点,它集成了多项技术为一身,表现出集成性和综合性特点,另外由于单片机功能强大,控制起来方便,易于形成功能性产业,而关键于前端的显示,基于单片机的LCD显示将会带来广泛的社会效益和经济效益,具有良好的发展前景。
二、系统的概述
基于单片机的液晶显示系统,主要分为单片机控制系统模块和液晶显示模块两个部分。其中单片机控制系统主要负责数据处理与通信任务的完成,将接收前端PC所输入的信息,并通过RS232串行接口完成单片机与PC机之间的数据传输,而前端PC主机主要完成显示内容的输入、各类字符的查找和数据的传送等相关工作。可先采用任何一种编辑软件将要显示的内容保存为一个文本文件,以扩展名TXT保存,然后再调用相关的函数在特定的字库中按照一定算法依次搜索,查找到TXT文件中的内容,并进行比对,从而得到该字符的字模数据。现者,就是将字模数据生成16H字模数据文件,并按取出的字模顺序存放。最后把建立好的字符数据,保存起来待用。LCD显示模块包括控制模块和LCD液晶显示模块。其中控制模块负责接收字模数据文件,并协调各模块间的工作,主控模块是KS0108。与带字库液晶不同,此模块中含有两个液晶驱动器,一块驱动器控制64*64个点,AMPIRE128*64引脚有CS1和CS2,能实现左右显示。
本系统主要是实现用单片机来控制液晶显示,控制方式简洁,数据通信直接,数据发送快捷。
三、系统的设计
基于单片机的液晶显示系统,设计的关键问题是要实现用单片机控制LCD的显示。我们从显示方式入手探求显示效果,根据显示要求设计相应显示电路,用软件方法将显示内容的实时更新,但注意字模数据的存储空间及单片机与显示模块之间通信的电路设计。
(一)字模数据的存储设计。
一般单片机中都有内部存储器ROM,我们在实验中选用89C51单片机,它只有4K内存空间。如果显示内容较多,则需要选用带更大容量的单片机,或者扩展外部空间,这主要和显示器件的大小有关。
本设计采用24*24点阵来显示一个汉字,则每一行需要3个Byte数据,一个汉字占24*3=72B,基本汉字近3000多个,我们将常见的汉字,或者与应用环境有关的汉字,写入单片机内部ROM中,不需要将整个汉字字库都存入单片机中,这样可减少读取时间,便于实时控制。如果为了适应更复杂的应用场所,可考虑采用扩展的外部数据存储器。一种方法是采用自已造一个专用字库,运行前装入单片机的EROM中,但由于单片机寻址能力有限,需要扩充,才能使用,这样就会增加硬件成本,显示时速度会有一些影响。另一种方法,就是直接内容操作系统自带的软件库,用软件的方法进行字库编码的转换,这样数据通信占据时间比较长,但是采用软件方法成本相对较低,字符显示更稳定。因此,从设计成本、显示内容的稳定性、硬件电路设计的简易程度等方面综合考虑,第二种方法明显优于第一种方法。
(二)通信电路的设计。
通信电路采用位串行传输方式。将一个字模数据中的所有位按一定的顺序和方式,通过串口一位一位地进行传送。正是由于串行传输时数据按顺序逐位传送,传输线只需要一根,硬件成本会降低,另外,其传送的数据位多且通信距离长,可实现远距离通信。
四、系统实现与测试
(一)系统硬件结构。
图1 系统硬件结构图
2、系统软件实现
1)数据定义部分
sbit QD = P2^2;
sbit rs = P3^5; //RS为0--命令,1--数据
sbit rw = P3^6; //RW为1--读,0--写
sbit en = P3^4; //使能端
sbit cs1 = P2^1; //片选1低电平有效,控制左半屏
sbit cs2 = P2^0; //片选1低电平有效,控制右半屏
unsigned char receive[90]; unsigned char code huan[];……
unsigned char code table1[][16];
2)主要功能函数
void initLCD(); 初始化函数
void clearScreen(uchar screen); 清屏函数
void display(uchar ss,uchar page,uchar column,uchar p[]); 显示汉字
void display_BMP(uchar img[][64]); 显示图片
void display_char(uchar ss,uchar page,uchar column,uchar asc,uchar p1[][16]);显示字符
void read_busy() //读“忙”函数--数据线的最高位的DB7=1则busy
{ P0 = 0x00;
rs = 0;
rw = 1;
en = 1;
while(P0 & 0x00);
en = 0;
}
void write_LCD_command(uchar value) //写命令函数
{
read_busy(); //对LCD的每次读写都要读忙
rs = 0; //选择命令
rw = 0; //写操作
en = 1; //EN由1--0锁存有效数据
P0 = value;
en = 0;
rw = 1;
}
void write_LCD_data(uchar value) //写数据函数
{
read_busy();
rs = 1; //选择数据
rw = 0;
en = 1;
P0 = value;
en = 0;
rw = 1;
}
3)主函数main()
void main()
{
TMOD = 0x20; //设置定时器1为工作方式2,低8位计数溢出后将高8位的值赋值给低8位,继续进行定时计数
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
initLCD(); //初始化12864
clearScreen(0); //清屏
while(1)
{
if(QD == 0 && flag == 0)
{
delay(2,82);
if(QD == 0)
{
flag = 1;
while(!QD);
clearScreen(0); //清屏
display(1,4,2 * 16,huan); //欢
display(1,4,3 * 16,ying); //迎
display(2,4,0 * 16,liu); //浏
display(2,4,1 * 16,lan); //览
display(1,6,0 * 16,tu); //图
display(1,6,1 * 16,wen); //文
display(1,6,2 * 16,shu); //输
display(1,6,3 * 16,ru); //入
display(2,6,0 * 16,yan); //演
display(2,6,1 * 16,shi); //示
display(2,6,2 * 16,cheng); //程
display(2,6,3 * 16,xu); //序
display(1,0,0*16,table2[3]);
//write_LCD_command(0x00|0x80);
//write_LCD_data(0x3a);
write_LCD_command(0+0x80);
write_LCD_command(0+0x80);
write_LCD_data(0x33);
}
}
else if(QD == 0 && flag == 1)
{
delay(2,82);
if(QD == 0)
{
flag = 0;
while(!QD);
clearScreen(0);
delay(5,82);
}
}
if(flag == 0 && ii != 0)
{
read_data();
}
}
}
void received() interrupt 4
{
RI = 0;
receive[ii ++] = SBUF;
}
(二)系统测试及运行结果。
系统测试能正常显示中英字符文本,达到了预期的目的。在后期的研究中可增加触摸模块,实现显示内容的交互控制,从而进一步增加交互界面的友好性,方便使用。
参考文献:
[1]张毅.MCS-51单片机应用设计[M].哈尔滨工业出版社,2012
[2]何立民.单片机高级教程.北京航空航天大学出版社,2010
[3]许思达.基于51单片机的TFT液晶显示设计.电子元器件应用[J],2010
[4]鲁昀.基于LPC2210微控制器的液晶显示系统设计.计算机技术与应用,2006
[5]鲁刚强.基于液晶显示器的单片机系统设计.科技资讯,2008
[6]张笑微.利用单片机和液晶显示器实现网线的实时动态显示.西南科技大学学院院报,2006
作者简介:
1.冯蕾,女,(1971.4-),籍贯:湖北黄石,学历:本科,任职单位:湖北工程职业学院,职称:讲师,研究方向为计算机绘图与多媒体技术。
2.黄海军,女,(1967.9-),籍贯:湖北黄石,学历:硕士,任职单位:湖北师范学院,职称:副教授,研究方向为计算机网络、多媒体技术在教育中的应用。
关键词:单片机;LCD; RS232;串行通信
中图分类号:TP334 文献标识码:A 文章编号:1671-864X(2014)10-0023-02
一、问题的提出
液晶显示器件近几十年来发展迅速,液晶显示屏Liquid Crystal Display简称LCD,类型主要有TFT、UFB、TFD、STN等。 LED液晶显示在亮度、功耗、可视角度和刷新速率等方面,都更具优势,功耗低更节能,有更好的视频表现性能,提供更宽的社角,可以显示文字、数字、图像和动画等多媒体信息,LCD产业也成为国家产业布局的重点领域。小到智能手机、数码相机、电子表,大到电脑显示屏、智能电视都在普遍用到LCD显示屏。LCD在显示市场中起到主导地位,已成为显示产业中发展速度最快、市场应用最为广泛的显示器件,是目前众多显示媒体的最佳选择,它将在更为广泛的领域中起到更重要的作用。因此,LCD是目前显示器件中一个最理想的选择。LCD显示技术是计算机技术及电子通信技术的结合点,它集成了多项技术为一身,表现出集成性和综合性特点,另外由于单片机功能强大,控制起来方便,易于形成功能性产业,而关键于前端的显示,基于单片机的LCD显示将会带来广泛的社会效益和经济效益,具有良好的发展前景。
二、系统的概述
基于单片机的液晶显示系统,主要分为单片机控制系统模块和液晶显示模块两个部分。其中单片机控制系统主要负责数据处理与通信任务的完成,将接收前端PC所输入的信息,并通过RS232串行接口完成单片机与PC机之间的数据传输,而前端PC主机主要完成显示内容的输入、各类字符的查找和数据的传送等相关工作。可先采用任何一种编辑软件将要显示的内容保存为一个文本文件,以扩展名TXT保存,然后再调用相关的函数在特定的字库中按照一定算法依次搜索,查找到TXT文件中的内容,并进行比对,从而得到该字符的字模数据。现者,就是将字模数据生成16H字模数据文件,并按取出的字模顺序存放。最后把建立好的字符数据,保存起来待用。LCD显示模块包括控制模块和LCD液晶显示模块。其中控制模块负责接收字模数据文件,并协调各模块间的工作,主控模块是KS0108。与带字库液晶不同,此模块中含有两个液晶驱动器,一块驱动器控制64*64个点,AMPIRE128*64引脚有CS1和CS2,能实现左右显示。
本系统主要是实现用单片机来控制液晶显示,控制方式简洁,数据通信直接,数据发送快捷。
三、系统的设计
基于单片机的液晶显示系统,设计的关键问题是要实现用单片机控制LCD的显示。我们从显示方式入手探求显示效果,根据显示要求设计相应显示电路,用软件方法将显示内容的实时更新,但注意字模数据的存储空间及单片机与显示模块之间通信的电路设计。
(一)字模数据的存储设计。
一般单片机中都有内部存储器ROM,我们在实验中选用89C51单片机,它只有4K内存空间。如果显示内容较多,则需要选用带更大容量的单片机,或者扩展外部空间,这主要和显示器件的大小有关。
本设计采用24*24点阵来显示一个汉字,则每一行需要3个Byte数据,一个汉字占24*3=72B,基本汉字近3000多个,我们将常见的汉字,或者与应用环境有关的汉字,写入单片机内部ROM中,不需要将整个汉字字库都存入单片机中,这样可减少读取时间,便于实时控制。如果为了适应更复杂的应用场所,可考虑采用扩展的外部数据存储器。一种方法是采用自已造一个专用字库,运行前装入单片机的EROM中,但由于单片机寻址能力有限,需要扩充,才能使用,这样就会增加硬件成本,显示时速度会有一些影响。另一种方法,就是直接内容操作系统自带的软件库,用软件的方法进行字库编码的转换,这样数据通信占据时间比较长,但是采用软件方法成本相对较低,字符显示更稳定。因此,从设计成本、显示内容的稳定性、硬件电路设计的简易程度等方面综合考虑,第二种方法明显优于第一种方法。
(二)通信电路的设计。
通信电路采用位串行传输方式。将一个字模数据中的所有位按一定的顺序和方式,通过串口一位一位地进行传送。正是由于串行传输时数据按顺序逐位传送,传输线只需要一根,硬件成本会降低,另外,其传送的数据位多且通信距离长,可实现远距离通信。
四、系统实现与测试
(一)系统硬件结构。
图1 系统硬件结构图
2、系统软件实现
1)数据定义部分
sbit QD = P2^2;
sbit rs = P3^5; //RS为0--命令,1--数据
sbit rw = P3^6; //RW为1--读,0--写
sbit en = P3^4; //使能端
sbit cs1 = P2^1; //片选1低电平有效,控制左半屏
sbit cs2 = P2^0; //片选1低电平有效,控制右半屏
unsigned char receive[90]; unsigned char code huan[];……
unsigned char code table1[][16];
2)主要功能函数
void initLCD(); 初始化函数
void clearScreen(uchar screen); 清屏函数
void display(uchar ss,uchar page,uchar column,uchar p[]); 显示汉字
void display_BMP(uchar img[][64]); 显示图片
void display_char(uchar ss,uchar page,uchar column,uchar asc,uchar p1[][16]);显示字符
void read_busy() //读“忙”函数--数据线的最高位的DB7=1则busy
{ P0 = 0x00;
rs = 0;
rw = 1;
en = 1;
while(P0 & 0x00);
en = 0;
}
void write_LCD_command(uchar value) //写命令函数
{
read_busy(); //对LCD的每次读写都要读忙
rs = 0; //选择命令
rw = 0; //写操作
en = 1; //EN由1--0锁存有效数据
P0 = value;
en = 0;
rw = 1;
}
void write_LCD_data(uchar value) //写数据函数
{
read_busy();
rs = 1; //选择数据
rw = 0;
en = 1;
P0 = value;
en = 0;
rw = 1;
}
3)主函数main()
void main()
{
TMOD = 0x20; //设置定时器1为工作方式2,低8位计数溢出后将高8位的值赋值给低8位,继续进行定时计数
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
initLCD(); //初始化12864
clearScreen(0); //清屏
while(1)
{
if(QD == 0 && flag == 0)
{
delay(2,82);
if(QD == 0)
{
flag = 1;
while(!QD);
clearScreen(0); //清屏
display(1,4,2 * 16,huan); //欢
display(1,4,3 * 16,ying); //迎
display(2,4,0 * 16,liu); //浏
display(2,4,1 * 16,lan); //览
display(1,6,0 * 16,tu); //图
display(1,6,1 * 16,wen); //文
display(1,6,2 * 16,shu); //输
display(1,6,3 * 16,ru); //入
display(2,6,0 * 16,yan); //演
display(2,6,1 * 16,shi); //示
display(2,6,2 * 16,cheng); //程
display(2,6,3 * 16,xu); //序
display(1,0,0*16,table2[3]);
//write_LCD_command(0x00|0x80);
//write_LCD_data(0x3a);
write_LCD_command(0+0x80);
write_LCD_command(0+0x80);
write_LCD_data(0x33);
}
}
else if(QD == 0 && flag == 1)
{
delay(2,82);
if(QD == 0)
{
flag = 0;
while(!QD);
clearScreen(0);
delay(5,82);
}
}
if(flag == 0 && ii != 0)
{
read_data();
}
}
}
void received() interrupt 4
{
RI = 0;
receive[ii ++] = SBUF;
}
(二)系统测试及运行结果。
系统测试能正常显示中英字符文本,达到了预期的目的。在后期的研究中可增加触摸模块,实现显示内容的交互控制,从而进一步增加交互界面的友好性,方便使用。
参考文献:
[1]张毅.MCS-51单片机应用设计[M].哈尔滨工业出版社,2012
[2]何立民.单片机高级教程.北京航空航天大学出版社,2010
[3]许思达.基于51单片机的TFT液晶显示设计.电子元器件应用[J],2010
[4]鲁昀.基于LPC2210微控制器的液晶显示系统设计.计算机技术与应用,2006
[5]鲁刚强.基于液晶显示器的单片机系统设计.科技资讯,2008
[6]张笑微.利用单片机和液晶显示器实现网线的实时动态显示.西南科技大学学院院报,2006
作者简介:
1.冯蕾,女,(1971.4-),籍贯:湖北黄石,学历:本科,任职单位:湖北工程职业学院,职称:讲师,研究方向为计算机绘图与多媒体技术。
2.黄海军,女,(1967.9-),籍贯:湖北黄石,学历:硕士,任职单位:湖北师范学院,职称:副教授,研究方向为计算机网络、多媒体技术在教育中的应用。