- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机应用技术项目式教程—基于Proteus和KeilCSINGLE-CHIPCOMPUTERAPPLICATIONTECHNOLOGY
简易密码锁的设计独立式键盘原理01行列键盘原理02简易密码锁的设计03知识要点05
简易密码锁的设计能够使用C语言实现按键去抖01能够实现独立式按键扫描编程0203能够应用状态机编程04学习要求05实现简易密码锁的设计能够实现行列式按键扫描编程
7.1独立式键盘原理如果应用系统仅需要几个键,则选用独立键盘,一般采用查询方式识别按键的状态。此外,由于按键的机械特性会产生抖动现象,在按键的处理中还要考虑去抖动的问题。独立式键盘可采用如图7.1所示的按键输入电路。按键直接用I/O接口线构成单个按键电路。
7.1独立式键盘原理每个独立式按键单独占有一根I/O接口线,每根I/O接口线的工作状态不影响其他I/O接口线的工作状态,属于最简单的一种按键结构。当某一个按键Sn(n=0~7)闭合时,P1.n输入为低电平,释放时P1.n输入为高电平。按键为输入开关量,所以P1口事先写入“1”,当无键按下时,P1.n端由内部上拉电阻上拉为高电平,而有键按下时,P1.n端与地相连,输入电压值为低电平。若为P0口,内部无上拉电阻,需外加上拉电阻。
7.1独立式键盘原理实际上,在按下一次Sn时,机械按键的簧片存在着轻微的弹跳现象,P1.n的输入波形在键闭合和释放过程中存在抖动现象,呈现一串抖动脉冲波(如图7.2所示),其时间长短与按键的机械特性有关,一般为5~20ms。为了确保CPU对按键的一次闭合仅做一次处理,必须去除抖动。按键去抖主要有软件去抖和硬件去抖两种方法,目前在单片机应用系统中,主要采用软件去抖方法,本书也只介绍软件去抖方法。
1.按键扫描(不支持连续按下)编程不支持连续按下按键扫描编程的算法如下:
算法说明:1)定义静态局部变量key_up,表示按键的状态,1时表示弹起状态,这里不能用动态的局部变量,可以使用全局变量。2)在按键弹起状态检测按键是否按下。3)如果按下,延时10ms。4)设置为按下状态,检测是否按下。5)如果按下,返回键值(对于独立按键,键值可以自定义),如果没按下,设置为弹起状态。
2.按键扫描(支持连续按下)编程支持连续按下按键扫描编程的算法如下:算法说明:1)检测按键是否按下。2)如果按下,延时10ms。3)检测是否按下。4)如果按下,返回键值(对于独立按键,键值可以自定义),如果没按下,返回无效值。对于这两种情况可以混合为一个程序。
3.按键扫描(两种模式合二为一)编程按键扫描(两种模式合二为一)编程的算法如下:mode=1时为支持连续按下,mode=0时为不支持连续按下。
4.应用案例(1)设计要求设计加1、减1功能键各1个。当按加1、减1功能键时,187项目7简易密码锁的设计。计数器做加1或减1操作,计数器值送4位LED数码管显示。
(2)仿真原理图仿真原理图如图7.3所示,P0口接数码管a~g段,P2.0~P2.3接数码管公共端,数码管为共阳极数码管,P3.0接“+”键,P3.1接“-”键。
(3)软件代码实现代码如下:
7.2行列式键盘原理7.2.1设计原理当按键数较多时,独立式按键电路占用较多的I/O接口线,因此通常多采用行列式(也称矩阵式)键盘电路。图7.4表示一个5×5的行列式键盘阵列。键盘中共有25个键,对每个键都进行编号,键号按从上到下、从左到右的规律,分别为0,1,2,…,24。在应用系统中,键盘上的按键可按需要定义其功能。
X0、X1、X2、X3、X4分别代表第0行、第1行、第2行、第3行、第4行。Y0、Y1、Y2、Y3、Y4分别代表第0列、第1列、第2列、第3列、第4列。在不需要外接并行扩展芯片的情况下,代表各个行的5根引出线分别和CPU的通用I/O接口P1的5个引脚连接(这5个引脚是单向输入,芯片内无上拉电阻,需外加上拉电阻),代表各个列的5根线分别和P2的5个引脚连接。矩阵键盘工作时首先要确定有无按键按下,其次确定键值、键码,分述如下。
1.有无按键的确认由行线或列线
文档评论(0)