情境五 应用矩阵键盘教学提纲

上传人:yuzo****123 文档编号:141678652 上传时间:2020-08-11 格式:PPT 页数:31 大小:828.50KB
返回 下载 相关 举报
情境五 应用矩阵键盘教学提纲_第1页
第1页 / 共31页
情境五 应用矩阵键盘教学提纲_第2页
第2页 / 共31页
情境五 应用矩阵键盘教学提纲_第3页
第3页 / 共31页
情境五 应用矩阵键盘教学提纲_第4页
第4页 / 共31页
情境五 应用矩阵键盘教学提纲_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《情境五 应用矩阵键盘教学提纲》由会员分享,可在线阅读,更多相关《情境五 应用矩阵键盘教学提纲(31页珍藏版)》请在金锄头文库上搜索。

1、单片机学习领域情景6 应用矩阵键盘,请分组单步执行数码控制程序 从每组中请一个同学回答数码控制程序中所用指令的作用 通过程序执行过程进一步讲解子程序调用和堆栈的概念 重点堆栈的操作过程,单片机与键盘接口,单片机与键盘接口,分类:一、独立式按键,独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。,单片机与键盘接口,二、矩阵式按键,通常,矩阵式键盘的列线由单片机输出口控制,行线连接单片机的输入口。,单片机与键盘接口,按键的去抖 机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定

2、下来,抖动时间一般为510ms,在触点抖动期间检测按键的通与断状态,可能导致判断出错。,键盘输入中要解决的问题:一、按键的确认:即判断按键是否闭合。通过检测电平的高低状态,就能确认是否有键按下。二、按键抖动的消除 按键较多时,常采用软件方法消除抖动。即在第一次检测到有按键被按下时,执行一段延时12-15ms的子程序后,再确认该键电平是否仍保持闭合状态电平,如保持为闭合状态电平就可确认真正有键按下,从而消除抖动的影响。,单片机与键盘接口,按键的去抖,(a)检测按键 (b)释放按键 按键去抖流程图,单片机与键盘接口,矩阵式按键,键盘编程扫描法识别按键一般应包括以下内容: (1)判别有无键按下。 (

3、2)键盘扫描取得闭合键的行、列位置。 (3)用计算法或查表法得到键值。 (4)判断闭合键是否释放,如没释放则继续等待。 (5)将闭合键的键值保存,同时转去执行该闭合键的功能。,开发板按键矩阵由4行4列组成 4行:R1、R2、R3、R4,接P3.0、P3.1、 P3.2、P3.3。 4列:C1、C2、C3、C4,接P3.4、P3.5、P3.6、P3.7。,按键的识别: 识别按键的方法很多,最常见的方法是扫描法。由列线送入全“0”扫描字、行线读入行线状态来判断的。其方法是:给列线的所有I/O线均置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入

4、不全为1。 键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态。其方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下之键不在此列。如果不全为1,则所按下的键必在此列。而且是在与电平为“0”的行线相交点上的那个键。 程序设计流程图如下:,列线输出0,行线写1,输入行线数据,行线数据数据不全为“1”,延时去抖,列线输出0,行线写1,输入行线数据,行线数据数据不全为“1”,转键处理程序,判断是否有键按下程序,设置列扫描次数,首列号送R6,DPTR指向列扫描码表,查表求列扫描码,输出列扫描码,输入行线状态,0行有键按下,1行有键按下,2行有键按下,3行有键按下,计算0行键值,计

5、算1行键值,计算2行键值,计算3行键值,列号加1,4列扫描结束否,键值存于A,结束,键处理程序,NO,YES,YES,NO,NO,NO,NO,NO,NO,YES,YES,YES,YES,YES,参考程序 Org 0000h Main: mov wdtcn,#0deh;关看门狗 mov wdtcn,#0adh mov prt3cf,#0f0h;列线推挽输出方式 mov xbr2,#40h;交叉开关允许 Key: lcall pressyn;判断是否有键按下 lcall which;判断键号 ljmp key Pressyn: mov P3,#0FH;使列线输出0,行线写1 mov A,P3;输入

6、行线上的数据 cjne A,#0fh,press;不相等,有键按下 sjmp pressyn;没键按下,重新查询 Press: lcall delay;有键按下,延时去抖 mov P3,#0fh;再次使列线输出0行线写1 mov A,P3;输入行线上的数据 cjne A,#0FH,presst;确有键按下转键处理 sjmp pressyn Presst: ret Which: mov R7,#04H;设置列扫描次数 mov R6,#00H;首列号0送R6 mov DPTR,#TABS;指向列扫描码表 Getscode: mov A,R6 movc A,A+DPTR;查表求列扫描码,mov P3

7、,A;输出列扫描码第一列输出0 mov A,P3;输入行线状态 jnb 0E0,L0;0行有按下,转L0 jnb 0E1,L1;1行有按下,转L1 jnb 0E2,L2;2行有按下,转L2 jnb 0E3,L0;3行有按下,转L3 inc R6;本列无按下,列号加1 djnz r7,getscode;未扫描完所有列,继续 mov A,#0FFH;所有列扫描完,没有按下返 回一个无效号 ret L0: mov A,#00H sjmp getkn L1: mov A,#01H sjmp getkn L2: mov A,#02H sjmp getkn L3: mov A,#03H Getkn: rl A rl A add A,R6 ret Tabs: db 0efH,0dfh,0bfh,7fh Delay: nop ret end,作业: 1、复习键盘扫描程序中各条指令的作用。 2、请预习74LS138译码器的工作原理。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号