- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ST7920控制器中小尺寸液晶显示实现
基于ST7920控制器中小尺寸液晶显示实现
【摘要】液晶显示由于自身的优点在电子设备中广泛使用。文章详细介绍了以ST7920为控制器的中小尺寸液晶12864实现显示的硬件与软件设计方法。该方法具有一定的实用性,对于设计其他形式的液晶显示有一定的借鉴意义。
【关键词】中小尺寸;液晶显示;ST7920;12864
1.引言
由于LCD液晶显示器件具有电压低、功耗小、显示量信息大、使用寿命长等特点,被广泛的用于仪器仪表人机交互的界面。当前,随着集成电路制造工艺与电子技术的飞速发展,LCD器件已成为信息产业中最重要的信息处理手段之一。同时,在很多领域应用中使用的便携式数字化设备越来越多的以单片机为控制核心、用LCD作为显示终端。12864点阵液晶是中小尺寸液晶典型的代表,应用广泛。本文以ST7920为控制器的12864为例,介绍其实际应用方法。
2.ST7920为控制器的12864简介
2.1 液晶显示控制指令
液晶要显示信息,需要把显示的编码数据写入液晶显示缓存,实现数据的写入要通过一系列液晶显示控制指令才能完成。ST7920控制信号RS、R/W控制着显示控制指令。DB0-DB7为数据总线,实现外部CPU与液晶内部处理器之间数据交流,其中交互的数据包括控制指令和要显示的数据。基于ST7920控制器的12864中文字库点阵屏液晶显示控制的主要指令表如表1所示。
表1 液晶显示控制的主要指令表
2.2 液晶显示控制时序
同其他的可控制器件一样,要使液晶单元能够正常工作需要一定的控制时序,所谓时序就是控制信号高低取高低电平的先后搭配顺序。要进行液晶驱动开发,主控制器必须按照相应的时序与ST7920控制器进行交流。图1是ST7920控制的12864液晶的8位并口写操作时序图。由图1可见,在通过8位并口DB0-DB7进行写操作控制时,需要RS、R/W、E三种控制信号配合,首先,RS要根据写入并口上的数据是控制指令还是显示数据置0或置1,其次,R/W读写控制信号要进行写操作需要置0,之后控制使能信号E要置1,只有上述三种控制信号稳定后,8位并口才能将DB0-DB7总线上的数据就可写入液晶屏,写入完毕后将使能信号E置0。在使用中要特别注意各控制信号高低电平变换期间的不稳定??段,读写操作要尽量避开这一阶段。ST7920控制的12864液晶的8位并口读操作时序图与写相似,只是读写控制信号不同。
图1 ST7920控制12864液晶的8位并口写操作时序图
3.液晶显示硬件接口电路
下面以STC89C52单片机控制液晶显示屏为例,介绍MCU与液晶的连接方法。图2为8位并口STC89C52控制接口图。MCU的P1口与液晶的DB0-DB7相连,作为指令与显示数据的总线通道;P3.0、P3.1、P3.2分别与液晶的RS、R/W、E相连,构成液晶显示控制信号的通道。
图2 8位并口与STC89C52接口图
4.液晶显示软件设计
根据图2的硬件连接图,以在液晶屏上显示“ST7920显示控制”等字符为例设计程序代码。
(1)定义
sbit E=P3^2;sbit RW=P3^1;
sbit RS=P3^0;sbit BUSY=P1^7;
(2)忙检测函数
void Parallel_Check_Busy(void)//忙状态检查并等待
{unsigned char temp;
P0=0xff;//输入前置1作为输入口
RS=0;//指令
RW=1;//读模式
do
{E=1;//使能
temp=P00x80;//忙状态检测(b7)
E=0;
}
while(temp);//忙等待
}
(3)写操作函数
void Parallel_Write_LCD(unsigned char A0,unsigned char ud8)
{Parallel_Check_Busy( );
RS=A0?1:0;//数据或指令
RW=0;//写模式
P0=ud8;//数据放到P0口上
E=1;
//P2=0;
_nop_( );
_nop_( );
_nop_( );
E=0;
}
(4)初始化
void Parallel_Init_LCD(void)//LCD并行初始化
{//unsigned char i;
//RST=0;
//for(i=0;i Parallel_Write_LCD(COMMAND,ucDD-ramAdd);//设
定DDRAM地址
}
(6)
文档评论(0)