资源描述
,本章要点,大多数的单片机应用系统,都要配置输入外设和输出外设。常用的,输入外设,有,键盘、开关,等;常用的,输出外设,有,LED,数码管、,LCD,显示器、打印机,等。本章主要介绍,1,单片机控制发光二极管、,LED,数码管,2,基于单片机的开关、键盘接口原理及应用,第,7,章 显示、开关,/,键盘,7.1,发光二极管的显示,单片机可以通过,并行端口,P0,P3,驱动发光二极管,P0,口与,P1,、,P2,、,P3,口相比,,P0,口每位可驱动,8,个,LSTTL,输入,而,P1,P3,口每一位的驱动能力,只有,P0,口的一半。,7.1,发光二极管的显示,当,P0,口的某位为高电平时,可提供,400A,的拉电流,;当,P0,口某位为低电平(,0.45V,)时,可提供,3.2mA,的灌电流,;而,P1,P3,口内部有,30k,左右的上拉电阻,如果高电平输出,则从,P1,、,P2,和,P3,口输出的拉电流,Id,仅为,几百,A,,驱动能力较弱,亮度较差;,如果端口引脚为低电平,,能使灌电流,Id,从单片机的外部流入内部,则将大大增加流过的灌电流值;,所以,,AT89S52,单片机任何一个端口要想获得较大的驱动能力,要采用低电平输出,。,如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如,74LS04,、,74LS244,等。,7.1,发光二极管的显示,(,a,)不恰当的连接:高电平驱动 (,b,)恰当的连接:低电平驱动,7.1,发光二极管的显示,思考:如何将发光二极管与单片机,P1,口连接起来?,7.2,开关状态检测,检测开关处于闭合状态还是打开状态,只需把开关一端接到,I/O,端口的引脚上,另一端接地,然后通过检测,I/O,端口引脚的电平来实现。,【,例,7-2】,如,图,7-3,所示,利用单片机、,1,个开关,k,和,1,个发光二极管,LED,,构成一个简单的检测开关,k,是否闭合的系统。,7.2,开关状态检测,参考程序,常见显示器,7.3 LED,数码管显示,液晶显示器,液晶显示屏,LED,显示屏,LED,数码管,7.3.1 LED,数码管显示原理,LED,数码管在单片机系统中应用非常广泛。,LED,(,Light Emitting Diode,)是,发光二极管,缩写。,LED,数码管是由发光二极管构成的,。,7.3.1 LED,数码管的结构,常见的,LED,数码管为,“,8,”字型,的,共计,8,段,。,每一段对应一个发光二极管,。有,共阳极,和,共阴极,两种,共阴极,发光二极管的阴极连在一起,通常公共阴极接地。当,阳极为高电平,时,发光二极管点亮。,共阳极,LED,数码管的发光二极管的,阳极连接在一起,,公共阳极,接正电压,,当某个发光二极管的阴极接低电平时,发光二极管被点亮,+5V,+5V,0V,0V,0V,为了使数码管显示,不同的符号或数字,,要把某些段发光二极管点亮,就要为,LED,数码管提供控制字,该控制字称为,段码,(,字型码,)。,LED,数码管共计,8,段,,正好是,一个字节,。习惯上是,以“,a,”段对应段码字节的最低位,。各段与字节中各位对应关系如,表,所示。,段码,(,字型码,),段码表,D7,D6,D5,D4,D3,D2,D1,D0,dp,g,f,e,d,c,b,a,0,0,0,1,1,1,1,1,1,3f,1,0,0,0,0,0,1,1,0,06,2,0,1,0,1,1,0,1,1,5b,3,0,1,0,0,1,1,1,1,4f,以共阴极数码管为例,思考,:,试写出,H,、,L,的段码,?,7.3.1 LED,数码管的结构,【,例,7-3】,用单片机控制一个,8,段,LED,数码管,如,图,7-5,所示。要求数码管反复循环显示单个数字:,0,9,。,参考程序,7.3.2 LED,数码管的显示方式,图,为显示,4,位字符的,LED,数码管的结构原理图。,4,位,位选线,和,8,4,条,段码线,。,段码线控制,显示,字型,,而,位选线,控制着该显示位的,LED,数码管的,亮或暗,。,LED,数码管有两种显示方式:静态显示和动态显示。,1,LED,静态显示方式,无论多少位,LED,数码管,,同时处于显示,状态,。,各位的,共阴极(或共阳极)连接在一起,并接地(或接,+5V,);,每位的,段码线(,a,dp,)分别与一个,8,位的,I/O,口锁存器输出相连。,静态显示的特点,静态显示方式的显示无闪烁,亮度都较高,,软件控制比较容易;,占用口线多。,当前,LED,使用静态显示比较常见(配合使用,74LS164,),1,LED,静态显示方式,2,LED,动态显示方式,无论在任何时刻,只有一个,LED,数码管处于显示状态,,即单片机采用,“,扫描,”,方式,控制各个数码管轮流显示。,段码线的相应段,并联在一起,由一个,8,位,I/O,口控制;,而各位的共阳极或共阴极分别由相应的,I/O,线控制,分时选通。,4,位,8,段,LED,动态显示电路,段码线占用一个,8,位,I/O,口,位选线占用一个,4,位,I/O,口。,采用动态的,“,扫描,”,显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要显示字符的段码。,动态显示原理,在某一时刻,只有一位显示,其他各位熄灭,由于余辉和人眼的,“,视觉暂留,”,作用,只要每位显示间隔足够短,则可以造成,“,多位同时亮,”,的假象,达到同时显示的效果。,动态显示的特点,优点,是硬件电路简单,显示器越多,优势越明显。,缺点,是显示亮度不如静态显示的亮度高。如果,“,扫描,”,速率较低,会出现闪烁现象。,7.3.3 LED,数码管静态显示设计,【,例,7-4】,用,AT89S52,设计一个,2,位,LED,数码管显示的“秒表”,显示时间为,00,99,秒,每秒自动加,1,。,原理电路如,图,7-8,所示。电路采用单片机的,P2,口、,P3,口分别控制两个,LED,数码管作为“秒表”的时间显示。显示数字的段码采用查表方法。“秒”计时产生采用软件延时的方法。,7.3.3 LED,数码管静态显示设计,7.6,键盘接口设计,键盘具有向单片机输入数据、命令等功能,是人与单片机对话的主要手段。,7.6.1,键盘接口设计应解决的问题,1,键盘的任务,任务有三项:,(1),判别,是否有键按下,?若有,进入下一步工作。,(2),识别,哪一个键被按下,,并求出相应的键值。,(3),根据,键值,,找到,相应键值的处理程序入口,。,最,常用的是,按键式键盘,,其本质上就是一个开关。按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、闭合,其,行线电压输出波形如,图,所示,。,2.,键盘输入的特点,29,t,1,和,t,3,分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),,抖动时间长短与开关的机械特性有关,,一般为,5,10ms,。,t,2,为稳定的闭合期,其时间由按键动作确定,一般为十分之几秒到几秒。,t,0,、,t,4,为断开期。,3,按键的识别,键的闭合与否,,,行线输出电压,上就是,呈现高电平或低电平,。,高电平,,表示,键断开,,,低电平,则表示,键闭合。,通过,对行线电平的高低状态的检测,,,可确认按键按下,以及,按键释放与否,。为了确保对一次按键动作只确认一次按键有效,必须消除,抖动期,t,1,和,t,3,的影响。,30,4,消除按键抖动的两种方法,一种,软件延时,,本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时,10ms,的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,方法同上。采取本措施,可消除两个抖动期,t,1,和,t,3,的影响。,另一种是,采用专用的键盘,/,显示器接口芯片,,这类芯片中都有,自动去抖动的硬件电路,。,有键按下,延时,10ms,有键按下,Y,Y,N,N,确认有键按下,7.6.2,独立式键盘的设计,在单片机中,常见的键盘有两种结构:,独立式键盘,和,矩阵式键盘,。对于独立式键盘:,一键一线,,,各键相互独立,,每个键各接一条,I/O,口线,通过检测,I/O,输入线的电平状态,可容易地判断,哪个按键被按下,。,当,某一按键按下,时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平。,独立式按键特点,优点,:电路简单,各条检测线独立,识别按下按键的软件编写简单。适用于键盘,按键数目较少,的场合。,缺点,:,不适用于键盘按键数目较多,的场合,因为将占用较多的,I/O,口线。,独立式键盘的查询方式示例,【,例,7-8】,对,图,7-21,所示独立式键盘,用查询方式实现键盘扫描,根据按下不同按键,对其进行处理。,矩阵式(也称,行列式,)键盘用于,按键数目较多,的场合,由行线和列线组成,按键位于行、列的交叉点上。如,图,所示,一个,4,4,的矩阵键盘可以构成一个,16,个,按键键盘。在,按键数目较多,的场合,要,节省较多的,I/O,口线,。,矩阵中,无按键按下,时,行线为高电平;当,有按键按下时,,,行线电平状态将由与此行线相连的列线的电平决定,。,列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,,这是识别按键是否按下的关键所在。,7.6.3,矩阵式键盘的设计,矩阵按键识别法:扫描法,第,1,步,,识别键盘有无键按下,。,先把所有,列线均置为,0,,然后,检查各行线电平是否都为高,,,如果不全为,高,,说,明有键按下,,否则无键被按下。,例如,,当,键,3,按下时,,第,1,行线为低,还不能确定是键,3,被按下,,因为如果同一行的键,2,、,1,或,0,之一被按下,行线也为低电平。只能得出,第,1,行有键被按下,的结论。,39,第,2,步,,识别出哪个按键被按下,。,采用,逐列扫描法,,在,某一时刻只让,1,条列线处于低电平,其余所有列线处于高电平。,当,第,1,列为低电平,,其余各列为高电平时,因为是键,3,被按下,第,1,行的行线仍处于高电平;当,第,2,列为低电平,,其余各列为高电平时,第,1,行的行线仍处于高电平;,直到让第,4,列为低电平,,其余各列为高电平时,,此时第,1,行的行线电平变为低电平,,据此,可判断第,1,行第,4,列交叉点处的按键,即键,3,被按下。,矩阵按键识别法:线反转法,扫描法要,逐列扫描,查询,,有时则要,多次扫描,。而,线反转法则很简练,,无论被按键是处于第一列或最后一列,均,只需经过两步,便能获得此按键所在的行列值,其具体步骤为:,让行线编程为输入线,列线编程为输出线,,并使输出线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。,再把行线编程为输出线,列线编程为输入线,,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。,两步即可确定按键所在的,行和列,,从而识别出所按的键。,假设,键,3,被按下,。,第一步,,,P1.0,P1.3,输出全为“,0,”,然后,读入,P1.4,P1.7,线的状态,,,结果,P1.4=0,,而,P1.5,P1.7,均为,1,,因此,第,1,行出现电平的变化,说明第,1,行有键按下;,41,第二步,,,让,P1.4,P1.7,输出全为“,0,”,然后,读入,P1.0,P1.3,位,,结果,P1.0=0,,而,P1.1,P1.3,均为,1,,因此第,4,列出现电平的变化,说明第,4,列有键按下。,综上所述,即第,1,行、第,4,列按键被按下,,此按键即键,3,按下,。线反转法,简单适用,,但不要忘记,按键,去抖动,处理。,矩阵按键识别法:线反转法,7.6.4,键盘的工作方式,单片机在,忙于其他各项工作任务,时,,如何兼顾键盘的输入,这取决于键盘的工作方式,。工作方式选取原则是,既要保证及时响应按键操作,又不过多占用单片机工作时间。键盘工作方式有,3,种,,即,编程扫描,、,定时扫描,和,中断扫描。,1,编程扫描方式,也称查询方式,利用,单片机空闲时,,调用键盘扫描子程序,
展开阅读全文