




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,课题三(实例)之按键,任务一独立式按键控制的数码管显示任务二矩阵键盘数码管显示,.,2,任务一独立式按键控制的数码管显示,本任务是利用独立按键实现对数码进行控制,记录按键的次数,每当按下一次键时,计数器加1,将计数器的值送数码管显示,当计数器加到10时,则归零重新计数。设P0口连接按键,对Key1进行计数P1口连接数码管,.,3,图6-2键盘控制原理图,.,4,为了实现用按键控制LED的显示,首先要使单片机读入按键的状态,再根据键盘的状态去控制LED的亮灭。对LED的控制,在前面的课题中已经讲了,这里不再作重点讲解,仅仅作为一个键盘控制对象的例子。根据图6-2所示的硬件电路,每当按下按键时,单片机引脚P0.0将为低电平,程序运行时,需要检测P0.0引脚是否为低电平,若P0.0引脚为低电平,表示按键已按下。当每次按下按键时,则使P1口输出的数据变化一次,输出不同数据,对应的程序设计框图如图6-4所示。,程序设计分析,.,5,.,6,一、按键的特性作为机械按钮,键按下或者放开时,都存在着接通或断开的不稳定现象,从而使信号电平具有抖动现象,这种现象称为抖动。由于按键的抖动,使按键对应的输出电平若干个干扰脉冲,如图6-5所示。为了保证每按下一次按键,单片机程序只动作一次,就需要消除因按键的抖动现象而引起的错误动作,具体的处理方式分为硬件消除抖动和软件消除抖动,简称消抖。,键盘电路原理,.,7,二、硬件消抖图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使因按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。,硬件消抖动一般用于按键较少的情况。,.,8,三、软件消抖如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入该键的处理程序。,思考:为什么要等键释放?若不等会出现什么情况?,.,9,1、C语言程序:#includesbitP0_0=P00;unsignedcharcount;unsignedcharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;voiddelay10ms()unsignedchari,j;for(i=250;i0;i-)for(j=248;j0;j-);,.,10,voidmain(void)while(1)if(P0_0=0)delay10ms();if(P0_0=0)count+;if(count=10)count=0;while(P0_0=0);P1=tablecount;,.,11,2、汇编程序ORG00hSTART:MOVR1,#00H;初始化R1为0,REL:JBP0.3,REL;判断SP1是否按下LCALLDELAY;若按下,则延时10ms左右JBP0.3,REL;再判断SP1是否真得按下MOVA,R1MOVDPTR,#TABLEMOVCA,A+DPTRMOVP1,AINCR1JNBP0.3,$;等待SP1释放CJNER1,#10,REL,.,12,SJMPSTART;继续对K1按键扫描DELAY:MOVR6,#20;延时10ms子程序L1:MOVR7,#248DJNZR7,$DJNZR6,L1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FHEND,.,13,练习:编写程序使得K0按下时显示1,K7按下时显示8,无键按下时显示0,有多键按下时显示P。,.,14,任务二获取矩阵键盘的键值,本任务目标是用矩阵键盘控制LED实现一个矩阵键盘的按键值。,.,15,编写程序使得P0显示按键的行号,P2口显示按键的列号。,.,16,在单片机程序中,对多个键的处理应包括以下三项内容:键输入检查键盘是否有键被按下,并消除按键抖动。键译码(扫描法或反转法)即获取是哪个键按下,得到按键的行号,和列号;有时还需计算键码(每个按键编号,对于4*4的矩阵按键,键码共16个为0,15)。键结束即检查按键是否抬起,这样使得一次按键只做一次处理。键处理根据键码执行不同按键处理程序段。,一、键盘处理,.,17,检查键盘是否有键被按下,并消除按键抖动。代码flag=0;P1=0 x0F;/高四位是列线输出0,低四位是行线读入前写1if(P1,键输入,.,18,扫描键盘行列式键盘的具体识别方法有扫描法和反转法。扫描法即用列线输出,行线输入(可交换行线和列线的输入、输出关系)。其中,列线逐列输出0,某行有键按下,行线有0输入,若无按键,行线输入全部为1。当有键按下时,根据行线和列线可最终确定哪个按键被按下。反转法行线和列线交换输入、输出,分两步获取按键的键号,但是在多键同时按下时不能准确判断。,键译码,.,19,代码获取行号temp=0;P1=0 x0F;/低四位输入输入前写1/列为高四位低电平输出temp=P1;/读P1口temp=(temp/多个按键被按下,或无键按下,键译码反转法,.,20,代码获取列号P1=0 xF0;/列高四位输入,输入前写1/行为低四位,低电平输出temp=P1;/读P1口temp=(temp4),键译码反转法,.,21,代码获取列号(row,col)ucharcodescan4=0 xEF,0 xDF,0 xBF,0 x7F;for(i=0;i4;i+)P1=scani;/低四位输入扫描第0列,p1.4为低电平temp=P1;/读P1口temp=(temp/多个按键被按下,或无键按下计算键值key=,键译码扫描法,.,22,即检查按键是否抬起,这样使得一次按键只做一次处理。代码flag=0;P1=0 x0F;if(P1,键结束,.,23,根据键码执行不同按键处理程序段。代码unsignedcharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;P0=tablerow;P2=tablecol;,键处理,.,24,主程序,while(1)if(有键按下)键译码等待键结束键处理,.,25,练习:编写程序使得P0显示键码的十位,P2口显示键码的个位。,.,26,任务三简易计算器,本任务目标是用矩阵键盘控制数码管实现一个简易计算器。,.,27,图4-7简易计算器的电路原理图,.,28,在单片机程序中,对多个键的处理应包括以下三项内容:键输入检查键盘是否有键被按下,并消除按键抖动,获得或规定(单个按键)按键的键号。可以用动态显示函数代替消抖用的延时函数。键译码即获取是哪个键按下,用键值给各个按键编号,对于4*4的矩阵按键,键值共16个为0,15。可将键值分配为:数字键09、功能键0AH0FH,是按键在物理位置上的人为规定数值。键结束键处理根据键值执行不同程序段。如:若键值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洼田饮水评估的操作要点
- 自然语言及语音处理项目式教程 实训指导 实训1 配置NLP环境
- 分析师预期选股策略月报:分析师预期修正选股策略今年相对中证全指超额3.06
- 2025以色列与伊朗冲突全面解析课件
- 氢能源未来2025年加氢站建设成本效益分析与布局指南报告
- 2025年家具制造业个性化定制生产模式市场风险预警报告
- 2025年煤炭清洁燃烧技术产业链上下游协同发展报告
- 工业互联网平台安全多方计算在智能仓储物流中的应用报告
- 教育大数据分析2025年:教育资源配置优化与教育公平研究报告
- 工业互联网平台网络安全态势感知技术在电力行业的应用与优化报告
- 公路工程基本建设项目概算、预算编制办法
- 最详细的整车开发流程
- 部编版七年级历史(下)材料论述题专项训练
- 年产1000吨乳酸的生产工艺设计
- 博克服装CAD制版说明操作手册(共95页)
- 光电效应测普朗克常数-实验报告
- (完整word版)数据模型与决策课程案例分析
- 自制桁架移动式操作平台施工方案
- 物业服务参与校园文化建设及举办大型活动配合措施
- 太阳能LED路灯项目实施方案
- 调岗调薪实操指引PPT课件
评论
0/150
提交评论