欢迎来到天天文库
浏览记录
ID:45000050
大小:996.50 KB
页数:57页
时间:2019-11-07
《项目5按键识别的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、项目5按键识别的设计★知识目标:1.了解单片机的定义、类型和应用领域;2.掌握AT89S51单片机的封装形式、实物外形及各个引脚的功能;3.掌握AT89S51单片机最小系统的组成及相关电路的工作原理;4.掌握AT89S51单片机基本接口电路的组成及电路功能。★能力目标:1.认识AT89S51单片机、晶体振荡器、RS-232串口端及电阻、电容等元器件。2.会搭建单片机最小系统应用电路;3.了解单片机应用系统的开发过程。任务1单键控制LED的设计在单片机应用系统中,键盘主要用于向计算机输入数据、传送命令等,是人工干预计算机的主要手段。键盘要通过接口与单片机相连,分为编码键盘和非编码键盘两
2、类。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,使用最广泛的是非编码键盘。当然,也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。任务1单键控制LED的设计用单键(即独立键盘中的按键)实现对LED进行控制,每按一次按键时,LED显示方式变化一次,用以表示按键控制的结果。1.提出任务任务1单键控制LED的设计(1)硬件电路设计以AT89S51单片机作为控制电路,按键连接至单片机的P1.0引脚,另一端接地,P2口外接8个采用共阳极连接方式的发光二极管(L
3、ED)和8个限流电阻,硬件电路原理图所示。2.任务分析任务1单键控制LED的设计(2)独立式按键的软件设计在单片机应用系统中主程序一般是循环结构,键盘程序作为子程序供主程序调用。单片机按键控制系统的主程序结构图所示。任务1单键控制LED的设计上电初始化后便循环调用键盘程序、显示程序、功能处理程序等。在循环的过程中还可能因中断而执行中断服务程序。另外,在键盘的软件设计中还要注意按键的去抖动问题。由于按键一般是由机械式触点构成的,在按键按下和断开的瞬间均有一个抖动过程,时间大约为5ms~10ms,可能会造成单片机对按键的误识别。任务1单键控制LED的设计物理按键抖动波形图任务1单键控制L
4、ED的设计按键消抖一般有两种方法,即硬件消抖和软件消抖。硬件消抖方法任务1单键控制LED的设计在软件设计中,当单片机检测到有键按下时,可以先延时一段时间越过抖动过程再对按键识别。实际应用中,一般希望按键一次按下单片机只处理一次,但由于单片机执行程序的速度很快,按键一次按下可能被单片机多次处理。为避免此问题,可在按键第一次按下时延时10ms之后再次检测按键是否按下,如果此时按键仍然按下,则确定有按键输入。这样便可以避免按键的重复处理。任务1单键控制LED的设计软件消抖流程图任务1单键控制LED的设计3.源程序编写/*文件名:xm5-1.c*/#include//包含头
5、文件sbitkey1=P1^0;//按键定义voiddelay10ms(void)//延时10ms子函数{unsignedchari,k;//变量定义for(i=20;i>0;i--)//for语句循环体for(k=250;k>0;k--);}任务1单键控制LED的设计3.源程序编写voidmain(void)//主函数{chari=0xfe;P2=i;//置P2.0引脚为低电平while(1){if(key1==0)//判断按键key1是否按下{delay10ms();if(key1==0)//去抖动{if((i&0x80)==0)i=i<<1;elsei=(i<<1)+1;P2=
6、i;while(key1==0);}}}}任务2多路按键状态指示的设计用AT89S51单片机及LED数码管实现对键盘键值的实现。当按下键盘中不同按键时,LED数码管上显示不同的键值。1.提出任务任务2多路按键状态指示的设计2.任务分析(1)硬件电路设计本设计采用AT89S51单片机最小系统,P3口外接矩阵式键盘接口电路,P1口外接共阴型七段数码管,如图5.2.1所示。电路中共有16个按键,按4×4的矩阵式排列,键号依次为0~F。单片机的P3.0~P3.3为输出口,连接4条列线;P3.4~P3.7为输入口,连接4条行线。任务2多路按键状态指示的设计键盘键值显示电路图任务2多路按键状态指
7、示的设计(2)软件设计思路矩阵式按键的软件设计与独立式按键不同的只是按键的识别方法不同。在矩阵式按键的扫描程序中,要对按键逐行逐列地扫描,得到按下键的行列信息,然后还要转换成键号,以便据此转到相应的键处理程序。按键扫描子函数中,先对4条行线送高电平,当判断有按键按下之后,延时30ms之后再判断该按键是否按下。若仍然有按键按下,则能知道被按下按键所处的行编码。之后再在判断被按下按键所处列编码,综合行、列编码得到按键位置,从而判断出键值。任务2多路按键状态指示
此文档下载收益归作者所有