LCD液晶显示屏(介绍及程序GOOD)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一节:了解LCD液晶显示屏作者:尘封往事文章来源:本站原创点击数:2097更新时间:2005-11-1410:43:40一:字符型点阵式LCD液晶显示屏:LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。本站要介绍的LCD为字符型点阵式LCD模块(liquidCrystalDisplayModule)简称LCM,或者是字符型LCD。字符型液晶显示模块是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。上图为1602LCD在本站2004学习套件上显示一个字母A的运行图片本章将以16*2字符型液晶显示模块RT-1602C为例,详细介绍字符型晶显示模块的应用技术。一般字符LCD模块的控制器为日本日立公司的HD44780及其替代集成电路,驱动器为HD44100及其替代的集成电路以下将会略做介绍。一般初学者由字符型LCD入手比较简单,学完之后,再进一步控制图案型LCD模块。图1.1所示为16*2地的外观,表1.2为LCM的接脚及功能。二、1602的外形尺寸三、1602的接口信号说明:编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4RS数据/命令选择端(H/L)12D5DataI/O5R/W读/写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极表1.4:液晶显示模块RT-1602C的接脚及功能第二节:LCD液晶显示屏的内部结构作者:尘封往事文章来源:本站原创点击数:1722更新时间:2005-11-1410:51:20液晶显示模块WM-C1602N的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图示2.1所示:地址计数器AC用户自定义的字符发生器CGRAMCGRAM为可自编数据区DDRAM为显示缓冲区;内藏的字符发生存储器(CGROM)图2.1:LCM内部方块图目前大多数的LCD液晶显示器的控制器都有采用一颗型号为HD44780的集成电路作控制器。HD44780是集控制器,驱动器于一体,专用于字符显示控制驱动集成电路。HD44780是字符型液晶显示控制器的代表电路。HD44780集成电路的特点:1:HD44780不仅作为控制器而且还具有驱动40*16点阵液晶像素的能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动。2:HD44780的显示缓冲区及用户自定义的字符发生器CGRAM全部内藏在芯片内。3:HD44780具有适用于M6800系列MPU的接口,并且接口数据传输可为8位数据和4位数据传输两种方式。4:HD44780具有简单而功能较强的指令集,可实现字符移动,闪烁等显示功能。由于HD44780的DDRAM容量所限,HD44780可控制的字符高达每行80个字,也就是5*80=400点,HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具驱动有16*40点阵LCD能力(即单行16个字符或两行8个字符)。如果在外部加一HD44100外扩展多40路/列驱动,则可驱动16*2LCD。HD44780内藏的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表2.3所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H)。CGROM和CGRAM字符图形代码对应表:表2.3:液晶显示模块WM-C1602N的CGRAM字符图形代码对应表液晶显示模块WM-C1602N在显示“1”时,则我们只需将ASCII码31H存入DDRAM即可。显示时模块把地址31H中的点阵字符图形显示出来,我们就能看到数字“1”了。DDRAM有80bytes空间,共可显示80个字,地址与实际显示位置的排列顺序跟LCD的型号有关,液晶显示模块WM-C1602N的显示地址如图2.2所示。图2.2:地址映射图第三节:字符LCD液晶屏控制器的指令字符LCD的指令共有11条,如表3.1所示已有详细功能和用法:图表3.1:LCD的指令表注:表中的*表示可以为0或1。第四节:在1602LCD上显示字母“A”做这实验之前我们需要将相关的实验器材准备好:1:RT1602C液晶显示模块一个2:AT89S51芯片一片3:编程器及相关的编程软件4:电脑就不用我在这里提了吧。呵呵现在你可以按下图的LCD驱动电路做个电路板,购买了本站产品的朋可直接将配套的1602插到驱动接口上:如上图所示各引脚功能表达如下:VSS为地电源VDD接5V正电源VL为液晶显示器对比度调整端:接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择:高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线:高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端:当E端由高电平跳变成低电平时,液晶模块执行命令。DB0~DB7为8位双向数据线BLK和BLA:是背光灯电源。在上一课我们已经知道了字母“A”的代码是01000001B了,为什么会是01000001B呢?如果还不明白?请返回上节再巩固一下吧!其实现在有查询LCD显示内码的软件,点击这里下载,不过大家最好去理解一下。;*******************************源程序如下*********************************;单片机自学网RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7DATAP1ORG00HAJMPSTARTORG000BHAJMPINSEORG50HSTART:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50MOVSP,#60HACALLINITMOVA,#10000000B;写入显示地址为第一行第一位。??????ACALLC51MOVA,#01000001B;字母“A”的代码。ACALLC51DDRLOOP:AJMPLOOPINSE:MOVTL0,#0;中断服务子程序。MOVTH0,#0DJNZR5,NOMOVR5,#50NO:RETIINIT:MOVA,#00111000B;使用8Bits汇流排,显示两行,使用5*7的字型。LCALLC51MOVA,#00001110B;显示器开,光标开,光标闪烁。LCALLC51MOVA,#00000110B;字符不动,光标自动右移一格。LCALLC51RETDDW:;检查忙碌子程序。PUSHACCDDW1:CLRRSSETBRWCLRESETBEMOVA,DB0_DB7CLREJBACC.7,DDW1POPACCACALLDELAYRETC51:;写入IR寄存器子程序。ACALLDDW;检查忙碌否CLRECLRRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETC51DDR:;写入DR寄存器子程序。ACALLDDWCLRESETBRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETDELAY:;延时子程序。MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND以上程序书写时用二进制目的是为了方便大家去理解。将上面的程序编译好后用编程器将程序写入AT89S51芯片,然后将写好的AT89S51芯片插入本站提供的实验板或自已DIY的实验板上,通电运行,这时在1602液晶显示器上就显示出一个“A”了。上图中,1602液晶显示器在2004套件上显示出字母“A”的图片。第五节:在1602LCD第二行显示字母“B”在上一课中,我们已经详细的讲解了怎么在液晶显示屏显示字母“A”,但1602LCD有两行显示,我们怎样才能让字符显示在第二行呢?与显示在第一行有什么区别吗?下面我就与大家一起来探讨这个课题。下图中,1602在我们学习套件中显示在第二行第四位的图片现在先来介绍用软件查出字符“B”内码的方法,请大家先下载内码查询软件(请到本站下载中心下载)。解压后,点击图标启动软件,如下图所示,输入字符“B”可查汉字内码???点击“内码显示”按钮,42就是字符“B”的内码了,大家都学会使用了吧?;*************************************源程序**************************************RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7DATAP1ORG00HAJMPSTARTORG000BHAJMPINSEORG50HSTART:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50MOVSP,#60HACALLINITMOVA,#0C3H;写入显示地址为第二行第四位。???ACALLC51MOVA,#42H;字母B的代码。ACALLC51DDRLOOP:AJMPLOOPINSE:MOVTL0,#0;中断服务子程序。MOVTH0,#0DJNZR5,NOMOVR5,#50NO:RETIINIT:MOVA,#38H;使用8Bits汇流排,显示两行,使用5*7的字型。LCALLC51MOVA,#0EH;显示器开,光标开,光标闪烁。LCALLC51MOVA,#06H;字符不动,光标自动右移一格。LCALLC51RETDDW:;检查忙碌子程序。PUSHACCDDW1:CLRRSSETBRWCLRESETBEMOVA,DB0_DB7CLREJBACC.7,DDW1POPACCACALLDELAYRETC51:;写入IR寄存器子程序。ACALLDDWCLRECLRRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETC51DDR:;写入DR寄存器子程序。ACALLDDWCLRESETBRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETDELAY:;延时子程序。MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND第六节:LCD相关的子程序在前面的课程中,我们已经实验了液晶显示屏显示字母了,其实大家亦不难理解上几个例子的源程序,只不过是由几个子程序构成。下面向大家介绍前面例子中应用到的几个子程序。以下介绍常用到的六个子程序:1:查看忙碌子程序。2:写指令到IR寄存器的子程序。3:写指令到DR寄存器的子程序。4:清除LCD显示器的子程序。5:启动LCD子程序。6:延时子程序。现在就给出开发液晶屏建立相关LCD规范的子程序。1:查看忙碌子程序:DDW:;检查忙碌子程序。PUSHACC;将A的内容放到堆栈区内,在此这句可能没有意义,但在实际应用中ACC是频繁使用的,所以在进入子程序之前先把ACC的内容放入堆栈中,以免破坏原来在ACC的内容。DDW1:CLRRS;选择指令暂存器。SETBRW;选择读模式。CLRE;禁能LCD。SETBE;使能LCD。MOVA,DB0_DB7;将LCD的DB0-DB7的资料经由P1口存入ACC中,以便查对第7

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功