为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第6章 键盘、显示器及功率接口

2010-12-01 50页 ppt 982KB 30阅读

用户头像

is_163833

暂无简介

举报
第6章 键盘、显示器及功率接口nullnull 熟悉编码和非编码键盘的概念,掌握独立式和矩阵式键盘接口设计及编程方法。掌握LED、LCD显示器的工作原理,与单片机的接口电路及程序设计方法。学习功率器件在工业控制中的应用、功率接口电路及编程方法。重点掌握键检测、键扫描程序及显示程序的设计和功率接口电路设计的方法。难点:键扫描程序、显示程序和功率接口电路的设计与编程。第6章 键盘、显示器及功率接口 本章学习要点6.1键盘的接口6.1键盘的接口 键盘是计算机不可缺少的输入设备,是实现人机对话的纽带。按其结构形式键盘可分为非编码键盘和编...
第6章 键盘、显示器及功率接口
nullnull 熟悉编码和非编码键盘的概念,掌握独立式和矩阵式键盘接口设计及编程。掌握LED、LCD显示器的工作原理,与单片机的接口电路及程序设计方法。学习功率器件在工业控制中的应用、功率接口电路及编程方法。重点掌握键检测、键扫描程序及显示程序的设计和功率接口电路设计的方法。难点:键扫描程序、显示程序和功率接口电路的设计与编程。第6章 键盘、显示器及功率接口 本章学习要点6.1键盘的接口6.1键盘的接口 键盘是计算机不可缺少的输入设备,是实现人机对话的纽带。按其结构形式键盘可分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法产生键码。 在单片机中使用的都是非编码键盘,因为非编码键盘结构简单成本低廉。null按键型式有独立式和矩阵式两种: 1、独立式按键就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态可以容易判断那个按键按下。 2、矩阵式按键就是键盘上的键按行列构成矩阵,在行列的交叉点上都对应有一个键。所谓键实际上是一个机械弹性开关,被按下则其交点的行线和列线接通。非编码键盘接口技术的主要内容就是如何确定被按键的行列位置,并据此产生键码。这就是所谓键的识别问题。 null6.1.1键盘输入的抖动问题 键盘实质上是一组按键开关的集合,均利用机械触点的合、断作用。一个电压信号通过机械触点的断开、闭合过程如图6.1所示。图6.1 按键抖动信号波形 按键在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5~10ms。按键稳定闭合期的长短则由操作人员的按键动作所决定的,一般为十分之几秒到几秒的时间。键的闭合与否,反应在电压上就是呈现出高电平或低电平,如果高电平表示断开的话,那低电平则表示闭合,通过电平的高低状态的检测,可确认按键按下与否。为了确保CPU对一次按键动作只确认一次,必须消除抖动的影响。null6.1.2 消除按键抖动的措施 通常有硬件、软件两种消除抖动的方法硬件消除抖动方法有一种双稳态消抖电路如图6-2所示,其两个与非门构成一个RS触发器。当按键未按下时,输出为1;键按下时,输出为0。键的机械性能,使按键因弹性抖动而产生瞬时不闭合,抖动跳开b,只要按键不返回原始状态a,双稳态电路的状态就不改变,输出保持为0,不会产生抖动的波形。即使b点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波形。null图6-2 双稳态消抖电路null软件消除抖动方法 硬件消除抖动法需要增加电子元件,电路复杂,特别是按键较多时,实现起来有困难。而用软件消除抖动法,不需要增加电子元件,只要编写一段延时程序,就可以达到消除抖动的目的,在软件消除抖动方法中,若CPU检测到有键按下时,先执行一段延时程序后再检测此按键,若仍为按下状态,则CPU认为该键确实按下。同样,当键从按下到再次松开时,CPU检测到有键松开,并在延时一段时间后仍检测到键在松开状态,则认为键确实松开,这样就消除了抖动的影响,实现了软件消除抖动的目的图6-3 所示为软件去抖动判别程序的流程图null图 6-3 软件消除抖动流程图null6.1.3 非编码键盘的接口方法 非编码键盘分为独立式非编码键盘和矩阵式非编码键盘。下面分别进行介绍。 1. 独立式非编码键盘结构 独立式非编码键盘(又称小键盘),是指直接用一条I/O线对应连接一个按键(一键一线)的键盘电路。由于每个按键单独占有一条I/O口线,所以该口线的状态只反映该按键是否按下,不会影响其它I/O线的状态。因而独立式按键电路配置灵活,软件结构简单,但在按键数量较多时,需要的I/O口线也较多。独立式按键电路如图6-4所示。当某一按键闭合时,相应的I/O线变为低电平。 判断是否有键下的方法是,查询哪一根接按键的I/O线为低电平时,便知此键按下。独立式非编码键盘的优点是电路结构简单。缺点是当键数较多时,占用的I/O口线多。例如编写图6-4所示的键处理程序如下: null图 6-4 独立式非编码键盘null程序清单 START:MOV A,#0FFH ; 输入时先置P1口为全1 MOV P1,A MOV A,P1 ;键状态输入 JNB ACC.0,P0F ;0号键按下转POF标号地址 JNB ACC.1,P1F ;1号键按下转P1F标号地址 JNB ACC.2,P2F ;2号键按下转P2F标号地址 JNB ACC.3,P3F ;3号键按下转P3F标号地址 JNB ACC.4,P4F ;4号键按下转P4F标号地址 JNB ACC.5,P5F ;5号键按下转P5F标号地址 JNB ACC.6,P6F ;6号键按下转P6F标号地址 JNB ACC.7,P7F ;7号键按下转P7F标号地址 SJMP START ;无键按下返回nullP0F: LJMP PROM0 ;转至0号键功能程序 P1F: LJMP PROM1 ;转至1号键功能程序 P2F: LJMP PROM2 ;转至2号键功能程序 P3F: LJMP PROM3 ;转至3号键功能程序 P4F: LJMP PROM4 ;转至4号键功能程序 P5F: LJMP PROM5 ;转至5号键功能程序 P6F: LJMP PROM6 ;转至6号键功能程序 P7F: LJMP PROM7 ;转至7号键功能程序nullPROM0:. . . . . . ;0号键功能程序 LJMP START ;0键执行完返回 PROM1:. . . . . . ;1号键功能程序 LJMP START ;1键执行完返回 PROM2:. . . ;2号键功能程序 LJMP START ;2号键执行完返回 PROM3:. . . . . . ;3号键功能程序 LJMP START ;3号键执行完返回 PROM4:. . . . . . ;4号键功能程序 LJMP START ;4号键执行完返回 PROM5:. . . . . . ;5号键功能程序 LJMP START ;5号键执行完返回 PROM6:. . . . . . ;6号键功能程序 LJMP START ;6号键执行完返回 PROM7:. . . . . . ;7号键功能程序 LJMP START ;7号键执行完返回null小测:设计51单片机通过8255H实现扩展8 个独立按键的电路,画出原理图,并编写能够识别是否有键按下的程序,要求有防抖程序。 null2. 矩阵式非编码键盘结构 矩阵式非编码键盘适用于按键数量较多的场合。 矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,一个由3行*8列构成24个按键的键盘如图6-5所示。图6-5矩阵式键盘结构null 矩阵键盘的工作原理:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。无按键动作时,行线处于高电平状态,当有键按下时,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平亦为高。这一点是识别矩阵键盘按键是否被按下的关键。由于矩阵键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平。各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。 null 按键的识别方法:有扫描法和线反转法。描法是常用的方法,现重点介绍扫描法,此方法分两步进行: 第一步,识别键盘有无键被按下。 第二步,如果有键被按下,识别出具体的按键。 识别键盘有无键被按下的方法是:让所有列线均置为0电平,检查各行线电平是否变化。如果有变化,说明有键被按下,如果没有变化,则说明无键被按下。 识别具体按键的方法(亦称为扫描法);逐列置零电平,其它各列置位高电平,检查各行线电平的变化,如果其行电平由高电平变为低电平,则可确定此行此列交叉点的按键被按下。 单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘工作方式。 通常键盘工作方式有三种,即编程扫描、定时扫描和中断扫描。 null下面以8031键盘实际矩阵电路说明键盘的编程扫描程序。 一是KEY-SCAN 键检查子程序 二是KEY-GET 键扫描取值子程序 8031键盘接口电路如图6-6所示。null 在6000H接口地址的锁存器74LS373锁存低电平,此时读入P1口状态,在P1.0、P1.1、P1.2三条行线上,只要有一个不是高电平,求反后A中就不为零。此时说明有键按下了。否则无键按下。 键检查子程序: KEY-SCAN:MOV DPTR,#6000H ;列口地址送数据指针 MOV A,#00H MOVX @DPTR,A ;列线送低电平 MOV P1, #0FFH MOV A, P1 ;读行线电平 CPL A ;求反 ANL A, #07H ;A=0无键按下,A≠0有键按下 RET 以上检测程序只能判断有无键按下,但在有键按下后再分析具体是哪个键按下,则需要用扫描键取值程序。nullKEY-GET: ACALL KEY-SCAN ;调键检测 JNZ K-G1 ;有键按下 AJMP KEY-GET K-G1: LCALL DELAY ;消除抖动延时,约18ms LCALL KEY-SCAN ;再调键检测 JNZ K-G2 ;有键按下 LCALL DELAY AJMP KEY-GET K-G2: MOV R2,#0FEH ;R2存扫描信号 MOV R4,#00H ;键值起始值 K-G3: MOV DPTR,#6000H ;输出列扫描信号 MOV A,R2 MOVX @DPTR,A MOV A,P1 ;读P1口 JB Acc.0, LINE1 ;判断0行高? MOV A,#00H ;0行起始值 AJMP K-G-ENDnull LINE1: JB Acc.1, LINE2 ;判断1行高? MOV A,#08H ;1行起始值 AJMP K-G-END LINE2: JB Acc.2, NEXT-COL ;判断2行高?高下一列 MOV A,#10H ;2行起始值 K-G-END: ADD A,R4 ;计算键值 END NEXT-COL: INC R4 ;换列时加1 MOV A,R2 JNB Acc.7, KEY-NEXT ;7列是低 RL A ;移到下一行 MOV R2,A AJMP K-G3 ;返回输出列信号 KEY-NEXT: AJMP KEY-GETnull 在调用KEY-SCAN程序判明有键按下时,再进入此程序,否则将在此程序中等待按键。这里R2用来提供信号的低电平的位置,R4是用来记录位线到哪一位,运行程序出口A中得到按键的键值。 其键值表如表6-1,键值标注在键位下面园括弧内。 表6-1键位和键值图 null 除了以上编程扫描工作方式外,定时扫描工作方式是利用单片机内部定时器产生定时中断(例如10ms),CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键并执行相应键功能程序,定时扫描工作方式的键盘硬件电路与编程扫描工作方式相同。 键盘工作于编程扫描状态时,CPU要不间断地对键盘进行扫描工作,以监视键盘输入情况,直到有键按下为止。其间CPU不能干任何其他工作,如果CPU工作量较大,这种方式将不能适应。定时扫描进了一大步,除了定时监视一下键盘输入情况外,其余时间可进行其他任务的处理,CPU效率提高了,为了进一步提高CPU工作效率,可采用中断扫描工作方式即只有在键盘有键按下时,才执行键盘扫描并执行该键功能程序,如果无键按下,CPU将不理睬键盘,可以说前两种扫描方式,CPU对键盘的监视是主动进行的,而后一种扫描方式,CPU对键盘的监视是被动进行的。null6.1.4 BCD码拨盘接口 BCD码十进制拨盘是向单片机应用系统输入数据的设备,是一种硬件设置数据的设备。使用拨盘输入的数据具有不可变性,却又易于修改。十进制输入,BCD输出的拨盘是最常使用的一种。图6-7所示是一个4位BCD码拨盘组结构和连接示意图。每位拨盘有0~9十个拨动位置,每个位置有相应的数字表示,分别代表拨盘输入的十进制数。所以,一位拨盘可以代表一位十进制数,可以根据设计的需要,用多位BCD码拨盘组成多位十进制数。 图 6-7 4位BCD码拨盘结构和连接null BCD码盘有一个输入控制线A,4个BCD码输出信号线。拨盘的各个不同的位置,使输入控制线A分别与4根BCD码输出线中的某几根接通,使BCD码输出线的状态与拨盘所显示的值一致,并使该编码信号输入单片机的CPU。BCD码拨盘的输入输出状态如表6-2所示。 null BCD码拨盘与单片机相连的应用如图6-8 所示。拨盘的输入控制线A接+5 V,4根输出线通过电阻接地并接单片机CPU的P1口。由表6.2可知,当拨盘在0~9的某个位置时,4根输出线的8、4、2、1端有一组相应的电平状态生成,CPU可以通过读取P1口的端口状态知道拨盘设置的数据。在这种情况下,拨盘输出的BCD码为正逻辑电平。如果BCD码拨盘的输入控制线A接地,4根输入线通过电阻接+5 V,那么拨盘输出的BCD码为负逻辑电平,如图6-9所示 图 6-8 单片机与BCD码盘的接口6-9 BCD码盘负逻辑接口null6.1.5串行键盘应用 除了利用并行输入口设计键盘控制电路外,还可以用串行方式设计键盘控制电路。图6-10为用单片机串行口设计的串行键盘控制电路。 CD4014是8位表态移位寄存器(同步并入),实现并行输入串行输出。如图6.10所示,CD4014的P1~P8作为8个开关S1~S8的输入端,输入的开关量通过AT89C51的TXD端控制CD4014的CLK端,把输入值逐次串行输入AT89C51的RXD端口,并存入寄存器A中。图 6-10 单片机串行口键盘控制电路null 键盘电路程序如下: S1: STB P1.0 ; 置位CD4014的P/S端 CLR P1.0 ;清CD4014的P/S端,开始串行移位 MOV SCON,#10H ;设置串行方式0,开始接收 W1: JNB RI, W1 ;判RI状态 CLR RI ; 一次串行输入完成 MOV A,SBUF ; 存放输入的数据 RET 除了使用CD4014集成电路外,还可以使用74LS165等集成电路芯片设计串行键盘控制电路。6.2 LED七段发光显示器接口6.2 LED七段发光显示器接口 发光二极管显示器,简称LED(Light Emitting Diode),LED有七段和八段之分,也有共阴极和共阳极两种。共阴极LED显示块的发光二极管的阴极连在一起,通常此公共阴极接地,当某个发光二极管的阳极为高电平时。发光二极管点亮,相应段被显示。同样共阳板LED显示块的发光二极管的阳极连在一起,通常此公共阳极接正电压。当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。两个显示块都有SP显示段,用于显示小数点。 显示器连接如图6.11所示: 图6.11 LED原理及外形引脚图 7段字型码如表6.3所列,由于只有8个段发光二极管,所以字型码为一个字节。“米”字段LED字型码由于有15个段发光二极管,所以字型码为两个字节。 一般由N片LED显示块可拼接成N位LED显示器。N位LED显示器有N根位选线和8*N根段选线。根据显示方式不同,位选线和段选线的连接方法也各不相同。段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。LED显示器有静态显示和动态显示两种显示方式。 null6.2.1 静态显示接口及编程6.2.1 静态显示接口及编程 LED显示器上工作于静态显示方式时,各位的共阴极(或阳极)连接在一起接地(或+5V);每位的段选线(a~sp),分别与一8位的锁存器输出相连。静态显示是由于显示器中的各位相应独立,而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一字符为止。静态显示器的亮度较高。 由于各位分别由一个8位输出口控制段选码,在同一时间里,每一位显示的字符可以各不相同。这种显示方式接口,编程容易,管理简单,付出的代价是占用口线资源较多。 在单片机应用系统中,常采用MCl4495芯片作为LED的静态显示接口,它可以和LED显示器直接相连。MCl4495芯片的引脚和逻辑框图如图6.12所示。它是由4位锁存器、地址译码和笔段ROM阵列以及带有限流电阻的驱动电路(输出电流为10mA)等三部分电路组成。图6.12中A、B、C、D为二进制码(或BCD码)输入端;为锁存控制端,为低电平时可以输入数据。为高电平时锁存输入数据,h+i为输入数据大于等于10指示位,若输入数据大于或等于10,则h+i输出高电平,否则输出为低电平;为输入等于15指示位,若输入数据等于15,则输出高电平,否则为高阻状态。 图 6.12 MC14495 引脚和逻辑框图 MCl4495芯片的作用是输入被显字符的二进制码(或BCD码),并把它自动转换成相应字形码,送给LED显示。图6.13为采用MCl4495芯片的4位静态LED显示器接口电路。图中,P1.7~P1.4用于输出欲显示字符的二进制码(或BCD码),P1.2=0用于控制二~四译码器工作,P1.1和P1.0经译码器输出后控制MCl4495中哪一位接收P1.7~P1.4上代码。 例: 下面以静态LED显示器接口为例编程,编出能在图6-13电路中自左到右显示出来的程序。设8031单片机内部RAM的20H和21H单元中有四位十六进制数(20H中为高两位)。 图 6.12 MC14495 引脚和逻辑框图图 6.13 4位静态LED显示器接口 图 6.12 MC14495 引脚和逻辑框图null ORG 1000H SDISPLAY: MOV A,20H ;20H中数送A ANL A,#0F0H ;截取高4 MOV P1,A ;送MC14495 MOV A,20H ;20H中数送A SWAP A ;低4位送高4位 ANL A,#0F0H ;去掉低4位 INC A ;指向MC14495 MOV P1,A ;送MC14495 MOV A,21H ;21H中数送A ANL A,#0F0H ;截取高4位 ADD A,#02H ; 指向MC14495 MOV P1,A ;送MC14495 MOV A,21H ;21H中数送A SWAP A ;低4位送高4位 ANL A,#0F0H ;去掉低4位 ADD A,#03H ; 指向MC14495 MOV P1,A ;送MC14495 RET 在本例中,被显字符是由硬件MCl4495转换成字形码的,但也可采用软件法转换成字形码。采用软件法转换时,图6.13中MCl4495应由8位锁存器替代。静态显示所需的硬件开锁大,CPU也无法预先知道什么时候需要改变LED的被显示字符。 如显示器位数增多,则静态显示方式更无法适应。在显示位数较多的情况下,一般都采用动态显示方式。6.2.2 动态显示接口及编程6.2.2 动态显示接口及编程 在多位LED显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个(7段LED)8位I/O口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O口线控制,实现各位的分时选通。 其原理如图6.14 所示,6位7段LED动态显示器电路中段选线占用一个8位I/O口,而位选线占用一个6位I/0口,由于各位的段选线并联,段选码的输出对各位都是相同的。因此同一时刻,如果各位位选线都处于选通状态的话,6位LED将显示相同字符。若要各位LED能显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线都处于关闭状态。同时在段选线上输出相应位要显示字符的字型码,这样同一时刻6位LED中只有选通的那一位显示出字符,其他五位则是熄灭的。null 同样在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态。同时,在段选线上输出相应位将要显示字符的字型码,则同一时刻只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而在同一时刻,只要一位显示,其他各位熄灭,但由于人眼有视觉暂留现象,只要每位显示时间足够短,则可造成多位同时亮的假象,达到显示的目的。 图6.14动态显示器电路图null动态显示接口实例 要使lED显示器显示出字符,必须提供段选码和位选码。段选码(即字形码)可以用硬件译码的方法得到,也可以用软件译码的方法得到。以8031单片机6位LED动态显示接口电路为实例分析说明显示接口与编程。 图6-15所示,为6位LED显示器的段选线分别并联在一起,由一个74LS373锁存器提供段选码,由另一个74LS373锁存器提供位选码。这两个锁存器由1个74LSl38译码器的输出4和3分别控制,而74LSl38译码器的选择输入端分别接到P2.7,P2.6,P2.5,最高的三位地址。因此可以得到段选码锁存器的接口地址是8000H,位选码锁存器的接口地址是6000H,在6位LED显示器动态显示程序中需要6个和6个LED相对应的存储单元,用来存储相应位要显示字符。这6个单元称为显示缓冲区。null 在8031单片机开发系统中7EH,7DH,7CH,7BH,7AH和79H片内数据存储区,和6个LED显示位由左到右一一对应,如图6-16所示。 7EH 7DH 7CH 7BH 7AH 79H 图 6-16 LED对应显示缓冲区 图 6.15 6位LED动态显示接口电路动态扫描显示程序清单如下 :动态扫描显示程序清单如下 : DISPLAY:MOV R0,#79H ;R0指向显示缓冲区低位 MOV R3,#01H ;R3指向位码低位 MOV A,R3 ;输出位码 DISPLAY1:MOV DPTR,#6000H ;DPTR指向位口地址 MOVX @DPTR,A MOV A,@R0 ;输出段码 ADD A,#19H ;加PC到TABLE偏移量 MOVC A,@A+PC ;查表获得对应的段码 MOV DPTP,#8000H ;DPTR指向段口地址 MOVX @DPTP,A ;在段口输出段码 ACALL DELAY ;延时lms左右 INC R0 ;指向下一个缓冲区地址 MOV A,R3 ;修改位码 JB ACC.5,DISPLAY2;已到最左位返回 RL A ;移到下一位 MOV R3,A AJMP DISPLAY1 ;继续循环 nullDISPLAY2:RET DELAY: MOV R7,#02H ;延时程序约lms DELAY1: MOV R6,#0FFH DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET TABLE: DB C0H ;0的段选码 F9H ;1 A4H ;2 B0H ;3 99H ;4 92H ;5 82H ;6 F8H ;7 80H ;8 90H ;9 88H ;A 83H ;B C6H ;C A1H ;D 86H ;E 8EH ;F 以上显示程序是扫描程序,是把6个LED显示块从右到左逐个显示一遍,每一个显示时间约1ms,如果反复调用此显示程序,循环下去,根据人眼的视觉暂留现象,使人感觉这6个LED好象同时在显示,显示的内容是预先放在对应显示缓冲区的内容。6.2.3 8155作LED显示器接口6.2.3 8155作LED显示器接口 8155是可编程RAM/IO接口芯片,可与MCS-51单片机直接相接而不需要任何硬件,是单片机系统中最实用,最广泛使用的接口芯片之一。 为了实现LED显示器的动态扫描,除了要给显示器提供段(字形代码)的输入之外,还要对显示器加位的控制。因此多位LED显示器接口电路需要有二个输出口,其中一个用于输出8条段控线(有小数点显示);另一个用于输出位控线,位控线的数目等于显示器的位数。 图6.17是使用8155作六位LED显示器的接口电路。 null图6.17 8155作六位LED显示器的接口电路 其中C口为输出口(位控口),以PC5~PC0输出位控线。由于位控线的驱动电流较大,8段全亮时约40~60mA,因此PC口输出加74LS06进行反相和提高驱动能力,然后再接各LED显示器的位控端。 A口也为输出口(段控口),以输出8位字形代码(段控线)。段控线的负载电流约为8mA,为提高显示亮度,通常加74LS244进行段控输出驱动。 显示缓冲区为了存放显示的数字或字符,通常在内部RAM中设置显示缓冲区如图6.16所示,其单元个数与LED显示器位数相同。 假定位控口地址0101H,段控口地址0102H。以R0存放当前位控值,DELAY为延时子程序。nullDIR: MOV R0,#79H ;建立显示缓冲区首址 MOV R3,#01H ;从右数第一位显示器开始 MOV A,R3 ;位控码初值 LD0: MOV DPTR,#0101H ;位控口地址 MOVX @DPTR,A ;输出位控码 INC DPTR ;得段控口地址 MOV A,@R0 ; 取出显示数据 DIR0:ADD A,#0DH MOVC A,@A+PC ;查表取字形代码 DIR1: MOVX @DPTR,A ;输出段控码 ACALL DL ;延时 INC R0 ;转向下一缓冲单元 MOV A,R3 JB ACC.5,LD1 ;判是否到最高位,到则返回 RL A ;不到,向显示器高位移位 MOV R3,A ;位控码送R3保存 AJMP LD0 ;继续扫描 LD1: RET DSEG:DB 3FH ;字形代表码 DB 06H DB 5BH … null 在动态扫描过程中,调用延时子程序DELAY,其延迟时间大约1ms。这是为了使扫描到的那位显示器稳定地点亮一段时间,犹如扫描过程中在每一位显示器上都有一段驻留时间,以保证其显示亮度。 本例接口电路是软件为主的接口电路,对显示数据以查表方法得到其字形代码,为此在程序中有字形代码表DSEG。从0开始依次写入十六进制数的字形代码。为了进行查表操作,使用查表指令MOVC A,@A+PC,由PC提供16位基址,由A提供变址。MOVC指令距DSEG表的地址间隔为0DH,因此显示数据送A后,进行A-(A)+0DH操作,以求得变址值,然后进行查表操作。 在实际的单片机系统中,LED显示程序都是作为一个子程序供监控程序调用。因此各位显示器都扫过一遍之后,就返回监控程序。返回监控程序后,经过一段时间间隔后,再调用显示扫描程序。通过这种反复调用来实现LED显示器的动态扫描。 null小测:设计51单片机通过8155H实现扩展6位 LED和32键键盘的电路,要求画出原理图,并编写键盘识别和LED显示的程序。 键盘识别程序: KEY:MOV DPTR, #7F01H ______________ MOVX @DPTR, A INC DPTR INC DPTR ______________ CPL A ANL A, #0FH JZ KEY …nullnullLED显示程序: DIR: MOV R0,#79H ;建立显示缓冲区首址 MOV R3,#01H ;从右数第一位显示器开始 MOV A,R3 ;位控码初值 LD0: MOV DPTR,______ ;位控口地址 MOVX @DPTR,A ;输出位控码 MOV DPTR,______ ;得段控口地址 MOV A,@R0 ; 取出显示数据 DIR0:ADD A,#0DH MOVC A,@A+PC ;查表取字形代码 DIR1: MOVX @DPTR,A ;输出段控码 ACALL DL ;延时 INC R0 ;转向下一缓冲单元 MOV A,R3 ______________ ;判是否到最高位,到则返回 RL A ;不到,向显示器高位移位 MOV R3,A ;位控码送R3保存 AJMP LD0 ;继续扫描 LD1: RET DSEG:DB 3FH ;字形代表码 DB 06H DB 5BH … 6.4 功率器件接口电路6.4 功率器件接口电路 null 在工业控制中,单片机的被控对象大多都是功率设备,需要高电压大电流,单片机不能直接驱动,要通过相应的接口电路才能输出一定的功率来驱动功率设备。常用的功率接口有继电器型、晶闸管型、光电隔离型和功率晶体管型等多种形式。 6.4.1 继电器型驱动接口及编程 继电器是通过线圈的电流来控制触点的开与合,由于继电器的线圈和触点之间没有电气上的联系,因此,可以使用继电器来实现自动控制上的电气隔离。图6.25所示是继电器的基本应用电路。 图6.25所示,KA为继电器线圈,KAl和KA2是继电器的动合、动断触点,当晶体管T的基极输入一个高电平,使T进入饱和状态,Vc通过继电器的线圈有电流流过,流过电流的线圈产生磁场力吸引触点动作。R为晶体管基极限流电阻,二极管D用于对晶体管的保护。在平时,由于二极管为反向串接,没有电流过,当继电器线圈失电的瞬间会产生很大的反电动势,有可能使晶体管击穿,由于有二极管D的存在,提供了一个通路,使反电动势不会损坏晶体管,从而起到了保护作用。在继电器失电状态下,动合触点断开,动断触点闭合,当继电器得电后,动合触点闭合,而动断触点断开,利用继电器的触点开关作用可以控制设备或传送逻辑电平信号。一般继电器带有一组或多组动合、动断触点供使用,继电器的线圈电流也有大小,触点的接触电流也有大小,耐压值也有高有低,用户可以根据设计的要求选用相应的继电器。 图 6.25 继电器基本应用1、继电器驱动接口及电气参数1、继电器驱动接口及电气参数 在各种控制中,应用场合不同,需要选用的继电器也不同。在设计继电器接口电路时,要了解继电器的一些参数,进行正确的设计,才能获得好的控制效果。在电路设计时,应根据印制电路板的大小,选用合适的继电器,要考虑它的体积、封装形式。目前,有供印制电路板设计用的微小型继电器,供电电压为5 V。 对于功率大的驱动继电器,有必要在中间增加一级继电器,如图6.26所示。null继电器常用电气参数有: (1)额定工作电压和电流 是指继电器在正常工作状态下,继电器线圈两端所加的电压值或线圈中流过的电流值,是应用于设计的主要参数,是设计的依据。 (2)吸合电压和电流 是指继电器能产生吸合动作的最小电压值或电流值,一般为额定值的75%左右。在设计中为保证继电器可靠工作,应使控制电压高于吸合电压,若控制电压在吸合电压左右,就可能造成吸合不可靠或造成频繁吸合、断开,产生干扰影响使用。 (3)释放电压和电流 是指继电器在此电压值以下或电流值在此电流值以下,继电器不吸合,因此控制电压值或电流值应大大小于释放电压或电流,才能使继电器可靠释放。 (4)触点负载 是指继电器触点的负载能力,反应了所能控制设备的功率大小。应使所控制设备的功率小于触点负载,才能使继电器工作正常,否则会损坏触点,影常工作。null图 6.27 所示是带光电隔离的继电器接口电路的应用null也可以使P1.0直接驱动晶体管去带动继电器,如图 6.28 所示。null图6.29所示是单片机控制一个220V交流电动机的电路。6.4.2 晶闸管的驱动接口6.4.2 晶闸管的驱动接口 晶闸管简称SCR,是一种大功率半导体器件,分为单向晶闸管和双向晶闸管。由于可以用较小的电流、电压控制大电流、高电压,无机械触点的优点,在工业控制中,晶闸管得到了广泛的应用。 晶闸管是一种功率半导体元件,它具有体积小、重量轻、效率高、使用维护方便等优点,在电机控制、电磁阀控制、灯光控制、稳压控制、逆变电源等方面有十分普遍的应用。根据结构及用途的不同,晶闸管有很多类型。比较常见的有普通晶闸管、高频晶闸管、双向晶闸管、逆导晶闸管、可关断晶闸管、双控制极晶闸管、无控制晶闸管、光控晶闸管、热敏晶闸管等。null1、晶闸管及晶闸管常用主要参数 晶闸管的特点是可以用弱信号控制强信号。从控制的观点看,它的功率放大倍数很大,用几十到—二百毫安电流,二、三伏的电压可以控制几十安、千余伏的工作电流它的功率放大倍数可以达到数十万倍以上。由于元件的功率增益可以做得很大,所以在许多晶体管放大器功率达不到的场合,它可以发挥作用。从电能的变换与调节方面看,它可以实现交流—直流、直流—交流、交流—交流、直流—直流以及变频等各种电能的变换和大小的控制。在大多数场合,可取代机械开关、老式的饱和电抗等,获得投资少、占地少、无噪声、运行费用低和效率高等效果。null2、晶闸管在电压调节中的应用⑴单向晶闸管在直流负载驱动电路中的应用 如图 6.31 所示,是单向晶闸管在直流电压控制中的应用图 6.31 单向晶闸管的直流电压控制电路 直流工作电压通过负载加在单向晶闸管两端,当单片机的I/O端口P1.0输出高电平时,光电耦合器的二极管无电流流过,光电晶体管截止,晶体管T的基极加上一个电压,使T也导通饱和,在R4上产生一个控制电压加到单向晶闸管上,导致晶闸管导通,使负载有电流。在这里,单向晶闸管起到一个直流电压开关作用。 图 6.31 单向晶闸管的直流电压控制电路 图 6.32 双向晶闸管的交流控制电路⑵ 双向晶闸管在交流电压控制电路中的应用 MOC3021是带光电隔离的晶闸管触发元件,当单片机的P1.0口为低电平时,有电流流过MOC3021中的发光二极管,通过内部的触发电路来控制晶闸管的导通,外加220V交流电通过负载。在这里,双向晶闸管起到了交流大功率开关的作用。 在图 6-32 中,还可以实现交流电无级调压的功能。通过对220 V交流电压的过零信号的检测,得到一个与交流电过零的同步信号,输入单片机,通过软件的控制,实现对晶闸管的导通角的控制,使负载上的交流电压从0~220 V的无级调压。 null6.4.3功率晶体管的驱动电路及编程 当单片机的被控对象功率不大时,可以由CPU直接驱动;当被控对象的功率比较大时,需要通过功率晶体管或其它功率器件去驱动。 1、CPU通过晶体管控制发光二极管 图6.34所示为CPU通过晶体管控制发光二极管,单片机通过功率晶体管来增加驱动功率。图6-34 所示为CPU通过晶体管控制发光二极管,单片机通过功率晶体管来增加驱动功率。如图6-34中,CPU使P1.0=1,输出5 V电压,通过R1使晶体管T饱和导通,Uec=0.2V左右,发光二极管D通过限流电阻R3流过电流,使D发光。当CPU使P1.0= 0,晶体管Ube=0,晶体管截止,Uec=5 V,发二极管不导通,不发光。选用大功率的晶体管,可以产生大的电流,驱动大电流的显示器或大功率负载。单片机通过P1口对P1.0端口置1或清0就可以控制晶体管的导通与截止来带动负载。控制图 6-34 中发光二极管亮、灭的程序如下: 图 6.34CPU通过晶体管控制发光二极管 ORG 2000H LOOP:SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAY SJMP LOOP null2、蜂鸣器驱动电路 蜂鸣器需要的驱动电流较大,根据上述考虑,我们采用了图 6.35 所示的蜂鸣器驱动电路。该电路结构简单、方便适用。null3、显示器驱动电路 显示驱动电路包括位驱动电路和段驱动电路,电路连接如图 6.36 所示。其中各管脚说明如下。(a) 图位驱动电路;(b) 图段驱动电路
/
本文档为【第6章 键盘、显示器及功率接口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索