基本信息
文件名称:项目二 任务1-独立按键识别检测.pptx
文件大小:1.37 MB
总页数:27 页
更新时间:2025-06-19
总字数:约2.69千字
文档摘要

项目二简易抢答器设计

独立按键识别检测任务一一位数码管显示任务二数码管动态显示任务三简易抢答器设计任务四

项目目标●掌握LED数码管结构●掌握数码管字形编码●掌握数码管静态显示●掌握数码管动态显示

项目任务本项目的任务是使用单片机实现抢答器,实现显示抢答选手编号的数码管显示以及有人抢答的同时实现提示音。

具体描述:通过按键检测识别技术,检测到有人抢答后把按键值送数码管显示出来。

任务一独立按键识别检测

任务描述通过按键输入数据或命令,实现简单的人机对话。本任务要求设计1个独立按键,按下该键时,对应的LED亮,再一次按下,LED熄灭,如此重复。

知识链接按键识别

按键检测与识别当单片机检测到与按键相连的IO口被拉低就证明此按键被按下。

按键检测与识别实际工作中,按键的操作并没有我们想象的“按下松开”那么简单,操作时存在按键抖动的现象。1.按键的抖动现象

按键消抖硬件消抖软件消抖延时读键法多次读键法

在单片机获得端口为低电平的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长的时间后再次检测该端口,如果仍为低,说明此键的确被按下了,这实际上是避开了按键按下时的抖动时间。2.按键的去抖动(1)延时读键法

如左上图所示,当电源很稳定,没有干扰的情况下,这种方法是可靠的。如右上图所示,当电源不稳定,存在很大干扰时,则有可能存在误判。

在单片机获得端口为低电平的信息后,在一段时间内如20毫秒,多次检测按键的状态,只有当每次读到的状态都是低电平时才认为有按键按下,如下图所示:(2)多次读键法用这种方法,不会存在误判的情况。必须注意,多次检测持续的时间应该比闭合抖动的时间长。

本项目任务中,主要用软件方法去抖,即检测出键闭合后执行一个延时程序,产生10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给10ms的延时,待后沿抖动消失后才能转入该键的处理程序。3.结论

任务实施1.硬件电路。2.程序设计。

1.硬件电路

2.程序设计#includereg51.h//包含头文件#defineucharunsignedchar//定义uchar为无符号字符型#defineuintunsignedint//定义uint为无符号整型sbitLED=P1^0; //p1.0定义为LEDsbitkey1=P2^7;//按键定义voiddelay10ms(void){uchari,k;//变量定义for(i=20;i0;i--)for(k=250;k0;k--);}预定义延时子程序

voidmain(void){while(1){if(key1==0){delay10ms();if(key1==0){LED=~LED;while(key1==0);}}}}

进阶提高使用AT89C51单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。

ucharKeyScan(void)//按键扫描程序{unsignedcharkeyvalue,key;if(KeyPort!=0xff)//判断是否有键按下{delay10ms();//去抖动if(KeyPort!=0xff)//二次判断是否有键按下{keyvalue=KeyPort;//读按键状态while(KeyPort!=0xff);//按键松开时