项目7 单片机的按键_第1页
项目7 单片机的按键_第2页
项目7 单片机的按键_第3页
项目7 单片机的按键_第4页
项目7 单片机的按键_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

项目7单片机的按键项目导读:

单片机作为计算机的一类,同样有输入输出(I/O)系统。按键是计算机系统外设常见的输入设备。在单片机系统中,按键数目一般比较少,常采用独立按键方式或矩阵按键方式实现系统输入功能。本项目首先介绍机械按键相关知识,再分析按键与单片机接口的连接,最后通过典型程序代码段展示单片机按键功能。任务7.1独立按键输入控制LED状态的设计与仿真任务描述:

本任务要求利用AT89C51单片机的I/O接口连接4个独立按键和4位LED,使独立按键动作被LED的状态反映出来。用Keil、Proteus等开发平台进行系统搭建、编程、仿真,实现独立按键控制LED亮灭状态的功能。

键盘是单片机应用系统中常用的输入设备。

在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址、数据,实现简单的人机交互。7.1.1键盘的工作原理

键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。按键开关结构和按键产生的波形如下图

所示。1.按键的识别

当按键未按下时,开关处于断开状态,向P1.1输入高电平;

当按键按下时,开关处于闭合状态,向P1.1输入低电平。

因此,可通过读入P1.1的高低电平状态来判断按键是否按下。2.按键的消抖

在单片机应用系统中,通常按键开关为机械式开关,由于机械触点的弹性作用,按键开关在闭合时往往不会马上稳定地接通,断开时也不会马上断开,因而在闭合和断开的瞬间都会伴随着一串抖动,其波形如下图所示。2.按键的消抖

按下键时产生的抖动称为前沿抖动,松开键时产生的抖动称为后沿抖动。如果不对抖动做处理,会出现按一次键而确认多次的情况,为确保按一次键只确认一次,必须消除按键抖动。

消除按键抖动通常有硬件消抖和软件消抖两种方法。硬件消抖是通过在按键输出电路上添加一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路实现。

由两个与非门组成的R-S触发器消抖电路如下图所示。

当未按下按键时,开关倒向下方,上面的与非门输入高电平,下面的与非门输入低电平,输出端输出高电平。

当按下按键时,开关倒向上方,上面的与非门输入低电平,下面的与非门输入高电平,由于R-S触发器的反馈作用,使输出端迅速地变为低电平,而不会产生抖动波形,而当按键松开时,输出端迅速地回到高电平而不会产生抖动波形。

经过图中的R-S触发器消抖后,输出端的信号就变为标准的矩形波。

软件消抖是利用延时程序消除抖动。

由于抖动时间都比较短,因此可以这样处理:当检测到有键被按下时,执行一段延时程序跳过抖动,再去检测,通过两次检测来识别一次按键,这样就可以消除前沿抖动的影响。

对于后沿抖动,由于在接收一个键位后,一般都要经过一定时间再去检测是否按键,这样就自然跳过后沿抖动时间而消除后沿抖动了。当然在第二次检测时有可能发现又没有键被按下,这是怎么回事呢?这种情况一般是线路受到外部电路干扰使输入端产生干扰脉冲,这时就认为键没有被按下。7.1.2独立式键盘与单片机的接口

独立式键盘就是各按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不会影响其他的I/O接口线。

因此,通过检测各I/O接口线的电平状态就可以很容易地判断出哪个按键被按下了。

7.1.2独立式键盘与单片机的接口

独立式键盘与单片机的接口如下图所示。

独立式键盘的电路配置灵活、简单。但每个按键要占用一根I/O接口线,在按键数量较多时,I/O接口线需求很大。故一般仅在按键数量不多时采用这种形式。任务7.2矩阵按键输入控制数码管显示的设计与仿真任务描述:

本任务要求利用AT89C52单片机的I/O接口连接16位矩阵按键,使矩阵按键动作控制数码管显示。用Keil、Proteus等开发平台进行系统搭建、编程、仿真,实现矩阵按键控制数码管数字的功能。7.2.1矩阵按键的结构

矩阵键盘又叫行列式键盘。

它用两组I/O接口线排列成行、列结构,一组设定为输入,另一组设定为输出,输入线要带上拉电阻器,键位设置在行、列线的交点上,按键的一端接行线,另一端接列线。

由4根行线和4根列线组成的4×4矩阵键盘如下图所示。

行线为输入,列线为输出,可管理4×4=16个键。矩阵键盘占用的I/O接口线数目少,图中4×4矩阵键盘总共只用了8根I/O接口线,比独立式键盘少了一半,而且键位越多,情况越明显。因此,在按键数量较多时,往往采用矩阵键盘。

矩阵键盘的处理一般需注意两个方面:键位的编码和键位的识别。1.键位的编码

矩阵键盘的编码通常有两种:二进制组合编码和顺序排列编码。

二进制组合编码如图所示,每一根行线有一个编码,每一根列线也有一个编码,行线的编码从下到上分别为1、2、4、8,列线的编码从右到左分别为1、2、4、8,每个键位的编码直接用该键位的行线编码和列线编码组合得到。1.键位的编码

图中4×4键盘从右到左、从下到上的键位编码分别是十六进制数11、12、14、18、21、22、24、28、41、42、44、48、81、82、84、88。这种编码过程简单,但得到的编码复杂、不连续,程序处理起来不方便。

顺序排列编码如图所示,每一行有一个行首码,每一列有一个列号,4行的行首码从下到上分别为0、4、8、12,4列的列号从右到左分别是0、1、2、3,每个键位的编码用行首码加列号得到,即编码=行首码+列号。

图中4×4键盘从右到左、从下到上的键位编码分别是十六进制数0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。这种编码虽然编码过程复杂,但得到的编码简单、连续,程序处理起来方便。

现在矩阵键盘一般都采用顺序排列编码。2.键位的识别

矩阵键盘键位的识别可分为两步:第一步是检测键盘上是否有键被按下;第二步是识别哪一个键被按下。

第一步,检测键盘上是否有键被按下的处理方法:将列线送入全扫描字,读入行线的状态来判别。

2.键位的识别

以图为例,其具体过程如下:P2口低4位输出都为低电平,然后读连接行线的P1口低4位(P1内部自带上拉电阻器),如果读入的内容都是高电平,说明没有键被按下,则不用做第二步;如果读入的内容不全为1,则说明有键被按下,再做第二步,识别是哪一个键被按下。

第二步,识别键盘中哪一个键被按下的处理方法:将列线逐列置成低电平,检查行输入状态,称为逐列扫描。

其具体过程如下:从P2.0开始,依次输出0,置对应的列线为低电平,其他列为高电平,然后从P1低4位读入行线状态。在扫描某列时,如果读入的行线全为1,则说明被按下的键不在此列;如果读入的行线不全为1,则被按下的键在此列,而且是该列与0电平行线相交的点上的键。

为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键被按下,就用该行的行首码加列号得到当前按键的编码。7.2.2矩阵键盘的工作方式

矩阵键盘常采用查询工作方式和中断工作方式。

查询工作方式是直接在主程

温馨提示

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

评论

0/150

提交评论