




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 AT89S51单片机与输入单片机与输入/ 输出外设的接口输出外设的接口 1内容概要内容概要 大多数单片机应用系统,都要配置输入外设和输出外设。大多数单片机应用系统,都要配置输入外设和输出外设。常见常见输入外设输入外设有键盘、有键盘、BCD码拨盘等;码拨盘等;输出外设输出外设有有LED数码数码管、管、LCD显示器、打印机等。本章介绍显示器、打印机等。本章介绍AT89S51单片机与各单片机与各种输入外设、输出外设的接口电路设计以及软件编程。种输入外设、输出外设的接口电路设计以及软件编程。 210.1 LED数码管显示器的接口设计数码管显示器的接口设计LED(Light Emitting
2、Diode)数码管应用非常普遍,由)数码管应用非常普遍,由发光二极管构成。发光二极管构成。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所示。厂家也所示。厂家也可根据用户的需要定做可根据用户的需要定做特殊字型的数特殊字型的数码管码管。本章均以本章均以“
4、8”字型的字型的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章接口技术基础102022-4-22在一个数码管上显示字符1第8章接口技术基础112022-4-22#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章接口技术基础122
7、022-4-22例例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 键盘开关及其行线波形 8031P1.0+5V键 按 下闭 合 稳 定前 沿 抖 动后 沿 抖 动释 放 稳 定键 释 放
10、第8章接口技术基础162022-4-22抖动的消除 按键的抖动人是察觉不到的,但会对按键的抖动人是察觉不到的,但会对高速运行的高速运行的 CPU产生干扰,进而产生误处产生干扰,进而产生误处理。为了保证按键闭合一次仅作一次键输理。为了保证按键闭合一次仅作一次键输入处理,必须采取措施消除抖动。入处理,必须采取措施消除抖动。 消除抖动的方法有两种:消除抖动的方法有两种:硬件消抖法硬件消抖法和软件消抖法。和软件消抖法。 第8章接口技术基础172022-4-221) 硬件消抖法硬件消抖法(了解了解)硬件消除抖动的方法是用简单的基本硬件消除抖动的方法是用简单的基本R-S触发器触发器或单稳态电路或或单稳态电
11、路或RC积分滤波电路构成去抖动按键电积分滤波电路构成去抖动按键电路。路。初始:初始:S接接A,A=0,所以,所以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章接口技术基础182022-4-222) 2) 软件消抖软件消抖(重点)(重点)软件消抖不需要增加硬件电路,而是在第一次软件消抖不需要增加硬件电路,而是在第一次检测到按键按下后,执行一段延时程序检测到按键按下后,执行一段延时程序
12、( (如如 1020ms)1020ms),然后再次检测,确认该按键是否仍保持,然后再次检测,确认该按键是否仍保持闭合状态,如果是则认为是真正有按键按下,否则闭合状态,如果是则认为是真正有按键按下,否则认为是干扰,不预理会。这样就可以避开抖动,以认为是干扰,不预理会。这样就可以避开抖动,以免发生误操作。免发生误操作。第8章接口技术基础192022-4-2210.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所示的独立式键盘,采用查询方所示的独立式键盘,采用查询方式对键盘的键值读取。参考
15、程序如下:式对键盘的键值读取。参考程序如下:#include#includevoid main(void)void main(void) unsigned 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: ; ca
16、se 2: ; / /* *处理处理1 1号键号键* */ / break;break;case 4: ; case 4: ; / /* *处理处理2 2号键号键* */ / break;break;case 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: ; / /* *
17、处理处理6 6号键号键* */ /break;break;case 128: ; case 128: ; / /* *处理处理7 7号键号键* */ /default:default:break; break; / /* *无按下键处理无按下键处理* */ / while(1)while(1) 26(2)中断扫描方式的独立式键盘程序)中断扫描方式的独立式键盘程序为进一步提高扫描键盘工作效率,可采用中断扫描方式,为进一步提高扫描键盘工作效率,可采用中断扫描方式,如如图图10-9。键盘只有在键盘有按键按下时,才进行处理,所。键盘只有在键盘有按键按下时,才进行处理,所以实时性强,效率高。以实时性强,
18、效率高。当键盘中有按键按下时,当键盘中有按键按下时,74LS30的输出经过的输出经过74LS04反相反相后向单片机的中断请求输入引脚后向单片机的中断请求输入引脚INT0*发出中断请求信号,发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别单片机响应中断,执行键盘扫描程序中断服务子程序,识别出按下按键的键号,并跳向该按键的处理程序。出按下按键的键号,并跳向该按键的处理程序。 2728图10-9 独立式键盘的接口电路【例例10-4】键盘接口见键盘接口见图图10-9,编写中断方式的独立式键,编写中断方式的独立式键盘处理程序。程序如下。盘处理程序。程序如下。#include#inc
19、lude#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_value;uchar key_value;void delay_10ms(void);void delay_10ms(void);/ /* *延时延时10ms10ms函数函数* */ / 29void main(void)void main(void) IE
20、=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) /* *根据按键分支根据按键分支* */ / case 1: ;case 1: ;/ /* *处理处理.0.0号键号键* */ / break;break;case 2: ; case 2: ; / /* *处理处理1 1号键号键* */ / bre
21、ak;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: ; / /* *处理处理6 6号键号键* */ /break;break;case 12
22、8: ; 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
23、; / /* *设置中断标志设置中断标志* */ /P1=0 xff; P1=0 xff; / /* * P1 P1口锁存器置口锁存器置1 1* */ /key_value=P1; key_value=P1; / /* *读入读入P1P1口的状态口的状态* */ /delay_10ms(void); delay_10ms(void); / /* *延时延时10ms10ms* */ /reread_key=P1&0 x07; reread_key=P1&0 x07; / /* *再次读取再次读取P1P1口的状态口的状态* */ /if(key_value=reread_key)i
24、f(key_value=reread_key) key_flag=1; key_flag=1; / /* *设置中断标志为设置中断标志为1 1* */ / IE=0 x81; IE=0 x81; / /* *中断允许中断允许* */ / 322. 矩阵式键盘(自学)矩阵式键盘(自学)矩阵式(也称行列式)键盘用于按键数目较多场合,由行线矩阵式(也称行列式)键盘用于按键数目较多场合,由行线和列线组成,一组为行线,另一组为列线,按键位于行、列的和列线组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。如交叉点上。如图图10-10所示,一个所示,一个4 4的行、列结构可以构成一的行、列结构可以构
25、成一个个16个按键的键盘。在按键数目较多的场合,与独立式键盘相个按键的键盘。在按键数目较多的场合,与独立式键盘相比,要节省较多的比,要节省较多的I/O口线。口线。(1)查询方式的矩阵式键盘程序)查询方式的矩阵式键盘程序【例例10-5】对对图图10-10所示的矩阵式键盘,编写查询式的键所示的矩阵式键盘,编写查询式的键盘处理程序。盘处理程序。33图10-10 矩阵式键盘接口首先判键盘有无键按下,即把所有行线首先判键盘有无键按下,即把所有行线P1.0P1.3均置为均置为低电平,然后检查各列线的状态,若列线不全为高电平,则低电平,然后检查各列线的状态,若列线不全为高电平,则表示键盘中有键被按下;若所有
26、列线列均为高电平,说明键表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。盘中无键按下。在确认有键按下后,即可进入确定具体闭合键的过程。判在确认有键按下后,即可进入确定具体闭合键的过程。判断闭合键所在的位置,其方法是依次将行线置为低电平,在断闭合键所在的位置,其方法是依次将行线置为低电平,在逐行检查各列线的电平状态。若某列为低,则该列线与行线逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处的按键就是闭合的按键。判断有无键按下,以及按下交叉处的按键就是闭合的按键。判断有无键按下,以及按下键的位置的参考程序如下。键的位置的参考程序如下。 35#include#define
27、 uchar unsigned char#define uint unsigned intvoid main(void)uchar 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
28、=0 xf0;/*P1.0P1.3输出都为输出都为0,准备读列状态,准备读列状态*/if(P1&f0)!=0 xf0)/*如果如果P1.4P1.7不全为不全为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); /*判断是否为最后一行,若不是,继续扫判断是否为最后一行,若不是,继续扫描描*/
29、P1= code_h;/*P1口输出行扫描值口输出行扫描值*/if(P1&f0)!=0 xf0);/*如果如果P1.4P1.7不全为不全为1,该行有键按下,该行有键按下*/code_l=(P1&0 xf0|0 x0f); /*保留保留P1高高4位,低位,低4位变为位变为1,作为列值,作为列值*/37return(code_h)+(code_l); /*键扫描值键扫描值=行扫描值行扫描值+列扫描值,列扫描值, 返回主程序返回主程序*/else/*若该行无键按下,往下执行若该行无键按下,往下执行*/code_h=(code_h1)|0 x01; /*行扫描值左移,扫描下一行行扫描值左移,扫描下一行*/ return(0) ; /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创意美术绘画蚊子课件
- 部编版四年级语文下册《语文园地八》精美课件
- 2025国际电子商务平台建设合同
- 学前儿童集合概念的发展与教育
- 2025供应商合同调整协议书
- 信息化与护理安全
- 2025水利工程地勘合同
- 2025年苏州房屋租赁合同(中介版)
- 2025北师大版一年级下册数学期中考试卷附答案
- 网络舆情监测大学课件
- (高清版)DB1331∕T 072-2024 《雄安新区高品质饮用水工程技术规程》
- 2025年金丽衢十二校高三语文第二次模拟联考试卷附答案解析
- 广东省深圳市福田区2023-2024学年六年级下学期英语期中试卷(含答案)
- 2023-2024学年广东省广州七中七年级(下)期中数学试卷(含答案)
- 2025年北京城市排水集团有限责任公司招聘笔试参考题库含答案解析
- 课件-2025年春季学期 形势与政策 第一讲-加快建设社会主义文化强国
- 2025年山东惠民县农业投资发展限公司招聘10人历年高频重点提升(共500题)附带答案详解
- 大学美育知到智慧树章节测试课后答案2024年秋长春工业大学
- 《基于嵌入式Linux的农业信息采集系统设计与研究》
- 外科创伤处理-清创术(外科课件)
- 小型手推式除雪机毕业设计说明书(有全套CAD图)
评论
0/150
提交评论