51单片机四路抢答器(LED灯,数码管显示,蜂鸣器提示音)C语言源程序.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机四路抢答器(LED灯,数码管显示,蜂鸣器提示音)C语言源程序2009-10-31 10:53

其实就是在原有的基础上,加入数码管显示及蜂鸣器,当然根据自己的要求,适当使用单片机I/O口

接线为:

P0 P2 来控制数码管显示,其中P0为数码管显字控制,P2用来选择位(第几个数码管)

P1用来控制8个LED灯

P3,独立按键(可以根据需要修改)

P3^5(找了一个没有用到的I/O口,当然,可以用键盘扫描的方式来实现,这样的话,可以实现4*4=16路的抢答器,了解原理,做相应修改即可。

#include

sbit key1=P3^0; //这里采用独立按键(4路)

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

sbit SPK=P3^5; //蜂鸣器,最好在ISP编程时先不接入,(我用的是杜邦线,可以设置跳线控制)

void delay(unsigned int cnt)

{

while(--cnt);

}

void speak(unsigned int j)

{

unsigned int i;

for(i=0;i

{

delay(180);//参数决定发声的频率,估算值,自行修改到不刺耳的声调

SPK=!SPK;

}

SPK=1; //喇叭蜂鸣器停止工作,叫一声即

可。

}

void main()

{

bit Flag;

while(!Flag)

{

if(!key1){P1=0xFE;Flag=1;speak(300);P2=0;P0=0x06;} // LED1,数码管1显示1,蜂鸣器叫

else if(!key2){P1=0xFD;Flag=1;speak(300);P2=1;P0=0x5b;}//LED2,数码管2显示2,蜂鸣器叫

else if(!key3){P1=0xFB;Flag=1;speak(300);P2=2;P0=0x4f;}//LED3,数码管3显示3,蜂鸣器叫

else if(!key4){P1=0xF7;Flag=1;speak(300);P2=3;P0=0x66;}LED4,数码管4显示4,蜂鸣器叫

}

while(Flag);

}

测试完,手动复位即可,当然可设置相应的按键来控制标志:Flag,进行继续抢答。。

相关文档
最新文档