LCD液晶显示屏介绍及程序GOOD教学教材_第1页
LCD液晶显示屏介绍及程序GOOD教学教材_第2页
LCD液晶显示屏介绍及程序GOOD教学教材_第3页
LCD液晶显示屏介绍及程序GOOD教学教材_第4页
LCD液晶显示屏介绍及程序GOOD教学教材_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。LCD液晶显示屏介绍及程序GOOD-第一节:了解LCD液晶显示屏作者:尘封往事文章来源:本站原创点击数:2097更新时间:2005-11-1410:43:40一:字符型点阵式LCD液晶显示屏:LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。本站要介绍的LCD为字符型点阵式LCD模块(liquidCrystalDisplayModule)简称LCM

2、,或者是字符型LCD。字符型液晶显示模块是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。上图为1602LCD在本站2004学习套件上显示一个字母A的运行图片本章将以16*2字符型液晶显示模块RT-1602C为例,详细介绍字符型晶显示模块的应用技术。一般字符LCD模块的控制器

3、为日本日立公司的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

4、/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的集成

5、电路作控制器。HD44780是集控制器,驱动器于一体,专用于字符显示控制驱动集成电路。HD44780是字符型液晶显示控制器的代表电路。HD44780集成电路的特点:1:HD44780不仅作为控制器而且还具有驱动40*16点阵液晶像素的能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动。2:HD44780的显示缓冲区及用户自定义的字符发生器CGRAM全部内藏在芯片内。3:HD44780具有适用于M6800系列MPU的接口,并且接口数据传输可为8位数据和4位数据传输两种方式。4:HD44780具有简单而功能较强的指令集,可实现字符移动,闪烁等显示功能。由于HD44780的DDRAM

6、容量所限,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”的代码是01000001

7、B(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的指令表注:表

8、中的*表示可以为0或1。第四节:在1602LCD上显示字母“A”做这实验之前我们需要将相关的实验器材准备好:1:RT1602C液晶显示模块一个2:AT89S51芯片一片3:编程器及相关的编程软件4:电脑就不用我在这里提了吧。呵呵现在你可以按下图的LCD驱动电路做个电路板,购买了本站产品的朋可直接将配套的1602插到驱动接口上:如上图所示各引脚功能表达如下:VSS为地电源VDD接5V正电源VL为液晶显示器对比度调整端:接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择:高电平时选择数据寄存器、低电平时选择指令寄存器

9、。RW为读写信号线:高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端:当E端由高电平跳变成低电平时,液晶模块执行命令。DB0DB7为8位双向数据线BLK和BLA:是背光灯电源。在上一课我们已经知道了字母“A”的代码是01000001B了,为什么会是01000001B呢?如果还不明白?请返回上节再巩固一下吧!其实现在有查询LCD显示内码的软件,HYPERLINKfile:/D:c51%20me%20weblcdraima.rar点击这里下载,不过大家最好去理

10、解一下。;*源程序如下*;单片机自学网RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7DATAP1ORG00HAJMPSTARTORG000BHAJMPINSEORG50HSTART:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50MOVSP,#60HACALLINITMOVA,#10000000B;写入显示地址为第一行第一位。?ACALLC51MOVA,#01000001B;字母“A”的代码。ACALLC51DDRLOOP:AJMPLOOPINSE:MOVTL0,#0;中断服务子程序。MOVTH0,#0DJN

11、ZR5,NOMOVR5,#50NO:RETIINIT:MOVA,#00111000B;使用8Bits汇流排,显示两行,使用5*7的字型。LCALLC51MOVA,#00001110B;显示器开,光标开,光标闪烁。LCALLC51MOVA,#00000110B;字符不动,光标自动右移一格。LCALLC51RETDDW:;检查忙碌子程序。PUSHACCDDW1:CLRRSSETBRWCLRESETBEMOVA,DB0_DB7CLREJBACC.7,DDW1POPACCACALLDELAYRETC51:;写入IR寄存器子程序。ACALLDDW;检查忙碌否CLRECLRRSCLRRWSETBEMOVD

12、B0_DB7,ACCCLRERETC51DDR:;写入DR寄存器子程序。ACALLDDWCLRESETBRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETDELAY:;延时子程序。MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND以上程序书写时用二进制目的是为了方便大家去理解。将上面的程序编译好后用编程器将程序写入AT89S51芯片,然后将写好的AT89S51芯片插入本站提供的实验板或自已DIY的实验板上,通电运行,这时在1602液晶显示器上就显示出一个“A”了。上图中,1602液晶显示器在2004套件上显示出字母“A”的图片。第五节:在1

13、602LCD第二行显示字母“B”在上一课中,我们已经详细的讲解了怎么在液晶显示屏显示字母“A”,但1602LCD有两行显示,我们怎样才能让字符显示在第二行呢?与显示在第一行有什么区别吗?下面我就与大家一起来探讨这个课题。下图中,1602在我们学习套件中显示在第二行第四位的图片现在先来介绍用软件查出字符“B”内码的方法,请大家先下载内码查询软件(请到本站下载中心下载)。解压后,点击图标启动软件,如下图所示,输入字符“B”可查汉字内码?点击“内码显示”按钮,42就是字符“B”的内码了,大家都学会使用了吧?;*源程序*RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7DATAP1OR

14、G00HAJMPSTARTORG000BHAJMPINSEORG50HSTART:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50MOVSP,#60HACALLINITMOVA,#0C3H;写入显示地址为第二行第四位。?ACALLC51MOVA,#42H;字母B的代码。ACALLC51DDRLOOP:AJMPLOOPINSE:MOVTL0,#0;中断服务子程序。MOVTH0,#0DJNZR5,NOMOVR5,#50NO:RETIINIT:MOVA,#38H;使用8Bits汇流排,显示两行,使用5*7的字型。LCALLC51MOV

15、A,#0EH;显示器开,光标开,光标闪烁。LCALLC51MOVA,#06H;字符不动,光标自动右移一格。LCALLC51RETDDW:;检查忙碌子程序。PUSHACCDDW1:CLRRSSETBRWCLRESETBEMOVA,DB0_DB7CLREJBACC.7,DDW1POPACCACALLDELAYRETC51:;写入IR寄存器子程序。ACALLDDWCLRECLRRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETC51DDR:;写入DR寄存器子程序。ACALLDDWCLRESETBRSCLRRWSETBEMOVDB0_DB7,ACCCLRERETDELAY:;延时子程序

16、。MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND第六节:LCD相关的子程序在前面的课程中,我们已经实验了液晶显示屏显示字母了,其实大家亦不难理解上几个例子的源程序,只不过是由几个子程序构成。下面向大家介绍前面例子中应用到的几个子程序。以下介绍常用到的六个子程序:1:查看忙碌子程序。2:写指令到IR寄存器的子程序。3:写指令到DR寄存器的子程序。4:清除LCD显示器的子程序。5:启动LCD子程序。6:延时子程序。现在就给出开发液晶屏建立相关LCD规范的子程序。1:查看忙碌子程序:DDW:;检查忙碌子程序。PUSHACC;将A的内容放到堆栈区内,在此这句可

17、能没有意义,但在实际应用中ACC是频繁使用的,所以在进入子程序之前先把ACC的内容放入堆栈中,以免破坏原来在ACC的内容。DDW1:CLRRS;选择指令暂存器。SETBRW;选择读模式。CLRE;禁能LCD。SETBE;使能LCD。MOVA,DB0_DB7;将LCD的DB0-DB7的资料经由P1口存入ACC中,以便查对第7位元BF是否为0。CLRE;禁能LCD。JBACC.7,CB_Loop;判断由LCD读入资料的第7元位及BF是否为1,若为1表示LCD忙碌中。POPACC;将累加器ACC的内容从堆栈区取出。ACALLDELAY;调用延时程序。RET;返回。2:写指令到IR寄存器的子程序:C5

18、1:;写入IR寄存器子程序。ACALLDDW;检查忙碌。CLRE;禁能LCD。CLRRS;选择指令暂存器。CLRRW;选择写模式。SETBE;使能LCD。MOVDB0_DB7,ACC;将存在ACC内的指令码经由P1口输出到期LCD。CLRE;禁能LCD。RET;返回。3:写指令到DR寄存器的子程序:C51DDR:;写入DR寄存器子程序。ACALLDDW;检查忙碌。CLRE;禁能LCD。SETBRS;选择资料寄存器。CLRRW;选择写模式。SETBE;使能LCD。MOVDB0_DB7,ACC;将存在ACC内的指令码经由P1口输出到期LCD。CLRE;禁能LCD。RET;返回。4:清除LCD显示器

19、的子程序:CLS:;清除LCD显示器程序。MOVA,#01H;将01H放入ACC。ACALLC51;写指令到IR寄存器RET;返回。5:启动LCD子程序:INIT:MOVA,#38H;使用8Bits汇流排,显示两行,使用5*7的字型。LCALLC51;写指令到IR寄存器MOVA,#0EH;显示器开,光标开,光标闪烁。LCALLC51;写指令到IR寄存器MOVA,#06H;字符不动,光标自动右移一格。LCALLC51;写指令到IR寄存器RET;返回。6:延时间为R6*500us子程序:DELAY:;延时子程序。MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RET第七

20、节:在1602LCD显示字符串在前面的章节中,我们讲述的都是显示一个字母,从中,我们已知道了LCD显示字的基本原理,下面我们就来点精采的吧。我们让LCD上显示出我们网站的网址:“http/”这是在ISP套件上显示本站网址的图片*源程序*;p1口为数据rsbitp3.0rwbitp3.1ebitp3.5org00hmovsp,#70hmovp1,#01hcallenrwmovp1,#38hcallenrwmovp1,#0fhcallenrwmovp1,#06hcallenrwmovp1,#80hcallenrwmovdptr,#tabcallrwrammovp1,#0chcallenrwmovd

21、ptr,#tab1callrwrammovp1,#0c2hcallenrwjmp$enrw:clrrsclrrwclrecalldelaysetberetrwram:movr1,#00ha1:mova,r1movca,a+dptrcallrwram2incr1cjnea,#00h,a1retrwram2:movp1,asetbrsclrrwclrecalldelaysetberetdelay:movr4,#05d1:movr5,#0ffhdjnzr5,$djnzr4,d1rettab:dbhttp/,00htab1:db00hend第七节:用LCD显示屏显示字符串来源:HYPERLINK/(朗

22、腾电子网站)作者:程敬锋以下程序是要LCD液晶显示屏显示“NatiemElectron”及“natiem21”,大家不妨动手实验来加深对LCD显示屏的应用和理解。(图7.1)程序流程图;*;让LCD显示字符串的程序;*RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7DATAP1;*ORG00HAJMPSTARTORG000BHAJMPINSE;嵌入;*ORG50HSTART:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50MOVSP,#60HACALLINITACALLCLSMOVA,#80HACALLWrit

23、eMOVDPTR,#L1ACALLPR_STRINGMOVA,#C0HACALLWriteMOVDPTR,#L2ACALLPR_STRINGLOOP:AJMPLOOPL1:DB20h,4eh,61h,74h,69h,65h,6dh,20h,45h,6ch,65h,63h,74H,72h,6fh,6eh,00h,L2:DB7eH,6Eh,61H,74H,69H,65H,6DH,40H,32H,31H,63H,6eH,2eH,63H,6fH,6dH,00H;*INSE:MOVTL0,#0MOVTH0,#0DJNZR5,NOMOVR5,#50NO:RETI;*INIT:MOVA,#38HLCALLW

24、riteMOVA,#0EHLCALLWriteMOVA,#06HLCALLWriteRET;*CheckBusy:PUSHACCCB_Loop:CLRRSSETBRWCLRESETBEMOVA,DB0_DB7CLREJBACC.7,CB_LoopPOPACCACALLDELAYRET;*Write:ACALLCheckBusyCLRECLRRSCLRRWSETBEMOVDB0_DB7,ACCCLRERET;*WriteDDR:ACALLCheckBusyCLRESETBRSCLRRWSETBEMOVDB0_DB7,ACCCLRERET;*CLS:MOVA,#01HACALLWriteRET;*

25、PR_STRING:PUSHACCPR_LOOP:CLRAMOVCA,A+DPTRJZEND_PRACALLWriteINCDPTRAJMPPR_LOOPEND_PR:POPACCRET;*DELAY:MOVR6,#5D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETEND将以上程序编译后写入单片机效果如下:(图7.2)第八节:用LCD显示屏显示图形来源:HYPERLINK/(朗腾电子网站)作者:程敬锋上一节介绍了LCD液晶显示屏显示字符串,那么字符型LCD液晶显示屏能够显示图形吗?答案是肯定的。现就让字符型LCD液晶显示屏显示图形的方法作一介绍。记得开始时同大家说过,字符产生

26、器RAM(CGRAM)可由使用者设计8个5*7点阵字型或图形。一个5*7的字型或图形须用到8bytes的存储空间,每bytes的bit5,bit6,bit7都是无效位元,LCD内部的CGRAM的地址的6位元的长度,即A0-A5,而每一个字型或图形须占用8bytes,所以此区域只能存8个字型或图形。如果你已经在CGRAM造好字型或图形,要让LCD显示你的图形时,只需要在DDRAM写入00H-07H的地址,即可显示DDRAM所对应的资料了。下面举个例子好让大家去理解,就让LCD液晶显示屏显示一座宝殿的图形吧!在程序设之前你必须将设计好的图形用二进制代码找出来,图8.1是图形与地址的对应图:(图8.

27、1)前面已提到,一个字型或图形为8bytes的资料,而且每一个资料的7,6,5元位是无效位,(5个有效位)因为它是5*7的点阵,要将图形转为二进制码,你必需将图形分解成8个图形,分别将每个图形用二进制代码表示,如图8.2-8.9:(图8.2)DDRAM的地址07H的图形代码为:00H,00H,00H,00H,01H,03H,03H。(图8.3)DDRAM的地址07H的图形代码为:04H,04H,0EH,1FH,1FH,1FH,0AH。(图8.4)DDRAM的地址07H的图形代码为:00H,00H,00H,00H,10H,18H,18H。(图8.5)DDRAM的地址07H的图形代码为:00H,0

28、0H,17H,10H,17H,17H。(图8.6)DDRAM的地址07H的图形代码为:07H,0AH,15H,03H,1CH,1FH,1FH。(图8.7)DDRAM的地址07H的图形代码为:1FH,1FH,0EH,1FH,0EH,1FH,1FH。(图8.8)DDRAM的地址07H的图形代码为:1CH,0AH,15H,1FH,07H,1FH,1FH。(图8.9)DDRAM的地址07H的图形代码为:00H,00H,00H,1DH,01H,1DH,1DH。(图8.10)程序流程图以下是显示宝殿图形的程序:;*;让LCD显示图形程序;*RSBITP3.0RWBITP3.1EBITP3.5DB0_DB7

29、DATAP1;*ORG00HAJMPSTARTORG000BHAJMPINSE;嵌入;*ORG50HSTART1:MOVTMOD,#0MOVTL0,#0MOVTH0,#0SETBEASETBET0SETBTR0MOVR5,#50CLRP3.2SETBP3.1START:MOVSP,#60HACALLINITACALLCLSACALLSAVE_FONTMOVA,#10000111BACALLWriteMOVR1,#0OUT_DDRAM1:MOVACC,R1ACALLWriteLCDINCR1CJNER1,#3,OUT_DDRAM1MOVACC,#11000110BACALLWriteMOVR1,#3OUT_DDRAM2:MOVACC,R1ACALLWriteLCDINCR1CJNER1,#8,OUT_DDRAM2LOOP:JMPLOOP;*INIT:MOVA,#38HLCALLWriteMOVA,#0EHLCALLWriteMOVA,#06HLCALLWriteRET;*Check

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论