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

上传人:小飞机 文档编号:2032186 上传时间:2023-01-02 格式:DOCX 页数:33 大小:1.13MB
返回 下载 相关 举报
LCD液晶显示屏(介绍及程序GOOD).docx_第1页
第1页 / 共33页
LCD液晶显示屏(介绍及程序GOOD).docx_第2页
第2页 / 共33页
LCD液晶显示屏(介绍及程序GOOD).docx_第3页
第3页 / 共33页
LCD液晶显示屏(介绍及程序GOOD).docx_第4页
第4页 / 共33页
LCD液晶显示屏(介绍及程序GOOD).docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《LCD液晶显示屏(介绍及程序GOOD).docx》由会员分享,可在线阅读,更多相关《LCD液晶显示屏(介绍及程序GOOD).docx(33页珍藏版)》请在三一办公上搜索。

1、第一节:了解LCD液晶显示屏作者:尘封往事 文章来源:本站原创 点击数: 2097 更新时间:2005-11-14 10:43:40 一:字符型点阵式LCD液晶显示屏: LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。 本站要介绍的LCD为字符型点阵式LCD模块(liquid Crystal Display Module)简称LCM,或者是字符型LCD。 字符型液晶显示模块是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示

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

3、绍。 一般初学者由字符型LCD入手比较简单,学完之后,再进一步控制图案型LCD模块。图1.1所示为16*2地的外观,表1.2为LCM的接脚及功能。二、1602的外形尺寸三、1602的接口信号说明:编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极表1.4:液晶显示模

4、块RT-1602C的接脚及功能第二节:LCD液晶显示屏的内部结构作者:尘封往事 文章来源:本站原创 点击数: 1722 更新时间:2005-11-14 10:51:20 液晶显示模块WM-C1602N的内部结构可以分成三部份:一为LCD控制器,二为LCD驱动器,三为LCD显示装置,如图示2.1所示:地址计数器 AC用户自定义的字符发生器CGRAMCGRAM为可自编数据区DDRAM为显示缓冲区;内藏的字符发生存储器(CGROM)图2.1:LCM内部方块图目前大多数的LCD液晶显示器的控制器都有采用一颗型号为HD44780的集成电路作控制器。HD44780是集控制器,驱动器于一体,专用于字符显示控

5、制驱动集成电路。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

6、=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:

7、液晶显示模块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”

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

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

10、 P1 ORG 00H AJMP START ORG 000BH AJMP INSE ORG 50HSTART:MOV TMOD,#0 MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 MOV R5,#50 MOV SP,#60H ACALL INIT MOV A,#10000000B ;写入显示地址为第一行第一位。? ACALL C51 MOV A,#01000001B ;字母“A”的代码。 ACALL C51DDRLOOP: AJMP LOOPINSE: MOV TL0,#0 ;中断服务子程序。 MOV TH0,#0 DJNZ R5,NO MO

11、V R5,#50NO: RETIINIT: MOV A,#00111000B ;使用8Bits汇流排,显示两行,使用5*7的字型。 LCALL C51 MOV A,#00001110B ;显示器开,光标开,光标闪烁。 LCALL C51 MOV A,#00000110B ;字符不动,光标自动右移一格。 LCALL C51 RETDDW: ;检查忙碌子程序。 PUSH ACCDDW1:CLR RS SETB RW CLR E SETB E MOV A,DB0_DB7 CLR E JB ACC.7,DDW1 POP ACC ACALL DELAY RETC51: ;写入IR寄存器子程序。 ACAL

12、L DDW ;检查忙碌否 CLR E CLR RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RETC51DDR: ;写入DR寄存器子程序。 ACALL DDW CLR E SETB RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RETDELAY: ;延时子程序。 MOV R6,#5D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END以上程序书写时用二进制目的是为了方便大家去理解。将上面的程序编译好后用编程器将程序写入AT89S51芯片,然后将写好的AT89S51芯片插入本站提供的实验板或自已DI

13、Y的实验板上,通电运行,这时在1602液晶显示器上就显示出一个“A”了。上图中,1602液晶显示器在2004套件上显示出字母“A”的图片。第五节:在1602LCD第二行显示字母“B”在上一课中,我们已经详细的讲解了怎么在液晶显示屏显示字母“A”,但1602LCD有两行显示,我们怎样才能让字符显示在第二行呢?与显示在第一行有什么区别吗?下面我就与大家一起来探讨这个课题。 下图中,1602在我们学习套件中显示在第二行第四位的图片现在先来介绍用软件查出字符“B”内码的方法,请大家先下载内码查询软件(请到本站下载中心下载)。解压后,点击图标启动软件,如下图所示,输入字符“B” 可查汉字内码?点击“内码

14、显示”按钮,42就是字符“B”的内码了,大家都学会使用了吧?;*源程序* RS BIT P3.0 RW BIT P3.1 E BIT P3.5 DB0_DB7 DATA P1 ORG 00H AJMP START ORG 000BH AJMP INSE ORG 50HSTART:MOV TMOD,#0 MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 MOV R5,#50 MOV SP,#60H ACALL INIT MOV A,#0C3H ;写入显示地址为第二行第四位。? ACALL C51 MOV A,#42H ;字母B的代码。 ACALL C

15、51DDRLOOP:AJMP LOOPINSE:MOV TL0,#0 ;中断服务子程序。 MOV TH0,#0 DJNZ R5,NO MOV R5,#50NO: RETIINIT: MOV A,#38H ;使用8Bits汇流排,显示两行,使用5*7的字型。 LCALL C51 MOV A,#0EH ;显示器开,光标开,光标闪烁。 LCALL C51 MOV A,#06H ;字符不动,光标自动右移一格。 LCALL C51 RETDDW: ;检查忙碌子程序。 PUSH ACCDDW1: CLR RS SETB RW CLR E SETB E MOV A,DB0_DB7 CLR E JB ACC.

16、7,DDW1 POP ACC ACALL DELAY RETC51: ;写入IR寄存器子程序。 ACALL DDW CLR E CLR RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RETC51DDR: ;写入DR寄存器子程序。 ACALL DDW CLR E SETB RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RETDELAY: ;延时子程序。 MOV R6,#5D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END第六节:LCD相关的子程序在前面的课程中,我们已经实验了液晶显示屏显示字母了

17、,其实大家亦不难理解上几个例子的源程序,只不过是由几个子程序构成。下面向大家介绍前面例子中应用到的几个子程序。以下介绍常用到的六个子程序:1:查看忙碌子程序。2:写指令到IR寄存器的子程序。3:写指令到DR寄存器的子程序。4:清除LCD显示器的子程序。5:启动LCD子程序。6:延时子程序。 现在就给出开发液晶屏建立相关LCD规范的子程序。1:查看忙碌子程序:DDW: ;检查忙碌子程序。PUSH ACC ;将A的内容放到堆栈区内,在此这句可能没有意义,但在实际应用中ACC是频繁使 用的,所以在进入子程序之前先把ACC的内容放入堆栈中,以免破坏原来在ACC的 内容。DDW1: CLR RS;选择指

18、令暂存器。SETB RW ;选择读模式。CLR E ;禁能LCD。SETB E ;使能LCD。MOV A,DB0_DB7;将LCD的DB0-DB7的资料经由P1口存入ACC中,以便查对第7位元BF是否为0。CLR E ;禁能LCD。JB ACC.7,CB_Loop ;判断由LCD读入资料的第7元位及BF是否为1,若为1表示LCD忙碌中。POP ACC ;将累加器ACC的内容从堆栈区取出。ACALL DELAY ;调用延时程序。RET ;返回。2:写指令到IR寄存器的子程序:C51: ;写入IR寄存器子程序。ACALL DDW ; 检查忙碌。CLR E ;禁能LCD。CLR RS ;选择指令暂存

19、器。CLR RW ;选择写模式。SETB E ;使能LCD。MOV DB0_DB7,ACC ;将存在ACC内的指令码经由P1口输出到期LCD。CLR E ;禁能LCD。RET ;返回。3:写指令到DR寄存器的子程序:C51DDR:;写入DR寄存器子程序。ACALL DDW;检查忙碌。CLR E ;禁能LCD。SETB RS ;选择资料寄存器。CLR RW ;选择写模式。SETB E ;使能LCD。MOV DB0_DB7,ACC ;将存在ACC内的指令码经由P1口输出到期LCD。CLR E ;禁能LCD。RET ;返回。4:清除LCD显示器的子程序:CLS: ;清除LCD显示器程序。MOV A,

20、#01H ;将01H放入ACC。ACALL C51 ;写指令到IR寄存器RET ;返回。5:启动LCD子程序:INIT:MOV A,#38H ;使用8Bits汇流排,显示两行,使用5*7的字型。LCALL C51 ;写指令到IR寄存器MOV A,#0EH ;显示器开,光标开,光标闪烁。LCALL C51 ;写指令到IR寄存器MOV A,#06H ;字符不动,光标自动右移一格。LCALL C51 ;写指令到IR寄存器RET ;返回。6:延时间为R6*500us子程序: DELAY: ;延时子程序。 MOV R6,#5D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET

21、第七节:在1602LCD显示字符串在前面的章节中,我们讲述的都是显示一个字母,从中,我们已知道了LCD显示字的基本原理,下面我们就来点精采的吧。我们让LCD上显示出我们网站的网址:“http/”这是在ISP套件上显示本站网址的图片*源程序*;p1口为数据 rs bit p3.0 rw bit p3.1 e bit p3.5 org 00h mov sp,#70h mov p1,#01h call enrw mov p1,#38h call enrw mov p1,#0fh call enrw mov p1,#06h call enrw mov p1,#80h call enrw mov dpt

22、r,#tab call rwram mov p1,#0ch call enrw mov dptr,#tab1 call rwram mov p1,#0c2h call enrw jmp $enrw:clr rs clr rw clr e call delay setb e retrwram:mov r1,#00ha1: mov a,r1 movc a,a+dptr call rwram2 inc r1 cjne a,#00h,a1 retrwram2:mov p1,a setb rs clr rw clr e call delay setb e retdelay:mov r4,#05d1: m

23、ov r5,#0ffh djnz r5,$ djnz r4,d1 rettab: db http/ ,00htab1:db 00h end第七节:用LCD显示屏显示字符串 来源:(朗腾电子网站)作者:程敬锋 以下程序是要LCD液晶显示屏显示“Natiem Electron”及“natiem”,大家不妨动手实验来加深对LCD显示屏的应用和理解。(图7.1)程序流程图;*; 让LCD显示字符串的程序;*RS BIT P3.0RW BIT P3.1E BIT P3.5DB0_DB7 DATA P1;*ORG 00HAJMP STARTORG 000BHAJMP INSE ;嵌入;*ORG 50HST

24、ART: MOV TMOD,#0MOV TL0,#0MOV TH0,#0SETB EASETB ET0SETB TR0MOV R5,#50MOV SP,#60HACALL INITACALL CLSMOV A,#80HACALL WriteMOV DPTR,#L1ACALL PR_STRINGMOV A,#C0HACALL WriteMOV DPTR,#L2ACALL PR_STRINGLOOP: AJMP LOOPL1: DB 20h,4eh,61h,74h,69h,65h,6dh,20h,45h,6ch,65h,63h,74H,72h,6fh,6eh,00h,L2: DB 7eH,6Eh,

25、61H,74H,69H,65H,6DH,40H,32H,31H,63H,6eH,2eH,63H,6fH,6dH,00H;*INSE: MOV TL0,#0MOV TH0,#0DJNZ R5,NOMOV R5,#50NO: RETI;*INIT:MOV A,#38HLCALL WriteMOV A,#0EHLCALL WriteMOV A,#06HLCALL WriteRET;*CheckBusy:PUSH ACCCB_Loop: CLR RSSETB RWCLR ESETB EMOV A,DB0_DB7CLR EJB ACC.7,CB_LoopPOP ACCACALL DELAYRET;*Wr

26、ite:ACALL CheckBusyCLR ECLR RSCLR RWSETB EMOV DB0_DB7,ACCCLR ERET;*WriteDDR:ACALL CheckBusyCLR ESETB RSCLR RWSETB EMOV DB0_DB7,ACCCLR ERET;*CLS:MOV A,#01HACALL WriteRET;*PR_STRING:PUSH ACCPR_LOOP: CLR AMOVC A,A+DPTRJZ END_PRACALL WriteINC DPTRAJMP PR_LOOPEND_PR: POP ACCRET;*DELAY:MOV R6,#5D1: MOV R7

27、,#248DJNZ R7,$DJNZ R6,D1RETEND 将以上程序编译后写入单片机效果如下:(图7.2)第八节:用LCD显示屏显示图形 来源:(朗腾电子网站)作者:程敬锋 上一节介绍了LCD液晶显示屏显示字符串,那么字符型LCD液晶显示屏能够显示图形吗?答案是肯定的。现就让字符型LCD液晶显示屏显示图形的方法作一介绍。 记得开始时同大家说过,字符产生器RAM(CGRAM)可由使用者设计8个5*7点阵字型或图形。一个5*7的字型或图形须用到8bytes的存储空间,每bytes的bit5,bit6,bit7都是无效位元,LCD内部的CGRAM的地址的6位元的长度,即A0-A5,而每一个字型或

28、图形须占用8bytes,所以此区域只能存8个字型或图形。如果你已经在CGRAM造好字型或图形,要让LCD显示你的图形时,只需要在DDRAM写入00H-07H的地址,即可显示DDRAM所对应的资料了。 下面举个例子好让大家去理解,就让LCD液晶显示屏显示一座宝殿的图形吧!在程序设之前你必须将设计好的图形用二进制代码找出来,图8.1是图形与地址的对应图:(图8.1) 前面已提到,一个字型或图形为8bytes的资料,而且每一个资料的7,6,5元位是无效位,(5个有效位)因为它是5*7的点阵,要将图形转为二进制码,你必需将图形分解成8个图形,分别将每个图形用二进制代码表示,如图8.2-8.9:(图8.

29、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,00H,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,

30、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显示图形程序;*RS BIT P3.0RW BIT P3.1E BIT P3.5DB0_DB7 DATA P1;*ORG 00HAJMP STARTORG 000BHAJMP INSE ;嵌入;*ORG 50HSTART1: MOV TMOD,#0MOV TL0,#0MOV TH0,#0SETB EASETB ET0

31、SETB TR0MOV R5,#50CLR P3.2SETB P3.1START:MOV SP,#60HACALL INITACALL CLSACALL SAVE_FONTMOV A,#10000111BACALL WriteMOV R1,#0OUT_DDRAM1:MOV ACC,R1ACALL WriteLCDINC R1CJNE R1,#3,OUT_DDRAM1MOV ACC,#11000110BACALL WriteMOV R1,#3OUT_DDRAM2:MOV ACC,R1ACALL WriteLCDINC R1CJNE R1,#8,OUT_DDRAM2LOOP:JMP LOOP;*I

32、NIT:MOV A,#38HLCALL WriteMOV A,#0EHLCALL WriteMOV A,#06HLCALL WriteRET;*CheckBusy:PUSH ACCCB_Loop: CLR RSSETB RWCLR ESETB EMOV A,DB0_DB7CLR EJB ACC.7,CB_LoopPOP ACCACALL DELAYRET;*Write:ACALL CheckBusyCLR ECLR RSCLR RWSETB EMOV DB0_DB7,ACCCLR ERET;*WriteLCD:ACALL CheckBusyCLR ESETB RSCLR RWSETB EMOV

33、 DB0_DB7,ACCCLR ERET;*CLS:MOV A,#01HACALL WriteRET;*SAVE_FONT:MOV ACC,#01000000BACALL WriteMOV R4,#64MOV DPTR,#USER_PATTERNPUT_LOOP:CLR ACCMOVC A,A+DPTRACALL WriteLCDINC DPTRDJNZ R4,PUT_LOOPMOV A,#10000000BACALL WriteRET;*USER_PATTERN:DB 00H,00H,00H,00H,01H,03H,03H,00HDB 04H,04H,0EH,1FH,1FH,1FH,0AH,

34、00HDB 00H,00H,00H,00H,10H,18H,18H,00HDB 00H,00H,00H,17H,10H,17H,17H,00HDB 07H,0AH,15H,03H,1CH,1FH,1FH,00HDB 1FH,1FH,0EH,1FH,0EH,1FH,1FH,00HDB 1CH,0AH,15H,1FH,07H,1FH,1FH,00HDB 00H,00H,00H,1DH,01H,1DH,1DH,00H;*INSE: MOV TL0,#0MOV TH0,#0DJNZ R5,NOMOV R5,#50CPL P3.2CPL P3.1NO: RETI;*DELAY:MOV R6,#5D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND 好了!经过几节的学习与实践,大家对LCD液晶显示屏亦有了解,文章到此亦要暂告一段落。由于笔者也只是菜鸟一只,文章难免错漏,不妥之处请诸位大虾不吝赐教。在此感谢大家对我的支持。在日后的文章将会介绍一些应用实例,欢迎网友投稿,互相交流,学习,共同发展!转载请注明出处。参考文献:1:李维缇 郭 强,液晶显示器件应用技术1999年。2:何立民,单片机应用技术选编1998年。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号