单片机应用技术项目教程项目二任务5.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目二 键盘与显示系统设计 任务5 4*4键盘系统设计 任务内容 组装一个小型单片机系统,外接16个按键(代表0~F),以及1位数码管显示器,要求实时显示当前按下的按键值。 学习目标 掌握独立键盘和矩阵键盘的结构与接口电路设计 了解按键抖动的原因,掌握解决方法 掌握矩阵键盘检测方法 掌握多分支结构的编程技巧 知 识 点 知识点一 非编码键盘概述 知识点二 按键抖动与消抖 知识点三 线性非编码键盘的识别与处理 知识点四 矩阵非编码键盘的识别与处理 知识点1 非编码键盘概述 键盘是单片机应用系统中最常用的输入设备,通过键盘输入数据或命令,可以实现简单的人机对话。 键盘有编码键盘和非编码键盘之分。 1. 编码键盘 编码键盘除了键开关外,还需去键抖动电路、防串键保护电路以及专门的、用于识别闭合键并产生键代码的集成电路(如8255、8279等)。 编码键盘的优点是所需软件简短;缺点是硬件电路比较复杂,成本较高。 知识点1 非编码键盘概述 2.非编码键盘 非编码键盘仅由键开关组成,按键识别、键代码的产生以及去抖动等功能均由软件编程完成。 非编码键盘的优点是电路简单、成本低;缺点是软件编程较复杂。目前,单片机应用系统中普遍采用非编码键盘。 按照键开关的排列形式,非编码键盘又分为线性非编码键盘和矩阵非编码键盘两种。 知识点1 非编码键盘概述 (1)线性非编码键盘 线性非编码键盘的键开关(K1、K2、K3、K4)通常排成一行或一列,一端连接在单片机I/O口的引脚上,同时经上拉电阻接至+5V电源,另一端则串接在一起作为公共接地端。 线行非编码键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O端口,故这种形式适用于按键数量较少的场合。 图2.39 线性非编码键盘 知识点1 非编码键盘概述 (2)矩阵非编码键盘 矩阵非编码键盘又称行列式非编码键盘,I/O端分为行线和列线接入端,按键跨接在行线和列线上。按键按下时,行线与列线相通。图2.40所示是一个4×3的矩阵非编码键盘,共有4根行线和3根列线,可连接12个按键(按键数=行数×列数)。与线性非编码键盘相比,12个按键只占用7个I/O口,显然在按键数量较多时,矩阵非编码较线性非编码键盘可以节省很多I/O接口。 图2.40 矩阵非编码键盘 知识点2 按键抖动与消抖 按键是控制系统中最常见的输入设备,根据按键硬件电路的连接,按键的闭合和打开将在单片机的输入引脚上分别加入高、低电平,这样CPU就可以根据读入引脚的信号来判断按键的状态。 知识点2 按键抖动与消抖 实际状况下,按键的合断都存在一个抖动的暂态过程,如图2.41所示。这种抖动的过程大约5~10ms,人的肉眼是觉察不到的,但对高速CPU来说,可能产生误处理。为了保证每按一次键只作一次处理,必须采取措施来消除键的抖动。 图2.41 键合断时的电压抖动 知识点2 按键抖动与消抖 消除抖动的措施有两种:硬件消抖和软件消抖。 1.硬件消抖 硬件消抖可以采用简单的R-S触发器或单稳电路构成,如图2.42所示,但硬件复杂,在单片机控制系统中并不常用。 图2.42 硬件消抖电路 知识点2 按键抖动与消抖 2.软件消抖 软件消抖是用延时来躲避暂态抖动过程,由于按键抖动过程仅持续5~10ms,因此在控制软件中执行一段大约5~10ms的延时程序后再读入按键的状态,不需要硬件开销,在单片机系统设计中经常采用。 具体方法为:首先读取I/O口状态并第1次判断有无键被按下,若有键被按下则等待5~10ms,然后再读取I/O口状态并第2次判断有无键被按下,若仍然有键被按下则说明某个按键处于稳定的闭合状态;若第2次判断时无键被按下,则认为第1次是按键抖动引起的无效闭合。 知识点3 线性非编码键盘的识别与处理 线性非编码键盘每个按键的一端接到单片机的I/O口,另一端接地。当无按键被按下时,I/O引脚为高电平;当按下某个按键时,对应的I/O口引脚为低电平。 编程时只要采用if语句不断查询I/O口引脚状态,若某I/O口为低电平,则延时5-10mS,再用if语句判断一次,若还为低电平,就执行对应按键的功能。 为了确保按键每按一次执行一次操作,在判断按键按下后增加一条while语句,等待I/O口变高电平,即等待按键释放。 if (K1==0) { delay1ms(5); if (K1==0)

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档