嵌入式开发必看详解液晶显示器LCD1
液晶屏概括:LCD字符型液晶,也许同时显示16x02即32个字符。(16列2行)注:为了示意的便利,后文皆以1示意高电平,0示意低电平。液晶也叫字符型液晶,它是一种特意用来显示字母、数字、标识等的点阵型液晶模块。它由几多个5X7或者5X11等点阵字符位构成,每个点阵字符位均也许显示一个字符,每位之间有一个点距的距离,每行之间也有距离,起到了字符间距和行间距的影响,正由于如斯以是它不能很好地显示图形(用自界说CGRAM,显示成果也不好)。LCD是指显示的体例为16X2,即也许显示两行,每行16个字符液晶模块(显示字符和数字)。市道上字符液晶大多半是基于HD液晶芯片的,掌握旨趣是统统不异的,因而基于HD写的掌握程序也许很便利地运用于市道上大部份的字符型液晶。
液晶显示屏中,型算是对比浅显的一种,传闻和照样全兼容的。
里的储备器有三种:CGROM、CGRAM、DDRAM。CGROM保管了厂家临盆时固化在LCM中的点阵型显示数据,CGRAM是留给用户本身界说点阵型显示数据的,DDRAM则是和显示屏的体例对应的。内部的DDRAM有80字节,而显示屏上惟独2行×16列,共32个字符,以是两者不统统逐个双应。默许状况下,显示屏上第一行的体例对应DDRAM中80H到8FH的体例,第二行的体例对应DDRAM中CH到CFH的体例。DDRAM中90H到A7H、D0H到E7H的体例是不显示在显示屏上的,然而在转动屏幕的状况下,这些体例就或者被转动显示出来了。注:这边陈列的DDRAM的地点确切来讲理当是DDRAM地点+80H往后的值,由于在向数据总线写数据的时候,号令字的最高位老是为1。
哄骗三条掌握线:EN、RW、RS。此中EN起到相似片选和时钟线的影响,RW和RS批示了读、写的方位和体例。在读数据(或者Busy标识)期间,EN线必需坚持高电平;而在写指令(或者数据)流程中,EN线上必需送出一个正脉冲。RW、RS的组合一公有四种状况,离别对应四种操纵:RS=0、RW=0——示意向LCM写入指令RS=0、RW=1——示意读取Busy标识RS=1、RW=0——示意向LCM写入数据RS=1、RW=1——示意从LCM读取数据。
LCD在哄骗的流程中,也许在RS=0、RW=0的状况下,向LCM写入一个字节的掌握指令。哄骗的掌握指令全豹八个种别。有的种别又有几条不同的指令。详细的状况排列不才:①01H:排除DDRAM的通盘单位,光标被挪移到屏幕左上角。②02H:DDRAM通盘单位的体例固定,光标移至左上角。③输入方法配置(EnterModeSet),这些指令章程了两个方面:一是写入一个DDRAM单位后,地点指针何如改动(加一照样减一);二是屏幕上的体例是否转动。04H:写入DDRAM后,地点指针减一,好比第一个字符写入8FH,则下一个字符会写入8EH;屏幕上的体例不转动。05H:写入DDRAM后,地点指针减一,同上一种状况;每一个字符写入往后,屏幕上的体例向右转动一个字符位。06H:写入DDRAM后,地点指针加一,好比第一个字符写入80H,则下一个字符会写入81H;屏幕上的体例也是不转动。这理当是最罕用的一种显示方法。07H:写入DDRAM后,地点指针加一,同上一种状况;每一个字符写入往后,屏幕上的体例向左转动一个字符位。④屏幕开关、光标开关、闪动开关。
08H、09H、0AH、0BH:闭塞显示屏,实践上是不把DDRAM中的体例对应显示在屏幕上,对DDRAM的操纵照样在举行的,履行这条指令,接着对DDRAM举行写入,屏幕上没有任何体例,然而接着履行上面的某条指令,就可以看到适才屏幕闭塞期间,对DDRAM操纵的成果了。0cH:翻开显示屏,不显示光标,光标地点地方的字符不闪动。0dH:翻开显示屏,不显示光标,光标地点地方的字符闪动。0eH:翻开显示屏,显示光标,光标地点地方的字符不闪动。0fH:翻开显示屏,显示光标,光标地点地方的字符闪动。对于光方位地方:光标地点的地方批示了下一个被写入的字符所处的地方,介入在写入下一个字符前没有过程指令配置DDRAM的地点,那末这个字符就理当显示在光标指定的场合。⑤配置光标挪移(实践便是AC的补充照样削减)、大伙画面是否转动。10H:每输入一次该指令,AC就减一,对应了光标向左挪移一格。大伙的画面不转动。14H:每输入一次该指令,AC就加一,对应了光标向右挪移一格。大伙的画面不转动。18H:每输入一次该指令,大伙的画面就向左转动一个字符位。
1CH:每输入一次该指令,大伙的画面就向右转动一个字符位。画面在转动的时候,每行的首尾是连在一同的,也便是每行的第一个字符,若左移25次,就会显示在该行的末了一格。在画面转动的流程中,AC的值也是变动的。⑥显示形式设定指令,设定了显示几行,显示甚么样的点阵字符,数据总线占用几位。20H:4位总线,单行显示,显示5×7的点阵字符。24H:4位总线,单行显示,显示5×10的点阵字符。28H:4位总线,双行显示,显示5×7的点阵字符。2CH:4位总线,双行显示,显示5×10的点阵字符。30H:8位总线,单行显示,显示5×7的点阵字符。34H:8位总线,单行显示,显示5×10的点阵字符。38H:8位总线,双行显示,显示5×7的点阵字符。这是最罕用的一种形式。3CH:8位总线,双行显示,显示5×10的点阵字符。
一.接口LCD是不少单片机兴趣者较早来往的字符型液晶显示器,它的主控芯片是HD或者此外兼容芯片。与此相仿的是LCD液晶显示器,它是一种图形点阵显示器,能显示的体例比LCD要丰饶不少,除了普遍字符外,还也许显示点阵图案,带有汉字库的还也许显示汉字,它的并行启动方法与LCD出入无几,以是,在这边花点时候是值得的。个别来讲,LCD有16条引足,传闻再有14条引足的,与16足的比拟缺乏了背光电源A(15足)和地线K(16足)。我手里这块LCD的型号是HJA,是绘晶科技公司的产物,它有16条引足。如图1所示:图1再来一张它的反面的,如图2所示:图2它的16条引足界说下列:对这个表的表明:1.VSS接电源地。2.VDD接+5V。3.VO是液晶显示的偏压记号,可接10K的精湛电位器。或同样阻值的RM/RM蓝白可调电阻。见图3。图34.RS是号令/数据筛选引足,接单片机的一个I/O,当RS为低电时常,筛选号令;当RS为高电时常,筛选数据。5.RW是读/写筛选引足,接单片机的一个I/O,当RW为低电时常,向LCD写入号令或数据;当RW为高电时常,从LCD读取状况或数据。即使不须要举行读取操纵,也许直接将其接VSS。6.E,履行号令的使能引足,接单片机的一个I/O。7.D0—D7,并行数据输入/输出引足,可接单片机的P0—P3搪塞的8个I/O口。即使接P0口,P0口理当接4.7K—10K的上拉电阻。即使是4线并行启动,只要接4个I/O口。8.A背光正极,可接一个10—47欧的限流电阻到VDD。9.K背光负极,接VSS。见图4所示。图4二.根基操纵LCD的根基操纵分为四种:1.读状况:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状况字。2.读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。3.写号令:输入RS=0,RW=0,E=高脉冲。输出:无。4.写数据:输入RS=1,RW=0,E=高脉冲。输出:无。读操纵时序图(如图5):图5写操纵时序图(如图6):图6时序时候参数(如图7):图7三.DDRAM、CGROM和CGRAMDDRAM(DisplayDataRAM)便是显示数据RAM,用来寄放待显示的字符代码。共80个字节,其地点和屏幕的对应干系下列(如图8):图8DDRAM相当于计较机的显存,咱们为了在屏幕上显示字符,就把字符代码送入显存,云云该字符就也许显示在屏幕上了。同样LCD公有80个字节的显存,即DDRAM。但LCD的显示屏幕惟独16×2巨细,因而,并不是通盘写入DDRAM的字符代码都能在屏幕上显示出来,惟独写在上图所示界限内的字符才也许显示出来,写在界限外的字符不能显示出来。云云,咱们在程序中也许欺诈上面的“光标或显示挪移指令”使字符缓缓挪移到看来的显示界限内,看到字符的挪移成果。前方说了,为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。譬喻,即使想在屏幕左上角显示字符‘A’,那末就把字符‘A’的字符代码41H写入DDRAM的00H地点处便可。至于何如写入,背面会有表明。那末为甚么把字符代码写入DDRAM,就也许在响应地方显示这个代码的字符呢?咱们领会,LCD是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,甚么叫字符的字模数据,看看上面的这个图就明晰了(如图9)。图9上图的左侧便是字符‘A’的字模数据,右侧便是将左侧数据用“○”代表0,用“■”代表1。进而显示出‘A’这个字形。从上面的图也许看出,字符‘A’的高4位是,低4位是,合在一同便是b,即41H。它刚好与该字符的ASCII码一致,云云就给了咱们很大的便利,咱们也许在PC上哄骗P2=‘A’云云的语法。编译后,恰恰是这个字符的字符代码。在LCD模块上固化了字模储备器,便是CGROM和CGRAM,HD内置了个罕用字符的字模,存于字符形成器CGROM(CharacterGeneratorROM)中,其余再有8个许可用户自界说的字符形成RAM,称为CGRAM(CharacterGeneratorRAM)。下图(如图12)表明晰CGROM和CGRAM与字符的对应干系。从ROM和RAM的名字咱们也也许领会,ROM是早已固化在LCD模块中的,只可读取;而RAM是可读写的。也便是说,即使只要要在屏幕上显示已存在于CGROM中的字符,那末只要在DDRAM中写入它的字符代码就也许了;但即使要显示CGROM中没有的字符,好比摄氏温方位标识,那末就惟独先在CGRAM中界说,尔后再在DDRAM中写入这个自界说字符的字符代码便可。和CGROM中固化的字符不同,CGRAM中本身没有字符,以是要在DDRAM中写入某个CGROM不存在的字符,必需在CGRAM中先界说后哄骗。程序退出后CGRAM中界说的字符也不复存在,下次使历时,必需从新界说。图10上头这个图(如图10)表明的是5×8点阵和5×10点阵字符的字形和光方位地方。先来讲5×8点阵,它有8行5列。那末界说云云一个字符须要8个字节,每个字节的前3个位没有被哄骗。譬喻,界说摄氏温方位标识{0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}。图11上头这个图(如图11)表明的是配置CGRAM地点指令。从这个指令的格式中咱们也许看出,它公有aaaaaa这6位,全豹也许示意64个地点,即64个字节。一个5×8点阵字符共占用8个字节,那末这64个字节全豹也许自界说8个字符。也便是说,上头这个图的6位地点中的DB5DB4DB3用来示意8个自界说的字符,DB2DB1DB0用来示意每个字符的8个字节。这DB5DB4DB3所示意的8个自界说字符(0--7)便是要写入DDRAM中的字符代码。咱们领会,在CGRAM中只可界说8个自界说字符,也便是惟独0—7这8个字符代码,但不才面的这个表(如图12)中一公有16个字符代码(××××b--××××b)。现实上,如图所示,它只可示意8个自界说字符(××××b=××××b,××××b=××××b……次序类推)。也便是说,写入DDRAM中的字符代码0和字符代码8是统一个自界说字符。5×10点阵每个字符共占用16个字节的空间,以是CGRAM中只可界说4个云云的自界说字符。那末如安在CGRAM中自界说字符呢?在上头的讲解中,咱们领会有一个配置CGRAM地点指令,同写DDRAM指令如同,只要配置好某个自界说字符的字模数据,尔后遵照上头讲解的法子,配置好CGRAM地点,次序写入这个字模数据便可。咱们在背面的例子中再举行表明。图12四.LCD指令1.办事方法配置指令(如图13)图13×:不体贴,也便是说这个位是0或1均也许,个别取0。DL:配置数据接口位数。DL=1:8位数据接口(D7—D0)。DL=0:4位数据接口(D7—D4)。N=0:一行显示。N=1:两行显示。F=0:5×8点阵字符。F=1:5×10点阵字符。表明:由于是写指令字,以是RS和RW都是0。LCD只可用并行方法启动,不能用串行方法启动。而并行方法又也许筛选8位数据接口或4位数据接口。这边咱们筛选8位数据接口(D7—D0)。咱们的配置是8位数据接口,两行显示,5×8点阵,即0b0011也便是0x38。(注重:NF是10或11的成果是同样的,都是两行5×8点阵。由于它不能以两行5×10点阵方法举行显示,换句话说,这边用0x38或0x3c是同样的)。2.显示开关掌握指令(如图14)图14D=1:显示开,D=0:显示关。C=1:光标显示,C=0:光标不显示。B=1:光标闪动,B=0:光标不闪动。表明:这边的配置是显示开,不显示光标,光标不闪动,配置字为0x0c。3.加入形式配置指令(如图15、16)图15I/D=1:写入新数据后光标右移。I/D=0:写入新数据后光标左移。S=1:显示挪移。S=0:显示不挪移。图16表明:这边的配置是0x06。4.光标或显示挪移指令(如图17、18)图17图18表明:在须要举行整屏挪移时,这个指令特别有效,也许完结屏幕的转动显示成果。初始化时不哄骗这个指令。5.清屏指令(如图19)图19表明:排除屏幕显示体例。光标返回屏幕左上角。履行这个指令时须要一按时候。6.光标归位指令(如图20)图20表明:光标返回屏幕左上角,它不改动屏幕显示体例。7.配置CGRAM地点指令(如图21)图21表明:这个指令在上头曾经讲解过。用法在背面例子中表明。8.配置DDRAM地点指令(如图22)图22表明:这个指令用于配置DDRAM地点。在对DDRAM举行读写以前,首先要配置DDRAM地点,尔后才具举行读写。前方咱们说过,DDRAM便是LCD的显示储备器。咱们要在它上头举行显示,就要把要显示的字符写入DDRAM。同样,咱们想领会DDRAM某个地点上有甚么字符,也要先配置DDRAM地点,尔后将它读出到单片机。9.读忙记号和地点计数器AC(如图23)图23表明:这个指令用来读取LCD状况。对于单片机来讲,LCD属于慢速配置。当单片机向其发送一个指令后,它将去履行这个指令。这时即使单片机再次发送下一条指令,由于LCD速率较慢,前一条指令还未履行了却,它将不采纳这新的指令,致使新的指令丧失。因而这条读忙指令也许用来决断LCD是否忙,是否采纳单片机发来的指令。当BF=1,示意LCD正忙,不能采纳单片机的指令;当BF=0,示意LCD余暇,也许采纳单片机的指令。RS=0,示意是指令;RW=1,示意是读取。这条指令再有一个副产物:即也许获得地点记数器AC的值(addresscounter)。LCD维持了一个地点计数器AC,用来纪录下一次读写CGRAM或DDRAM的地方。须要强调的是:这条指令我一次也没有履行胜利。不少网友好似也是云云。幸而咱们有其余的想法,也便是延时。过程观察每条指令的履行时候,再过程一些实验,也许肯定指令的延时。云云就也许在上一条指令履行了却后再履行下一条指令了。10.写数据到CGRAM或DDRAM指令(如图24)图24表明:RS=1,数据;RW=0,写。指令履行时,要在DB7—DB0上先配置好要写入的数据,尔后履行写号令。11.从CGRAM或DDRAM读数据指令(如图25)图25表明:RS=1,数据;RW=1,读。先配置好CGRAM或DDRAM的地点,尔后履行读取号令。数据就被读入后DB7—DB0。
液晶屏罕用指令集
过程D0~D7的8位数据端传输数据和指令。
显示形式配置:(初始化)
0011[0x38]配置16×2显示,5×8点阵,8位数据接口;
显示开关及光标配置:(初始化)
0DCBD显示(1有效)、C光标显示(1有效)、B光标闪动(1有效)
00NSN=1(读或写一个字符后地点指针加1光标加1),
N=0(读或写一个字符后地点指针减1光标减1),
S=1且N=1(当写一个字符后,整屏显示左移)
s=0当写一个字符后,整屏显示不挪移
数据指针配置:
数据首地点为80H,以是数据地点为80H+地点码(0-27H,40-67H)
其余配置:
01H(显示清屏,数据指针=0,通盘显示=0);02H(显示回车,数据指针=0)。
时常举荐的初始化流程:
延时15ms
写指令38H
延时5ms
写指令38H
延时5ms
写指令38H
延时5ms
(以上都不探测忙记号)
(下列都要探测忙记号)
写指令38H
写指令08H闭塞显示
写指令01H显示清屏
写指令06H光标挪移配置
写指令0cH显示开及光标配置
了却五.实例上面咱们就以一个实例来结果这篇文章。先讲解一下布景:单片机最小系统(扩展了外部RAM)。采纳STC89C52RC,晶振22.MHZ。以5×8点阵,16×2行,8位数据端口。首先在第一行显示“IloveMCU!”,第二行显示“LCDTest!”。延时一段时候,清屏。尔后在第一行显示自界说字符:摄氏温标标识。第二行显示圆周率(pai)标识。再延时一段时候,清屏。末了在第一行显示“Wel
转载请注明:http://www.abuoumao.com/hyls/989.html