51单片机4路抢答器的原理及C语言源程序_51单片机抢答器c程序
51单片机4路抢答器的原理及C语言源程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“51单片机抢答器c程序”。
51单片机4路抢答器的原理及C语言源程序
单片机,当然不只是51,51单片机是一种稍通用型的单片机,通过I/O口的定义,可以实现多种控制功能。
抢答器,原理:如果为四路,当其中任一路控下后,其他几路即失效,结果为第一次按下的,可以用数码管或是LED灯来显示,当然这里只是讲原理与编程,具体可以根据抢答器路数及显示方式更改程序即可。源程序如下:
/*用的是AT89S52开发板,独立按键接口如下,就用这四路。先按下的用LED灯来显示,对应第一个到第四个LED灯,其他再按无效,如果想再次实现,可手动复位单片机*/ #include sbit key1=P3^0;//定义按键,根据需要连接线路,如独立按键(4路)sbit key2=P3^1;sbit key3=P3^2;sbit key4=P3^3;/*void delay(unsigned int cnt)//如果有抖动或是干扰,可以用个小延时去抖 { while(--cnt);} */ void main(){ bit Flag;while(!Flag){ if(!key1){P1=0xFE;Flag=1;} /*LED灯来显示按下的键,第一个灯,我这里是8位LED灯,即:0111 1111,反过来读数为:1111 1110 即:0xFE *,P1口对应LED灯,给P1赋值/
else if(!key2){P1=0xFD;Flag=1;} //第二个灯亮 else if(!key3){P1=0xFB;Flag=1;} //第三个灯亮
else if(!key4){P1=0xF7;Flag=1;} //第四个灯亮,意味着第四路首先按下 } while(Flag);//可以再加个I/O,控制Flag,这样初始化,继续抢答,还可以设计按下时的声音
} 以上程序测试只能测试一次,如再想测试,只能手动复位单片机。当然,可以根据此原理,设计出功能强大的抢答器。如加入声音提示,数码管或是LCD液晶显示,裁判确定后可复位继续抢答等。
当然,用51单片机,是浪费,可根据I/O口(抢答路数)来用其他的单片机实现。