单片机显示原理

▌一.接口

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

  • 上一篇文章:
  • 下一篇文章:
  • 网站简介| 发布优势| 服务条款| 隐私保护| 广告合作| 网站地图| 版权申明

    当前时间: 冀ICP备19029570号-7