单片机显示原理
▌一.接口
LCD是良多单片机喜好者较早来往的字符型液晶显示器,它的主控芯片是HD也许别的兼容芯片。与此相仿的是LCD液晶显示器,它是一种图形点阵显示器,能显示的体例比LCD要丰裕良多,除了平常字符外,还也许显示点阵图案,带有汉字库的还也许显示汉字,它的并行启动方法与LCD出入无几,以是,在这边花点光阴是值得的。
时时来讲,LCD有16条引足,传闻再有14条引足的,与16足的比拟缺乏了背光电源A(15足)和地线K(16足)。这块LCD的型号是HJA,是绘晶科技公司的产物,它有16条引足。如图1所示:
图1
再来一张它的反面的,如图2所示:
图2
它的16条引足界说以下:
引足号
标识
引足阐述
引足号
标识
引足阐述
1
VSS
电源地
9
D2
数据端口
2
VDD
电源正极
10
D3
数据端口
3
VO
偏压记号
11
D4
数据端口
4
RS
下令/数据
12
D5
数据端口
5
RW
读/写
13
D6
数据端口
6
E
使能
14
D7
数据端口
7
D0
数据端口
15
A
背光正极
8
D1
数据端口
16
K
背光负极
对这个表的阐述:
1.VSS接电源地。
2.VDD接+5V。
3.VO是液晶显示的偏压记号,可接10K的精细电位器。或相同阻值的RM/RM蓝白可调电阻。见图3。
图3
4.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和CGRAM
DDRAM(DisplayDataRAM)即是显示数据RAM,用来存放待显示的字符代码。共80个字节,其地点和屏幕的对应相干以下(如图8):
图8
DDRAM相当于打算机的显存,咱们为了在屏幕上显示字符,就把字符代码送入显存,云云该字符就也许显示在屏幕上了。相同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)
图14
D=1:显示开,D=0:显示关。
C=1:光标显示,C=0:光标不显示。
B=1:光标忽闪,B=0:光标不忽闪。
阐述:这边的配置是显示开,不显示光标,光标不忽闪,配置字为0x0c。
3.加入形式配置指令(如图15、16)
图15
I/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。
▌五.实例
底下咱们就以一个实例来结尾这篇文章。先讲解一下布景:单片机最小系统(扩展了外部RAM)。采取STC89C52RC,晶振22.MHZ。以5×8点阵,16×2行,8位数据端口。首先在第一行显示“IloveMCU!”,第二行显示“LCDTest!”。延时一段光阴,清屏。尔后在第一行显示自界说字符:摄氏温标标识。第二行显示圆周率(pai)标识。再延时一段光阴,清屏。着末在第一行显示“Wel
转载请注明:http://www.abuoumao.com/hyfz/1073.html