基于C语言的MCS-51单片机教程 课件 2任务3:键盘应用_第1页
基于C语言的MCS-51单片机教程 课件 2任务3:键盘应用_第2页
基于C语言的MCS-51单片机教程 课件 2任务3:键盘应用_第3页
基于C语言的MCS-51单片机教程 课件 2任务3:键盘应用_第4页
基于C语言的MCS-51单片机教程 课件 2任务3:键盘应用_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

任务3:键盘的应用1、键盘的分类键盘分编码键盘和非编码键盘。在单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。非编码键盘有分为:独立式非编码键盘和行列式非编码键盘。2、键盘的结构常用的机械式按键,按键是4脚封装,内部2脚相连,图(b)是按键的背面图,用万用表测试4只引脚的通断。1号和2号引脚是连通的,3号和4号引脚是连通的。硬件连接时注意引出按键4个引脚中不相通的2个引脚,如按键的对角上的两个引脚。

按键与单片机引脚相连后,按键按下或闭合会影响单片机引脚状态,读取引脚状态,推断按键是否按下,从而达到输入信息的目的。3、独立式按键

独立式按键是指各按键相互独立地接通一条输入数据线。当任何一个键按下时,与之相连的输入数据线即可读入数据0,而没有按下时读入1。独立式键盘的电路简单,易于编程,但占用的IO口线较多,当需要较多按键时可能产生IO资源紧张问题。独立按键的三种接法的分析1)当按键闭合时,单片机引脚接地,当按键断开时,单片机引脚不能稳定工作,因为处于高阻态,易受干扰。独立按键的三种接法的分析2)当按键闭合时,单片机引脚接地,当按键断开时,单片机引脚被上拉电阻拉为高电平,按键闭合或按下,单片机引脚的电平稳定,是一种标准的接法。独立按键的三种接法的分析3)当按键断开时,单片机引脚接地,当按键闭合时,单片机引脚直接和电源相连,这种接法短路电流大,易烧毁单片机I/O口电路,是危险的连接方法。4、独立按键读取引脚状态的方法

软件方面如何读取引脚状态呢?有查询法和中断法。普遍采用查询法。查询法是CPU读取连接按键的单片机端口的电平状态,如果读取的是低电平,就确认该端口对应的按键已按下,如果读取的是高电平,就确认该端口对应的按键没按下。

提示:因为51系列单片机的端口是准双向口,在读引脚前,需要先对输入端口置1。

举例:读P1.0bits1;//定义位变量s1,保存按键通断状态P1_0=1;S1=P1_0;读P1:Unsignedcharsw;//定义字节变量

P1=0xff;Sw=P1;

5、按键的去抖由于机械触点的弹性作用,按键在闭合时不会马上稳定地接地,在断开时也不会立刻断开。通常在闭合和断开的瞬间都伴随有一定时间的触点机械抖动,如下图。抖动时间一般为5

10ms,在触点抖动期间检测按键的通与断状态,可能导致判断出错。因此,为保证CPU对按键的断开和闭合做出正确的判断,就必须消除抖动。按键的去抖—硬件方法在键数较少时可用硬件方法消除键抖动。如图所示的RS触发器为常用的硬件去抖。图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。按键的去抖—硬件方法利用电容的放电延时,采用按键并联电容法,也可以实现消抖。按键的去抖—软件延时法

(a)检测按键(b)释放按键按键去抖流程图软件去抖的原理一:前沿消抖法。读按键状态,判断有键按下,延时10ms,再次读按键状态,有键按下,才确认是哪一个按键,从而消除前沿的抖动。流程如下图(a)。按键的去抖—软件延时法

软件去抖的原理二:在去抖时间内连续多次去读按键所在端口的状态,并与上一次进行对比,若状态改变,则重新初始化去抖时间。直到在去抖时间内,每次读到的口状态都一致时,我们才认为扫描到稳定的按键。流程如下图(C)。举例编写程序,识别图中的8个按键是哪一个键被按下,返回键的编号。

硬件电路按键编号K0K1K2K3K4K5K6K7P1二进制1111111011111101111110111111011111101111110111111011111101111111十六进制0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f/****************获取按键状态的参考程序片段*************///**********按键扫描程序

unsignedcharkeyscan(){unsignedcharsw;//定义变量sw,暂存P1状态的变量

unsignedcharkey//定义变量key,暂存按下键的编号

P1=0xff;//预先对输入端口置1

sw=P1;

switch(sw){ case0xfe:key=0;break; case0xfd:key=1;break; case0xfb:key=2;break; case0xf7:key=3;break; case0xef:key=4;break; case0xdf:key=5;break; case0xbf:key=6;break; case0x7f:key=7;break;} returnkey;//获得按键编号}6、矩阵式按键特点:占用IO口线较少,但软件将较为复杂。判断键盘的位置—常用方法键盘扫描法和反线法。行列式键盘键盘扫描法步骤:第一步:判别有无按键按下。其方法:向所有行给低电平0,所有的列给高电平1。读取此时列线I/O状态,如果不是全高,则有按键按下。第二步:有按键按下,则下一步就是查找按键所在位置,具体步骤:向第0行给低电平0,其它给高电平1,读取所有列的电平状态。如果所有列电平均为高电平,则说明按下的按键不在第0列。反之则找到了该按键。依次对第1列、第2列、第3列如此操作,直到找到按下的按键为止。第三步:对按键进行编码。反线法步骤:①判断哪一列有键压下写端口(0xf0):行线电平=0;列线电平=1。读端口进行判断:若P3=0xf0→没有按键压下。若P3≠0xf0→某列有键压下→则将读取的值赋值给K1。②判断哪一行有键压下写端口(0x0f):行线电平=1;列线电平=0。读端口进行判断:若P3=0x0f→没有按键压下;若P3≠0x0f→某行有键压下→K2。③将K1与K2相“或”并存于K2(形成键值)——闭合键所在行、列的状态均为0,其余皆为1。

第一列第二列第三列第四列第一行

ee de be 7e第二行

ed dd

bd 7d第三行

eb db bb 7b第四行

e7 d7 b7

温馨提示

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

评论

0/150

提交评论