单片机实例之按键原理.ppt

上传人:小飞机 文档编号:6397505 上传时间:2023-10-27 格式:PPT 页数:30 大小:429.50KB
返回 下载 相关 举报
单片机实例之按键原理.ppt_第1页
第1页 / 共30页
单片机实例之按键原理.ppt_第2页
第2页 / 共30页
单片机实例之按键原理.ppt_第3页
第3页 / 共30页
单片机实例之按键原理.ppt_第4页
第4页 / 共30页
单片机实例之按键原理.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《单片机实例之按键原理.ppt》由会员分享,可在线阅读,更多相关《单片机实例之按键原理.ppt(30页珍藏版)》请在三一办公上搜索。

1、课题三(实例)之按键,任务一 独立式按键控制的数码管显示任务二 矩阵键盘数码管显示,任务一 独立式按键控制的数码管显示,本任务是利用独立按键实现对数码进行控制,记录按键的次数,每当按下一次键时,计数器加1,将计数器的值送数码管显示,当计数器加到10时,则归零重新计数。设P0口连接按键,对Key1进行计数 P1口连接数码管,图6-2 键盘控制原理图,为了实现用按键控制LED的显示,首先要使单片机读入按键的状态,再根据键盘的状态去控制LED的亮灭。对LED的控制,在前面的课题中已经讲了,这里不再作重点讲解,仅仅作为一个键盘控制对象的例子。根据图6-2所示的硬件电路,每当按下按键时,单片机引脚P0.

2、0将为低电平,程序运行时,需要检测P0.0引脚是否为低电平,若P0.0引脚为低电平,表示按键已按下。当每次按下按键时,则使P1口输出的数据变化一次,输出不同数据,对应的程序设计框图如图6-4所示。,程序设计分析,一、按键的特性 作为机械按钮,键按下或者放开时,都存在着接通或断开的不稳定现象,从而使信号电平具有抖动现象,这种现象称为抖动。由于按键的抖动,使按键对应的输出电平若干个干扰脉冲,如图6-5所示。为了保证每按下一次按键,单片机程序只动作一次,就需要消除因按键的抖动现象而引起的错误动作,具体的处理方式分为硬件消除抖动和软件消除抖动,简称消抖。,键盘电路原理,二、硬件消抖 图中两个“与非”门

3、构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使因按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。,硬件消抖动一般用于按键较少的情况。,三、软件消抖 如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转

4、入该键的处理程序。,思考:为什么要等键释放?若不等会出现什么情况?,1、C语言程序:#include sbit P0_0=P00;unsigned char count;unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;void delay10ms()unsigned char i,j;for(i=250;i0;i-)for(j=248;j0;j-);,void main(void)while(1)if(P0_0=0)delay10ms();if(P0_0=0)count+;

5、if(count=10)count=0;while(P0_0=0);P1=tablecount;,2、汇编程序ORG 00hSTART:MOV R1,#00H;初始化R1为0,REL:JB P0.3,REL;判断SP1是否按下LCALL DELAY;若按下,则延时10ms左右JB P0.3,REL;再判断SP1是否真得按下MOV A,R1MOV DPTR,#TABLEMOVC A,A+DPTRMOV P1,AINC R1JNB P0.3,$;等待SP1释放CJNE R1,#10,REL,SJMP START;继续对K1按键扫描DELAY:MOV R6,#20;延时10ms子程序L1:MOV R

6、7,#248DJNZ R7,$DJNZ R6,L1RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH END,练习:编写程序使得K0按下时显示1,K7按下时显示8,无键按下时显示0,有多键按下时显示P。,任务二获取矩阵键盘的键值,本任务目标是用矩阵键盘控制LED实现一个矩阵键盘的按键值。,编写程序使得P0显示按键的行号,P2口显示按键的列号。,在单片机程序中,对多个键的处理应包括以下三项内容:键输入检查键盘是否有键被按下,并消除按键抖动。键译码(扫描法或反转法)即获取是哪个键按下,得到按键的行号,和列号;有时还需计算键码(每个按键编号,

7、对于4*4的矩阵按键,键码共16个为0,15)。键结束即检查按键是否抬起,这样使得一次按键只做一次处理。键处理根据键码执行不同按键处理程序段。,一、键盘处理,检查键盘是否有键被按下,并消除按键抖动。代码flag=0;P1=0 x0F;/高四位是列线输出0,低四位是行线读入前写1if(P1,键输入,扫描键盘 行列式键盘的具体识别方法有扫描法和反转法。扫描法即用列线输出,行线输入(可交换行线和列线的输入、输出关系)。其中,列线逐列输出0,某行有键按下,行线有0输入,若无按键,行线输入全部为1。当有键按下时,根据行线和列线可最终确定哪个按键被按下。反转法行线和列线交换输入、输出,分两步获取按键的键号

8、,但是在多键同时按下时不能准确判断。,键译码,代码 获取行号 temp=0;P1=0 x0F;/低四位输入 输入前写1/列为高四位 低电平输出 temp=P1;/读P1口 temp=(temp/多个按键被按下,或无键按下,键译码反转法,代码 获取列号 P1=0 xF0;/列高四位输入,输入前写1/行为低四位,低电平输出 temp=P1;/读P1口 temp=(temp4),键译码反转法,代码 获取列号(row,col)uchar code scan4=0 xEF,0 xDF,0 xBF,0 x7F;for(i=0;i4;i+)P1=scani;/低四位输入 扫描第0列,p1.4为低电平 tem

9、p=P1;/读P1口 temp=(temp/多个按键被按下,或无键按下计算键值 key=,键译码扫描法,即检查按键是否抬起,这样使得一次按键只做一次处理。代码flag=0;P1=0 x0F;if(P1,键结束,根据键码执行不同按键处理程序段。代码unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;P0=tablerow;P2=tablecol;,键处理,主程序,while(1)if(有键按下)键译码等待键结束键处理,练习:编写程序使得P0显示键码的十位,P2口显示键码的个位。,

10、任务三简易计算器,本任务目标是用矩阵键盘控制数码管实现一个简易计算器。,图4-7 简易计算器的电路原理图,在单片机程序中,对多个键的处理应包括以下三项内容:键输入 检查键盘是否有键被按下,并消除按键抖动,获得或规定(单个按键)按键的键号。可以用动态显示函数代替消抖用的延时函数。键译码 即获取是哪个键按下,用键值给各个按键编号,对于4*4的矩阵按键,键值共16个为0,15。可将键值分配为:数字键09、功能键0AH0FH,是按键在物理位置上的人为规定数值。键结束键处理 根据键值执行不同程序段。如:若键值属于数字,则调用显示数字子程序;若键值属于功能键,则进行多分支转移,执行各个功能程序段。,键盘处理,图4-10 带动态显示的键盘消抖程序框图,作业:,编写程序用一个数码管静态显示矩阵按键的键码0F。分别用扫描法、反转法实现键码识别。编写程序用两个数码管动态显示矩阵按键的键码0015的十位和个位。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号