单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件

上传人:bin****86 文档编号:58524665 上传时间:2018-10-30 格式:PPT 页数:153 大小:3.56MB
返回 下载 相关 举报
单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件_第1页
第1页 / 共153页
单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件_第2页
第2页 / 共153页
单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件_第3页
第3页 / 共153页
单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件_第4页
第4页 / 共153页
单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件_第5页
第5页 / 共153页
点击查看更多>>
资源描述

《单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件》由会员分享,可在线阅读,更多相关《单片机原理及接口技术(第2版)第5章io口应用显示与开关键盘输入课件(153页珍藏版)》请在金锄头文库上搜索。

1、第5章 I/O口应用-显示与开关/ 键盘输入,1,【内容概要】单片机利用片内的I/O口控制LED发光二极管、LED数码管、LCD显示,以及开关检测、键盘输入是单片机应用系统的基本功能。作为片内I/O口的基本应用,本章介绍单片机片内的I/O口与常见显示器件(发光二极管、LED数码管和LCD液晶显示器)和常见的输入器件(开关、键盘以及拨盘开关等)的接口设计与编程。,2,5.1 单片机控制发光二极管显示第2章介绍了单片机片内4个I/O端口P0口P3口的内部电路以及外部引脚特性。如果P0口作为通用I/O使用,由于漏极开路,需要外接上拉电阻。而P1P3口内部已有30k左右的上拉电阻。下面首先讨论P1P3

2、口如何与LED发光二极管连接。发光二极管常用来指示系统工作状态,制作节日彩灯、广告牌匾等。大部分发光二极管工作电流15mA之间,其内阻为20100。电流越大,亮度也越高。为保证发光二极管正常工作,同时减少功耗,限流电阻选择十分重要,若供电电压为+5V,则限流电阻可选13k。,5.1.1 单片机与发光二极管的连接单片机通过并行端口P1P3直接驱动发光二极管,电路如图5-1所示。 P0口与 P1、P2、P3口相比,P0口每位可驱动8个LSTTL输入,而P1P3口每一位的驱动能力,只有P0口的一半。当P0口的某位为高电平时,可提供400A的拉电流(见图5-1(a);当P0口某位为低电平(0.45V)

3、时,可提供3.2mA的灌电流(见图5-1(b),而P1P3口内部有30k左右的上拉电阻,如果高电平输出,则从P1、P2和P3口输出的拉电流Id仅为几百A,驱动能力较弱,亮度较差,如图5-1(a)所示。,5,图5-1 发光二极管与单片机并行口的连接,如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任何一个端口要想获得较大的驱动能力,要采用低电平输出。如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程发光二极管与单片机

4、的I/O端口的连接,如图5-1(b)所示。如要点亮某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如何对I/O端口编程实现对发光二极管亮灭的控制。,6,【例5-1】制作一个单片机控制的流水灯,原理电路见图5-2,8个发光二极管LED0LED7经限流电阻分别接至P1口的P1.0P1.7引脚上,阳极共同接高电平。编写程序,每次点亮一个发光二极管,控制发光二极管由上至下的反复循环流水点亮。说明:本例采用了Proteus环境下的虚拟仿真,7.5版本元件库中没有AT89S51单片机,采用的是AT89C51来代替AT89S51,以下同。 参考程序如下:,7,8,图5-2 单片机控制的流

5、水灯,ORG 0100H START: MOV R2,#8MOV A,#0FEH ;FEH为点亮P1.0脚发光二极管需写入P1 ; 口的控口的控制码 LOOP: MOV P1,A ;控制码写入P1口,点亮相应的LEDLCALL DELAY ;调用延时子程序RL A ;控制码循环左移,点亮下一位DJNZ R2,LOOP ;判断左移是否超过8 位,未超过继续循环 LJMP START ;左移循环已8次,再重新进行下一次循环点亮 DELAY: MOV R5,#20 ;延时子程序,延时约0.2s D1: MOV R6,#20 D2: MOV R7,#248,9,D3: DJNZ R7,D3 ;R7不为

6、0则原地跳转DJNZ R6,D2DJNZ R5,D1RETEND 5.2 开关状态检测检测开关处于闭合状态还是打开状态,只需把开关一端接到I/O端口的引脚上,另一端接地,然后通过检测I/O端口引脚的电平来实现。【例5-2】 如图5-3所示,利用单片机、1个开关k和1个发光二极管LED,构成一个简单的检测开关k是否闭合的系统。图5-3中,开关k的一端接到单片机P3.0引脚上,并通过上拉电阻接到+5V上,开关的另一端接地,当开关打开时,P3.0引脚为高电平,当开关闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测,10,图5-3 开关、LED发光二极管与P1口的连接,P3.0引脚的输

7、入电平是高还是低。当开关闭合,即P3.0脚为低电平;当开关打开,P3.0引脚为高电平。P1.0引脚接发光二极管的阴极LED,当开关k闭合时,LED点亮;开关打开时,LED熄灭。开关k与LED没有任何电气上的联系。 参考程序如下:ORG 0100H START: JB P3.0,NOLIG ;判P3.0高还是低,P3.0高,开关打开,跳NOLIGCLR P1.0 ;P3.0为低,开关闭合,则P1.0输出0,点亮LEDSJMP START NOLIG: SETB P1.0 ;开关为打开状态,P1.0置1,LED熄灭SJMP START ;返回END,5.3 单片机控制LED数码管的显示 5.3.1

8、 LED数码管显示原理LED数码管是常见的显示器件。LED数码管为“8”字型的,共计8段(包括小数点段在内)或7段(不包括小数点段),每一段对应一个发光二极管,有共阳极和共阴极两种,如图5-4所示。共阳极数码管的阳极连接在一起,公共阳极接到+5V上;共阴极数码管的阴极连接在一起,通常此公共阴极接地。对于共阴极数码管,当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极数码管的阳极连接在一起接+5V,当某个发光二极管的阴极接低电平时,该发光二极管被点亮,相应的段被显示。,13,14,图5-4 8段LED数码管结构及外形,为了使LED数码管显示不同的字符,要把某些段点亮,

9、就要为数码管的各段提供一个字节的二进制代码,即段码。习惯上以“a”段对应字型码字节的最低位。各种字符的段码如表5-1所示。如要在数码管上显示某一字符,只需将该字符的段码加到各段上即可。例如某存储单元中的数为“02H”,想在共阳极数码管上显示“2”,需要把“2”的段码“A4H”加到数码管各段。通常采用的方法是将欲显示的字符的段码作成一个表,根据显示的字符从表中查找到相应的段码,然后单片机把该段码输出到数码管的各个段上,同时数码管的公共端接+5V,此时在数码管上显示出字符“2”。,15,16,下面介绍单片机如何控制LED数码管显示字符的设计。 【例5-3】用单片机控制一个8段LED数码管,如图5-

10、5所示。要求数码管反复循环显示单个数字:09。,图5-5 控制数码管循环显示单个数字,图5-5中,采用了共阳极数码管,R1R7为限流电阻。单片机P0口输出段码,数码管的公共段接+5v。欲显示的数字09的字型码由于无规律可循,只能采用查表的方式来完成要求,这样可按着数字09的顺序,把每个数字的字型码按顺序排好,形成一个段码表。根据要显示的数字,查找到相应的段码,从而控制LED数码管显示相应的字符。读者通过本例应掌握段码查表程序的编写。参考程序如下:ORG 0100H START: MOV DPTR,#TABLE ;指针指向表头地址 S1: MOV A,#00H ;设置地址偏移量MOVC A,A+

11、DPTR ;查表取得段码,送ACJNE A,#01H,S2 ;判断A中段码是否为结束符01H,不是;则跳S2继续显示,18,LJMP START ;是结束符01H,重新从0开始显示 S2: MOV P0,A ;段码送LED显示LCALL DELAY INC DPTR ;指针加1LJMP S1 DELAY: MOV R5,#20 ;延时子程序 D2: MOV R6,#20 D1: MOV R7,#248 D3: DJNZ R7,D3DJNZ R6,D1DJNZ R5,D2RET,19,TABLE: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;

12、共阳极数码管段码表DB 01H ;结束符END程序设计中,为达到反复循环显示数字09的目的,在段码表中设置了一个结束符01H,来控制反复循环显示。,20,5.3.2 LED数码管的显示方式 单片机控制LED数码管有两种显示方式:静态显示和动态扫描显示。 1. 静态显示方式静态显示就是指无论多少位LED数码管,都同时处于显示状态。多位LED数码管工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或接+5V);每位数码管的段码线(adp)分别与一个单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直

13、到送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较高,软件控制比较容易。图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显,21,图5-6 4位LED静态显示的示意图,示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态显示方式占用I/O口线较多。对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般采用动态显示方式。 2. 动态扫描显示方

14、式显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路的数目,常采用动态扫描显示方式。将所有LED数码管显示器的段码线的相应段并联在一起,由一个8位I/O端口控制,而各显示位的公共端分别由另一单独的I/O端口线控制。图5-7所示为一个4位8段LED数码管动态扫描显示电路的示意图。其中单片机向I/O(1)端口发出欲显示字符的段码,而显示器的位点亮控制,图5-7 4位LED数码管动态显示示意图,使用I/O(2)端口中的4位口线,来控制数码管公共端的电平,每一时刻,只有1位位选线有效,即选中某一位显示,其他各位位选线都无效,不显示。每隔一定时间逐位地轮流点亮各数码管(扫描),由于数码

15、管的余辉和人眼的“视觉暂留”作用,只要控制好每位数码管点亮显示的时间和间隔,则可造成“多位同时亮”的假象,达到4位同时显示的效果。 各位数码管轮流点亮的时间间隔(扫描间隔)应根据实际情况而定。发光二极管从导通到发光有一定的延时,如果点亮时间太短,发光太弱,人眼无法看清;时间太长,产生闪烁现象,而且此时间越长,占用单片机时间也越多。另外,显示位数增多,也将占用单片机的大量时间,因此动态显示的实质是以执行程序的时间来换取I/O端口数目的减少。为克服动态显示的弊病,可采用5.6.4小节介绍的专用的键盘/显示器芯片, 由芯片内部硬件扫描电路自动完成显示数据的扫描刷新。,25,5.3.3 LED数码管静态显示设计【例5-4】 用AT89S51设计一个2位LED数码管显示的 “秒表”, 显示时间为0099秒,每秒自动加1。原理电路如图5-8所示。电路采用单片机的P2口、P3口分别控制两个LED数码管作为“秒表”的时间显示。显示数字的段码采用查表方法。“秒”计时产生采用软件延时的方法。由本例可见,采用静态显示,需要一个数码管对应一个I/O端口。当数码管的数目较多时,需要占用较多的I/O端口。但是软件编程比较简单,只需向P2口、P3口输出显示数字的段码即可,且显示不闪烁。参考程序如下:,27,图5-8 2位LED数码管静态显示的秒表,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号