《人机界面接口及程序设计.ppt》由会员分享,可在线阅读,更多相关《人机界面接口及程序设计.ppt(328页珍藏版)》请在三一文库上搜索。
1、人机界面及程序设计,主讲教师:傅林,电子工程系,E-mail:,主要内容,基本知识 LED显示器接口及程序设计 LCD显示器接口及程序设 键盘接口及程序设计,1.基本知识:人机界面含义,人机界面,也叫人机接口,是人和计算机进行交互的接口,具有信息输入/输出的功能;有广义和狭义之分 狭义的人机界面指供系统使用者控制输入、观察结果的接口 广义人机界面是指凡是人能够进行输入控制、观看到输出结果或效果的输入输出接口,比如球场的记分牌,不仅是给操作者看的;外控LED显示护栏灯,也不只是操作者一人才能够控制的。,实际系统中必不可少的组成:人机界面,人机界面是系统必不可少的组成部分,1.基本知识:LED显示
2、器实物,LED实物,LED参数,LED参数,发光二极管的驱动,发光二极管正常发光时,电流约为510mA,压降1V左右。,限流电阻 R=(5V-1V)/8mA=500 ,引脚输出低电平时,发光二极管导通。,LED应用领域,LED应用实例,LED应用实例,显示器应用实例效果,显示器应用实例效果,数码显示器常识,在一些只需要简单显示的仪器中,常用数码管显示信息; 类型:发光二极管显示器,简称LED(Light Emitting Diode);液晶显示器,简称LCD(Liquid Crystal Display);荧光管显示器。 LED、LCD有两种显示结构;段显示(8段,“米”字型等)和点阵显示(5
3、X7,5X8,8X8点阵等)。 LED示又分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。 三种显示器中,以荧光管显示器亮度最高,发光二极管次之,而液晶显示器最弱; 液晶显示器有带背光和不带背光之分,带背光的液晶显示器既可以在有外部光源处使用,也可以在黑暗中使用;不带背光的液晶显示器只能靠外部光源才能看清。,一般地,发红光的LED每段流过5mA的平均电流,亮度就可以了,7mA电流会更亮些,10mA以上也不会再亮多少,但长期运行于10mA以上会缩短其寿命。最大电流平均值不得超过30mA; 在应用中,通常设置为510mA。在动态扫描显示情况下,瞬时电流较大,但平均电流不要超过
4、10mA; LED显示器允许的反向电压最大值为5V,此时的反向电流一般小于10A; 小尺寸的LED显示器每段只有一个发光二极管,其正向压降约为1.5V,一般最大不大于2V。大尺寸的LED显示器每段可能由数个发光二极管串联,每段压降也相应的要增大。,LED显示器的结构与原理,LED数码显示器,LED轮廓数码管、护栏管:采用超高亮度的RGB(红绿蓝)三色LED作为发光源,在PCB电路板上按红绿蓝顺序呈直线形排列,以专用驱动芯片控制,构成变化无穷的色彩和图形。外壳采用阻燃PC塑料制作,强度高、抗冲击、抗老化、防紫外线,防尘、防潮,防护等级达IP65。利用光学原理设计,透光合理,可视角度大。例如凯鸿越
5、公司的LED护栏管具有功耗小,无热量、耐冲击,长寿命等优点。LED护栏管内置微电脑控制程序或者外接控制器,即可实现流水、渐变、跳变、追逐等多种色彩斑斓的动态效果。LED护栏管在大型灯饰工程应用中,连接电脑同步控制系统,更可显示播放文字、图案、动画、视频及各种灯光效果,体现了现代光电技术、计算机技术与灯光艺术的完美结合。LED护栏管广泛应用于桥梁、建筑物、道路、河堤、风景区、娱乐场所、广告招牌装饰等多种场合。,LED数码显示器,LED数码管特点 1、杜绝缺笔少画,发光不均,采用固体光源,不含汞; 2、解决了漏电,防损防潮,防崩灯超硬度PCB组成超长寿命; 3、改变传统灌胶模式,可拆装返修LED数
6、码管; 4、高亮发光,超低功耗,低电压(1.9V-2.1V)灯珠; 5、PCB与外壳无间隙,相扣牢固,外型美观,提升产品档次。 应用 通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数。 价格便宜 使用简单 在电器 特别是家电领域应用极为广泛,空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。,LED点阵模块,LED点阵模块概述 LED点阵模块指的是利用封装8*8的模块组合点元板形成模块,而LED模组应用中一般指两类产品:一种是用插灯或表贴封装做成的单元板,常用户外门头单红屏、户外全彩屏,室内全彩屏等;
7、另外,用做夜间装饰的发光字串也被称为LED模组。LED点阵指用封装8*8的模块,再组合成单元板,这样的单元板称为点阵点元板,一般用于室内单色,双色显示屏用。LED点阵显示模块可显示汉字、图形、动画及英文字符等;显示方式有静态、横向滚动、垂直滚动和翻页显示等。单块模块控制驱动12块(最多可控制24块)8X8点阵,共16X48点阵(或32X48点阵),是单块MAX7219(或PS7219、HD7279、ZLG7289及8279等类似LED显示驱动模块)的12倍(或24倍)。可采用“级联”的方式组成任意点阵大显示屏。显示效果好,功耗小,且比采用MAX7219电路的成本更低。,LED点阵模块封装,三合
8、一表贴:就是指三个发光点封装在同一个点里面的合成。 三合一亚表贴:是指由三个方灯在一条直线上排列成一个像素,意思是说价格亚于表贴,但显示效果又和表贴的效果一样。 三合一分离表贴:是指红、绿、蓝三个发光点分开封装的,封装后又和亚表贴的一样排列成一个像素点。,LED显示器接口及程序设计,1.1 8段LED显示器接口及程序设计 1.2 米字LED段显示器接口及程序设计 1.3 LED点阵显示器接口及程序设计,返回本章首页,1.1 8段LED显示器接口,LED 8段显示器结构与原理: LED8段显示块是由发光二极管显示字段的显示器件在微机应用系统中通常使用的是七段LED。这种显示块有共阴极与共阳极两种
9、,如图1所示。七段显示块与微机接口非常容易。如表1所示。,1.1 8段LED显示器接口,LED显示器结构与原理,LED显示块是由发光二极管显示字段的显示器件。,(a)管脚配置 (b)共阴极 (c)共阳极 图1 七段LED显示块,e,LED显示器的结构与原理,结构种类 常用的LED发光器件有两类:段显示(数码管)和点阵显示。八段LED显示器(数码管)系发光器件的一种; 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。可用来显示09、A、B、C、D、E、F及小数点“.”等字符。 常见数码管有10根管脚。其中COM为公共端;,数码管,LED显示器的结构与原理,结构
10、种类 根据内部发光二极管的接线形式可分为共阴极(各二极管的阴极连接在一起)和共阳极(各二极管的阳极连接在一起)两种。 使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需510mA的驱动电流才能正常发光。,(b)共阴极; (c)共阳极,(a)管脚排列,八段LED显示器,八段显示器的原理,共阴结构,共阳结构,共阴极LED显示器的发光二极管的公共阴极接地,而阳极通过限流电阻接到驱动芯片的输出口线上,当某个驱动口线为高电平时,该发光二极管有电流通过而发光,相应的段被显示。,LED显示器的结构与原理,共阳极LED显示器的发光二极管的公共阳极接高电平,而阴极通过限流电阻接到驱动芯片
11、的输出口线上,当某个驱动口线为低电平时,该发光二极管有电流通过而发光,相应的段被显示。,数码管段码的编码: 8段正好是一个字节,通常采用如下编码方式。(这种编码需单片机数据总线的D0D7分别和数码管的a、b、c、dp对应相连。如图所示),最高位,最低位,根据LED显示器的结构原理可知,通过给每段提供不同的数据,LED显示器就能显示出不同形状的字符,因此,我们把数据线上的数据称为“字形码”或“字段码”。 不同的字符有不同的字形码,而且还与LED显示器是共阴极或是共阳极接法密切相关。,字形码数据格式,LED显示器的结构与原理,表1 七段LED的段选码,LED显示器的字形(段)码表,8段LED显示器
12、的结构与原理,共阳极和共阴极的字段码互为反码。,数码管的显示代码表,;共阳极7段数码管驱动段码表 pgfedcba C0H 11000000B ;0 F9H 11111001B ;1 A4H 10100100B ;2 B0H 10110000B ;3 99H 10011001B ;4 92H 10010010B ;5 82H 10000010B ;6 F8H 11111000B ;7 80H 10000000B ;8 90H 10010000B ;9,;共阴极7段数码管驱动段码表 ; pgfedcba 3FH DB 00111111B ;0 06H DB 00000110B ;1 5BH DB
13、 01011011B ;2 4FH DB 01001111B ;3 66H DB 01100110B ;4 6DH DB 01101101B ;5 7DH DB 01111101B ;6 07H DB 00000111B ;7 7FH DB 01111111B ;8 6FH DB 01101111B ;9,CPU和数码管的连接,共阴数码管,共阳数码管,三极管放大驱动电路,非门驱动电路,1.1 LED显示器接口,LED显示器与显示方式,在微机应用系统中使用LED显示块构成N位LED显示器。图2是N位显示器的构成原理。,LED显示器有两种方式: (1)LED静态显示方式(如图3所示) (2)LED
14、动态显示方式(如图4所示),图2 N位LED显示器,1.1 LED显示器接口,“米”字型数码管结构与引脚图,LED显示器的结构与原理,“米”字型数码管,“米”字型LED显示器也有共阴和共阳极两种。“COM”是公共端,对于共阴极型它是负极,对于共阳极型它是正极。,“米”字型LED显示器由15个LED字段组成,所以其字型码为两个字节。字型码与连接方式有关,只有确定了数码管的电路连接图,才能根据电路连接关系确定CPU输出的字形码。,LED显示器的结构与原理,“米”字型数码管,“米”字形数码管字形码,1.软件查表法 采用软件查表方式时,需要在程序中安排一张显示字符段码表。段码表应根据硬件电路中使用的数
15、码管的极性和显示字符的需要而设定。,LED数码管译码方法,LED显示器译码方法,2. 硬件译码法 硬件译码是用译码器把要显示的字符转换成显示代码。已有专用芯片,可把4位二进制数转换成对应的显示代码。例如Motorola公司生产的MC14495就是一种CMOS型七段十六进制-BCD码锁存译码驱动器。还有MC14493、MC14499、74LS47/48/49,国产的4线七段译码驱动器74HC4511等。使用时请参阅有关器件手册。,LED数码管的译码:硬件译码与软件译码,硬件译码特点:采用专用的译码/驱动器件,驱动功率较大;增加了硬件的开销;软件编程简单;字型固定,74LS48/CD4511是“B
16、CD码七段共阴译码/驱动”IC; 74LS47是“BCD码七段共阳译码/驱动”IC,硬件译码,软件译码特点: 不用专用的译码/驱动器件,驱动功率较小;不增加硬件的开销;软件编程较复杂;字型灵活。,软件译码,LED数码管的软件译码,八段LED数码管段代码编码表(连线不同可有多种表):,设:h g f e d c b a D7D6D5D4D3D2D1D0,LED显示驱动技术,LED的驱动问题其实是一个非常重要的问题,如果驱动器驱动能力差,显示亮度就降低。而且动态和静态显示方式对驱动电路要求是不一样的。 如果是静态显示,不需要考虑LED驱动,一般情况下只要将单片机I/O口与数码管的段代码连接,如图1
17、0-6所示(请确认)电路即可。 但是动态显示就需要考虑LED驱动,因为动态显示是由段和位选信号共同配合完成的,因此必须同时考虑段和位的驱动能力,并且段的驱动能力决定位的驱动能力。常用的驱动电路有两种,采用集成电路芯片如SN7407或采用简单的三极管放大电路,静态显示技术 静态显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。 优点:LED亮度高,可用在室外显示场合。,动态显示技术 动态显示是多只数码管共享段码线,通过位选线逐位逐位进行扫描显示。其优点是占用硬件资源少,功耗小。 必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则
18、会出现闪烁或跳动现象。,静态显示电路,图10-6 四位静态显示电路,静态显示 显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出去后,数码管始终显示该数据,CPU不再控制LED。到下一次显示时,再传送一次新的显示数据。 静态显示的接口电路采用一个并行口接一个数码管,数码管的公共端按共阴极或共阳极分别接地或接VCC; 这种接法,每个数码管都要单独占用一个并行I/O口,以便单片机传送字形码到数码管控制数码管的显示; 优点是显示的数据稳定,无闪烁,占用CPU时间少。其缺点是由于数码管始终发光,功耗比较大;,LED显示器驱动方式,共阴极,每个显示器由一个4线7段译码驱动器4511驱动。4511输
19、出口线与LED输入口线之间接有限流电阻。4511的输入端接8051的数据总线。 8051一次送出两个字符的编码,一个在P0.0P0.3,另一个在P0.4P0.7。直接以存储器写的方式写入到4511中。 4511的选通与数据输入锁存电路由S1、S2两个信号决定。两个显示器只需要两次写操作就可以完成数据传送、锁存与显示。,静态显示,LED数码管静态显示电路,1) 静态显示器接口,静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。就是在同一时刻只显示1种字符,或者说被显示的字符在同一时刻是稳定不变的。,这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)
20、。每个数码管的8个字段分别与一个8位I/O接口相连,I/O端口只要有字形代码输出,相应字符即显示出来,并保持不变,直到I/O端口输出新的字形代码。,采用静态显示方式,虽然具有较高的显示亮度,占用CPU时间少,编程简单等优点,但其占用的端口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。,例1:图 3是数码管静态显示方式的一种典型应用,用两片74LS273驱动2位静态LED显示器(共阴极数码管)。P2.7=0时选通1#显示器,其地址为7FFFH; P2.6=0时选通2#显示器,其地址为BFFFH。用下列程序可在显示器上显示字符“1”和“2”:,1.1 LED显示器接口,图3 2位静态LE
21、D显示器,MOV DPTR,#7FFFH MOV A,#06H ; “1”的字形代码 MOVX DPTR,A MOV DPTR,#0BFFFH MOV A,#5BH ; “2”的字形代码 MOVX DPTR,A,1.1 LED显示器接口,动态显示电路,四位动态显示的电路,为了克服静态显示方式的缺点,节省I/O口线,常常使用动态显示方式。 动态扫描方法是用其接口电路把所有数码管的8个笔划段ag和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。,动态显示,LED动态显示方式,CPU向字段输出口送出字形码时,所有数码管接收到相同的字形码。哪个数码管亮,则取决于COM端,CO
22、M端与单片机的I/O口相连,由单片机输出位码到I/O控制何时哪一位数码管亮。,LED显示器驱动方式,动态扫描用分时的方法轮流控制各个数码管的COM端,使各个数码管轮流点亮。 在需要多个字符同时显示时,可以轮流给每一个字符通以电流,逐次把所需显示的字符显示出来。在每点亮一个显示器之后,必须持续通电一段时间,使之发光稳定,然后再点亮另一个显示器,如此巡回扫描所有的显示器。由于巡回显示速度较快,每秒可重复多次(为了不产生闪烁,可每秒扫描24次左右)。虽然在同一时刻只有一个显示器通电,但是由于人眼的视觉暂留作用和发光二极管的余辉效应,看起来每个显示器都在稳定地显示。,动态显示,LED显示器驱动方式,这
23、种巡回扫描显示器的操作要靠程序控制,CPU始终要介入显示扫描。动态显示的亮度随电流平均值的增大而增强,亮度大体上等同于通过同样大的稳定电流的静态显示器的亮度。,动态显示,优点:当显示位数较多时,采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单。 缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。,动态显示方式虽然使用器件较少,但是CPU效率低,编程麻烦,软件调试工作量大,使总体工作效率下降。因此,这种动态显示方式只在CPU工作任务简单的情况下被使用。,LED显示器驱动方式,图5中,数码管采用共阴极LED,字形码输出口74LS273经过8路同相
24、驱动电路7407后接至数码管的各段,当位线输出“1”时,驱动数码管发光。7407是集电极开路的同相驱动器,能为发光段提供更大的导通电流,增强LED的发光亮度,其输出端经110 的限流电阻接至+5 V电源,改变电阻的大小即可调节发光亮度。用另一个输出口74LS273作为LED的位选控制口,其输出经过6路反相驱动器75452后接至数码管的COM端。当位选控制口的某位输出“1”时,75452反相器驱动相应的LED位发光。,2)动态显示接口,字形码输出口和位选控制口的地址分别为:,字形码输出口地址:DFFFH(地址不是惟一的); 位选控制口的地址:EFFFH(地址不是惟一的)。,在单片机应用系统中,为
25、了便于对LED 显示器进行管理,需要建立一个显示缓冲区。显示缓冲区DISBUF是片内RAM的一个区域,它的作用是存放要显示的字符,其长度与LED的位数相同。,3)动态扫描程序,图5 中的动态显示器,DISBUF为6个字节,设DISBUF占用片内RAM的70H75H单元。显示缓冲区DISBUF中的内容是由其他处理程序事先存入DISBUF中的,再由显示程序进行显示。,设要显示“P89C51,则“P89C51”在DISBUF中的存放形式见表6.3所示。数码显示器的低位(最右边的位)显示的是显示缓冲区中的低地址单元中的数,因此在显示缓冲区中存放的次序为低地址单元存低位,高地址单元存高位。,表6.3 显
26、示缓冲区,3)动态扫描程序,要说明的是,显示程序是利用查表方法来得到要显示字符的字形代码的。在显示程序的字形代码(显示段码)表中, 字形代码存放的次序依次为“09”,“AF”,“空白”和“P”。其中,“P”的序号为18(即11H),故在DISBUF中的75H单元用11H代表“P”。,3)动态扫描程序,显示程序的任务是把显示缓冲区中待显示的字符送往LED显示器显示。在进行动态扫描显示时, 从DISBUF中依次取出待显示的字符,采用查表的方法得到其对应的字形代码,逐个地循环点亮各位数码管,每位显示1 ms左右,即可使各位数码管显示要显示的字符。,设DISBUF中的信息为“P89C51”,可由下列程
27、序在显示器上显示“P89C51”:,3)动态扫描程序,LOOP1: LCALL DISPLAY ;调用显示子程序 LJMP LOOP1 ; 循环 DISPLAY: MOV R0,#70H ;R0指向DISBUF首 ;地址 MOV R3,#01H ; 右起第1个LED ;的选择字 NEXT: MOV A,#00H ; 取位选控制字为全灭 MOV DPTR,#0EFFFH ;取位选控制口 ;地址 MOVX DPTR,A ; 瞬时关显示器 MOV A,R0 ;从DISBUF中取出字符,MOV DPTR,#DSEG ;取段码表首地址 MOVC A,A+DPTR ;查表,取对应的字形码 MOV DPTR
28、,#0DFFFH ;取字形码输出口地址 MOVX DPTR,A ;输出字形码 MOV DPTR,#0EFFFH ;取位选控制口地址 MOV A,R3 ;取当前位选控制字 MOVX DPTR,A ; 点亮当前LED显示位,3)动态扫描程序,LCALL DELAY ;延时1 ms INC R0 ;R0指向下一个字符 JB ACC.5,EXIT ;若当前显示位是第6位则 ;结束 RL A ; 下一个LED的选择字 MOV R3,A SJMP NEXT,EXIT: RET ;返回段码表 09,AF,空白, DSEG: DB 3FH,06H,5BH,4FH,66H, 6DH,7DH, DB 07H,7F
29、H6FH,77H,7CH, 39H,5EH, DB 79H,71H,00H,73H DELAY:MOV R7,#02H ; 延时1 ms的子程序 DEL1: MOV R6,#0FFH DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET,例2针对图5所示的电路,编一显示程序, 调用动态扫描显示子程序DISPLAY,使数码显示器显示“012345”共6个字符。,解: 参考程序如下: MOV A, 05H ; 取最右边1位字符 MOV R0,70H ; 指向DISBUF首址(最低位) MOV R1,06H ; 共送入6个字符 LOP2: MOV R0,A ; 将字符送入DISBU
30、F INC R0 ; 指向下一显示单元 DEC A ; 下一个显示字符 DJNZ R1,LOP2 ; 若6个数未送完,则重复 LOP3:LCALL DISPLAY; 扫描显示一遍 SJMP LOP3 ; 重复扫描,1.1 LED显示器接口,3LED显示器接口实例,从LED显示器的原理可知,为了显示字母与数字,必须最终转换成相应的段选码。这种转换可以通过硬件译码器或软件进行译码。,硬件译码器LED显示器接口(如图6所示) 软件译码LED显示器接口(如图7 、8所示),图4 八位LED动态显示器电路,1.1 LED显示器接口,动态显示接口,动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器
31、的方式称为动态扫描。,通常,各位数码管的段选线相应并联在一起,由一个8位的I/O端口控制;各位LED显示器的位选线(COM端)由另外的I/O端口控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用动态扫描方式,即在某一时刻只选通一位数码管,并送出相应的字形代码,在另一时刻选通另一位数码管,并送出相应的字形代码。依此规律循环,逐个循环点亮各位数码管,每位显示1 ms左右,即可使各位数码管显示要显示的字符。虽然这些字符是在不同的时刻分别显示的,但由于人眼存在视觉暂留效应,可以给人以同时显示的感觉。,1.1 LED显示器接口,采用动态显示方式节省I/O端口,硬件电路也较静态显示方式简
32、单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,仍占用CPU较多的时间。 用51系列单片机构建数码管动态显示系统时,采用简单的接口芯片即可进行系统扩展,其特点是接口电路简单,编程方便,价格低廉。6位动态LED显示器如图5所示。,2)动态显示接口,图5 6位动态LED显示器,LED数码管动态显示举例,工作原理:从P0口送段代码,P1口送位选信号。段码虽同时到达 6个LED,但一次仅一个LED被选中。利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个循环扫描即可。,要求:此处为共阳数码管,P0口送段代码,P1口送位选信号。 实现动态显示。 条件:待显数据
33、存放在数组seg0 seg5 数字09的段代码已放在:BUF0 BUF9中。,# include void display( ) unsigned char code BUF10= 0xc0,0xf9,0xa4,0xb0,ox99,0x92,0x82,0x80,0x90,0x88,0x83; unsigned char seg 6 ; void display( ) unsigned char i , j, temp; temp =0x01; for( i=0; i6; i+) P1 = temp; P0 = BUF seg i ; for( j=0; j50; j+) _nop_( ); t
34、emp=temp*2; ,显示1、2、3、4,首先扫描,最后扫描,数码显示接口编程实例1,显示过程:定时器T0每1ms 产生一次中断,在中断服务程序中更换一次显示位,4位一个扫描周期,扫描时间为4 ms。 除了定时中断扫描显示外,也可以程序控制扫描显示,但采用定时中断扫描显示的扫描周期固定,特别是当单片机的工作任务重时,定时中断扫描显示是一种很好的方式。,数码显示接口编程实例1,程序清单: ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 MAIN: MOV TMOD,#01H ;T0定时1ms中断初始化 MOV TL0,#18H MOV TH0,#0FCH M
35、OV IE,#82H SETB TR0 AGAIN:MOV R0,#30H ;显示缓冲区首地址 MOV R2,#01H ;显示位控制字 NEXT: MOV A,R2 JB ACC.3,AGAIN ;4位扫描完又重复 SJMP NEXT ;4位未完等待显示下一位,数码显示接口编程实例1,INTT0: MOV TL0,#18H ;重为定时器赋初值 MOV TH0,#0FCH MOV P1,#0FFH ;关所有显示 MOV A,R0 ;取显示数字 MOV DPTR,#SEG MOVC A,A+DPTR ;查字段码表的段选码 MOV P2,A ;输出段选码 MOV A,R2 MOV P1,A ;输出位
36、控制字 RL A ;为显示下一位做准备 MOV R2,A INC R0 RETI SEG: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END,数码显示接口编程实例1,数码显示接口编程实例2,程序清单: ORG 0030H MOV SP,#60h MOV R0,#00h DISP0:MOV DPTR,#SEGTAB ;字段码首地址 DISP1: MOV A,R0 ;从0开始显示 DISP3:MOVC A,A+DPTR ;查字符段选码 MOV P2,A ;从P2口输出显示 MOV R3,#100 ;停留 1s DISP4:ACALL D10MS D
37、JNZ R3,DISP4 INC R0 CJNE R0,#0ah,DISP1 AJMP DISP1 ;又从0开始显示,数码显示接口编程实例2,D10MS:MOV R7,#14H ;10ms延时子程序 DLY: MOV R6,#0F8H DLY1: DJNZ R6,DLY1 DJNZ R7,DLY RET SEGTAB : ;段码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6FH ;56789 DB 77H,7cH,39H,5eH, 79H ;abcde DB 71h, 73h,3Eh,6Eh,0ffh,00h ;fpuy 8.灭 END
38、,可根据需要造一些特殊的编码,数码显示接口编程实例2,键盘/显示器专用接口芯片8279,8279与8051间的联络是通过中断方式实现的。当8字节的FIFO键值缓冲器中被送入有效按键键值时,其中断请求线IRQ变为有效高电平,8051读数后变为无效低电平,但是如果FIFO中还有有效按下的键值,则再次变为有效高电平,直至FIFO中的全部有效键值被读出为止。 当把8279的工作方式设置为传感器方式时,它也可以用于开关量输入的目的。每个键位处对应一个被检测的开关或开关性逻辑元件; 键盘去抖动及双键封锁N键巡回逻辑被禁止; 返回线上的开关状态直接输入到FIFO/传感器RAM中对应于扫描线编码值相应行的存贮
39、单元内。,LED显示器驱动方式,键盘/显示器专用接口芯片8279,在具体的系统电路比如仪器电路设计中,往往将键盘和数码管显示电路综合考虑进行设计。,键盘与显示专用芯片8279,LED显示器驱动方式,键盘/显示器专用接口芯片8279,8279引脚图,8279的主要功能,(1)键盘与显示器能同时工作; (2)扫描式键盘工作方式; (3)扫描式传感器工作方式; (4)用选通方式送入输入信号; (5)带有8字符的键盘先入先出存储器(FIFO); (6)触点回弹时两键封锁或N键巡回; (7)双排8字或单个16字的数字显示器; (8)可右入或左入的16字节显示器RAM; (9)工作方式可由CPU编程; (
40、10)可编程扫描定时、键盘送入时有中断输出。,键盘/显示器专用接口芯片8279,8279的扫描输出线按编码方式使用。其SL0SL2经过74HC138译码,其输出的8根选通线的Y0Y5作为键盘矩阵的列扫描线,而8279的8根返回线RL0RL7用作键盘的8根检测线。 可以实现68 = 48 键的键盘输入功能。在这种接口逻辑下,8279的命令/状态口的地址为DFFFH,其数据寄存器口地址为DFFEH。,键盘/显示器专用接口芯片8279,(1)工作方式设置命令控制字,格式: 000 D1D0K2K1K0 000: 该命令控制字的标志符 D1D0: 显示方式控制位 K2K1K0 键盘方式控制位,LED显
41、示器驱动方式,键盘/显示器专用接口芯片8279,(2)内部时钟设置命令控制字,格式: 001 P4P3P2P1P0 001: 改命令控制字的标志符 P4P3P2P1P0: CLK引脚输入脉冲的分频数,取值2-31。对于不同的CLK输入脉冲频率,适当选择设置P4P3P2P1P0的值,以便得到扫描和去抖动所需的100KHz的定时信号。对于上述硬件逻辑,CLK为2MHz,可设置P4P3P2P1P0=10100B=20D,使8279得到内部定时信号的频率为100KHz。,LED显示器驱动方式,键盘/显示器专用接口芯片8279,(3)读取键值命令控制字,格式: 010 AIA2A1A0 010: 该命令
42、控制字的标志符 AI: 自动增1控制,用于传感器方式 A2A1A0: 传感器缓冲器行地址。在键盘扫描方式下,设置本命令控制字之后,对8279数据口的读操作,可以得到当前的键值。,LED显示器驱动方式,键盘/显示器专用接口芯片8279,8279芯片内部具有对键盘扫描的“去抖动”功能和识别功能,使用100KHz的内部定时频率时,其去抖动时间为10.3ms,在相距10.3ms的两次扫描中均检测到的按键,被确认为有效按下的键; 对有效按下的键的识别算法是:,只有一个有效按下的键,则将其相应的键值送入FIFO键值缓冲存贮器,供CPU读取; 如果有两个或两个以上的有效按下的键,则按两种不同的策略来识别:两
43、键封锁策略,只识别最先按下最后被释放的一个键,或者同时按下最后释放的一个键,将其键值送入FIFO键值缓冲器;N键巡回策略,将N个有效按下的键的键值,按发现的顺序依次送入FIFO键值缓冲器。,LED显示器驱动方式,键盘/显示器专用接口芯片8279,写入的方式命令控制字为:000XX100,它表示是编码扫描传感器矩阵方式; 读FIFO/传感器RAM命令控制字为:010AIA2A1A0。其中的AI, A2A1A0字段可根据需要而设定。,如果想只读特定行的传感器/开关的状态,则可置AI=0,A2A1A0置为相应行的编码值; 如欲连续读取各行的状态,可以设AI=1,A2A1A0=000,使连续8次依次读
44、出从0行到7行的状态,这时每读一次,行计数自动加1,而无需每次都指定A2A1A0的值。,LED显示器驱动方式,利用硬件译码器的七段LED接口电路,通过8155扩展I/O口控制的8位LED动态显示接口,动态显示子程序流程图,返回本节,某实际数码管连接图,P0.0,+5V,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,位驱动,段驱动,六位共阳极数码管模块 相同的段驱动端都并联在一起。,在第一位上显示5,P0.0,+5V,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P2.7,P2.6,P2.
45、5,P2.4,P2.3,P2.2,位驱动P2.7输出0 段驱动P0口输出“5”的段码“10010010B”,0,1,1,1,1,1,0,1,0,0,1,0,0,1,编程练习画流程图,要求:在第一位显示连续变化的09,间隔时间自定。,开始,(R0)=0,Y,(A)=(R0),查段码表, 取得段驱动码,段驱动码送P0口,P2.7=0,延时,(R0)+1,(R0)=10?,(R0)=0,N,在keil中编程,生产HEX文件。,在proteus中观察运行结果。,LED点阵模块显示器 LED点阵模块显示器是指由发光二极管排成一个mn的点阵,每个发光二极管构成点阵中的一个点。这种显示器显示的字形逼真,能显
46、示的字符比较多,但控制比较复杂。适用于显示汉字、图形和表格,广泛应用于公共场合的信息发布。,8*8点阵屏的内部电路原理图,共阴极 共阳极,8*8点阵屏的实物图,单元电路图portel,驱动电路,驱动系统框图,行驱动电路实例,系统主程序和显示驱动程序框图,显示驱动程序,- 多个16*16LED显示演示程序 MCU AT89C51 XAL 24MHz - /以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移/ #include “reg52.h“ #define BLKN 8 /列锁存器数(=LED显示字数*2) #define TOTAL 20 /待显示
47、字个数,本例共20个 #define CONIO P1 /显示控制口 sbit G=CONIO7; /CONIO.7为154译码器显示允许控制信号端口,0时输出,1时输出全为高阻态. sbit CLK=CONIO6; /CONIO.6为595输出锁存器时钟信号端,1时输出数据,从1到0时锁存输出数据. sbit SCLR=CONIO5; /CONIO.5为595移位寄存器清零口,平时为1,为0时,输出全为0. unsigned char idata dispram(BLKN/2)*32=0; /显示区缓存,四字共4*32单元 / /*显示屏扫描(定时器T0中断)函数*/ void leddisplay(void) interrupt 1 using 1 register unsigned char m, n=BLKN; TH0 = 0xFc; /设定显示屏刷新率每秒62.5帧(16毫秒每帧) TL0 = 0x18; m = CONIO; /读取当前显示的行号 m = +m /打开显示 /,主程序,/*主函数 *
链接地址:https://www.31doc.com/p-2984934.html