单片机实例之按键原理剖析ppt课件

上传人:无*** 文档编号:244040320 上传时间:2024-10-02 格式:PPT 页数:30 大小:583KB
返回 下载 相关 举报
单片机实例之按键原理剖析ppt课件_第1页
第1页 / 共30页
单片机实例之按键原理剖析ppt课件_第2页
第2页 / 共30页
单片机实例之按键原理剖析ppt课件_第3页
第3页 / 共30页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,课题三(实例) 之按键,任务一 独立式按键控制的数码管显示,任务二 矩阵键盘数码管显示,任务一 独立式按键控制的数码管显示,本任务是利用独立按键实现对数码进行控制,记录按键的次数,每当按下一次键时,计数器加,1,,将计数器的值送数码管显示,当计数器加到,10,时,则归零重新计数 。,设,P0,口连接按键,对,Key1,进行计数,P1,口连接数码管,图,6-2,键盘控制原理图,为了实现用按键控制,LED,的显示,首先要使单片机读入按键的状态,再根据键盘的状态去控制,LED,的亮灭。对,LED,的控制,在前面的课题中已经讲了,这里不再作重点讲解,仅仅作为一个键盘控制对象的例子。,根据图,6-2,所示的硬件电路,每当按下按键时,单片机引脚,P0.0,将为低电平,程序运行时,需要检测,P0.0,引脚是否为低电平,若,P0.0,引脚为低电平,表示按键已按下。,当每次按下按键时,则使,P1,口输出的数据变化一次,输出不同数据,对应的程序设计框图如图,6-4,所示。,程序设计分析,初始化,计数器,+1,送显,是否按下键,否,是,图,6-4,键控计数显示流程图,一、按键的特性,作为机械按钮,键按下或者放开时,都存在着接通或断开的不稳定现象,从而使信号电平具有抖动现象,这种现象称为,抖动,。,由于按键的抖动,使按键对应的输出电平若干个干扰脉冲,如图,6-5,所示。为了保证每按下一次按键,单片机程序只动作一次,就需要消除因按键的抖动现象而引起的错误动作,具体的处理方式分为硬件消除抖动和软件消除抖动,简称,消抖,。,键盘电路原理,抖动时间,10ms,开关动作时间,100ms,“ 1 ”,“0”,10ms,图,6-5,按键的波形,二、 硬件消抖,图中两个“与非”门构成一个,RS,触发器。当按键未按下时,输出为,1;,当键按下时,输出为,0,。此时即使因按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开,B,),中要按键不返回原始状态,A,双稳态电路的状态不改变,输出保持为,0,不会产生抖动的波形。,也就是说,即使,B,点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。,硬件消抖动一般用于按键较少的情况。,三、软件消抖,如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生,5ms,10ms,的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。,当检测到按键释放后,也要给,5ms,10ms,的延时,待后沿抖动消失后才能转入该键的处理程序。,延时等待,10ms,仍有按键信号?,Y,有按键信号?,N,Y,N,按键处理,按键释放,?,N,Y,图,6-7,软件消抖的流程图,思考:为什么要等键释放?,若不等会出现什么情况?,1,、,C,语言程序:,#include ,sbit P0_0=P00;,unsigned char count;,unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;,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+;,if(count=10) count=0;,while(P0_0=0); P1=tablecount;,2,、汇编程序,ORG 00h,START:,MOV R1,#00H ;,初始化,R1,为,0,,,REL:,JB P0.3,REL ;,判断,SP1,是否按下,LCALL DELAY ;,若按下,则延时,10ms,左右,JB P0.3,REL ;,再判断,SP1,是否真得按下,MOV A,R1,MOV DPTR,#TABLE,MOVC A,A+DPTR,MOV P1,A,INC R1,JNB P0.3,$ ;,等待,SP1,释放,CJNE R1,#10,REL,SJMP START ;,继续对,K1,按键扫描,DELAY:,MOV R6,#20 ;,延时,10ms,子程序,L1:,MOV R7,#248,DJNZ R7,$,DJNZ R6,L1,RET,TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,DB 7DH,07H,7FH,6FH,END,练习:,编写程序使得,K0,按下时显示,1,,,K7,按下时显示,8,,无键按下时显示,0,,有多键按下时显示,P,。,任务二获取矩阵键盘的键值,本任务目标是用矩阵键盘控制,LED,实现一个矩阵键盘的按键值。,编写程序使得,P0,显示按键的行号,,P2,口显示按键的列号。,在单片机程序中,对多个键的处理应包括以下三项内容:,键输入,检查键盘是否有键被按下,并消除按键抖动。,键译码(扫描法或反转法),即获取是哪个键按下,得到按键的行号,和列号;有时还需计算键码(每个按键编号,对于,4*4,的矩阵按键,键码共,16,个为,0,15,)。,键结束,即检查按键是否抬起,这样使得一次按键只做一次处理。,键处理,根据键码执行不同按键处理程序段。,一、键盘处理,检查键盘是否有键被按下,并消除按键抖动。,代码,flag=0;,P1=0x0F; /,高四位是列线输出,0,,低四位是行线读入前写,1,if(P1&0x0F != 0x0F),delay();,if(P1&0x0F != 0x0F),flag=1;,键输入,扫描键盘,行列式键盘的具体识别方法有,扫描法,和,反转法,。,扫描法,即用列线输出,行线输入(可交换行线和列线的输入、输出关系)。其中,列线逐列输出,0,,某行有键按下,行线有,0,输入,若无按键,行线输入全部为,1,。当有键按下时,根据行线和列线可最终确定哪个按键被按下。,反转法,行线和列线交换输入、输出,分两步获取按键的键号,但是在多键同时按下时不能准确判断。,键译码,代码 获取行号,temp = 0;,P1=0x0F; /,低四位输入 输入前写,1,/,列为高四位 低电平输出,temp=P1; /,读,P1,口,temp=(temp /,屏蔽高四位,switch(temp),case 1:,row=0; break; / p1.0,被拉低,case 2:,row=1; break; / p1.1,被拉低,case 4:,row=2; break; / p1.2,被拉低,case 8:,row=3; break; / p1.3,被拉低,default:,row=16; /,多个按键被按下,或无键按下,键译码,反转法,代码 获取列号,P1=0xF0; /,列高四位输入,输入前写,1,/,行为低四位,低电平输出,temp=P1; /,读,P1,口,temp= (,temp4,) ,switch(temp),case 1: col=0; break; / p1.4,被拉低,case 2:,col=1; break; / p1.5,被拉低,case 4:,col=2; break; / p1.6,被拉低,case 8:,col=3; break; / p1.7,被拉低,default:,col=16; /,多个按键被按下,或无键按下,计算键值,key = row*4 + col;,键译码,反转法,代码 获取列号,(row,col),uchar code scan4=0xEF,0xDF,0xBF,0x7F;,for(i=0;i4;i+),P1= scani; /,低四位输入 扫描第,0,列,,p1.4,为低电平,temp=P1; /,读,P1,口,temp= (temp /,屏蔽高四位,if(temp=1) / p1.0,被拉低,row=0,col=I,break;,else if(temp=2) / p1.1,被拉低,row=1,col=i,break;,else if(temp=4) / p1.2,被拉低,row=2,col=i,break;,else if(temp=8) / p1.3,被拉低,row=3,col=i,break;,else,row=16,col=16; /,多个按键被按下,或无键按下,计算键值,key=,键译码,扫描法,即检查按键是否抬起,这样使得一次按键只做一次处理。,代码,flag=0;,P1=0x0F;,if(P1&0x0F!=0),delay();,if(P1& 0x0F!=0),flag=1;,键结束,根据,键码执行不同按键处理程序段,。,代码,unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;,P0=,tablerow;,P2= tablecol;,键处理,主程序,while(1),if(,有键按下,),键译码,等待键结束,键处理,练习:,编写程序使得,P0,显示键码的十位,,P2,口显示键码的个位。,任务三,简易计算器,本任务目标是用矩阵键盘控制数码管实现一个简易计算器。,图,4-7,简易计算器的电路原理图,在单片机程序中,对多个键的处理应包括以下三项内容:,键输入,检查键盘是否有键被按下,并消除按键抖动,获得或规定(单个按键)按键的键号。,可以用动态显示函数代替消抖用的延时函数。,键译码,即获取是哪个键按下,用键值给各个按键编号,对于,4*4,的矩阵按键,键值共,16,个为,0,15,。可将键值分配为:数字键,0,9,、功能键,0AH,0FH,,是按键在物理位置上的人为规定数值。,键结束,键处理,根据键值执行不同程序段。如:若键值属于数字,则调用显示数字子程序;若键值属于功能键,则进行多分支转移,执行各个功能程序段。,键盘处理,初始化,有键按下?,是否处理?,有键按下?,延时消抖(调用动态显示函数),调用键盘处理函数进行具体处理,并置处理标志,调用动态显示函数,清处理标志,没有,已处理,没有,图,4-10,带动态显示的键盘消抖程序框图,作业:,编写程序用一个数码管,静态,显示,矩阵按键的键码,0F,。分别用,扫描法、反转法,实现键码识别。,编写程序用两个数码管,动态,显示,矩阵按键的键码,0015,的十位和个位。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!