04.项目四 键盘设计与实现.ppt
《04.项目四 键盘设计与实现.ppt》由会员分享,可在线阅读,更多相关《04.项目四 键盘设计与实现.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目四 键盘设计与实现单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现教学目的n掌握键盘的接口方法和编程方法掌握键盘的接口方法和编程方法。n了解中断的基本概念和功能。了解中断的基本概念和功能。n掌握掌握5151单片机中断系统的结构和控制方式。单片机中断系统的结构和控制方式。n掌握中断系统的中断处理过程。掌握中断系统的中断处理过程。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现模块九 独立式键盘设计与实现 n n 使用 使用AT89S52 AT89S52单片机,设计一个具有 单片机,设计一个具有8 8个按键的独立式键 个按键的独立式键盘,每个按键对应一个
2、发光二极管。功能要求:无键按下 盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为 时,键盘输出全为“1”1”,发光二极管全部熄灭;有键按,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。下时,其所对应发光二极管点亮。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现认识键盘u键盘是键盘是单片机应用系统中人机交流不可缺少的单片机应用系统中人机交流不可缺少的输输入设备入设备。u键盘由一组规则排列的按键组成,一个按键实际键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。键盘通常使用上是一个开关元件。键盘通常使用机械触点式按机械触点式按键开关键开关
3、,其主要功能是把机械上的通断转换为电,其主要功能是把机械上的通断转换为电气上的逻辑关系气上的逻辑关系(1(1和和0)0)。u常见的种类有:常见的种类有:查询(独立)式键盘 查询(独立)式键盘 矩阵式键盘 矩阵式键盘 单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现键盘分类 n按键按照结构原理可分为两类按键按照结构原理可分为两类n n触点式开关按键 触点式开关按键,如机械式开关、导电橡胶式开关等;,如机械式开关、导电橡胶式开关等;n n无触点开关按键 无触点开关按键,如电气式按键,磁感应按键等。前,如电气式按键,磁感应按键等。前者造价低,后者寿命长。按键按照接口原理可分为两
4、者造价低,后者寿命长。按键按照接口原理可分为两类 类n按键按照接口原理可分为两类按键按照接口原理可分为两类 n n编码键盘 编码键盘,主要是用硬件来实现对按键的识别,硬件,主要是用硬件来实现对按键的识别,硬件结构复杂;结构复杂;n n非编码键盘 非编码键盘,主要是由软件来实现按键的定义与识别,主要是由软件来实现按键的定义与识别,硬件结构简单,软件编程量大。硬件结构简单,软件编程量大。n这里我们主要介绍单片机中常用的触点式开关按这里我们主要介绍单片机中常用的触点式开关按键、非编码键盘。键、非编码键盘。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现独立式键盘电路u独立式键盘电
5、路设计时,每个按键的一端与独立式键盘电路设计时,每个按键的一端与P0P0口口的一个引脚相连,另一端接地。的一个引脚相连,另一端接地。u无键按下时,无键按下时,P0P0的的88个个I/OI/O口均通过电阻接高电平,口均通过电阻接高电平,信息为信息为“1”1”,键盘输出全为,键盘输出全为“1”1”发光二极管全发光二极管全部熄灭。部熄灭。u有键按下,将使对应的有键按下,将使对应的I/OI/O口通过该键接地,信息口通过该键接地,信息为为“0”0”,对应发光二极管点亮。,对应发光二极管点亮。uCPUCPU可以通过可以通过检测检测P0P0的的88个个I/OI/O口线哪个是口线哪个是“0”0”就可以识别是否
6、有键按下就可以识别是否有键按下,并能识别出是哪一个,并能识别出是哪一个键按下。键按下。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现独立式键盘程序u程序要判断是否有程序要判断是否有22个或个或22个以上的键盘同时按下,个以上的键盘同时按下,以免键盘分析错误。以免键盘分析错误。u独立式键盘程序独立式键盘程序u假设假设88个按键分别为个按键分别为1818,试一试能否用数码管显,试一试能否用数码管显示按下的按键。示按下的按键。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现键盘设计应注意的问题u u 机械式按键在按下或释放时,机械式按键在按下或释放时,由于机
7、械弹性作用的影响,由于机械弹性作用的影响,通常伴随有一定时间的触点 通常伴随有一定时间的触点机械抖动,然后其触点才稳 机械抖动,然后其触点才稳定下来。定下来。u u 其抖动过程如右图所示,抖 其抖动过程如右图所示,抖动时间的长短与开关的机械 动时间的长短与开关的机械特性有关,一般为 特性有关,一般为5 5 10ms 10ms。u u 若有抖动,按键按下会被错 若有抖动,按键按下会被错误地认为是多次操作。误地认为是多次操作。按键触点的机械抖动单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现防抖动措施u为了克服按键触点机械抖动所致的检测误判,必为了克服按键触点机械抖动所致的检测
8、误判,必须采取去抖动措施,可从硬件、软件两方面予以须采取去抖动措施,可从硬件、软件两方面予以考虑。考虑。键数较少时,键数较少时,采用硬件去抖 采用硬件去抖;键数较多时,键数较多时,采用软件去抖 采用软件去抖。软件上采取的措施是在软件上采取的措施是在检测到有按键按下检测到有按键按下时,时,执执行一个行一个10ms10ms左右左右(具体时间应视所使用的按键进具体时间应视所使用的按键进行调整行调整)的延时程序,再确认该键电平是否的延时程序,再确认该键电平是否仍保持仍保持闭合状态闭合状态电平,若仍保持闭合状态电平,电平,若仍保持闭合状态电平,则确认则确认该键处于闭合状态,该键处于闭合状态,从而消除抖动
9、的影响。从而消除抖动的影响。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现软件去抖 n在检测到有按键按下时在检测到有按键按下时n n执行一个 执行一个10ms 10ms左右(具体时 左右(具体时间应视所使用的按键进行调 间应视所使用的按键进行调整)的延时程序后;整)的延时程序后;n n再确认该键电平是否仍保持 再确认该键电平是否仍保持闭合状态电平,若仍保持闭 闭合状态电平,若仍保持闭合状态电平,则确认该键是 合状态电平,则确认该键是处于闭合状态。处于闭合状态。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现技能训练4-1n一键多功能按键识别设计与实现一
10、键多功能按键识别设计与实现n n 按键接在 按键接在P3.0 P3.0 管脚上,在 管脚上,在AT89S52 AT89S52 单片机的 单片机的P1 P1 端口接有 端口接有四个发光二极管。四个发光二极管。n n 上电的时候,接在 上电的时候,接在P1.0 P1.0 管脚上的发光二极管 管脚上的发光二极管D1 D1 在闪烁;在闪烁;n n 当第一次按下按键的时候,接在 当第一次按下按键的时候,接在P1.1 P1.1 管脚上的发光二极 管脚上的发光二极管 管D2 D2 在闪烁;在闪烁;n n 再按下按键的时候,接在 再按下按键的时候,接在P1.2 P1.2 管脚上的发光二极管 管脚上的发光二极管
11、D3 D3在闪烁,再按下按键的时候,接在 在闪烁,再按下按键的时候,接在P1.3 P1.3 管脚上的发光 管脚上的发光二极管 二极管D4 D4 在闪烁,再按下按键的时候,又轮到 在闪烁,再按下按键的时候,又轮到D1 D1 在闪 在闪烁了,如此轮流下去。烁了,如此轮流下去。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现一键多功能按键识别电路设计 单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现一键多功能按键识别程序设计 n n 对于要通过一个按键来识别每种不同的功能,我们给 对于要通过一个按键来识别每种不同的功能,我们给每个 每个不同的功能模块用不同的
12、不同的功能模块用不同的ID ID号标识 号标识,这样,每按下一次按,这样,每按下一次按键,键,ID ID 的值是不相同的,所以单片机就很容易识别不同 的值是不相同的,所以单片机就很容易识别不同功能的身份了。功能的身份了。n n 从上面的要求我们可以看出,从上面的要求我们可以看出,D1 D1到 到D4 D4发光二极管在每个时 发光二极管在每个时刻的闪烁的时间是受按键来控制,我们给 刻的闪烁的时间是受按键来控制,我们给D1 D1到 到D4 D4闪烁的时 闪烁的时段,定义出不同的 段,定义出不同的ID ID号 号:n n D1 D1在闪烁时,在闪烁时,ID ID 0 0;n n D2 D2在闪烁时,
13、在闪烁时,ID ID 1 1;n n D3 D3在闪烁时,在闪烁时,ID ID 2 2;n n D4 D4在闪烁时,在闪烁时,ID ID 3 3;n n 很显然,只要每次按下按键时,分别给出不同的 很显然,只要每次按下按键时,分别给出不同的ID ID号我们 号我们就能够完成上面的任务了。就能够完成上面的任务了。n n 一键多功能按键识别程序 一键多功能按键识别程序单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现矩阵式键盘设计与实现u4X44X4小键盘,小键盘,1616个键分别对应个键分别对应0909、AFAF;u有键按下,数码管显示;有键按下,数码管显示;u无键按下,数码管
14、无显示;无键按下,数码管无显示;u通过输出的列码和读取的行码来判断按下什么键;通过输出的列码和读取的行码来判断按下什么键;u有键按下,要有一定的延时,防止由于键盘抖动有键按下,要有一定的延时,防止由于键盘抖动而引起误操作。而引起误操作。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现矩阵式键盘电路单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现键盘的结构与原理u u 矩阵式键盘 矩阵式键盘 单片机系统中,若使用按键较多时,通常采用矩阵式键盘,单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。由图可知,一个 其结构如下图所示。由图可知,
15、一个44 44的行、列结构,可 的行、列结构,可以构成一个含有 以构成一个含有16 16个按键的键盘,节省了很多 个按键的键盘,节省了很多I/O I/O口。口。u u 控制方式:控制方式:先判断是否有键按下 先判断是否有键按下。如有,如有,再判断哪一键按下 再判断哪一键按下,并,并得到 得到 键码值 键码值,然后根据键码值,然后根据键码值转向不同 转向不同 的功能程序 的功能程序。u u 最常用的识别方法是 最常用的识别方法是键盘扫描法 键盘扫描法。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现判断按键按下的方法 n判断是否有键按下的方法是:判断是否有键按下的方法是:n
16、n向所有的列输出口线输出低电平 向所有的列输出口线输出低电平(不能为高电平,因(不能为高电平,因为若为高电平,按键按下与否都不会引起行线电平的 为若为高电平,按键按下与否都不会引起行线电平的变化),变化),然后将行线的电平状态读入 然后将行线的电平状态读入。n n若无键按下,所有的 若无键按下,所有的行线仍保持高电平 行线仍保持高电平状态;状态;n n若有键按下,行线中 若有键按下,行线中至少应有一条线为低电平 至少应有一条线为低电平。n n例如:第 例如:第2 2行与第 行与第2 2列交叉点的键被按下,则第 列交叉点的键被按下,则第2 2行与第 行与第2 2列导通,第 列导通,第2 2行电平
17、被拉低,读入的行信号就为低电 行电平被拉低,读入的行信号就为低电平,表示有键按下。平,表示有键按下。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现识别按键的方法 n n 按键识别的扫描方法:按键识别的扫描方法:n n 往列线上按顺序一列一列的送出低电平。往列线上按顺序一列一列的送出低电平。n n 先送 先送第 第0 0列为低电平,其他列为高电平 列为低电平,其他列为高电平,读入的行的电平状态就表,读入的行的电平状态就表明了第 明了第0 0列的 列的4 4个键的情况,若读入的行值全为高电平,则表示无 个键的情况,若读入的行值全为高电平,则表示无键按下;键按下;n n 再送
18、再送第 第1 1列为低电平,其他列为高电平 列为低电平,其他列为高电平,读入的行的电平状态则显,读入的行的电平状态则显示了该行上的 示了该行上的4 4个按键的情况;个按键的情况;n n 依次 依次轮流给各列送出低电平 轮流给各列送出低电平,直至,直至4 4列全部送完,再从第 列全部送完,再从第0 0列开始,列开始,依此循环。依此循环。n n 采用键盘扫描,我们再来观察第 采用键盘扫描,我们再来观察第2 2行与第 行与第2 2列交叉点的键按 列交叉点的键按下时的判断过程,当第 下时的判断过程,当第2 2列送出低电平时,读第 列送出低电平时,读第2 2行为低电 行为低电平,而其他列送出低电平时,读
19、第 平,而其他列送出低电平时,读第2 2行却为高电平,由此 行却为高电平,由此即可断定按下的键应是第 即可断定按下的键应是第2 2行与第 行与第2 2列交叉点的键。列交叉点的键。单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现键盘扫描程序具体实现方法 n判断有无键按下判断有无键按下n去除按键的抖动去除按键的抖动n求按键的键值求按键的键值n判断闭合键是否释放判断闭合键是否释放 单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现判断有无键按下nP0.4P0.4P0.7P0.7输出输出00,然后读,然后读P0P0口;口;n若低若低44位位P0.0P0.0P0.3
20、P0.3全为全为11,则键盘上没有键按下;,则键盘上没有键按下;n若若P0.0P0.0P0.3P0.3不全为不全为11,则有键按下。,则有键按下。1.while(tmpwhile(tmp=0 x0f)=0 x0f)/循环判断是否有键按下循环判断是否有键按下2.3.P0=0 x0f;P0=0 x0f;/所有列输出低电平所有列输出低电平4.tmptmp=P0;=P0;/读行信号读行信号5.单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现去除按键的抖动n当判断到键盘上有键按下后;当判断到键盘上有键按下后;n延时一段时间再判断键盘的状态;延时一段时间再判断键盘的状态;n若仍为有键按
21、下状态,则认为有一个键按下,否若仍为有键按下状态,则认为有一个键按下,否则当作按键抖动来处理。则当作按键抖动来处理。1.delay10ms();delay10ms();/延时延时10ms10ms去抖去抖2.P0=0 x0f;P0=0 x0f;/所有列输出低电平所有列输出低电平3.tmptmp=P0;=P0;/再次读键盘状态再次读键盘状态4.if(tmpif(tmp=0 x0f)continue;=0 x0f)continue;/如果无键按如果无键按下则认为是按键抖动,重新扫描键盘下则认为是按键抖动,重新扫描键盘 单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现求按键的键值n
22、对键盘的列线进行扫描,对键盘的列线进行扫描,P0.4P0.4P0.7P0.7循环输出循环输出11101110、11011101、10111011和和01110111,依依次读次读P0P0口,若低口,若低44位位全为全为11,则断定该列上没有键按下;,则断定该列上没有键按下;n否则,该列上就有键按下,并且就是行线为否则,该列上就有键按下,并且就是行线为00,列,列线为线为00的交叉点,行号和列号按公式:的交叉点,行号和列号按公式:rolrol*4+col*4+col 计算得到按下键的键值。计算得到按下键的键值。n例如,例如,P0.4P0.4P0.7P0.7输出输出11011101时,时,P0P0
23、口的低四位读口的低四位读入的值为入的值为10111011,不全为,不全为11,就可以断定有键按下,就可以断定有键按下,并且是并且是第第22行行和和第第11列列交叉点的键。于是,该键的交叉点的键。于是,该键的键值键值=224+4+11=9=9。按照相同的方法可以得到所有键。按照相同的方法可以得到所有键的键值。如:的键值。如:return(rolreturn(rol*4+col);*4+col);单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现判断闭合键是否释放n n 按键闭合一次只能进行一次功能操作,因此,等按键释 按键闭合一次只能进行一次功能操作,因此,等按键释放后才能根据
24、键号执行相应的功能键操作。放后才能根据键号执行相应的功能键操作。1.1.key=key=scan_key scan_key();();/有键按下,调用键盘扫描程序,有键按下,调用键盘扫描程序,并把键值送 并把键值送key key 2.2.while(k while(k!=-1)!=-1)/判断闭合键是否释放,直到其释放 判断闭合键是否释放,直到其释放3.3.4.4.delay10ms();delay10ms();5.5.k=k=scan_key scan_key();();6.6.单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现矩阵式键盘程序u程序要判断是否有程序要判断是否
25、有22个或个或22个以上的键盘同时按下,个以上的键盘同时按下,以免键盘分析错误。以免键盘分析错误。u1616个按键分别为个按键分别为0909、AFAF,用数码管显示按下,用数码管显示按下的按键。的按键。u矩阵式键盘程序矩阵式键盘程序单片机应用技术项目教程(C语言版)电气工程系 项目四 键盘设计与实现工作模块11 中断方式矩阵键盘 u u独立式键盘识别键盘比较容易,编程也比较简单,很适合 独立式键盘识别键盘比较容易,编程也比较简单,很适合于功能键较少的单片机应用系统。于功能键较少的单片机应用系统。u u独立式键盘 独立式键盘每一个按键上用一根口线 每一个按键上用一根口线,当按键较多时,当按键较多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04.项目四 键盘设计与实现 04. 项目 键盘 设计 实现
限制150内