第9章单片机及键盘显示接口_第1页
第9章单片机及键盘显示接口_第2页
第9章单片机及键盘显示接口_第3页
第9章单片机及键盘显示接口_第4页
第9章单片机及键盘显示接口_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

1、第第9章章 单片机与键盘显示接口技术单片机与键盘显示接口技术单片机应用系统常需要连接键盘、显示器、打印机、A/D和D/A转换器以及功率器件等外设。其中键盘、显示器是使用最频繁的外设,它们是构成人机对话的一种基本方式;A/D和D/A转换器是单片机与外界联系的重要途径;功率器件是工业应用中经常用到的大功率设备。本章主要介绍键盘、显示器的工作原理以及外围接口的基本结构、原理和方法。9.1 键盘接口技术键盘接口技术 键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。键盘是一种常用的输入设备。键盘通常包括有数字键(09),字母键(AZ)以及一些功能键。操作人员可以通过键盘向计算机输入数据、地址

2、、指令或其它的控制命令,实现简单的人机对话。本节主要介绍键盘的结构、单片机与非编码键盘的接口技术以及键输入程序的设计。 9.1.1键盘工作原理键盘工作原理按键开关的结构有两种,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 用于计算机系统的键盘通常有两类:编码键盘与非编码键盘,这两类键盘的主要区别是识别键符及给出相应键码的方法不同。编码键盘主要是用硬件来实现对键的识别,每按下一个键,键盘能自动生成键盘代码;非编码键盘主要是由软件来实现键盘的定义与识别,并有软件计算编码

3、。 编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。 非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。非编码键盘具有结构简单、价格便宜等特点,因此在单片机系统中普遍采用非编码键盘。非编码键盘的按键排列有独立式和矩阵式两种结构,非编码键盘在接口设计中要着重解决键的识别、键抖的消除、键的保护等问题。本节将着重介绍非编码键盘的接口技术和编程方法。 1按键的输入与识别按键的输入与识别 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来

4、设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。非编码式键盘识别按键的方法主要有扫描法和线反转法两种,扫描法键盘结构简单,线反转法比行扫描法速度要快,但在硬件电路上要求行线与列线均需有上拉电阻,故比行扫描法稍复杂些。本节以扫描法为例对键盘和接口电路进行介绍。 2按键的编码按键的编码 一组按键或键盘都要

5、通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。 3. 键盘程序的编制键盘程序的编制 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作都对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 4按键抖动现象的消除按键抖动现象的消除 当按键按下和释放时,会向单

6、片机CPU输入一个0或1电平,CPU根据收到的0或1电平信号,决定具体的操作。但是,按键按下或释放时,开关的的机械触点会产生抖动,抖动时间的长短与开关的机械特性有关,一般为510 ms,其抖动波形如图9-1所示。在触点抖动期间CPU不能接收到稳定的电平信号,会引起CPU对一次按下键或断开键进行多次处理,从而导致判断出错,因此,必须对按键采取去抖动措施。消除键抖动有硬件和软件两种处理方法,在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。软件处理方法更方便更常用,但要根据键盘结构来设计去抖程序。 (1)硬件方法 硬件去抖方法很多,在按键输出端加双稳态触发器、单稳态触发器或RC积分电路都

7、可构成去抖动电路。图9-2是一种由双稳态R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。 电路工作过程如下:按键未按下时,a = 0,b = 1,输出Q = 1。按键按下时,因按键的机械弹性作用的影响,使按键产生抖动。当开关没有稳定到达b端时,因下面与非门输出为0反馈到上面与非门的输入端,封锁了上面与非门,双稳态电路的状态不会改变,输出保持为1,输出Q不会产生抖动的波形。当开关稳定到达b端时,因a = 1,b = 0,使Q = 0,双稳态电路状态发生翻转。当释放按键时,在开关未稳定到达a端时,因Q = 0,封锁了下面与非门,双稳态电路的状态不变,输出Q保持不变,消

8、除了后沿的抖动波形。当开关稳定到达a端时,因a = 0,b = 0,使Q = 1,双稳态电路状态发生翻转,输出Q重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。 (2)软件方法硬件方法需要增加元器件,电路复杂,当按键较多时,不但实现困难,还会增加成本,甚至影响系统的可靠性,这时软件方法是一种有效的方法。用软件消除抖动不需增加任何元器件,只需要编写一段延时程序,就可以达到消除抖动的作用。软件上采取的具体措施是:在CPU检测到有按键按下时,先调用执行一段延时程序后,再检测此按键,若仍为按下状态电平,则CPU确认该键确实按下。同理,在检测到该键释放后,也应采用相同的步骤

9、进行确认,从而可消除抖动的影响。延时子程序的具体时间应根据所使用的按键情况进行调整,一般为10 ms左右。图9-3为软件去抖动判别程序的流程图。5键盘接口功能和常用接口方式在键盘接口设计中,为了保证能可靠、正确地判断输入的键值,键盘接口应具有如下功能:(1)键扫描和识别功能。即检测是否有键按下,确定被按下键所在的行列位置。(2)产生相应键的代码(键值)。(3)消除按键弹跳以及能够识别多键及串键(复合按键)。 单片机与键盘的接口通常采用下列四种方式:(1)单片机通过并行接口(如8155、8255)与键盘接口。(2)单片机通过串行口与键盘接口。(3)单片机通过8279与键盘接口。(4)单片机的并行

10、口直接与键盘接口。 9.1.2 独立式按键独立式按键 非编码键盘的按键排列有独立式和矩阵式两种结构,在单片机控制系统中,往往只需要几个功能键,此时可采用独立式按键结构。1独立式按键结构图9-4 独立式按键电路 独立连接式按键是指直接用IO口线构成的单个按键电路。每个键单独占用一根IO口线,每根IO线的工作状态不会影响其它IO口线的工作状态。独立式按键的典型应用如图9-4所示。未有键按下时,所有的数据输入线都处于高电平状态。当任何一个键压下时,与之相连的数据输入线将被拉成低电平,要判断是否有键压下,只需用位操作指令即可。独立连接式按键接口电路配置灵活,软件结构简单,但每个按键必须占用一根IO口线

11、,在键数较多时,IO口线浪费较大,故只在按键数量不多时才采用这种按键电路。在图9-4所示的电路中,按键输入都采用低电平有效,上拉电阻保证了按键断开时,IO口线有确定的高电平。当IO内部有上拉电阻时,外电路可以不配置上拉电阻。 2独立式按键的软件结构独立式按键的软件设计可采用中断方式和查询方式。中断方式下,按键往往连接到外部中断INT0或INT1和T0、T1等几个外部I/O上。编写程序时,需要在主程序中将相应的中断允许打开;各个按键的功能应在相应的中断子程序中编写完成。查询方式的具体做法是:先逐位查询每根I/O口线的输入状态,如某一根I/O口线的输入为低电平,则可确认该I/O口线所对应的按键已按

12、下,然后再转向该键的功能处理程序。根据图9-4,可编制查询方式相应的软件如下:独立式按键参考程序: ORG0000H AJMPSTART ORG0100HSTART:MOVP1,#0FFH;设置P1为输入口 MOVA,P1;读入P1口的状态 JNBACC.0,KEY0;ACC.0=0?若为0则P1.0对应的键按下,转KEY0 JNBACC.1,KEY1;ACC.1=0?若为0则P1.1对应的键按下,转KEY1 JNBACC.2,KEY2;ACC.2=0?若为0则P1.2对应的键按下,转KEY2 JNBACC.3,KEY3;ACC.3=0?若为0则P1.3对应的键按下,转KEY3 JNBACC.

13、4,KEY4;ACC.4=0?若为0则P1.4对应的键按下,转KEY4JNBACC.5,KEY5;ACC.5=0?若为0则P1.5对应的键按下,转KEY5JNBACC.6,KEY6;ACC.6=0?若为0则P1.6对应的键按下,转KEY6JNBACC.7,KEY7;ACC.7=0?若为0则P1.7对应的键按下,转KEY7SJMPSTART;返回开始处,继续检测按键状态KEY0:;0#键功能程序LJMPSTART;返回主程序开始,继续查询按键状态KEY1:;1#键功能程序LJMPSTART KEY7: ;7#键功能程序LJMPSTART在上述程序中,没有考虑按键的抖动问题,在实际应用中,请读者参

14、考去抖内容修改程序即可,另外,请读者完成中断方式的按键处理。 9.1.3矩阵式键盘矩阵式键盘 独立式按键只能用于键盘数量要求较少的场合,在单片机系统中,当按键数较多时,为了少占用IO口线,通常采用矩阵式又称行列式键盘。 1矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,图9-5所示是一个44的矩阵式键盘。 由图9-5可知,一个44的行、列结构可以构成一个含有16个按键的键盘。每一个按键都规定一个键号,分别为0,1,2,15。在实际应用中,可作为数字键和功能键,如图9-5中,定义09号按键为数字键,对应数字09,而其余6个可以定义为具有各功能的控制键。 显然,在按

15、键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接+5 V(或列线通过电阻接+5V)。当无键按下时,所有的行线与列线断开,行线都处于高电平状态;当有键按下时,则该键所对应的行、列线将短接导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,即各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。键的按下和释放会引起抖动,为了保证CPU对键的闭合作一次处理,必须去除抖动。2

16、矩阵式键盘按键的识别识别按键的方法很多,其中最常见的方法是扫描法。下面以图图9-5中8号键的识别为例来说明利用扫描法识别按键的过程。按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平,显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线均处于低电平,只有这样,当有键按下时,该键所在的行电平才会由高电平变为低电平。 CPU根据行电平的变化,便能判定相应的行有键按下。例如8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下时同样使第2行为低电平。为进一步确定具体键,不

17、能使所有列线在同一时刻都处于低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环。这种依次轮流,每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察8号键按下时的工作过程。当第0列处于低电平时,第2行处于低电平,而当第1、2、3列处于低电平时,第2行却处在高电平,由此可判定按下的键应是第2行与第0列的交叉点,即8号键。 CPU对键盘扫描可采取程序控制的随机方式,即CPU空闲时扫描键盘;也可以采取定时控制方式,即每隔一定时间CPU对键盘扫描一次;也可以采用中断方式,即每当键盘上有键闭合时,向CPU请求中断,CPU响应键盘输入的中断,对键

18、盘进行扫描,以识别哪一个键处于闭合状态,并对键盘输入的信息作出相应处理。CPU对键盘上闭合键的键号确定,可以根据行线和列线的状态计算求得,也可以根据行线和列线状态查表求得。 3键盘的编码对于独立式按键键盘,因按键数量少,所以可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号唯一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如图9-5中的8号键,它位于第2行第0列,因此,其键盘编码应为20H。采用上述编码对于不同行的键来说,其离散性较大,不利于用散转指令对按键进行处理。因此,可采用依次排列键号的方式对按键进行编码。以图9-5中的44键

19、盘为例,可将键号编码为:01H、02H、03H、0EH、0FH、10H等16个键号。编码间的相互转换可通过计算或查表的方法实现。 4矩阵式键盘的接口方式 单片机与矩阵式键盘的接口方式有多种,可以通过8155、8255等接口芯片与键盘连接,也可以用单片机的串行口和并行口直接与键盘接口。 对于8051或8751及AT89C型单片机来说,如果不再外扩程序存储器的话,则可以利用P0、P2口构成多达88的键盘,其中1个作为输出口,1个作为输入口。矩阵键盘的行线和列线可分别由单片机的I/O端口来提供。图9-6就是一个44矩阵键盘和单片机的接口电路,其中键盘的4根行线连接到P0.0P0.3,4根列线连接到P

20、2.0P2.3。根据矩阵式按键的识别方法可以知道,行线P0.0P0.3编程时作为输入口使用,列线P2.0P2.3作为输出口使用。实际应用时,也可以将4根列线和4根行线共用一个八位的I/O端口,这样电路将更为简洁。图9-6采用编程扫描或定时扫描的工作方式。如果单片机P1口不作其它用途的话,则可与44的键盘相连接,图9-7(a)就是一个44矩阵键盘和单片机的接口电路,这种接口方式也适于8031单片机。如果单片机本身的口线已被占用的话,则可以通过外扩I/O接口芯片来构成键盘接口电路,较常用的是8155、8255A等接口芯片。 图9-7(b)是采用8155接口芯片构成84键盘的接口电路,其中A口输出8

21、位列扫描信号,C口输入4位行扫描信号(只用了PC0PC3四根口线)。图9-7(b)采用编程扫描或定时扫描的工作方式。5键盘的工作方式 在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。(1) 编程扫描方式 编程扫描方式利用CPU完成其它工作的空余时间来调用键盘扫描子程序,响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU开始重新扫描

22、键盘为止。键盘扫描程序一般应包括以下内容:判端有无键按下。 扫描键盘,取得闭合键的行、列值。用计算法或查表法得到键值。判断闭合键是否释放,如未释放则继续等待。 将闭合键键号保存,同时转去执行该闭合键的功能。 根据图9-6的接口方式,键盘采用编程扫描方式工作时,P0口的低4位输入行扫描信号,P2口输出4位列扫描信号,二者均为低电平有效,这时,键盘扫描子程序应完成如下几个功能:判断有无键按下。P2口输出全为0,读P0口状态,若P0.0P0.3全为1,则说明无键按下;若P0.0P0.3不全为1,则说明有键按下。 消除按键抖动的影响。在判断有键按下后,用软件延时的方法延时10 ms,然后再判断键盘状态

23、,如果仍为有键按下状态,则认为有一个按键按下,否则当作按键抖动来处理。求按键位置。根据前述键盘扫描法,进行逐列置0扫描,方法是:首先置P2.0为0(第0列扫描),从P0口读行线的状态,若P0.0为0,则说明0#键按下;若P0.1为0,则说明4#键按下根据P0口状态,可查询0#、4#、8#、12#键有无按下;然后再置P2.1为0,用同样的方法查询1#、5#、9#、13#键有无按下。当4列循环扫描一遍后,16个按键就都得到了检测。确定具体哪个按键按下后,就可以去求按键的键号,相应的键号可根据下述公式进行计算:键号=行首键号+列号。图9-6中,每行的行首可给予固定的编号0(00H)、4(04H)、8

24、(08H)、12(0CH),列号依列线顺序分别为04。判别闭合的键是否释放。按键闭合一次只能进行一次功能操作,因此,等按键释放后才能根据键号执行相应的功能键操作。根据上述思路,可以画出键盘扫描程序流程图如图9-8所示。根据图9-8 所示流程图,可编写键盘扫描子程序如下。程序中KS为查询有无按键按下的子程序;DELAY为延时子程序,起到软件去抖的作用,这里没有列出,请读者自己来完成程序。;键盘扫描子程序KEY;功能:查询按键有无按下,若有键按下,则返回键号;出口参数:累加器A,保存键号(00H0FH);KEY: ACALL KS ;调按键查询子程序,判别是否有键按下JNZ K1 ;有键按下,转移

25、ACALLDELAY;无键按下,调延时程序去抖 AJMPKEY ;继续查询按键;键盘逐列扫描程序K1: ACALL DELAY ;键盘去抖延时 ACALLKS ;再次判别是否有键按下 JNZ K2 ;有键按下,转移AJMP KEY ;无按键,误读,继续查询按键K2: MOVR3,#0FEH;首列扫描字送R3MOVR4,#00H;首列号送R4K3: MOVA,R3 MOVP2,A;列扫描字送P2口 MOVA,P0;读取行扫描值 JBACC.0,L1;第0行无键按下,转查第1行 MOVA,#00H ;第0行有键按下,行首键号送A AJMPLK ;转求键号 L1:JBACC.1,L2;第1行无键按下

26、,转查第2行MOVA,#04H;第1行有键按下,行首键号送AAJMPLK ;转求键号 L2: JB ACC.2,L3 ;第2行无键按下,转查第3行MOVA,#08H ;第2行有键按下,行首键号送A AJMPLK ;转求键号 L3: JB ACC.3,NEXT ;第3行无键按下,转查下一列 MOV A,#0CH ;第3行有键按下,行首键号送A AJMP LK LK: ADDA,R4;形成键码送A PUSHACC;键码入栈保护 K4:ACALL DELAY ACALLKS ;等待键释放 JNZ K4 ;未释放,等待 POP ACC ;键释放,弹栈送A RET ;键扫描结束,返回 NEXT:INCR

27、4 ;修改列号 MOVA,R3 JNB ACC.3,KEY ;4列扫描完返回按键查询状态 RLA ;未扫描完,改为下列扫描字 MOVR3,A;扫描字暂存R3 AJMPK3 ;转列扫描程序;按键查询子程序;功能:查询有无按键按下;出口参数:累加器A,无键按下A=0;有键按下A0 KS: MOVA,#00H MOVP2,A ;全扫描字#00H送P2口 MOVA,P0 ;读入P0口状态 CPLA;变正逻辑,高电平表示有键按下 ANLA,#0FH ;屏蔽高4位 RET ;返回,A0表示有键按下;延时子程序;功能:延时10 ms去抖DELAY:;RET在对配有键盘的应用系统编写程序时,往往在系统初始化后

28、,CPU必须反复不断地调用键盘输入程序,以确保能够准确、稳定、可靠地随时捕捉键盘的输入状态。在识别到有键按下后,可执行相应的操作,然后要再次进入上述循环。(2) 定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次。它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。由于中断返回后要经过10 ms后才会再次中断,相当于延时了10 ms,因此程序无需再延时。定时扫描方式的硬件电路与编程扫描方式相同。(3) 中断扫描方式采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时

29、扫描键盘,而单片机应用系统工作时并不是经常需要键盘输入,因此,CPU经常处于空扫描状态。为提高CPU的工作效率,可采用中断扫描方式。其工作过程如下:当无键按下时,CPU处理自己的工作;当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。图9-9是一种简易键盘接口电路,该键盘是由8031的P1口的高、低字节构成的44键盘。键盘的列线与P1口的高4位相连,键盘的行线与P1口的低4位相连,因此,P1.4P1.7是键输出线,P1.0P1.3是扫描输入线。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8031的外部中断输入端 。具体工

30、作如下:初始化时,使键盘行线P1.0P1.3,全部为0,当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有任意一键按下时,行线与列线接通,使该列线为低电平, 端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,CPU响应中断后进入中断服务程序。在中断服务程序中执行键盘的扫描程序,判断被按键的行、列号,并通过查表获得按键的键值。9.2显示接口技术显示接口技术在单片机应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等信息,因此显示器也是不可缺少的外部设备之一。显示器的种类很多,从液晶显示器、发光二极管显示器到CRT显示器

31、,都可以与微机配接。在单片机应用系统中常用的显示器主要有发光二极管数码显示器(简称LED显示器)和液晶显示器(简称LCD显示器)。LED显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点。LED数码管是一种最简单最常用的LED显示器,但由于显示内容有限,且不方便显示图形,因而其应用有局限性;LCD显示器除了具有LED的特点外还能实现图形显示,但其驱动较为复杂。近年来对某些要求较高的单片机应用系统也开始配置简易形式的CRT显示器接口。本节着重介绍LED、LCD显示器工作原理及其与单片机的接口。 9.2.1 LED接口技术接口技术在单片机系统中,如果需要显示的内容只有数码和某

32、些字母,使用LED数码管是一种较好选择,LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单可行。 1LED显示器结构与工作原理(1)LED结构 LED数码管由若干个发光二极管组成,当发光二极管导通时,相应的一点或一个笔划就会发光,控制不同组合的发光二极管导通,就可以显示出各种字符。LED产品很多,图9-10a为最常用LED数码管的结构及连接图,它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为7段(也有称作8段)发光二极管数码显示器。LED数码管从结构上可以分为共阴极结构和共阳极结构,如图9-10b、c所示。8段LED由8个发光二极管按“日.”字形排列

33、,所有发光二极管的阳极连在一起称共阳极接法;阴极连在一起称为共阴极接法。当采用专用芯片驱动时不需外加限流电阻,其它情况下一般应外接限流电阻。(2)LED工作原理当选用共阴极的LED显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字形的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字(显示码)来控制LED的显示,此数据称为字符的段码或称为字型码。“日。”字形码为1个字节,字型码与LED显示器各段的关系为:dp为小数点段,常用字符的段码(字型码)见表9-1。表9-1中只列出了共阴极的8位二进制段码,共阳极的8位

34、二进制段码未列出,只须将共阴极的8位二进制段码取反即可。共阴的LED,被选中时的段为高电平有效,熄灭的段码为低电平;共阳的LED,被选中的段为低电平时有效,熄灭的段码为高电平。 LED显示器与单片机的接口一般有静态显示与动态显示接口两种方式,下面分别加以介绍。2LED静态显示器接口 (1) 静态显示 所谓静态显示,就是当显示某一字符时,相应的发光二极管恒定导通或截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每一位数码显示器都需要占有一个8位I/O口,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的

35、电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,而且要求该口具有锁存功能,硬件电路复杂,成本高,只适用于显示器位数较少的场合。对于显示器位数较多的情况下,一般采用动态显示方式。(2)LED静态显示器接口电路LED数码管采用静态显示与单片机接口时,共阴极或共阳极点COM连接在一起接地或接高电平。每个显器位的段选线与一个8位并行口线对应相连,只要保持对应的段选线上段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行IO接口,也可以采用串入并出的移位寄存器或者其它具有三态功能的锁存器等。考虑到若采用并行IO接口,所占用的IO资源较多

36、,静态显示器接口通常采用串行口来实现。串行口设置为方式0,与外接74LSl64移位寄存器来构成显示器接口电路,如图9-11所示。图9-11中的LED选用共阳极的LED显示器,故LED显示器的公共极接+5V,要显示的字符相应段为低电平选中,字符的段码通过串行口送到相应的移位寄存器74LSl64中。3)静态显示程序设计以图9-11接口电路为例说明显示程序的设计方法。在编写显示程序前,首先建立一个字形段码表TAB,在表中依次存入所能显示的字形段码。其次要在片内RAM中设置一个显示缓冲区DIS0DIS7,缓冲区中各单元分别对应各个位的数码管LED0LED7。当需要执行显示程序或更新显示内容时,必须先向

37、显示缓冲区中写入要显示的内容,然后再调用显示子程序。显示子程序DIR如下:功能:把数据从显示缓冲区中取出送数码管显示。入口:要显示的内容已存入DIS0为首的8个单元中。 DIR: SETB RS0 ;保护第0组工作寄存器 PUSH Acc ;保护现场 PUSH DPH PUSH DPL MOV R2,#08H ;显示位数计数 MOV R0,#DIS7 ;显示缓冲区末地址送R0 DL0: MOV A, R0 ;取要显示的数据 MOV DPTR,#TAB ;指向字形段码表首址 MOVC A, A+DPTR ;查表取字形段码 MOV SBUF,A ;由串行口发送显示 DLl: JNB TI, DL1

38、 ;等待发送完一帧 CLR TI ;清发送中断标志 DEC R0 ;指向下一个显示单元 djnz R2, DL0 ;8个位未显示完重复 CLR RS0 ;8个位显示完恢复第0组寄存器 POP DPL ;恢复现场 POP DPH POP Acc RET TAB: DB C0H,F9H,A4H,B0H,99H ;0,l,2,3,4段码 DB 92H,82H,F8H,80H,90H ;5,6,7,8,9段码 DB 88H,83H,C6H,A1H,86H ;A,B,C,D,E段码 DB 8EH,BFH,8CH,FFH ;F,一,P,熄灭段码字形段码表TAB中,可以放置其它用户所需要的字符段码,使用时只

39、要将相应的字符数据(作偏移量)送入显示缓冲区单元即可。静态显示器接口电路,在字位数较多时,电路比较复杂,需要的接口芯片较多,成本也较高。因而在实际应用中常常采用动态显示器接口电路。 3LED动态显示器接口(1)动态显示 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可

40、使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短(1ms左右),就可以给人以同时显示的感觉。在进行动态扫描显示时,往往事先并不知道应显示什么内容,这样也就无从选择被显示字符的显示段码。为此,一般采用查表的方法,由待显示的字符通过查表得到其对应的显示段码。采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。 (2)LED动态显示器接口电路动态显示电路由显示块、字形码锁存驱动器、字位锁存驱动器三部分组成。用8051系列单片机构建数

41、码管动态显示系统时,常采用8155可编程I/O扩展接口,图9-12为6位LED动态显示器接口电路。采用8155作为单片机应用系统扩展的IO口,占用片外数据存储器空间。图9-12中,由6个LED数码管组成了6位显示块,数码管采用共阴极LED;8155的A口和一片8路三态反相缓冲器74LS240共同作为字形码锁存驱动器,6个数码管的8段段选线分别与74LS240的输出对应相连,8155的A口输出字符段码,通过74LS240向LED显示块提供段选信号;8155的C口和一片6路集电极开路反相门电路7406(OC门输出)共同作为字位锁存驱动器,6个LED共阴端与7406的输出端对应相连,C口作LED的位

42、选输出口,通过7406向LED显示块提供字位选择驱动信号。当要显示信息时,由A口输出字形段码的低电平,经74LS240反相为高电平有效,C口6路字位信号中每次仅选通一路输出高电平(其余字位为0),反相后为低电平有效选中相应的LED,则要显示的字符在该LED上显示出来。在这种显示电路中,采用一个字位一个字位轮流点亮各个LED,每一字位停留1ms左右,由于人的视觉暂留好像6只LED是同时点亮的,并不察觉有闪烁现象。这种动态LED显示接口由于所有数码管共用同一个段码输出口,分时轮流通电,从而大大简化了硬件线路,降低了成本。不过在这种方式的数码管接口电路中,数码管不宜太多,一般在8个以内,否则每个数码

43、管所分配到的实际导通时间会太少,亮度不足。若LED位数较多时应采用增加驱动能力,而提高显示亮度的措施。(3)动态LED显示程序设计动态LED显示程序与静态显示程序设计有所不同,在动态显示方式中,6个字位(6个LED)的显示内容是分时轮流输出,使6个LED采用一位一位轮流点亮的,要得到稳定的显示效果,必须不断重复执行显示程序。现以图9-12为例说明动态显示程序设计的基本方法。字形段码表的建立和显示缓冲区的建立与静态显示方式相同。显示程序如下: MOD: PUSH Acc ;保护现场 PUSH DPH PUSH DPL SETB RS0MOV R0,#CWR ;指向8155控制口MOV A,#4D

44、H ;8155A、C口均为输出口MOVX R0,A DIR: MOV R0,#DIS0 ;显示缓冲区首址送R0MOV R6,#20H ;指向最左的LEDMOV R7,#00h ;设定显示时间计数MOV DPTR,#TAB ;字形段码表首址送DPTRDIR1: MOV A,#00H ;6个LED均未选中(关显示)MOV R1,#POC ;指向8155的C口(数位选口)MOVX R1,A MOVX A,R0 ;取要显示的数据MOVC A,A+DPTR ;查字形段码表取段码MOV R1,#POA ;指向8155的A口(段码口)MOVX R1,A ;输出段码MOV A,R6 ;取数位码MOV R1,#

45、POC ;指向8155C口(数位码口)MOVX R1,A ;输出位选码HERE: DJNZ R7,HERE ;延时INC R0 ;指向下一个显示单元 CLR C MOV A,R6RRC A ;位选码右移一位指向下一个LEDMOV R6,A JNZ DIR1 ;6个显示位未完继续循环CLR RS0 ;显示完恢复现场POP DPL ;显示完恢复现场POP DPHPOP AccRET TAB: 字形段码表同静态显示程序 4 典型的键盘、显示器接口电路 在单片机应用系统中,键盘和显示器往往需同时使用,为节省I/O口线,可将键盘和显示电路做在一起,构成实用的键盘、显示电路。图9-13为8031经8255

46、与82键盘、6位显示器的接口逻辑电路。因8255的 与4-16译码器的 相连,A0与P0.0相接,A1与P0.1相接,所以可选FFFFH为8255控制字地址,FFFCH为A口地址,FFFDH为B口地址,FFFEH为C口地址。8255的PB口为输出口,控制显示器字形;PA口为输出口,控制键扫描作为键扫描口,同时又作为6位显示器的位扫描输出口;8255的C口作为输入口,PC0PC1读入键盘数,称为键输入口。下面介绍键输入程序。键输入程序应具有以下四个方面的功能:(1)判断键盘上有无键闭合。方法为:扫描口PA0PA7首先输出全“0”,然后读PC口的状态,若PC0PC3为全“1”(键盘上行线全为高电)

47、,则键盘上没有闭合键,若PC0PC3不为全“1”则有键处于闭合状态;(2)去除键的机械抖动。方法为:判别到键盘上有键闭合后,经一段时间延时后再次判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动;(3)判别闭合键的键号。方法为:对键盘的列线进行扫描。扫描口PA0PA7的输出顺序、PC口的输入状态与按下键号的关系见表9-2。扫描口PA按表9-2所示的输出顺序分别扫描各列线,并按相应的顺序读PC口的状态,若PC0PC1为全“1”,则列线为0的这列上没有键闭合,否则这一列上有键闭合,闭合键的键号为低电平的列号加上为低电平的行的首键号。例如:PA口输出为111111

48、01时,读出PC0PC3为1101,即PA1和PC1均为“0”,表示1行1列相交的键处于闭合状态。第l行的首键号为8,列号为l,闭合键的键号为:N=行首键号+列号=8+l=9(4)判断闭合的键是否释放。为了使CPU对键的一次闭合仅作一次处理。采用的方法为等待键释放以后再作处理。我们采用显示子程序作为延迟子程序,其优点是在进入键输入子程序后,显示器始终是亮的。在键输入源程序中,DISUP为显示程序调用一次用了6ms延时。DIGL为FFFCH即A口的地址,DISM为显示器占有数据存储单元首地址。子程序如下:键输入程序:ORG 8200HMOV DPTR,#0FFFFH ;8255初始化,A口出,B

49、口出,C口入MOV A,#81H MOVX DPTR,AKEY: ACALL KS1 ;调用键扫描子程序 JNZ LK1NI: ACALL DISUP ;调用显示子程序等于6ms AJMP KEY ;返回LK1: ACALL DISUP ;等于12ms ACALL DISUP ACALL KS1 ;调用键扫描子程序 JNZ LK2 ;有键按下转LK2 AJMP NI ;无键按下转NILK2: MOV R2,#0FEH ;扫描模式R2(从PA0开始扫描) MOV R4,#00H ;R4清0LK4: MOV DPTR,#DIGL ;A口逐列扫描 MOV A,R2 MOVX DPTR,A INC D

50、PL ;取C口地址 INC DPL MOVX A,DPTR ;读C口内容 JB ACC.0,LONE ;转判1行 MOV A,#00H ;0行有键闭合,首键号0AAJMP LKP ;转键处理LONE: JB ACC.1,NEXT ;转判下一行 MOV A,#08H ;1列有键闭合,首键号08ALKP: ADD A,R4 ;键处理 PUSH ACC ;键号进栈保护LK3: ACALL DISUP ;判键释放否 ACALL KS1 JNZ LK3 POP ACC ;键号出栈 RETNEXT: INC R4 ;列计数器加1 MOV A,R2 ;判是否扫描到最后一列 JNB ACC.7,KND RL

51、A ;扫描模式左移一位 MOV R2,A AJMP LK4KND: AJMP KEYKS1: MOV DPTR,#DIGL ;全“0”扫描口A口 MOV A,#00H MOV DPTR,A INC DPL INC DPL MOVX A,DPTR ;读键入状态 CPL A ANL A,#03H ;屏蔽高6位(取低2位) RET ;返回显示程序: ORG 8300HDISUP: MOV R0,#DISM ;显示缓冲器首地址R0 MOV R3,#0DFH ;(从最高位开始显示)显示位初值R3 MOV A,R3DIS0: MOV DPTR,#DIGL ;显示器位选输出口的地址DPTR MOVX DPT

52、R,A INC DPL ;DPL+1DPL,显示口地址(B口地址) MOV A,R0 ADD A,#17H ;显示内容A MOVC A,A+PC ;转换成七段码值 MOVX DPTR,A ;送PB口显示字形 MOV R7,#02H ;延时DL1: MOV R6,#0FFHDL2: DJNZ R6,DL2 DJNZ R7,DL1 INC R0 ;缓冲器地址加1 MOV A,R3 ;判是否已显示到最低位,如果是则转DIS2 JNB ACC.0,DIS2 RR A ;否,数位模式右移一位(DFHEFH); MOV R3,A AJMP DIS0 ;转DIS0再显示DIS2: RETDSEG: DB 3

53、FH,06H,5BH,4FH ;七段码表 DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H DB 00H,09H,02H注:DISM为显示缓冲存储器DISM0DISM5(存放被显示内容),DIGL为显示器的位选输出口地址和键扫描输出口地址(PA口)。图9-14是用8155并行扩展I/O口构成的典型的键盘、显示接口电路。 由图可知,LED显示器采用共阴极数码管。8155的B口用作数码管段码输出口;A口用作数码管位码输出口,同时,它还用作键盘列选口;C口用作键盘行扫描信号输入口。当其选用4根口线时,可构成48键盘,选用6根口线时,可构

54、成68键盘。LED采用动态显示软件译码,键盘采用逐列扫描查询工作方式,LED的驱动采用74LS244总线驱动器。 由于键盘与显示共用一个接口电路,因此,在软件设计中应综合考虑键盘查询与动态显示,通常可将键盘扫描程序中的去抖动延时子程序用显示子程序代替。键盘、显示综合应用的编程方法,请读者自己完成程序。键盘、显示器共用一个接口电路的设计方法除上述方案外,还可采用专用的键盘、显示器接口的芯片8279,有关8279的内容,本节不作介绍,请读者参阅有关资料。 9.2.2 LCD接口技术接口技术 液晶显示器(LCD)是一种被动式显示器,由于它的功耗极低,抗干扰能力强,而且能够显示大量的信息,如文字、曲线

55、、图形等,因而在低功耗的单片机系统中大量使用。近年来,液晶显示技术发展很快,LCD显示器已经成为仅次于显像管的第二大显示产业,它广泛应用于便携式电子产品中。 1.LCD的结构和工作原理 LCD显示器由于类型、用途不同,其性能、结构不可能完全相同,但其基本形态和结构却是大同小异。 所有液晶显示器件都可以认为是由两片光刻有透明导电电极的基板,夹持一个液晶层,封接成一个偏平盒(有时在外表面还贴装上偏振片等)而构成的。液晶显示器的结构图如图9-15所示。电极基板是一种表面极其平整的浮法生产薄玻璃片。其表面蒸镀有一层 In2O3或SnO2透明导电层,即ITO膜层,经光刻加工制成透明导电图形。这些图形由像

56、素图形和外引线图形组成,因此,外引线不能进行传统的锡焊,只能通过导电橡胶条或导电胶带等进行连接。如果划伤、割断或腐蚀,则会造成器件报废。 液晶材料是液晶显示器件的主体。不同器件所用液晶材料不同,液晶材料大都是由几种乃至十几种单体液晶材料混合而成。 每种液晶材料都有自己固定的清亮点TL和结晶点TS,因此也要求每种液晶显示器件必须使用和保存在TsTL之间的一定温度范围内。如果使用或保存温度过低,结晶会破坏液晶显示器件的定向层;而温度过高,液晶会失去液晶态,也就失去了液晶显示器件的功能。 偏振片又称偏光片,由塑料膜材料制成,涂有一层光学压敏胶,可以贴在液晶盒的表面。前偏振片表面还有一保护膜,使用时应

57、揭去,偏振片怕高温、高湿,在高温高湿条件下会使其退偏振或起泡。液晶分子平行排列,上下扭曲90度,当外部入射的光线透过其上偏振片形成偏振光,该偏振光通过平行排列的液晶材料后被旋转90度,再通过与上偏振片垂直的下偏振片,被反射板反射回来,呈透明状态;当上下电极(又称为前电极和背电极)加上一定的电压后,在电场作用下,电极部分的液晶分子转成垂直排列,扭曲结构消失,失去旋光作用,这时从上偏振片入射的偏振光不被旋转,光无法通过下偏振片,不能被反射板反射回来,呈现黑色。当去掉电场后液晶分子又恢复其扭曲结构。把这样的液晶置于两个偏振片之间,改变偏振片的相对位置(正交或平行)就可得到白底黑字或黑底白字的显示形式

58、。液晶显示器有以下显著特点: (1) 低压微功耗:工作电压只有35 V,工作电流只有几个mA。因此它成为便携式和手持仪器仪表的显示屏幕。 (2) 平板型结构:LCD显示器内由两片平行玻璃组成的夹层盒,面积可大可小,且适合于大批量生产,安装时占用体积小,减小了设备体积。 (3) 被动显示:液晶本身不发光,而是靠调制外界光进行显示。因此适合人的视觉习惯,不会使人眼睛疲劳。 (4) 显示信息量大:LCD显示器,其像素可以做得很小,相同面积上可容纳更多信息。 (5) 易于彩色化。 (6) 没有电磁辐射:在其显示期间不会产生电磁辐射,对环境无污染,有利于人体健康。 (7) 寿命长:LCD器件本身无老化问

59、题,寿命极长。LCD的主要参数有:(1)响应时间(毫秒级);(2)余辉(毫秒级);(3)阀值电压(320V);(4)功耗(5mW/cm2100mW/ cm2)。LCD显示器有分段式和点阵式两种结构。点阵式是在上下两个电极基板上喷上大小和间隔相等,上下对应的电极点阵,形成矩阵形式的晶格点,点的大小可根据显示的清晰度来设计。其中上电极基板上的每个电极对外均有引线用于接驱动电压,而下电极基板上的所有电极均接到一个公共电极COM上。电极是由二氧化锡透明导电材料组成。点阵式可用于文字、图形以及数字显示。广泛用于游戏机、笔记本电脑和彩色电视等设备中。点阵式产品中有一种字符型液晶显示模块,它是专门用来显示字

60、母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个58或511点阵组成,每一个点阵显示一个字符。这类模块产品很多,有自己专有的控制指令,广泛应用于手提电话、电子笔记本等电子设备中。 分段式又称笔段式,分段式以长条状显示像素组成一位显示。这种段型显示通常有六段、七段、八段、九段、十四段和十六段等,在形状上总是围绕数字“8”的结构变化,其中以七段显示最常用。该类型主要用于数字显示,也可用于显示西文字母或某些字符,它广泛用于电子表、数字仪表、笔记本计算机中。 LCD还有一些其它的分类方法。按采光方式可分为自然采光,背光源采光LCD; 按LCD的显示驱动方式可分为静态驱动、动态驱动、双

温馨提示

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

评论

0/150

提交评论