收藏 分销(赏)

键盘显示器接口.pptx

上传人:精**** 文档编号:4163229 上传时间:2024-08-07 格式:PPTX 页数:41 大小:663.06KB
下载 相关 举报
键盘显示器接口.pptx_第1页
第1页 / 共41页
键盘显示器接口.pptx_第2页
第2页 / 共41页
键盘显示器接口.pptx_第3页
第3页 / 共41页
键盘显示器接口.pptx_第4页
第4页 / 共41页
键盘显示器接口.pptx_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、第10章 AT89S51单片机与输入单片机与输入/输出外设的接口输出外设的接口 1内容概要内容概要 大多数单片机应用系统,都要配置输入外设和输出外设。大多数单片机应用系统,都要配置输入外设和输出外设。常见常见输入外设输入外设有键盘、有键盘、BCD码拨盘等;码拨盘等;输出外设输出外设有有LED数码数码管、管、LCD显示器、打印机等。本章介绍显示器、打印机等。本章介绍AT89S51单片机与各单片机与各种输入外设、输出外设的接口电路设计以及软件编程。种输入外设、输出外设的接口电路设计以及软件编程。210.1 LED数码管显示器的接口设计数码管显示器的接口设计LED(Light Emitting Di

2、ode)数码管应用非常普遍,由)数码管应用非常普遍,由发光二极管构成。发光二极管构成。10.1.1 LED数码管的工作原理数码管的工作原理常见的常见的LED数码管为数码管为“8”字型的,共计字型的,共计8段。每一段对应段。每一段对应一个发光二极管。这种数码管显示器有一个发光二极管。这种数码管显示器有共阳极共阳极和和共阴极共阴极两种,两种,如如图图10-1所示。共阴极所示。共阴极LED数码管的发光二极管的阴极连接数码管的发光二极管的阴极连接在一起,通常此公共阴极接地。当某个发光二极管的阳极为在一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。高电平时,发

3、光二极管点亮,相应的段被显示。4图10-1 8段LED数码管结构及外形 5按照上述格式,显示各种字符的8段LED数码管的段码如表表10-2所示。表表10-1只列出了部分段码,读者也可对某些显示的字符重只列出了部分段码,读者也可对某些显示的字符重新定义,也可选择其他字型的新定义,也可选择其他字型的LED数码管。数码管。除了除了“8”字型的字型的LED数码管外,市面上还有数码管外,市面上还有“1”型型、“米米”字型字型和和“点阵点阵”型型LED显示器,如显示器,如图图10-2所示。厂家所示。厂家也可根据用户的需要定做也可根据用户的需要定做特殊字型的数特殊字型的数码管码管。本章均以本章均以“8”字型

4、的字型的LED数码管为例。数码管为例。610.1.2 LED数码管显示器接口设计举例数码管显示器接口设计举例LED数码管有数码管有静态显示静态显示和和动态显示动态显示两种显示方式。两种显示方式。1LED静态显示方式静态显示方式静态显示指无论多少位静态显示指无论多少位LED数码管,都同时处于显示状态。数码管,都同时处于显示状态。72LED动态显示方式动态显示方式当显示位数较多,静态显示所需的当显示位数较多,静态显示所需的I/O口太多,这时常采用动口太多,这时常采用动态显示。为节省态显示。为节省I/O口,通常将所有显示器的段码线的相应段并口,通常将所有显示器的段码线的相应段并联在一起,由一个联在一

5、起,由一个8位位I/O口控制,而各位显示位的公共端分别口控制,而各位显示位的公共端分别由相应的由相应的I/O线控制。线控制。8段码线占用一个段码线占用一个8位位I/O口,而位选控制使用一个口,而位选控制使用一个I/O口的口的4位口位口线。动态显示就是线。动态显示就是通过段码线向显示器(所有的)输出所要显通过段码线向显示器(所有的)输出所要显示字符的段码示字符的段码。每一时刻,只有一位位选线有效每一时刻,只有一位位选线有效,其他各位都,其他各位都无效。无效。与静态显示比,动态显示与静态显示比,动态显示优点优点节省节省I/O口,显示器越多,优口,显示器越多,优势越明显。势越明显。缺点缺点显示亮度不

6、如静态显示的高,要调整好显示亮度不如静态显示的高,要调整好“扫描扫描”速率,速率,如果如果“扫描扫描”速率较低,会出现闪烁现象。速率较低,会出现闪烁现象。9第8章接口技术基础102024/8/7 周三在一个数码管上显示字符1第8章接口技术基础112024/8/7 周三#include reg52.hunsigned char code Duan=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;sbit P10=P10;void main()P10=0;P0=Duan1;while(1);第8章接口技术基础122024/8/

7、7 周三例例2:在:在4个数码管上显示字符个数码管上显示字符1、2、3、4见文档见文档例例3:设计一个:设计一个2位位10进制计数器,每秒加进制计数器,每秒加1,在,在LED上显示上显示见文档见文档10.2 键盘的接口设计键盘的接口设计键盘功能:向单片机输入数据、命令等,是人与单片机对话键盘功能:向单片机输入数据、命令等,是人与单片机对话的主要手段。下面介绍键盘工作原理和工作方式。的主要手段。下面介绍键盘工作原理和工作方式。10.2.1 键盘接口应解决的问题键盘接口应解决的问题1键盘的任务键盘的任务任务有任务有3项:项:(1)首先判别是否有键按下?若有,进入下一步。)首先判别是否有键按下?若有

8、,进入下一步。(2)识别哪一个键被按下,并求出相应的键值。)识别哪一个键被按下,并求出相应的键值。(3)根据键值,找到相应键值的处理程序入口。)根据键值,找到相应键值的处理程序入口。132.键盘输入的特点键盘输入的特点常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常用的常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常用的是按键式键盘。是按键式键盘。键盘按键实质上是一个开关。如键盘按键实质上是一个开关。如图图10-7(a)所示,按键开所示,按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、闭合,其行线电压输出波形如断开、闭合,

9、其行线电压输出波形如图图10-7(b)所示。所示。图图10-7(b)所示的所示的t1和和t3分别为键的闭合和断开过程中的抖分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,一般为关,一般为510ms,t2为稳定的闭合期,其时间由按键动作为稳定的闭合期,其时间由按键动作确定,一般为十分之几秒到几秒,确定,一般为十分之几秒到几秒,t0、t4为断开期。为断开期。14图10-7 键盘开关及其行线波形 第8章接口技术基础162024/8/7 周三抖动的消除 按键的抖动人是察觉不到的,但会对按键的抖动人是察觉不到的

10、,但会对高速运行的高速运行的 CPU产生干扰,进而产生误处产生干扰,进而产生误处理。为了保证按键闭合一次仅作一次键输入理。为了保证按键闭合一次仅作一次键输入处理,必须采取措施消除抖动。处理,必须采取措施消除抖动。消除抖动的方法有两种:消除抖动的方法有两种:硬件消抖法和硬件消抖法和软件消抖法。软件消抖法。第8章接口技术基础172024/8/7 周三1)硬件消抖法硬件消抖法(了解了解)硬件消除抖动的方法是用简单的基本硬件消除抖动的方法是用简单的基本R-S触发器触发器或单稳态电路或或单稳态电路或RC积分滤波电路构成去抖动按键电积分滤波电路构成去抖动按键电路。路。初始:初始:S接接A,A=0,所以,所

11、以Q=1,/Q=0AB:A不稳定,不稳定,/Q=0,Q=1,维持,维持接接B点:由于点:由于B=0,Q=1,所以所以/Q=1,Q=0,翻转,翻转(B-A):由于由于/Q=1,A=1所以所以Q=0,维持维持接接A点:点:A=0,Q=1,翻转翻转第8章接口技术基础182024/8/7 周三2)2)软件消抖软件消抖(重点)(重点)软件消抖不需要增加硬件电路,而是在第一次软件消抖不需要增加硬件电路,而是在第一次检测到按键按下后,执行一段延时程序检测到按键按下后,执行一段延时程序(如如 1020ms)1020ms),然后再次检测,确认该按键是否仍保持,然后再次检测,确认该按键是否仍保持闭合状态,如果是则

12、认为是真正有按键按下,否则闭合状态,如果是则认为是真正有按键按下,否则认为是干扰,不预理会。这样就可以避开抖动,以认为是干扰,不预理会。这样就可以避开抖动,以免发生误操作。免发生误操作。第8章接口技术基础192024/8/7 周三10.2.2 10.2.2 键盘接口设计举例键盘接口设计举例键盘两类:非编码键盘和编码键盘。键盘两类:非编码键盘和编码键盘。非编码键盘非编码键盘按键直接与单片机相连,通常使用在按键数量按键直接与单片机相连,通常使用在按键数量较少的场合。用这种键盘,系统功能通常比较简单,需处理较少的场合。用这种键盘,系统功能通常比较简单,需处理的任务较少,但可降低成本、简化电路设计。按

13、下按键的键的任务较少,但可降低成本、简化电路设计。按下按键的键号信息通过软件来获取。号信息通过软件来获取。非编码键盘常见的为两种结构:独立式键盘和矩阵式键盘。非编码键盘常见的为两种结构:独立式键盘和矩阵式键盘。1.独立式键盘独立式键盘(1)查询方式的独立式键盘程序)查询方式的独立式键盘程序特点:一键一线,键相互独立。特点:一键一线,键相互独立。优点优点:电路简单,各条检测线独立,识别按键号的软件编写:电路简单,各条检测线独立,识别按键号的软件编写简单。独立式键盘简单。独立式键盘适用于按键数目较少适用于按键数目较少的场合,在按键数目较的场合,在按键数目较多的场合,要占用较多的多的场合,要占用较多

14、的I/O口线。口线。21图10-8 独立式键盘的接口电路 23按键检测程序入口按键检测程序入口返回键码返回键码 S1S1按下否按下否?键码值置键码值置1 1Y YN NS4S4按下否按下否?键码值置键码值置4 4Y YN N延时消抖延时消抖键闭合键闭合?Y YN N键闭合键闭合?Y YN N键码值置键码值置0 0键码值置键码值置0 0【例例10-3】键盘为键盘为图图10-8所示的独立式键盘,采用查询方所示的独立式键盘,采用查询方式对键盘的键值读取。参考程序如下:式对键盘的键值读取。参考程序如下:#include#includevoid main(void)void main(void)unsi

15、gned char keyvalue;unsigned char keyvalue;do do P1=0 xff;P1=0 xff;keyvalue=P1;keyvalue=P1;keyvalue=keyvalue=keyvalue;keyvalue;24switch(keyvalue)switch(keyvalue)case 1:;case 1:;/*/*处理处理0 0号键号键*/break;break;case 2:;case 2:;/*/*处理处理1 1号键号键*/break;break;case 4:;case 4:;/*/*处理处理2 2号键号键*/break;break;case

16、8:;case 8:;/*/*处理处理3 3号键号键*/break;break;case 16:;case 16:;/*/*处理处理4 4号键号键*/break;break;case 32:;case 32:;/*/*处理处理5 5号键号键*/break;break;case 64:;case 64:;/*/*处理处理6 6号键号键*/break;break;case 128:;case 128:;/*/*处理处理7 7号键号键*/default:default:break;break;/*/*无按下键处理无按下键处理*/while(1)while(1)26(2)中断扫描方式的独立式键盘程序)

17、中断扫描方式的独立式键盘程序为进一步提高扫描键盘工作效率,可采用中断扫描方式,为进一步提高扫描键盘工作效率,可采用中断扫描方式,如如图图10-9。键盘只有在键盘有按键按下时,才进行处理,所。键盘只有在键盘有按键按下时,才进行处理,所以实时性强,效率高。以实时性强,效率高。当键盘中有按键按下时,当键盘中有按键按下时,74LS30的输出经过的输出经过74LS04反相反相后向单片机的中断请求输入引脚后向单片机的中断请求输入引脚INT0*发出中断请求信号,发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别单片机响应中断,执行键盘扫描程序中断服务子程序,识别出按下按键的键号,并跳向该

18、按键的处理程序。出按下按键的键号,并跳向该按键的处理程序。2728图10-9 独立式键盘的接口电路【例例10-4】键盘接口见键盘接口见图图10-9,编写中断方式的独立式键,编写中断方式的独立式键盘处理程序。程序如下。盘处理程序。程序如下。#include#include#include#include#define uchar unsigned char#define uchar unsigned char#define TRUE 1#define TRUE 1#define FALSE 0#define FALSE 0bit key_flage;bit key_flage;uchar key

19、_value;uchar key_value;void delay_10ms(void);void delay_10ms(void);/*/*延时延时10ms10ms函数函数*/29void main(void)void main(void)IE=0 x81;IE=0 x81;IP=0 x01;IP=0 x01;key_flag=0;key_flag=0;/*/*设置中断标志为设置中断标志为0*/0*/dodoif(key_flag)if(key_flag)/*/*如果按键有效如果按键有效*/switch(key_value)/*switch(key_value)/*根据按键分支根据按键分支*

20、/case 1:;case 1:;/*/*处理处理.0.0号键号键*/break;break;case 2:;case 2:;/*/*处理处理1 1号键号键*/break;break;case 4:;case 4:;/*/*处理处理2 2号键号键*/break;break;case 8:;case 8:;/*/*处理处理3 3号键号键*/break;break;30case 16:;case 16:;/*/*处理处理4 4号键号键*/break;break;case 32:;case 32:;/*/*处理处理5 5号键号键*/break;break;case 64:;case 64:;/*/*

21、处理处理6 6号键号键*/break;break;case 128:;case 128:;/*/*处理处理7 7号键号键*/default:default:break;break;/*/*无效按键,如多个键同时按下无效按键,如多个键同时按下*/key_flag=0;key_flag=0;while(TRUE);while(TRUE);31void int0()interrupt 0void int0()interrupt 0 uchar reread_key;uchar reread_key;IE=ox80;IE=ox80;/*/*屏蔽中断屏蔽中断*/key_flag=0;key_flag=0

22、;/*/*设置中断标志设置中断标志*/P1=0 xff;P1=0 xff;/*P1/*P1口锁存器置口锁存器置1*/1*/key_value=P1;key_value=P1;/*/*读入读入P1P1口的状态口的状态*/delay_10ms(void);delay_10ms(void);/*/*延时延时10ms*/10ms*/reread_key=P1&0 x07;reread_key=P1&0 x07;/*/*再次读取再次读取P1P1口的状态口的状态*/if(key_value=reread_key)if(key_value=reread_key)key_flag=1;key_flag=1;/

23、*/*设置中断标志为设置中断标志为1*/1*/IE=0 x81;IE=0 x81;/*/*中断允许中断允许*/322.矩阵式键盘(自学)矩阵式键盘(自学)矩阵式(也称行列式)键盘用于按键数目较多场合,由行线矩阵式(也称行列式)键盘用于按键数目较多场合,由行线和列线组成,一组为行线,另一组为列线,按键位于行、列的和列线组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。如交叉点上。如图图10-10所示,一个所示,一个4 4的行、列结构可以构成一的行、列结构可以构成一个个16个按键的键盘。在按键数目较多的场合,与独立式键盘相个按键的键盘。在按键数目较多的场合,与独立式键盘相比,要节省较多的比

24、,要节省较多的I/O口线。口线。(1)查询方式的矩阵式键盘程序)查询方式的矩阵式键盘程序【例例10-5】对对图图10-10所示的矩阵式键盘,编写查询式的键所示的矩阵式键盘,编写查询式的键盘处理程序。盘处理程序。33图10-10 矩阵式键盘接口首先判键盘有无键按下,即把所有行线首先判键盘有无键按下,即把所有行线P1.0P1.3均置为均置为低电平,然后检查各列线的状态,若列线不全为高电平,则低电平,然后检查各列线的状态,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。盘中无键按下。在确认有键按下后,即可进入

25、确定具体闭合键的过程。判在确认有键按下后,即可进入确定具体闭合键的过程。判断闭合键所在的位置,其方法是依次将行线置为低电平,在断闭合键所在的位置,其方法是依次将行线置为低电平,在逐行检查各列线的电平状态。若某列为低,则该列线与行线逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处的按键就是闭合的按键。判断有无键按下,以及按下交叉处的按键就是闭合的按键。判断有无键按下,以及按下键的位置的参考程序如下。键的位置的参考程序如下。35#include#define uchar unsigned char#define uint unsigned intvoid main(void)uchar

26、key;while(1)key=keyscan();/*调用键盘扫描函数,返回的键值送变量调用键盘扫描函数,返回的键值送变量key*/delay();/*延时延时*/void delay(void);/*延时函数延时函数*/uchar i;for(i=0;i200;i+)36uchar keyscan(void)/*键盘扫描函数键盘扫描函数*/uchar code_h;/*行扫描值行扫描值*/uchar code_l;/*列扫描值列扫描值*/P1=0 xf0;/*P1.0P1.3输出都为输出都为0,准备读列状态,准备读列状态*/if(P1&f0)!=0 xf0)/*如果如果P1.4P1.7不全

27、为不全为1,可能有键按下,可能有键按下*/delay();/*延时去抖动延时去抖动*/if(P1&f0)!=0 xf0)/*重读重读P1.4P1.7,若还是不全为,若还是不全为1,定有键按下,定有键按下*/code_h=0 xfe;/*P1.0置为置为0,开始行扫描,开始行扫描*/while(code_h&0 x10)!=0 xf0);/*判断是否为最后一行,若不是,继续扫判断是否为最后一行,若不是,继续扫描描*/P1=code_h;/*P1口输出行扫描值口输出行扫描值*/if(P1&f0)!=0 xf0);/*如果如果P1.4P1.7不全为不全为1,该行有键按下,该行有键按下*/code_l

28、=(P1&0 xf0|0 x0f);/*保留保留P1高高4位,低位,低4位变为位变为1,作为列值,作为列值*/37return(code_h)+(code_l);/*键扫描值键扫描值=行扫描值行扫描值+列扫描值,列扫描值,返回返回主程序主程序*/else/*若该行无键按下,往下执行若该行无键按下,往下执行*/code_h=(code_h1)|0 x01;/*行扫描值左移,扫描下一行行扫描值左移,扫描下一行*/return(0);/*无键按下,返回无键按下,返回0*/3810.2.3 键盘扫描方式的选取键盘扫描方式的选取键盘工作方式有键盘工作方式有3种:查询扫描、定时扫描和中断扫描。种:查询扫描

29、、定时扫描和中断扫描。1查询扫描查询扫描查询方式(也称编程扫描方式)是利用单片机空闲时,调用查询方式(也称编程扫描方式)是利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求。例键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求。例如如【例例10-3】和和【例例10-5】.2定时扫描定时扫描通常利用单片机内的定时器产生的定时中断,进入中断子程通常利用单片机内的定时器产生的定时中断,进入中断子程序来对键盘进行扫描,在有键按下时识别出该键,并执行相应序来对键盘进行扫描,在有键按下时识别出该键,并执行相应键的处理程序。由于每次按键的时间一般不会小于键的处理程序。由于每次按键的时间

30、一般不会小于100ms,所,所以为不漏判有效按键,定时中断的周期一般应小于以为不漏判有效按键,定时中断的周期一般应小于100ms。393中断扫描方式中断扫描方式为进一步提高单片机扫描键盘的工作效率,可采用中断扫为进一步提高单片机扫描键盘的工作效率,可采用中断扫描方式,即只有在按键按下时,才会向单片机的发出中断请描方式,即只有在按键按下时,才会向单片机的发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别出按下的按键,并跳向该按键的处理程序。如果无序,识别出按下的按键,并跳向该按键的处理程序。如果无键按下,单片机将不理睬键盘。此方式优点是,只有按键按键按下,单片机将不理睬键盘。此方式优点是,只有按键按下时,才进行处理,所以其实时性强,工作效率高。下时,才进行处理,所以其实时性强,工作效率高。4010.3 键盘键盘/显示器接口的设计实例显示器接口的设计实例设计中,常把键盘和显示器一起考虑。设计中,常把键盘和显示器一起考虑。例:例:用用按键进行显示模式选择键,按键进行显示模式选择键,实现实现3个显示画面的切个显示画面的切换换。n1.在一个数码管上显示字符“1”。n2.在4个数码管上显示字符“1”、“2”、“3”、“4”。n3.设计一个2位10进制计数器,每秒加1,在LED上显示。41

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服