抢答成功时可播放音乐
单片机制作六位抢答器(可播放音乐)
电路图
程序:
#include<reg51.h>
unsigned char code led[]={0xf9,0xa4,0xb0,0x99,0x92,0x82}; //1-6共阳极数码管段码
unsigned char music[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
抢答成功时可播放音乐
5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};
sbit P1_0=P1^0;
void delay(unsigned char i) //延时函数
{
unsigned char j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void main()
{
unsigned char i,d;
P0=0xff; //P0置1,读引脚
P2=0xff; //初始化数码管熄灭
P1_0=0; //初始化蜂鸣器不鸣叫
while(1)
{
d=P0;
d=d&0x3f; //屏蔽无关位
if(d!=0x3f)
抢答成功时可播放音乐
{
switch(d)
{
case 0x3e:P2=led[0];break;
case 0x3d:P2=led[1];break;
case 0x3b:P2=led[2];break;
case 0x37:P2=led[3];break;
case 0x2f:P2=led[4];break;
case 0x1f:P2=led[5];break;
}
while(1)
{
P1_0=music[i];
delay(100);
i++;
if(i==33) i=0;
}
}
}
}