项目3__按键识别的设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目3__按键识别的设计

任务1:按键测试 思考题: 1. 用P2口指示灯记录P14复位键,按键的次数 项目3 按键识别的设计 ★ 知识目标: 1. 掌握AT89S51单片机最小系统的组成及相关电路的工作原理; 2. 掌握AT89S51单片机基本键盘接口电路的组成及按键识别方法。 ★ 能力目标: 1. 认识AT89S51单片机、晶体振荡器、电阻、电容、按键,键盘 等元器件。 2. 会设计硬件去抖动电路,编写软件去抖动按键识别程序; 3. 掌握矩阵键盘按键扫描程序,分支处理 。 在单片机应用系统中,键盘主要用于向计算机输入数据、传送命令等,是人工干预计算机的主要手段。键盘要通过接口与单片机相连,分为编码键盘和非编码键盘两类。 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,使用最广泛的是非编码键盘。当然,也有用到编码键盘的。 非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。 单 键 矩阵键盘 读P1口的按键状态,P2口以二进制记录P1口的状态变化次数。 1.提出任务 2.任务分析 (1)硬件电路设计 以8051单片机作为控制电路,按键连接至单片机的 P1口,P2口外接8个采用共阳极连接方式的发光二极管(LED)和 8个限流电阻,硬件电路原理图所示。 任务1:按键测试 3.程序流程 #include STC_NEW_8051.H #define uchar unsigned char unsigned char i,j; void main( ) { j=0; //变化次数 P2=0xff; //P2口灯全灭,灯灭表示为0,灯亮表示1 i=P1; //读P1口 while(1) { if(i!=P1) //判断P1口是否有变化 { j++; //有变化次数加1 P2=~j; //次数在P2口显示 i=P1; //重新记录P1口的状态 } } } Lesson369-lesskey11 在键盘的软件设计中还要注意按键的去抖动问题。由于按键一般是由机械式触点构成的,在按键按下和断开的瞬间均有一个抖动过程,时间大约为5ms~10ms,可能会造成单片机对按键的误识别。 物理按键抖动波形图 按键消抖一般有两种方法,即硬件消抖和软件消抖。 硬件消抖方法 在软件设计中,当单片机检测到有键按下时,可以先延时一段时间越过抖动过程再对按键识别。 实际应用中,一般希望按键一次按下单片机只处理一次,但由于单片机执行程序的速度很快,按键一次按下可能被单片机多次处理。为避免此问题,可在按键第一次按下时延时10ms之后再次检测按键是否按下,如果此时按键仍然按下,则确定有按键输入。这样便可以避免按键的重复处理。 软件消抖方法 任务2 单键控制LED的设计 软件消抖流程图 任务2 单键控制LED的设计 用单键(即独立键盘中的按键)实现对LED进行控制,每按一次按键时,LED 方式变化一次,用以表示按键控制的结果。 1.提出任务 2.任务分析 (1)硬件电路设计 以8051单片机作为控制电路,按键连接至单片机的P1.4引脚,另一端接地,P2.0口外接1个采用共阳极连接方式的发光二极管(LED)和 1个限流电阻,硬件电路原理图所示。 任务2 单键控制LED的设计 任务2 单键控制LED的设计 软件消抖流程图 #include reg51.h #define uchar unsigned char void delay(uchar); sbit p14=P1^4; //定义位 sbit p20=P2^0; main() { p20=0; //P2.0初始状态灯亮 while(1) { if(p14==0) //判断是否按键 { delay(2); //延时20MS,去抖动 if(p14==0) // 确认有键按下 { p20=~p20; //指示灯状态取反 while(!p14); //等待按键释放 } } } } /*延时子程序*/ void delay(uchar k ) { uchar x,y,z; for(x=k;x0;x--) for(y=20;y0;y--) for(z=250;z0;z--); } Lesson3-lessonkey12 任务2 多路按键状态指示的设计 ◇ 知识链接 一、矩阵式键盘 1.结构和工作原理 当输入部分有多个按键时,若仍然采用独立键盘,必然会占用大量的I/O口,采用矩阵键盘是一种比较节省资源的方法。矩阵式键盘又称行列

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档