齐鲁医学人机界面接口及程序设计_第1页
齐鲁医学人机界面接口及程序设计_第2页
齐鲁医学人机界面接口及程序设计_第3页
齐鲁医学人机界面接口及程序设计_第4页
齐鲁医学人机界面接口及程序设计_第5页
已阅读5页,还剩323页未读 继续免费阅读

下载本文档

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

文档简介

1、人机界面及程序设计主讲教师:傅林电子工程系E-mail:705289580主要内容基本知识LED显示器接口及程序设计LCD显示器接口及程序设键盘接口及程序设计1.基本知识:人机界面含义人机界面,也叫人机接口,是人和计算机进行交互的接口,具有信息输入/输出的功能;有广义和狭义之分狭义的人机界面指供系统使用者控制输入、观察结果的接口广义人机界面是指凡是人能够进行输入控制、观看到输出结果或效果的输入输出接口,比如球场的记分牌,不仅是给操作者看的;外控LED显示护栏灯,也不只是操作者一人才能够控制的。实际系统中必不可少的组成:人机界面人机界面是系统必不可少的组成部分1.基本知识:LED显示器实物LED

2、实物LED参数LED参数发光二极管的驱动发光二极管正常发光时,电流约为510mA,压降1V左右。限流电阻R=(5V-1V)/8mA=500 P1.0+5V500引脚输出低电平时,发光二极管导通。LED应用领域LED应用实例LED应用实例显示器应用实例效果显示器应用实例效果数码显示器常识在一些只需要简单显示的仪器中,常用数码管显示信息;类型:发光二极管显示器,简称LED(Light Emitting Diode);液晶显示器,简称LCD(Liquid Crystal Display);荧光管显示器。LED、LCD有两种显示结构;段显示(8段,“米”字型等)和点阵显示(5X7,5X8,8X8点阵等

3、)。LED示又分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。三种显示器中,以荧光管显示器亮度最高,发光二极管次之,而液晶显示器最弱;液晶显示器有带背光和不带背光之分,带背光的液晶显示器既可以在有外部光源处使用,也可以在黑暗中使用;不带背光的液晶显示器只能靠外部光源才能看清。一般地,发红光的LED每段流过5mA的平均电流,亮度就可以了,7mA电流会更亮些,10mA以上也不会再亮多少,但长期运行于10mA以上会缩短其寿命。最大电流平均值不得超过30mA;在应用中,通常设置为510mA。在动态扫描显示情况下,瞬时电流较大,但平均电流不要超过10mA;LED显示器允许的反向电压

4、最大值为5V,此时的反向电流一般小于10A;小尺寸的LED显示器每段只有一个发光二极管,其正向压降约为1.5V,一般最大不大于2V。大尺寸的LED显示器每段可能由数个发光二极管串联,每段压降也相应的要增大。 LED显示器的结构与原理LED数码显示器LED轮廓数码管、护栏管:采用超高亮度的RGB(红绿蓝)三色LED作为发光源,在PCB电路板上按红绿蓝顺序呈直线形排列,以专用驱动芯片控制,构成变化无穷的色彩和图形。外壳采用阻燃PC塑料制作,强度高、抗冲击、抗老化、防紫外线,防尘、防潮,防护等级达IP65。利用光学原理设计,透光合理,可视角度大。例如凯鸿越公司的LED护栏管具有功耗小,无热量、耐冲击

5、,长寿命等优点。LED护栏管内置微电脑控制程序或者外接控制器,即可实现流水、渐变、跳变、追逐等多种色彩斑斓的动态效果。LED护栏管在大型灯饰工程应用中,连接电脑同步控制系统,更可显示播放文字、图案、动画、视频及各种灯光效果,体现了现代光电技术、计算机技术与灯光艺术的完美结合。LED护栏管广泛应用于桥梁、建筑物、道路、河堤、风景区、娱乐场所、广告招牌装饰等多种场合。 LED数码显示器LED数码管特点 1、杜绝缺笔少画,发光不均,采用固体光源,不含汞; 2、解决了漏电,防损防潮,防崩灯超硬度PCB组成超长寿命; 3、改变传统灌胶模式,可拆装返修LED数码管; 4、高亮发光,超低功耗,低电压(1.9

6、V-2.1V)灯珠; 5、PCB与外壳无间隙,相扣牢固,外型美观,提升产品档次。应用 通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数。 价格便宜 使用简单 在电器 特别是家电领域应用极为广泛,空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。LED点阵模块 LED点阵模块概述 LED点阵模块指的是利用封装8*8的模块组合点元板形成模块,而LED模组应用中一般指两类产品:一种是用插灯或表贴封装做成的单元板,常用户外门头单红屏、户外全彩屏,室内全彩屏等;另外,用做夜间装饰的发光字串也被称为LED模组。L

7、ED点阵指用封装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。这种显示块有共阴极与共阳极两种,如图1所示。七段显示块与微机接口非常容易。如表1所示。 1.1

9、8段LED显示器接口LED显示器结构与原理LED显示块是由发光二极管显示字段的显示器件。 (a)管脚配置 (b)共阴极(c)共阳极 图1 七段LED显示块 eLED显示器的结构与原理结构种类常用的LED发光器件有两类:段显示(数码管)和点阵显示。八段LED显示器(数码管)系发光器件的一种;数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。可用来显示09、A、B、C、D、E、F及小数点“.”等字符。常见数码管有10根管脚。其中COM为公共端;数码管LED显示器的结构与原理结构种类根据内部发光二极管的接线形式可分为共阴极(各二极管的阴极连接在一起)和共阳极(各二极

10、管的阳极连接在一起)两种。使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需510mA的驱动电流才能正常发光。 (b)共阴极; (c)共阳极 (a)管脚排列八段LED显示器八段显示器的原理共阴结构共阳结构 共阴极LED显示器的发光二极管的公共阴极接地,而阳极通过限流电阻接到驱动芯片的输出口线上,当某个驱动口线为高电平时,该发光二极管有电流通过而发光,相应的段被显示。 LED显示器的结构与原理 共阳极LED显示器的发光二极管的公共阳极接高电平,而阴极通过限流电阻接到驱动芯片的输出口线上,当某个驱动口线为低电平时,该发光二极管有电流通过而发光,相应的段被显示。数码管段码的编

11、码: 8段正好是一个字节,通常采用如下编码方式。(这种编码需单片机数据总线的D0.D7分别和数码管的a、b、c、dp对应相连。如图所示)dpgfedcba最高位最低位根据LED显示器的结构原理可知,通过给每段提供不同的数据,LED显示器就能显示出不同形状的字符,因此,我们把数据线上的数据称为“字形码”或“字段码”。不同的字符有不同的字形码,而且还与LED显示器是共阴极或是共阳极接法密切相关。字形码数据格式LED显示器的结构与原理表1 七段LED的段选码 LED显示器的字形(段)码表显示字符字形码显示字符字形码共阴极共阳极共阴极共阳极03FHC0HA77H88H106HF9HB7CH83H25B

12、HA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H56DH92HF71H8EH67DH82H40HBFH707HF8HP73H8CH87FH80HP.F3H0CH96FH90H熄灭00HFFH8段LED显示器的结构与原理共阳极和共阴极的字段码互为反码。数码管的显示代码表;共阳极7段数码管驱动段码表 pgfedcbaC0H 11000000B;0 F9H 11111001B;1 A4H 10100100B;2 B0H 10110000B;3 99H 10011001B;4 92H 10010010B;5 82H 10000010B;6 F8H 11111000B;7

13、80H 10000000B;8 90H 10010000B;9;共阴极7段数码管驱动段码表; pgfedcba3FH DB 00111111B;006HDB 00000110B;15BHDB 01011011B;24FHDB 01001111B;366HDB 01100110B;46DHDB 01101101B;57DHDB 01111101B;607HDB 00000111B;77FHDB 01111111B;86FHDB 01101111B;9CPU和数码管的连接共阴数码管共阳数码管三极管放大驱动电路 非门驱动电路 1.1 LED显示器接口LED显示器与显示方式在微机应用系统中使用LED显

14、示块构成N位LED显示器。图2是N位显示器的构成原理。LED显示器有两种方式:(1)LED静态显示方式(如图3所示) (2)LED动态显示方式(如图4所示) 图2 N位LED显示器1.1 LED显示器接口“米”字型数码管结构与引脚图LED显示器的结构与原理“米”字型数码管 “米”字型LED显示器也有共阴和共阳极两种。“COM”是公共端,对于共阴极型它是负极,对于共阳极型它是正极。 “米”字型LED显示器由15个LED字段组成,所以其字型码为两个字节。字型码与连接方式有关,只有确定了数码管的电路连接图,才能根据电路连接关系确定CPU输出的字形码。LED显示器的结构与原理“米”字型数码管字符共阴极

15、共阳极字符共阴极共阳极字符共阴极共阳极0003FHFFC0HB128FHED70HP00F3HFF0CH10006HFFEDHC0039HFFC6HQ203FHDFC0H200DBHFFF9HD120FHEDF0HR20F3HDF0CH300CFHFF24HE0079HFF86HS2109HDEF6H400E6HFFl9HF0071HFF8EHT1201HEDFEH500EDHFFl2HG00BDHFF42HU003EHFFC1H600FDHFF01HH00F6HFF09HV0C30HF2CFH70007HFFF8HI1209HFDF6HW2836HD7C9H800FFHFF00HJ0C01H

16、F3FEHX2D00HD2FFH900EFHFFl0HK3600HC9FFHY1500HEAFFH“米”字形数码管字形码1.软件查表法 采用软件查表方式时,需要在程序中安排一张显示字符段码表。段码表应根据硬件电路中使用的数码管的极性和显示字符的需要而设定。LED数码管译码方法LED显示器译码方法 2. 硬件译码法 硬件译码是用译码器把要显示的字符转换成显示代码。已有专用芯片,可把4位二进制数转换成对应的显示代码。例如Motorola公司生产的MC14495就是一种CMOS型七段十六进制-BCD码锁存译码驱动器。还有MC14493、MC14499、74LS47/48/49,国产的4线七段译码驱动

17、器74HC4511等。使用时请参阅有关器件手册。 LED数码管的译码:硬件译码与软件译码硬件译码特点:采用专用的译码/驱动器件,驱动功率较大;增加了硬件的开销;软件编程简单;字型固定共阴LEDabcdgefhgfedcb aDCBAP1.3P1.2P1.1P1.0CD4511AT89C5174LS48/CD4511是“BCD码七段共阴译码/驱动”IC; 74LS47是“BCD码七段共阳译码/驱动”IC硬件译码软件译码特点: 不用专用的译码/驱动器件,驱动功率较小;不增加硬件的开销;软件编程较复杂;字型灵活。共阳LEDabcdgefhP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.

18、7+5V80C52软件译码LED数码管的软件译码八段LED数码管段代码编码表(连线不同可有多种表):公共阳极h g f e d c b aabcdgefh公共阴极h g f e d c b aabcdgefhh g f ah g f a高电平点亮低电平点亮接高电平接地字形0123456789灭共阳0C00F90A40B09992820F880900FF共阴3F065B4F666D7D077F6F00设:h g f e d c b a D7D6D5D4D3D2D1D0LED显示驱动技术LED的驱动问题其实是一个非常重要的问题,如果驱动器驱动能力差,显示亮度就降低。而且动态和静态显示方式对驱动电路

19、要求是不一样的。如果是静态显示,不需要考虑LED驱动,一般情况下只要将单片机I/O口与数码管的段代码连接,如图10-6所示(请确认)电路即可。但是动态显示就需要考虑LED驱动,因为动态显示是由段和位选信号共同配合完成的,因此必须同时考虑段和位的驱动能力,并且段的驱动能力决定位的驱动能力。常用的驱动电路有两种,采用集成电路芯片如SN7407或采用简单的三极管放大电路静态显示技术 静态显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。 优点:LED亮度高,可用在室外显示场合。 动态显示技术 动态显示是多只数码管共享段码线,通过位选线逐位逐位进行扫描

20、显示。其优点是占用硬件资源少,功耗小。 必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。静态显示电路图10-6四位静态显示电路静态显示 显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出去后,数码管始终显示该数据,CPU不再控制LED。到下一次显示时,再传送一次新的显示数据。静态显示的接口电路采用一个并行口接一个数码管,数码管的公共端按共阴极或共阳极分别接地或接VCC;这种接法,每个数码管都要单独占用一个并行I/O口,以便单片机传送字形码到数码管控制数码管的显示;优点是显示的数据稳定,无闪烁,占用CPU时间少。其缺点是由于数码管始终发光,功耗比较

21、大;LED显示器驱动方式共阴极每个显示器由一个4线7段译码驱动器4511驱动。4511输出口线与LED输入口线之间接有限流电阻。4511的输入端接8051的数据总线。8051一次送出两个字符的编码,一个在P0.0P0.3,另一个在P0.4P0.7。直接以存储器写的方式写入到4511中。4511的选通与数据输入锁存电路由S1、S2两个信号决定。两个显示器只需要两次写操作就可以完成数据传送、锁存与显示。 静态显示LED数码管静态显示电路 1) 静态显示器接口静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。就是在同一时刻只显示1种字符,或者说被显示的字符在同一时刻是稳定不变的。

22、这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O接口相连,I/O端口只要有字形代码输出,相应字符即显示出来,并保持不变,直到I/O端口输出新的字形代码。采用静态显示方式,虽然具有较高的显示亮度,占用CPU时间少,编程简单等优点,但其占用的端口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。 502021/9/30例1:图 3是数码管静态显示方式的一种典型应用,用两片74LS273驱动2位静态LED显示器(共阴极数码管)。P2.7=0时选通1#显示器,其地址为7FFFH; P2.6=0时选通2#显示器,其地址为BFF

23、FH。用下列程序可在显示器上显示字符“1”和“2”:1.1 LED显示器接口512021/9/30图3 2位静态LED显示器 522021/9/30MOV DPTR,#7FFFH MOV A,#06H ; “1”的字形代码MOVX DPTR,AMOV DPTR,#0BFFFHMOV A,#5BH ; “2”的字形代码MOVX DPTR,A 1.1 LED显示器接口532021/9/30动态显示电路四位动态显示的电路542021/9/30为了克服静态显示方式的缺点,节省I/O口线,常常使用动态显示方式。动态扫描方法是用其接口电路把所有数码管的8个笔划段ag和dp同名端连在一起,而每一个数码管的公

24、共极COM各自独立地受I/O线控制。 动态显示LED动态显示方式CPU向字段输出口送出字形码时,所有数码管接收到相同的字形码。哪个数码管亮,则取决于COM端,COM端与单片机的I/O口相连,由单片机输出位码到I/O控制何时哪一位数码管亮。LED显示器驱动方式动态扫描用分时的方法轮流控制各个数码管的COM端,使各个数码管轮流点亮。在需要多个字符同时显示时,可以轮流给每一个字符通以电流,逐次把所需显示的字符显示出来。在每点亮一个显示器之后,必须持续通电一段时间,使之发光稳定,然后再点亮另一个显示器,如此巡回扫描所有的显示器。由于巡回显示速度较快,每秒可重复多次(为了不产生闪烁,可每秒扫描24次左右

25、)。虽然在同一时刻只有一个显示器通电,但是由于人眼的视觉暂留作用和发光二极管的余辉效应,看起来每个显示器都在稳定地显示。动态显示LED显示器驱动方式这种巡回扫描显示器的操作要靠程序控制,CPU始终要介入显示扫描。动态显示的亮度随电流平均值的增大而增强,亮度大体上等同于通过同样大的稳定电流的静态显示器的亮度。动态显示优点:当显示位数较多时,采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单。缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。动态显示方式虽然使用器件较少,但是CPU效率低,编程麻烦,软件调试工作量大,使总体工作效率下降。因此,这种动

26、态显示方式只在CPU工作任务简单的情况下被使用。LED显示器驱动方式图5中,数码管采用共阴极LED,字形码输出口74LS273经过8路同相驱动电路7407后接至数码管的各段,当位线输出“1”时,驱动数码管发光。7407是集电极开路的同相驱动器,能为发光段提供更大的导通电流,增强LED的发光亮度,其输出端经110 的限流电阻接至+5 V电源,改变电阻的大小即可调节发光亮度。用另一个输出口74LS273作为LED的位选控制口,其输出经过6路反相驱动器75452后接至数码管的COM端。当位选控制口的某位输出“1”时,75452反相器驱动相应的LED位发光。 2)动态显示接口字形码输出口和位选控制口的

27、地址分别为: 字形码输出口地址:DFFFH(地址不是惟一的); 位选控制口的地址:EFFFH(地址不是惟一的)。在单片机应用系统中,为了便于对LED 显示器进行管理,需要建立一个显示缓冲区。显示缓冲区DISBUF是片内RAM的一个区域,它的作用是存放要显示的字符,其长度与LED的位数相同。 3)动态扫描程序图5 中的动态显示器,DISBUF为6个字节,设DISBUF占用片内RAM的70H75H单元。显示缓冲区DISBUF中的内容是由其他处理程序事先存入DISBUF中的,再由显示程序进行显示。设要显示“P89C51,则“P89C51”在DISBUF中的存放形式见表6.3所示。数码显示器的低位(最

28、右边的位)显示的是显示缓冲区中的低地址单元中的数,因此在显示缓冲区中存放的次序为低地址单元存低位,高地址单元存高位。表6.3 显示缓冲区 3)动态扫描程序要说明的是,显示程序是利用查表方法来得到要显示字符的字形代码的。在显示程序的字形代码(显示段码)表中, 字形代码存放的次序依次为“09”,“AF”,“空白”和“P”。其中,“P”的序号为18(即11H),故在DISBUF中的75H单元用11H代表“P”。3)动态扫描程序显示程序的任务是把显示缓冲区中待显示的字符送往LED显示器显示。在进行动态扫描显示时, 从DISBUF中依次取出待显示的字符,采用查表的方法得到其对应的字形代码,逐个地循环点亮

29、各位数码管,每位显示1 ms左右,即可使各位数码管显示要显示的字符。 设DISBUF中的信息为“P89C51”,可由下列程序在显示器上显示“P89C51”:3)动态扫描程序LOOP1: LCALL DISPLAY ;调用显示子程序 LJMPLOOP1 ; 循环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

30、,#DSEG ;取段码表首地址MOVC A,A+DPTR;查表,取对应的字形码MOV DPTR,#0DFFFH;取字形码输出口地址MOVX DPTR,A;输出字形码MOV DPTR,#0EFFFH;取位选控制口地址MOV A,R3;取当前位选控制字MOVX DPTR,A; 点亮当前LED显示位3)动态扫描程序LCALL DELAY ;延时1 msINC R0 ;R0指向下一个字符JB ACC.5,EXIT ;若当前显示位是第6位则 ;结束RL A; 下一个LED的选择字MOV R3,ASJMP NEXTEXIT: RET ;返回段码表 09,AF,空白,DSEG: DB 3FH,06H,5BH

31、,4FH,66H, 6DH,7DH, DB 07H,7FH6FH,77H,7CH, 39H,5EH, DB 79H,71H,00H,73HDELAY:MOVR7,#02H; 延时1 ms的子程序DEL1: MOVR6,#0FFHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RET例2针对图5所示的电路,编一显示程序, 调用动态扫描显示子程序DISPLAY,使数码显示器显示“012345”共6个字符。解: 参考程序如下: MOV A, 05H ; 取最右边1位字符 MOV R0,70H ; 指向DISBUF首址(最低位) MOV R1,06H ; 共送入6个字符LOP2: MOV R

32、0,A ; 将字符送入DISBUF 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显示器接口动态显示接口动态显示是一位一位地轮流点亮各位数码管,

33、这种逐位点亮显示器的方式称为动态扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O端口控制;各位LED显示器的位选线(COM端)由另外的I/O端口控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用动态扫描方式,即在某一时刻只选通一位数码管,并送出相应的字形代码,在另一时刻选通另一位数码管,并送出相应的字形代码。依此规律循环,逐个循环点亮各位数码管,每位显示1 ms左右,即可使各位数码管显示要显示的字符。虽然这些字符是在不同的时刻分别显示的,但由于人眼存在视觉暂留效应,可以给人以同时显示的感觉。 1.1 LED显示器接口采用动态显示方式节省I/O端口,硬件电路也较

34、静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,仍占用CPU较多的时间。用51系列单片机构建数码管动态显示系统时,采用简单的接口芯片即可进行系统扩展,其特点是接口电路简单,编程方便,价格低廉。6位动态LED显示器如图5所示。 2)动态显示接口图5 6位动态LED显示器 LED数码管动态显示举例 工作原理:从P0口送段代码,P1口送位选信号。段码虽同时到达 6个LED,但一次仅一个LED被选中。利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个循环扫描即可。P1.5 P1.4P1.3P1.2P1.2P1.0P0.7 P0.6 P0.5 P

35、0.4 P0.3 P0.2 P0.1 P0.0P89C52共阳 数码管位选线段代码+5V要求:此处为共阳数码管,P0口送段代码,P1口送位选信号。 实现动态显示。条件:待显数据存放在数组seg0 seg5 数字09的段代码已放在:BUF0 BUF9中。# include void display( )unsigned char code BUF10=0 xc0,0 xf9,0 xa4,0 xb0,ox99,0 x92,0 x82,0 x80,0 x90,0 x88,0 x83; unsigned char seg 6 ; void display( )unsigned char i , j,

36、temp;temp =0 x01;for( i=0; i6; i+)P1 = temp;P0 = BUF seg i ;for( j=0; j50; j+)_nop_( );temp=temp*2; 显示1、2、3、4首先扫描最后扫描数码显示接口编程实例1 显示过程:定时器T0每1ms 产生一次中断,在中断服务程序中更换一次显示位,4位一个扫描周期,扫描时间为4 ms。 除了定时中断扫描显示外,也可以程序控制扫描显示,但采用定时中断扫描显示的扫描周期固定,特别是当单片机的工作任务重时,定时中断扫描显示是一种很好的方式。数码显示接口编程实例1程序清单: ORG0000HAJMPMAIN ORG0

37、00BH AJMPINTT0MAIN:MOVTMOD,#01H;T0定时1ms中断初始化MOVTL0,#18HMOVTH0,#0FCHMOVIE,#82HSETBTR0AGAIN:MOVR0,#30H;显示缓冲区首地址 MOVR2,#01H;显示位控制字NEXT: MOVA,R2 JBACC.3,AGAIN;4位扫描完又重复SJMPNEXT;4位未完等待显示下一位数码显示接口编程实例1INTT0:MOVTL0,#18H;重为定时器赋初值MOVTH0,#0FCHMOVP1,#0FFH;关所有显示MOVA,R0;取显示数字MOVDPTR,#SEGMOVCA,A+DPTR;查字段码表的段选码MOVP

38、2,A;输出段选码MOVA,R2MOVP1,A;输出位控制字RLA;为显示下一位做准备MOVR2,AINCR0RETISEG:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHEND数码显示接口编程实例1数码显示接口编程实例2程序清单:ORG0030H MOV SP,#60h MOV R0,#00hDISP0:MOVDPTR,#SEGTAB;字段码首地址DISP1: MOV A,R0;从0开始显示DISP3:MOVCA,A+DPTR;查字符段选码MOVP2,A;从P2口输出显示MOVR3,#100;停留 1sDISP4:ACALLD10MSDJNZR3,DIS

39、P4INCR0CJNER0,#0ah,DISP1AJMPDISP1;又从0开始显示数码显示接口编程实例2D10MS:MOVR7,#14H;10ms延时子程序DLY:MOVR6,#0F8HDLY1:DJNZR6,DLY1DJNZR7,DLYRETSEGTAB : ;段码表 DB3FH,06H,5BH,4FH,66H ;01234 DB6DH,7DH,07H,7FH,6FH ;56789 DB77H,7cH,39H,5eH, 79H ;abcdeDB 71h, 73h,3Eh,6Eh,0ffh,00h ;fpuy 8.灭 END可根据需要造一些特殊的编码数码显示接口编程实例2键盘/显示器专用接口芯

40、片82798279与8051间的联络是通过中断方式实现的。当8字节的FIFO键值缓冲器中被送入有效按键键值时,其中断请求线IRQ变为有效高电平,8051读数后变为无效低电平,但是如果FIFO中还有有效按下的键值,则再次变为有效高电平,直至FIFO中的全部有效键值被读出为止。当把8279的工作方式设置为传感器方式时,它也可以用于开关量输入的目的。每个键位处对应一个被检测的开关或开关性逻辑元件;键盘去抖动及双键封锁N键巡回逻辑被禁止;返回线上的开关状态直接输入到FIFO/传感器RAM中对应于扫描线编码值相应行的存贮单元内。LED显示器驱动方式键盘/显示器专用接口芯片8279 在具体的系统电路比如仪

41、器电路设计中,往往将键盘和数码管显示电路综合考虑进行设计。键盘与显示专用芯片8279LED显示器驱动方式键盘/显示器专用接口芯片82798279引脚图8279的主要功能(1)键盘与显示器能同时工作;(2)扫描式键盘工作方式;(3)扫描式传感器工作方式;(4)用选通方式送入输入信号;(5)带有8字符的键盘先入先出存储器(FIFO);(6)触点回弹时两键封锁或N键巡回;(7)双排8字或单个16字的数字显示器;(8)可右入或左入的16字节显示器RAM;(9)工作方式可由CPU编程;(10)可编程扫描定时、键盘送入时有中断输出。 键盘/显示器专用接口芯片82798279的扫描输出线按编码方式使用。其S

42、L0SL2经过74HC138译码,其输出的8根选通线的Y0Y5作为键盘矩阵的列扫描线,而8279的8根返回线RL0RL7用作键盘的8根检测线。可以实现68 = 48 键的键盘输入功能。在这种接口逻辑下,8279的命令/状态口的地址为DFFFH,其数据寄存器口地址为DFFEH。 键盘/显示器专用接口芯片8279控制位值 功 能D1D00 08个8位字符显示,左端输入0 116个8位字符显示,左端输入1 08个8位字符显示,右端输入1 116个8位字符显示,右端输入K00SL3-SL0为编码扫描方式1SL3-SL0为译码扫描方式K2K10 0双键封锁方式0 1N键巡回方式1 0传感器阵列方式1 1

43、选通输入方式(1)工作方式设置命令控制字 格式:000 D1D0K2K1K0000:该命令控制字的标志符D1D0:显示方式控制位K2K1K0键盘方式控制位 LED显示器驱动方式键盘/显示器专用接口芯片8279(2)内部时钟设置命令控制字 格式:001 P4P3P2P1P0 001:改命令控制字的标志符P4P3P2P1P0:CLK引脚输入脉冲的分频数,取值2-31。对于不同的CLK输入脉冲频率,适当选择设置P4P3P2P1P0的值,以便得到扫描和去抖动所需的100KHz的定时信号。对于上述硬件逻辑,CLK为2MHz,可设置P4P3P2P1P0=10100B=20D,使8279得到内部定时信号的频

44、率为100KHz。 LED显示器驱动方式键盘/显示器专用接口芯片8279(3)读取键值命令控制字 格式:010 AIA2A1A0 010:该命令控制字的标志符AI: 自动增1控制,用于传感器方式 A2A1A0:传感器缓冲器行地址。在键盘扫描方式下,设置本命令控制字之后,对8279数据口的读操作,可以得到当前的键值。LED显示器驱动方式键盘/显示器专用接口芯片82798279芯片内部具有对键盘扫描的“去抖动”功能和识别功能,使用100KHz的内部定时频率时,其去抖动时间为10.3ms,在相距10.3ms的两次扫描中均检测到的按键,被确认为有效按下的键;对有效按下的键的识别算法是:只有一个有效按下

45、的键,则将其相应的键值送入FIFO键值缓冲存贮器,供CPU读取;如果有两个或两个以上的有效按下的键,则按两种不同的策略来识别:两键封锁策略,只识别最先按下最后被释放的一个键,或者同时按下最后释放的一个键,将其键值送入FIFO键值缓冲器;N键巡回策略,将N个有效按下的键的键值,按发现的顺序依次送入FIFO键值缓冲器。LED显示器驱动方式键盘/显示器专用接口芯片8279写入的方式命令控制字为:000XX100,它表示是编码扫描传感器矩阵方式;读FIFO/传感器RAM命令控制字为:010AIA2A1A0。其中的AI, A2A1A0字段可根据需要而设定。如果想只读特定行的传感器/开关的状态,则可置AI

46、=0,A2A1A0置为相应行的编码值;如欲连续读取各行的状态,可以设AI=1,A2A1A0=000,使连续8次依次读出从0行到7行的状态,这时每读一次,行计数自动加1,而无需每次都指定A2A1A0的值。LED显示器驱动方式利用硬件译码器的七段LED接口电路 通过8155扩展I/O口控制的8位LED动态显示接口动态显示子程序流程图返回本节某实际数码管连接图P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2位驱动段驱动六位共阳极数码管模块相同的段驱动端都并联在一起。

47、在第一位上显示5P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2位驱动P2.7输出0段驱动P0口输出“5”的段码“10010010B”01111101001001编程练习画流程图要求:在第一位显示连续变化的09,间隔时间自定。开始(R0)=0Y(A)=(R0)查段码表,取得段驱动码段驱动码送P0口P2.7=0延时(R0)+1(R0)=10?(R0)=0N在keil中编程,生产HEX文件。在proteus中观察运行结果。LED点阵模块显示器 LED点阵模块显示器

48、是指由发光二极管排成一个mn的点阵,每个发光二极管构成点阵中的一个点。这种显示器显示的字形逼真,能显示的字符比较多,但控制比较复杂。适用于显示汉字、图形和表格,广泛应用于公共场合的信息发布。 8*8点阵屏的内部电路原理图 共阴极 共阳极 8*8点阵屏的实物图 单元电路图portel驱动电路驱动系统框图行驱动电路实例系统主程序和显示驱动程序框图显示驱动程序多个16*16LED显示演示程序MCU AT89C51 XAL 24MHz /以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移/#include reg52.h#define BLKN 8 /列锁存器

49、数(=LED显示字数*2)#define TOTAL 20 /待显示字个数,本例共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单元/*显示屏扫

50、描(定时器T0中断)函数*/void leddisplay(void) interrupt 1 using 1register unsigned char m, n=BLKN;TH0 = 0 xFc; /设定显示屏刷新率每秒62.5帧(16毫秒每帧)TL0 = 0 x18;m = CONIO; /读取当前显示的行号m = +m & 0 x0f; /行号加1,屏蔽高4位do n-; SBUF = dispramm*2+(n/2)*30 + n; /送显示数据 while (!TI); TI = 0; while (n); /完成一行数据的发送G = 1; /消隐(关闭显示)CONIO &= 0

51、xf0; /行号端口清CLK=1; /显示数据打入输出锁存器CONIO |= m; /写入行号CLK=0; /锁存显示数据G = 0; /打开显示/主程序/*主函数 */void main(void) register unsigned char i,j,k,l,q,w;/初始化SCON = 0 x00; /串口工作模式0:移位寄存器方式TMOD = 0 x01; /定时器T0工作方式1:16位方式TR0 = 1; /启动定时器T0CONIO = 0 x3f; /CONIO端口初值IE = 0 x82; /允许定时器T0中断/while (1) delay(2000); /2秒/第一种显示效果

52、:卷帘出显示笑脸图案 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/卷帘出显示文字,每次字数为BLKN/2,共显示TOTAL*2/BLKN次for (w=0;wTOTAL*2/BLKN;w+)for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=Bmpq+w*BLKN/2i; if (i%2) delay(120); delay(3000);/第一种显示效果:卷帘出显示笑脸图案 for (i=0;i32;i+

53、) for(q=0;qBLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/第二种显示效果:向上滚屏,每次BLKN/2个字 for (i=0; iTOTAL*2/BLKN; i+) for (j=0; j16; j+) for (k=0; k15; k+) for(q=0;qBLKN/2;q+) dispramk*2+q*32 = dispram(k+1)*2+q*32;dispramk*2+1+q*32 = dispram(k+1)*2+1+q*32; for(q=0;qBLKN/2;q+) dispram30+

54、q*32 = Bmpq+i*BLKN/2j*2;dispram31+q*32 = Bmpq+i*BLKN/2j*2+1; delay(100); delay(3000);/滚动暂停 /第一种显示效果:卷帘出黑屏 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=0 xff; if (i%2) delay(120); delay(1000);/第三种显示效果:左移出显示 for (i=0; iTOTAL; i+) for (j=0; j2; j+) for (k=0; k8; k+) for (l=0; l16; l+) for(q=0;qBL

55、KN/2;q+) dispraml*2+q*32 = dispraml*2+q*327; if(q=BLKN/2-1) dispraml*2+1+q*32 = dispraml*2+1+q*32(7-k); else dispraml*2+1+q*32 = dispraml*2+1+q*327; delay(100); delay(3000);/第一种显示效果:卷帘出黑屏 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=0 xff; if (i%2) delay(120); delay(1000);/第三种显示效果:右移出显示 for (i

56、=0; i0; j-) for (k=0; k8; k+) for (l=0; l16; l+) for(q=0;q1 | dispraml*2+q*321 | Bmpil*2+j-11 | dispraml*2+1+(q-1)*327; delay(100); delay(3000);/第四种显示效果:卷帘入 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32= 0 x00; if (i%2) delay(100); 以显示汉字“我”为例,来说明其扫描原理单片机首先由P2口输出显示数据信号给右部分的第一行如图9所示,即第一行的P20P27口。

57、方向为P20到P27 ,显示汉字“我”时,P21点亮,由左到右排,为P20灭,P21亮, P22灭,P23灭, P24灭, P25灭, P26灭, P27灭。即二进制00000010,转换为16进制为 0 x02。右部分的第一行完成后,继续扫描左半部的第一行,为了接线的方便,我们仍设计成由左往右扫描,即从P00向P07方向扫描,从上图可以看到,这一行只有P05、P06亮,其它灭, 即为00000110,16进制则为0 x60。然后单片机再次转向右半部第二行,仍为P21、P23点亮,为01010000,即16进制0 x0A。这一行完成后继续进行左半部分的第二行扫描,P02、P03、P04点亮,为

58、二进制00111000,即16进制0 x1C。 依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“我”的扫描代码为:0 x02,0 x60,0 x0A,0 x1C,0 x12,0 x10,0 x12,0 x10,0 x02,0 x10,0 x7F,0 xFF,0 x02,0 x10,0 x12,0 x10,0 x14,0 x70,0 x0C,0 x1C,0 x04,0 x13,0 x0A,0 x10,0 x49,0 x90,0 x50,0 x10,0 x60,0 x14,0 x40,0 x08由这个原理可以看出, 无论显示何种字体或图像, 都可以用这个方法来分析出它的扫描代码

59、从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件, 我们就不必自己去画表格算代码了。 “机”的码字 (共阴极)动态扫描显示的方式,显示字符“B”的过程 静态显示“我”字的程序清单#include#define CCED2 0 x0000 /*我 */unsigned char code word_zai162 = /*我 CCED2 */0 x02,0 x60,0 x0A,0 x1C,0 x12,0 x10,0 x12,0 x10,0 x02,0 x10,0 x7F,0 xFF,0 x02,0 x10,0 x12,0 x10,0 x14,0 x70,0 x0C,0 x1C,0 x04,0

60、 x13,0 x0A,0 x10,0 x49,0 x90,0 x50,0 x10,0 x60,0 x14,0 x40,0 x08;void main() char scan,i,j; P0=0;P1=0;P2=0;while(1) scan=0; for(i=0;i16;i+) P1=scan;for(j=0;j50;j+) /显示五十次 P2=word_zaii0 ; P0=word_zaii1 ; P0=0;P2=0; scan+; 点阵显示信息传输方式目前常见的是并行传输方式,通过8位锁存器将8位总线上的列数据进行锁存显示,各8位锁存器的片选信号由译码器提供。此种方式的优点是传输速度快,

温馨提示

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

评论

0/150

提交评论