《单片机原理及应用》课件第6章_第1页
《单片机原理及应用》课件第6章_第2页
《单片机原理及应用》课件第6章_第3页
《单片机原理及应用》课件第6章_第4页
《单片机原理及应用》课件第6章_第5页
已阅读5页,还剩285页未读 继续免费阅读

下载本文档

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

文档简介

第6章51单片机的接口与应用6.1按键、键盘及其接口6.2显示及显示器接口6.3A/D转换器接口6.4D/A转换器接口6.5行程开关、晶闸管、继电器与单片机的接口习题六在第4、5章中,我们给单片机扩展各种外围功能芯片,构成了功能更为完善的单片机扩展系统。但一个实际单片机应用系统还需配置一些外部设备。外部设备需要适当的接口控制电路与单片机连接,才能协调地工作,这就是接口问题。外设的种类很多,而且外设不同、用法不同,则接口的方法、电路、涉及的应用程序等也随之而异。限于篇幅,本章只介绍几种最基本、最常用外围扩展器件芯片的接口技术。6.1按键、键盘及其接口在单片机应用系统中,为了控制系统的工作状态以及向系统输入数据,应用系统应设有按键或键盘。例如,复位用的复位键,功能转换用的功能键以及数据输入用的数字键盘等。6.1.1键输入过程与软件结构单片机应用系统中,按键或键盘的每一个键都被赋予特定的功能,它们通过接口电路与单片机相连接,通过软件了解按键的状态及键信息的输入,并转去执行该键的功能处理程序。图6.1

51单片机键输入过程键盘的接口方法有多种,但键输入过程与软件结构基本是一样的。所以,在具体介绍键盘接口之前,先介绍键输入过程与软件结构,这样能更好地理解键盘的接口方法。图6.1是51单片机应用系统的键输入软件框图。对一组键或键盘上的每一个键都有一个编号(称为键号),CPU可以采用中断方式或查询方式了解有无键输入,并检查是哪一个键按下,将该键号送入累加器A,然后通过散转指令转入执行该键的功能程序,最后返回到原始状态。JMP@A+DPTR可以看成是键信息输入的软件接口。6.1.2键盘接口和键输入软件中应解决的几个问题

1.消除键抖动按键的合断都存在一个抖动的暂态过程,如图6.2所示。这种抖动的暂态过程大约经过5~10ms的时间,人的肉眼是觉察不到的,但对高速的CPU是有反应的,可能产生误处理。为了保证键动作一次,仅作一次处理,必须采取措施以消除抖动。图6.2键合断时的电压抖动消除抖动的措施有两种:硬件消抖和软件消抖。硬件消除抖动可用简单的R-S触发器或单稳电路构成,如图6.3所示。软件消除抖动是用延时来躲过暂态抖动过程,执行一段大于10ms的延时程序后,再读取稳定的键状态。图6.3消除键抖动电路

2.键编码及键值一组按键或键盘都要通过I/O线查询按键的开关状态。根据键盘结构不同,采用不同的编码方法。但无论有无编码,以及采用什么编码,最后都要转换成为与累加器中的数值相对应的键值,以实现按键功能程序的散转。

(1)用键盘连接的I/O线的二进制组合表示键码。例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码,如图6.4(a)所示。各键相应的键值为88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。图6.4行列式键盘的编码与键值(a)二进制组合编码;(b)顺序排列编码

(2)顺序排列键编码,如图6.4(b)所示。在这种方法中,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成:键码=行首键码+列号

3.键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。6.1.3独立式按键

1.独立式按键接口结构独立式按键是指直接用一根I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其他I/O口线的工作状态。独立式按键电路如图6.5所示。图6.5独立式按键的接口电路示意图(a)中断方式;(b)查询方式独立式按键接口电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。故在按键数量不多时,常采用这种按键结构。图6.5(a)为中断方式的独立式按键接口电路,图6.5(b)为查询方式接口电路。通常按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O口线上有确定的高电平。

2.独立式按键的软件结构下面是查询方式的键盘程序。K0~K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0~PROM7分别为每个按键的功能程序。设I/O为P1口。

START:MOVA,#0FFHMOVP1,A

;置P1口为输入状态

MOVA,P1

;键状态输入

JNBACC.0,K0;检测0号键是否按下,按下转

JNBACC.1,K1;检测1号键是否按下,按下转

JNBACC.2,K2;检测2号键是否按下,按下转

JNBACC.3,K3;检测3号键是否按下,按下转

JNBACC.4,K4;检测4号键是否按下,按下转

JNBACC.5,K5;检测5号键是否按下,按下转

JNBACC.6,K6;检测6号键是否按下,按下转

JNBACC.7,K7;检测7号键是否按下,按下转

JMPSTART;无键按下返回,再顺次检测

K0:AJMPPROM0K1:AJMPPROM1;入口地址表

K7:AJMPPROM7

PROM0:…;0号键功能程序

…JMPSTART

;0号键功能程序执行完返回

PROM1:…

;1号键功能程序

…JMPSTART

;1号键功能程序执行完返回

PROM7:…

;7号键功能程序

…JMPSTART

;7号键功能程序执行完返回6.1.4行列式键盘行列式键盘又叫矩阵式键盘,用I/O口线组成行、列结构,按键设置在行和列的交点上。例如,4×4的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。

1.行列式键盘的接口行列式键盘的接口方法有许多。例如:直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。本节针对这种方法介绍行列式键盘的接口原理。图6.6是在扩展的8155的PA口和PC口上组成4×8键盘的示例。PA口作为列线,PC0~PC3作为行线。图6.6

8155扩展I/O口组成的行列式键盘

2.键盘工作原理按键设置在行和列线的交点上,行和列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被钳位在高电平状态。键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是识别是哪一键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。

1)查询工作方式键盘中有无键按下是由列线送出全扫描字,然后读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为“1”。键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出“0”,置对应的列线为低电平,然后从PC口读入行线状态,如果全为“1”,则所按下之键不在此列;如果不全为“1”,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为“0”的行首键码加列号的办法进行计算。依此原理可编写出键盘扫描子程序。键盘扫描子程序的流程框图如图6.7所示。图6.7键盘扫描子程序流程框图键盘扫描子程序如下:KEY1:ACALLKS1 ;调用判断有无键按下子程序JNZLK1 ;有键按下时,(A)≠0转消抖延时AJMPKEY1 ;无键按下时返回LK1:ACALLTM12ms

;调12ms延时子程序ACALLKS1

;查有无键按下,若有,则确认键按下JNZLK2

;键(A)≠0逐列扫描AJMPKEY1 ;不是真有键按下,则返回LK2;MOVR2,#0FEH ;初始列扫描字(0列)送入R2MOVR4,#00H ;初始列(0列)号送入R4LK4:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,R2 ;列扫描字送至8155PA口MOVX@DPTR,AINCDPTR ;DPTR指向8155PC口INCDPTRMOVXA,@DPTR ;从8155PC口读入行状态JBACC.0,LONE;查第0行无键按下,转查第1行MOVA,#00H ;第0行有键按下,行首键码#00H→AAJMPLKP ;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行MOVA,#08H ;第1行有键按下,行首键码#08H→AAJMPLKP ;转求键码LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行MOVA,#10H ;第2行有键按下,行首键码#10H→AAJMPLKP ;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转查下一列MOVA,#18H ;第3行有键按下,行首键码#18H→ALKP:ADDA,R4;求键码,键码=行首键码+列号PUSHACC ;键码进栈保护LK3:ACALLKS1 ;等待键释放JNZLK3 ;键未释放,等待POPACC ;键释放,键码→ARET ;键扫描结束,出口状态(A)=键码NEXT:INCR4 ;准备扫描下一列,列号加1MOVA,R2 ;取列号送累加器AJNBACC.7,KEND ;判断8列扫描否?扫描完返回RLA ;扫描字左移一位,变为下一列扫描字MOVR2,A ;扫描字送入R2AJMPLK4 ;转下一列扫描KEND:AJMPKEY1KS1:MOVDPTR,#7F01H ;DPTR指向8155PA口MOVA,#00H ;全扫描字→AMOVX@DPTR,A ;全扫描字送往8155PA口INCDPTR ;DPTR指向8155PC口INCDPTRMOVXA,@DPTR ;读入PC口行状态CPLA ;变正逻辑,以高电平表示有键按下ANLA,#0FH ;屏蔽高4位,只保留低4位行线值RET ;出口状态:(A)≠0时有键按下TM12ms:MOVR7,#18H;延时12ms子程序TM:MOVR6,#0FFHTM6:DJNZR6,TM6DJNZR7,TMRET调用键盘扫描子程序时,应在调用程序中设置8155,使PA口为基本输出口,PC口为基本输入口。子程序的出口状态:(A)=键码。

2)定时扫描工作方式定时扫描工作方式是利用单片机内部定时器产生定时中断(例如10ms),CPU响应中断后对键盘进行扫描,再检测是哪一个键按下。定时扫描工作方式的键盘硬件电路与查询工作方式相同。其软件框图如图6.8所示。图6.8定时扫描方式程序框图定时扫描工作方式本质上是中断方式。因此,图6.8是一个中断服务程序框图。KM、KP分别是在单片机片内RAM位寻址区设置的消抖标志和键处理标志。当键盘上无键按下时,KM、KP置0,返回。由于定时刚开始一般不会立即有键按下,故KM、KP初始化置0。当键盘上有键按下时,先检查KM标志,KM=0时,表示尚未作消除抖动处理,此时中断返回,同时KM置1。因为中断返回后要经10ms才可能再次中断,相当于实现了10ms延时,因而程序中不需要延时。当再次定时中断后再检查KP标志,由于开始时KP=0,程序进入查找键码,并使KP置1,执行键功能程序,然后返回。在KM、KP均为1时,表示键处理完毕,再次定时中断时,都返回原来CPU状态。

3)中断工作方式计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图6.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。6.2显示及显示器接口在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD液晶显示器,近年来开始使用简易形式CRT接口。其中,LED显示器和LCD显示器最为常见,它们具有成本低廉、配置灵活和与单片机接口方便等特点。本节主要介绍LED和LCD的显示原理与接口方法。6.2.1

LED显示器的结构与原理

LED显示器是由发光二极管显示字段组成的显示器件,在单片机应用系统中通常使用的是七段LED。这种显示器有共阴极和共阳极两种,如图6.9所示。共阴极LED显示器的发光二极管的阴极接地,如图6.9(a)所示。当发光二极管的阳极为高电平时,发光二极管点亮。共阳极LED显示器的发光二极管的阳极接+5V地,如图6.9(b)所示。图6.9七段显示块管脚与结构图(a)共阴极;(b)共阳极;(c)管脚配置通常的七段LED显示器中有8个发光二极管,其中7个发光二极管构成7笔字形“”,一个发光二极管构成小数点。七段LED显示块的管脚如图6.9(c)所示。从a~g管脚输出不同的8位二进制数,可显示不同的数字或字符。通常把控制发光二极管的8位二进制数称为段选码,共阳极与共阴极的段选码互为反码,如表6.1所示。表6.1七段LED的段选码6.2.2

LED显示器与显示方式在单片机应用系统中,可利用LED显示器灵活地构成所要求位数的显示器。

N位LED显示器有N根位选线和8×N根段选线。根据显示方式的不同,位选线和段选线的连接方法有所不同。段选线控制字符选择,位选线控制显示位的亮或暗。

1.LED静态显示方式

LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(a~g、dp)与一个8位并行I/O口相连。如图6.10所示,该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。

N位静态显示器要求有N×8根I/O口线,占用I/O口线较多,故在位数较多时往往采用动态显示方式。图6.10

4位LED显示器

2.LED动态显示方式

LED动态显示是将所有位的段选线并接在一个I/O口上,共阴极端或共阳极端分别由相应的I/O口线控制。图6.11就是一个8位LED动态显示器电路。图6.11

8位LED动态显示器电路由于每一位的段选线都接在一个I/O口上,因此每送一个段选码,8位就显示同一个字符,这种显示器是不能用的。解决此问题的方法是利用人的视觉滞留,从段选线I/O口上按位次分别送显示字符的段选码,在位选控制口也按相应的次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),选通位就显示相应字符,并保持几毫秒的延时,未选通位不显示字符(保持熄灭)。这样,对各位显示就是一个循环过程。6.2.3

LED显示器接口从LED显示原理可知,要显示各种字母、数字、符号,必须先将其转换成段选码。这种转换有两种方式:硬件译码和软件译码。转换方式不同,接口所用器件以及接口电路也不同,下面分别介绍。

1.硬件译码显示器接口硬件译码是采用专门的转换器件芯片来实现字母、数字的二进制数值到段选码的转换。这种转换芯片有许多,下面仅以MC14495介绍其接口方法。

MC14495是Motorola公司生产的CMOSBCD——七段十六进制锁存、译码驱动芯片。单片机应用系统中常要求LED显示十六进制及十进制带小数点的数,使用MC14495则是非常方便的。图6.12是MC14495的内部逻辑及引脚图。图6.12

MC14495内部逻辑与引脚图引脚信号LE是数据锁存控制端,在LE=0时输入数据,在LE=1时锁存数据;h+i引脚信号是译码器输入大于等于10的指示端,当输入数据大于等于10时,该引脚输出高电平;VCR是输入为15时的指示端,当输入数据为15时,该引脚输出为低电平。图6.13是使用MC14495构成的多位LED静态显示接口电路,该电路可直接显示多位十六进制数。若要显示带小数点的十进制数,则只要在LED的dp端另加驱动控制即可。LED显示块采用共阴极形式。由于MC14495有输出限流电阻,故LED不需外加限流电阻。图6.13使用MC14495的多位LED静态显示接口该接口电路对应的程序十分简单。当置P1.7为1时,开显示,由P1.4、P1.5、P1.6控制LE依次选中一位LED,然后由P1.0~P1.3送入BCD码,再使LE变为高电平时,锁存该位数据并译码、驱动显示。

2.软件译码显示器接口软件译码是把各字符的段选码组织在一个表中,要显示某字符时,先查表得到其段选码,然后送往显示器的段码线。单片机应用系统中,多采用软件译码的动态显示。图6.14是51单片机通过8155扩展I/O控制的8位LED动态显示的接口。图中PB口输出段选码,PA口输出位选码,位选码占用的输出口线数取决于显示器位数。BIC8718为8位集成驱动芯片。图6.14通过扩展8155I/O口控制的8位LED动态显示接口

3.动态显示程序设计对于图6.14所示的动态显示接口,设51单片机片内RAM的78H~7FH单元为显示缓冲区,从低到高依次存放8个要显示的数据,以非压缩的BCD码存放。其动态显示程序如下:DISPLAY:MOVA,#00000011B;8155初始化MOVDPTR,#7F00H;使DPTR指向8155控制寄存器端 口MOVX@DPTR,AMOVR0,#78H;动态显示初始化,使R0指向缓冲区首 址MOVR3,#7FH ;首位位选字送R3MOVA,R3 ;LD0:MOVDPTR,#7F01H;使DPTR指向PA口MOVX@DPTR,A;选通显示器低位(最右端一位)INCDPTR

;使DPTR指向PB口MOVA,@R0

;读要显示的数ADDA,#0DH

;调整距段选码表首的偏移量MOVCA,@A+PC;查表取得段选码MOVX@DPTR,A;段选码从PB口输出ACALLDL1

;调用1ms延时子程序INCR0 ;指向缓冲区下一单元MOVA,R3 ;位选码送累加器AJNBACC.0,LD1;判8位是否显示完毕,显示完返回RRA ;未显示完,把位选字变为下一位选字MOVR3,A ;修改后的位选字送R3AJMPLD0 ;循环实现按位序依次显示LD1:RETDSEG:DB3FH,06H,5BH;4FH,66H,6DH,7DH

;段码表DB07H,7FH,6FH,77H,7CH,39H,5EH,79HDL1:MOVR7,#02H;延时子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL6DJNZR7,DLRET6.2.4键盘、显示器组合接口根据键盘和显示器的工作原理,可将二者组合与单片机接口。这样既可简化接口电路,节省单片机的I/O口线,同时扫描程序可交替工作,提高程序执行效率。在键盘扫描程序中,为消除抖动而要调用一个延时子程序,组合接口后,可利用调用显示子程序来实现消抖延时,从而达到一举两得的效果。

1.键盘、显示器组合接口电路图6.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。如果多使用PC口线,则可以增加按键个数,可根据需要进行设置,最多可达64个键。图6.15

8155扩展I/O口的键盘、显示器组合接口

LED显示器采用共阴极,段选码由8155PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,与显示器的位选输入共用,行输出由PC0~PC3提供。显然,因为键盘与显示器共用了PA口,所以比单独接口节省了一个I/O口。

2.软件设计

LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示器做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。由于单独的键盘与显示器程序均在6.1.4和6.2.3节中介绍过,因而此处有关重复部分不再注释。相应的程序如下:KD1:MOVA,#03H;初始化8155PA、PB口为基本输 出,PC口为基本输入MOVDPTR,#7F00HMOVX@DPTR,AKEY1:ACALLKS1JNZLK1ACALLDISPLAY;调用显示子程序实现延时,防止抖 动引起按键拒认AJMPKEY1

;延时后再检测键盘LK1:ACALLDISPLAY;调用两次显示实现延时,防止 抖动引起误处理ACALLDISPLAYACALLKS1JNZLK2ACALLDISPLAYAJMPKEY1LK2:MOVR2,#0FEHMOVR4,#00HLK4:MOVDPTR,#7F01HMOVA,R2MOVX@DPTR,AINCDPTRINCDPTRMOVXA,@DPTRJBACC.0,LONEMOVA,#00HAJMPLKPLONE:JBACC.1,LTWOMOVA,#08HAJMPLKPLTWO:JBACC.2,LTHRMOVA,#10HAJMPLKPLHR:JBACC.3,NEXTMOVA,#18HLKP:ADDA,R4PUSHACCLK3:ACALLDISPLAYACALLKS1JNZLK3POPACCRETNEXT:INCR4MOVA,R2JNBACC.7,KENDRLAMOVR2,AAJMPLK4KEND:AJMPKEY1KS1:MOVDPTR,#7F01HMOVA,#00HMOVX@DPTR,AINCDPTRINCDPTRMOVXA,@DPTRCPLAANLA,#0FHRET

DISPLAY:见6.2.3节8155扩展动态扫描子程序。6.2.5液晶显示器概述液晶显示器是一种低功耗显示器件,具有显示内容丰富、体积小、重量轻、寿命长、使用方便、安全省电等优点,在计算器、万用表、袖珍式仪表和低功耗微机应用系统中得到广泛使用。

1.液晶显示器的工作原理液晶显示器的结构如图6.16所示。在上、下玻璃电极之间封入液晶材料,液晶分子平行排列,上下扭曲90°。外部入射光通过上偏振片后形成偏振光,该偏振光通过液晶材料被旋转90°,再通过与上偏振片垂直的下偏振片,被反射板反射回来呈透明状态。当上、下电极加上一定电压后,电极部分的液晶分子变为垂直状态,失去旋光性,从上偏振片入射的偏振光不被旋转,光无法通过下偏振片返回,就可得到白底黑字或黑底白字的显示形式。平时我们看见液晶显示器件时隐时现的黑字,不是液晶在变色,而是液晶显示器件使光透过或光被吸收所致。液晶显示器本身不发光,只是调节光的亮度。图6.16液晶显示器的基本结构图常用的液晶显示器件主要有扭曲向列型(TN)液晶显示器和超扭曲向列型(STN)液晶显示器两种。上面介绍的就是扭曲向列型液晶显示器的工作原理,它的内部液晶分子呈90°扭曲,当线性偏振光透过其偏振面时便会旋转90°。TN型液晶显示器件是最常用的液晶显示器件,常见的手表、数字仪表、电子钟及大部分计算器所用的液晶显示器件都是TN型器件。其他种类的液晶显示器件多是以TN型为基础加以改良的。超扭曲向列型(STN)液晶显示器件的结构基本和TN模式是一样的,只不过盒中液晶分子排列不是沿着90°扭曲排列,而是沿着180°~360°扭曲排列。也就是说,STN型液晶与TN型液晶的显示原理相同,只是它将入射光旋转180°~360°,而不是90°。目前几乎所有的点阵图形和大部分点阵字符型液晶显示器件都采用STN模式,在技术上已处于完善、成熟阶段。单纯的TN型液晶显示器本身只有明暗两种变化,而STN型液晶显示器则以淡绿色和橘色为主。如果在传统单色STN型液晶显示器中加上一个彩色滤光片,并将单色显示矩阵中的每一像素分成三个子像素,分别通过彩色滤光片显示红、绿、蓝三原色,就可以显示出色彩了。

2.液晶显示器的主要技术参数

·响应时间(毫秒级);

·余晖(毫秒级);

·阈值电压(3~20V);

·功耗(5~100mW/cm2)。不同的液晶显示器其技术参数各不相同,使用时可根据应用要求进行选取。

3.液晶显示器的分类液晶显示器的种类很多,实际应用中并不需要从原理、结构上去区分,而更多是从产品形式、驱动方式、显示颜色、显示方式上去区分,这样对工程技术人员来说更实际,使用更方便。从产品形式上液晶显示器可分为两大类:液晶显示器件(LCD)和液晶显示模块(LCM);从驱动方式上可分为内置驱动控制器的液晶显示模块和无控制器的液晶显示器件两种;从显示颜色上可分为单色和彩色;从显示方式上可分为正性显示、负性显示、段性显示、点阵显示、字符显示、图形显示、图像显示、非存储型显示、存储型显示等。具体应用中,可根据不同的显示要求选择合适的液晶显示器。6.2.6字符型液晶显示模块LCM的组成与原理

1.液晶显示模块LCM简介液晶显示器件是一种高新技术的基础元器件。虽然其应用已很广泛,但对许多人来说,使用、装配时仍感到困难,特别是点阵液晶显示器件,更是让使用者无从下手,而特殊的连接方式和所需的专用设备也非人人了解和具备。因此,将液晶显示器件与控制、驱动集成电路装在一起,形成一个功能部件,用户只需用传统工艺即可将其装配成一个整体系统,这样就形成了实际应用中的液晶显示模块。

2.通用液晶显示模块LCM的分类实际使用中的通用液晶显示模块主要有通用段式液晶显示模块、通用段式液晶显示屏、点阵字符型液晶显示模块、点阵图形液晶显示模块等几种。通用段式液晶显示模块一般做成多个8段数码位和一些通用的提示符,使用比较简单,成本较低,一般用于数字化仪表。通用段式液晶显示屏本身不带控制器和驱动电路,显示内容做成比较简单的数码位,相对成本较低,必须使用具有液晶驱动能力的电路,一般用于电子产品,如电话机、计算器等。点阵字符型液晶显示模块可显示西文字符、数字、符号等,显示内容比较丰富,字符是由5×7或5×11点阵块实现的,但无法显示汉字和复杂图形。点阵字符型液晶显示模块的通用性好,一方面是它能适用各种领域,另一方面是不同厂家、不同型号的模块所用控制器相同或相互兼容,主要区别仅是可显示字符数、屏幕大小、点阵大小不同,使用方法和软件基本相同。点阵图形液晶显示模块可以混合显示西文字符、符号、汉字、图形等,灵活性好,一般用于要求显示汉字、图形、人机交互界面等内容复杂的仪器设备。不同厂家、不同型号的点阵图形液晶显示模块所使用的控制器可能不同,因而相应的接口电路、接口特性、指令系统也有所不同,使用时除需选择点阵数、尺寸外,还要注意所选控制器的型号。从上面的介绍可看出,不同的液晶显示模块其显示性能和显示控制是有较大区别的,应用中应根据不同的显示要求进行灵活选取。本书仅以点阵字符型液晶显示模块为例,介绍其原理、组成和应用。

3.字符型液晶显示模块LCM的组成与工作原理

1)字符型液晶显示模块LCM的组成点阵字符型液晶显示模块包括液晶显示器件、控制器、字符发生器、译码驱动器等部分,可以直接与单片机接口或者挂接在其总线上,接口电路设计较为简单。控制器和译码驱动器对液晶显示模块进行显示驱动控制,一般将二者组合在一起,做成专用集成电路。字符发生器可提供常见的192个字符库,包括英文大小写字母、阿拉伯数字、特殊字符或符号,固化在其内部ROM中,有时还可根据用户需要内置RAM,由用户自行设计字符和符号,进行字符扩充。

2)字符型液晶显示模块LCM的工作原理在字符型液晶显示模块中,字符发生器产生的点阵字符模块是由5×7、5×8或5×11的一组组点阵像素排列而成的,相邻位间有一定的间隔,相邻行间也有一定的间隔,所以不能显示图形。在点阵图形液晶显示模块中,其点阵像素连续排列,行和列在排布中均没有空隔,因而可以显示连续、完整的图形和汉字。字符型液晶显示模块在显示字符时,被显示的每个字符都有一个对应的十六进制代码,液晶显示模块从处理器得到此代码,并把它存储到显示数据RAM中,字符发生器根据此代码产生相应的点阵图形。代表字符在液晶显示屏上位置的地址是通过数据总线,由微处理器送到液晶显示模块的指令寄存器中,每个字符代码送入液晶显示模块以后,液晶显示模块将显示地址自动加1或减1。使用一些指令,可以使液晶显示模块实现清除显示,光标恢复初始位置,开/关显示及光标、闪烁字符、移动光标等功能。液晶显示模块可以采用上电复位,也可以采用软件编程的方法来复位。6.2.7字符型液晶显示模块LCM的引脚及说明字符型液晶显示模块的应用很广泛,在电子表、单片机应用系统、传真机、电动玩具中经常使用这类液晶显示器。在实际使用中,字符型液晶显示模块上常采用内置式HD44780驱动控制器的集成电路。下面先对HD44780驱动控制器的特点和电路特性进行介绍,然后介绍内置该控制器的字符型液晶显示模块的应用。

1.HD44780驱动控制器的电路特性和设计特点

1)电路特性

HD44780集成电路是集驱动器和控制器于一体,专门用于字符型液晶显示模块的显示控制驱动的集成电路,它是字符型液晶显示模块控制器的典型集成电路。该集成电路对外引出80个引脚,采用FP80扁平塑料外壳形式的封装,使用时通常已组装在相应的液晶显示模块内部。因此,用户可以不考虑其各个引脚的名称、功能、用法和相应的电路连接,但必须了解其指令系统、主要设计特点、内部结构及工作原理。

2)主要设计特点

(1)HD44780集成电路具有驱动40×16点阵液晶像素的能力,还可通过外接驱动电路扩展成360列驱动。

(2)其显示缓冲区与用户自定义的字符发生器RAM全部内置在集成电路中。

(3)接口可选择8位数据传输和4位数据传输两种方式。

(4)可使用简单而功能较强的指令实现字符移动、闪烁等显示功能。

3)HD44780集成电路的内部结构及工作原理HD44780集成电路的内部结构如图6.17所示。在HD44780集成电路的内部集成了输入/输出缓存器、指令寄存器(IR)、指令解码器(ID)、地址计数器(AC)、数据寄存器(DR)、80×8位数据显示RAM(DDRAM)、192×8位字符产生器ROM(CGROM)、光标闪烁控制器、并行/串行转换电路等11个单元电路。下面结合HD44780集成电路的内部结构来分析HD44780中各功能框的工作原理。图6.17

HD44780集成电路的内部结构图

(1)数据显示RAM(DataDisplayRAM,DDRAM)。这个存储器用来存放所要显示的数据,只要将标准的ASCII码放入DDRAM中,内部控制电路就会自动将数据传送到显示器上。例如,要液晶显示器显示字符“C”,只需将ASCII码43H存入DDRAM中就可以了。DDRAM有80比特(bit)空间,总共可显示80个字(每个字为1个比特),其存储地址和实际显示位置的排列顺序与字符型液晶显示模块的型号有关。不同类型的字符型液晶显示模块显示位置、地址之间的对应关系见表6.2。表6.2不同类型的液晶显示模块显示位置、地址之间的对应关系

(2)字符产生器ROM(CharacterGeneratorROM,CGROM)。这个存储器储存了192个5×7点阵字符,CGROM中的字符要经过内部的转换才会传到显示器上,只能读出不能写入。字符、字符的排列方式、字符码与标准的ASCII码相同,例如,字符码31H为字符“1”,字符码43H为字符“C”。

(3)字符产生器RAM(CharacterGeneratorRAM,CGRAM)。这个存储器是供用户储存自己设计的特殊字符码的RAM,共有512位(64×8位)。一个5×7点阵字型为8×8位,所以CGRAM最多可存8个字符。

(4)指令寄存器(InstructionRegister,IR)。指令寄存器负责储存微处理器要写给字符型液晶显示模块的指令码。当处理器要发一个命令到指令寄存器IR时,必须要控制字符型液晶显示模块的RS、R/W与E这三个引脚,当RS及R/W的引脚信号为低电平“0”,E引脚信号由高电平“1”变为低电平“0”时,就会把DB0~DB7引脚上的数据存入IR指令寄存器。

(5)数据寄存器(DataRegister,DR)。数据寄存器负责微处理器要写到CGRAM或DDRAM的数据,或者存储微处理器要从数据显示RAM(DDRAM)读出的数据。因此,数据寄存器DR可视为一个数据缓冲区,它是由字符型液晶显示模块的RS、R/W与E三个引脚来控制的。当RS与R/W引脚信号为1,E引脚信号由“0”变为“1”时,字符型液晶显示模块会将DR数据寄存器内的数据从DB0~DB7输出,以供读取;当RS引脚信号为“1”、R/W引脚信号为“0”,E引脚信号由“0”变为“1”时,就会把DB0~DB7引脚上的数据存入数据寄存器。

(6)忙碌信号(BusyFlag,BF)。忙碌信号的作用是告诉微处理器,字符型液晶显示模块内部是否忙着处理数据,当BF=1时,表示字符型液晶显示模块内部正在处理数据,不能接受微处理器送来的指令或数据。字符型液晶显示模块设置BF是因为微处理器处理一个指令时间很短,所以微处理器要写数据或指令到字符型液晶显示模块之前,必须先查看BF是否为0。

(7)地址计数器(AddressCounter,AC)。地址计数器的作用是负责记录写到CGRAM或DDRAM数据的地址,或从CGRAM或DDRAM读取数据的地址。使用地址设定指令写到指令寄存器后,地址数据会经过指令解码器存入地址计数器中。当微处理器从DDRAM或CGRAM读取数据时,地址计数器将按照微处理器对字符型液晶显示模块的设定值自动进行修改。

2.内置HD44780驱动控制器的字符型液晶显示模块的引脚信号字符型液晶显示模块主要用于显示字符、数字、符号,它是由若干个5×7或5×11点阵字符组成的,每一个点阵字符都可以显示一个字符,点阵字符之间空有一个点距和行距的距离。目前常用的有16字×1行、16字×2行、20字×2行和40字×2行等字符型液晶显示模块,虽然这些字符型液晶显示模块显示的字数各不相同,但都具有相同的输入与输出接口。图6.18内置HD44780驱动控制器的字符型液晶显示模块的引脚排列图6.18所示为16字×2行字符型液晶显示模块,该模块采用的驱动控制器为HD44780及其兼容集成电路。从前面的介绍可知,虽然HD44780集成电路对外引出80个引脚,但它与其他器件加工成的液晶显示模块对外引脚线却只有14条,应用时只需设计该14条引脚线与微处理器的接口电路与程序。内置HD44780驱动控制器的16字×2行字符型液晶显示模块的引脚排列如图6.18所示。下面对其引脚信号作以介绍。

DB7~DB0:8条数据线。用于微处理器与字符型液晶显示模块之间交换数据或命令。

VO:对比度调整电压输入端。在使用中接可调电压,如电位器的滑动端,用来调整液晶显示屏的对比度。

VDD:电源电压输入端。接+5V单电源电压。

VSS:参考地端。接工作电源参考地。

RS:寄存器选择输入端。当输入高电平时,选择数据寄存器;输入低电平时,选择指令寄存器。

R/W:读/写选通信号输入端。当输入高电平时,对液晶显示模块进行读操作;当输入低电平时,对液晶显示模块进行写操作。

E:使能信号输入端。当输入高电平时,可对液晶显示模块进行读/写操作;当输入低电平时,液晶显示模块不工作。顺便指出,由于HD44780是字符型液晶显示模块控制器的典型集成电路,目前内置该驱动控制器的液晶显示模块的生产厂家和具体型号都较多,如北京精电蓬远显示技术有限公司的MDL(S)16263、深圳航通科技有限公司的HT162A、EPSON公司的EAD16025等,它们的引脚数和封装都相同,因此在图6.18中未给出字符型LCM的具体型号。字符型液晶显示模块的内部可分为三个功能框,如图6.19所示。字符型液晶显示模块与微处理器之间是利用字符型液晶显示模块内部的控制器进行连接的,目前大部分的点阵字符型液晶显示模块的控制器都使用一片HD44780集成电路。图6.19字符型液晶显示模块的内部框图6.2.8LCM的命令字在应用LCM进行显示控制时,通过其引脚线发送相应命令和数据到内部指令寄存器或数据寄存器中,使LCM完成相应的显示功能。内置HD44780驱动控制器的字符型液晶显示模块可以使用的指令共有11条,其指令格式如表6.3所示。表6.3

LCM指令格式定义一览表下面对表6.3中的指令功能及格式定义做进一步说明。

1.清屏指令该指令的功能是清除液晶显示器(即将DDRAM的内容全部填入“空白”的ASCII代码20H),光标撤回到液晶显示屏的左上方,将地址计数器(AC)的值设为0。指令执行时间为1.64μs。

2.光标归位指令该指令的功能是将光标撤回到液晶显示屏的左上方,地址计数器(AC)的值设为0,保持DDRAM的内容不变。指令执行时间为1.64μs。

3.进入模式设置指令该指令的功能是设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。指令执行时间为40μs。根据指令表6.3中I/D、S的变化,又可设定为如表6.4所示的4种模式操作。表6.4模式设置设定情况

4.显示器ON/OFF控制指令该指令的功能是控制显示器开/关,光标开/关,决定光标是否闪烁,由指令表6.4定义的D、C、B三位来设定。D位控制显示器开(ON)或关(OFF),D=1时显示,D=0时不显示。

C位控制光标开(ON)或关(OFF),C=1时显示光标,C=0时不显示光标。

B位控制光标是否闪烁,B=1时光标闪烁,B=0时光标不闪烁。 指令执行时间为40μs。

5.设定显示器或光标移动方向指令该指令的功能是控制光标移位或使整个显示字幕移位。指令执行时间为40μs。由表6.3定义的S/C、R/L两位编码,又可设定为如表6.5所示的四种情况。

表6.5光标、显示器的字符移动设定

6.功能设定指令通过该指令可设定数据长度、显示行数和字型。由表6.3中定义的DL、N、F三位来设定。

DL用于设定数据的长度,DL=1时,数据为8位;DL=0时,数据为四位。

N用于设定显示行数,N=1时,显示2行;N=0时,显示1行。

F用于设定字型,F=1时,选定5×10点阵字型;F=0时,选定5×7点阵字型。功能的指令执行时间为40μs。

7.设定CGRAM地址指令该指令的功能是设定下一个要存入数据的CGRAM地址。由表6.3中的指令格式定义可知,从数据线的低6位设定输入CGRAM的6位地址。指令执行时间为40μs。

8.设定DDRAM地址指令该指令的功能是设定下一个要存入数据的DDRAM地址。由表6.3中的指令格式定义可知,从数据线的低7位设定输入DDRAM的7位地址。指令执行时间为40μs。对照表6.3和设定DDRAM地址指令的控制字格式,不同显示字数和行数的字符型LCM的地址分配情况如表6.6所示。表6.6字符型液晶显示模块的地址分布

9.读取忙碌状态数据和AC地址指令通过该指令可读取忙碌信号和AC地址。指令执行时间为40μs。由表6.3中的指令格式定义可知,从LCM数据寄存器读取的8位数据的最高位DB7表示忙碌状态,低7位是地址计数器(AC)的7位地址。当最高位BF=1,表示在忙碌中,LCM无法接收数据;当BF=0,表示空闲,LCM可以接收数据。

10.数据写入到DDRAM或CGRAM中的指令通过该指令可将字符码写入DDRAM中,以使液晶显示屏显示出相应字符,或将使用者自己设计的图形码存入CGRAM中。从表6.3中的指令格式定义可知,从LCM的8位数据线写入编码对应的8位数据。指令执行时间为40μs。

11.从CGRAM或DDRAM读取数据指令从表6.3中的指令格式定义可知,从数据线DB7~DB0可读取CGRAM或DDRAM的内容。指令执行时间为40μs。6.2.9字符型LCM的接口及应用举例

1.内置HD44780驱动控制器的字符型LCM与51单片机的接口电路在设计字符型LCM与单片机的接口电路时,一般是将LCM作为终端与单片机的并行接口连接,单片机通过该并行接口改变LCM的控制信号、设置相应命令编码,实现对LCM的控制和显示要求。对并行接口的选用,原则上没有限制,可用单片机的内部I/O及其扩展I/O口。

但在设计接口电路和应用程序时,应特别注意以下问题:

(1)对字符型LCM进行读/写操作不是利用单片机的读/写信号,而是通过对LCM使能信号(E)的控制来完成的。

(2)字符型LCM的数据总线不是三态总线,所以在调试阶段,R/W引脚为低电平,以保证LCM处于写状态;如果R/W引脚为高电平,则LCM处于读状态,将会造成数据总线混乱,形成死机现象。

(3)由于51单片机复位后4个并行口都为FFH,因此其并行口输出信号要经过反相器反相后,连接到字符型液晶显示模块的R/W输入端。图6.20是51系列单片机驱动字符型液晶显示模块的电路图。这种驱动控制方式是把字符型液晶显示模块作为终端与单片机的并行接口连接,单片机通过该并行接口的操作间接地实现对字符型液晶显示模块的控制。图6.20

51单片机与LCM的接口电路在图6.20中,单片机的P0和P1口为并行接口与字符型液晶显示模块连接。在编制程序时,对LCM控制信号(RS、R/W、E)的要求是:写操作时,使能信号E的下降沿有效;读操作时,使能信号E在高电平有效;在控制顺序上,先设置RS、R/W的状态,再设置E信号为高电平,这时从数据口读取数据,然后将使能信号E设置为低电平,写入数据,最后复位RS和R/W的状态。

2.LCM初始化对LCM的初始化,实质上是对其进行指令系统中的指令操作。LCM驱动控制器的指令系统并非是单片机内部执行相关操作的命令,而是通过接口电路对LCM引脚信号设置相应命令编码,主要通过相应程序来实现。

1)查看忙碌信号的子程序对单片机来说,LCM是一个慢速的外部设备,单片机每发送一个指令到LCM,LCM至少要40μs的时间工作才能完成。LCM执行一个指令时不能接受其他的指令(除了忙碌信号读取指令),所以在单片机要对LCM下指令以前,必须先检查LCM正在执行的指令,单片机必须确定LCM有空的时候才能正式发送指令给LCM。检查忙碌信号的子程序(CheckBusy)如下:CheckBusy:PUSH ACC CheckBusyLoop:CLRP1.2;设定RS=0,选择指令缓存器CLRP1.1 ;设定R/W=1,选择读模式CLR P1.0 SETBP1.0;令字符型LCM使能MOVA,P0;将字符型LCM的DB0~DB7数据由P0口 读入ACC中,以检查BF是否为0CLRP1.0 ;使字符型LCM禁止使能,不作数据传递或设 定JBACC.7,CheckBusyLoop;检测BF是否为“1”,若为“1”,

则检测等待POPACCLCALLDELAY;调用延时子程序,延时约几个毫秒,

保证数据操作有效稳定RETDELAY:MOVR6,#05H;延时子程序,延时的时间约 为2.5ms,设振荡频率为6MHzD1:MOVR7,#248;设置循环次数DJNZR7,$DJNZR6,D1RET ;返回主程序2)将指令码写到ID指令寄存器的子程序(WriteInstruction)WriteInstruction:LCALLCheckBusy;延时,确定字符型LCM不忙碌,可以执行指令CLRP1.0CLR P1.2;设定RS=0,选择指令寄存器SETBP1.1 ;设定R/W=0,选择写模式SETBP1.0 ;令字符型LCM使能MOVP0,A;将存在ACC内的指令码经过单片机的P0口输出到字符型LCMCLRP1.0;写入指令,使字符型LCM禁止使能RET

3)将数据写到DR数据寄存器的子程序(WriteLCDData)WriteLCDData:LCALLCheckBusy;调用检测子程序,确定LCM不忙碌,

可以执行指令CLRP1.0SETBP1.2 ;设定RS=1,选择数据寄存器SETBP1.1 ;设定R/W=0,选择写模式SETBP1.0

;令字符型LCM可以使能MOVP0,A

;将存在ACC内的指令码经过单片机的P0口输出到字符型LCMCLRP1.0

;写入数据,使字符型LCM禁止使能RET

4)清除显示器的子程序(CLS)由于清除显示器指令是属于写数据到IR指令寄存器中的一个,因此在编写程序时,只需要将消除指令00000001B(即01H)存入ACC,再调用WriteInstruction子程序。下面是清除显示器的子程序:CLS:MOVA,#01H;将清除显示器指令码01H放入

ACCLCALLWriteInstruction;调用WriteInstruction子程序RET

5)启动字符型LCM的子程序(Intial)电源打开以后,单片机必须启动字符型LCM工作。启动字符型LCM工作的方式有两种:自动启动和指令启动。如果在打开电源时使字符型液晶显示模块供电的电源符合图6.21所示的变化要求,则字符型液晶显示模块会自动执行清除显示器指令和设定功能指令来启动字符型液晶显示模块工作。当DL=1时,设定数据长度为8位,当N=0时,设定为显示一行,当F=0时,设定使用5×7点阵字符的字型。当D=0时,设定显示器不显示,当C=0时,设定光标不显示,当B=0时,设定光标不闪烁,并且进入模式设定。当I/O=1时,设定为递增模式,当S=0时,设定显示器所显示的字体不移动。图6.21使字符型液晶显示模块产生自动启动的电源要求在字符型液晶显示模块执行自动启动工作后,单片机只要按照系统所需要的功能重新对字符型液晶显示模块依次下达设定功能指令、显示器ON/OFF控制指令与设定进入模式指令,在一般情况下,电源打开的时序都是足以符合要求的。所以,单片机启动字符型液晶显示模块的子程序只需调用WriteInstruction子程序,对字符型液晶显示模块下达设定功能指令、显示器ON/OFF控制指令与设定进入模式指令。例如,要让字符型液晶显示模块设定数据长度为8位、显示两行、使用5×7点阵的字型字符、光标要显示但不闪烁、每一次将数据输入DDRAM后光标向右移动一格。下面是启动字符型液晶显示模块的子程序:Initial:MOVA,#38H;将38H放入ACC。将字符型

LCM设定为数据长度为8位、显 示两行、使用5×7点阵的字型LCALLWriteInstruction;调用WriteInstruction子程序

MOVA,#0EH

;将0EH放入ACC,将字符型LCM

设定为显示器要显示字符,光标

;要显示并且不闪烁LCALLWriteInstruction;调用WriteInstruction子程序

MOVA,#06H

;将06H放入ACC,将字符型

LCM设定为每次将数据输入

DDRAM以后,光标向右移动 一格LCALLWriteInstruction;调用WriteInstruction子程序RET

3.应用举例下面用三个应用程序来说明内置HD44780驱动控制器的字符型液晶显示模块在使用中的编程问题,这三个程序分别是让字符型液晶显示模块显示字符“C”、让字符型液晶显示模块显示2行字串“WELLCOME”与“TESTLCD”、按要求显示“WELLCOMETOUSETHELCM”。在编写程序时,例1和例2是通过反复调用字符型LCM的5个初始化子程序来实现显示要求的,而例3则是根据单片机对字符型LCM的显示控制流程来编写的,可加深对字符型LCM的理解和使用。例1让字符型LCM显示“C”字符。字符型液晶显示模块显示“C”字符的程序如下:

ORG 0000H ;程序从地址0000H开始存放

JMP BEGIN ;跳到BEGIN处执行程序

ORG 0030H

BEGIN:LCALLInitial ;调用启动字符型液晶显示模块 的子程序

LCALLCLS

温馨提示

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

评论

0/150

提交评论