标题:
单片机八路抢答器为什么蜂鸣不响,程序要怎么改呢?
[打印本页]
作者:
yanyyh
时间:
2019-4-11 18:28
标题:
单片机八路抢答器为什么蜂鸣不响,程序要怎么改呢?
1.PNG
(61.34 KB, 下载次数: 35)
下载附件
2019-4-11 18:27 上传
单片机源程序如下:
#include "reg51.h"
#include "intrins.h"
unsigned char code SMG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”
sbit AnJan_1=P1^0;
sbit AnJan_2=P1^1;
sbit AnJan_3=P1^2;
sbit AnJan_4=P1^3;
sbit AnJan_5=P1^4;
sbit AnJan_6=P1^5;
sbit AnJan_7=P1^6;
sbit AnJan_8=P1^7;
sbit start=P3^1; //开始键
sbit reset=P3^2; //复位键
sbit BZ=P3^0; //蜂鸣器
char i,a,state=0;
void Yanshi10ms(unsigned int m) //误差0us
{
unsigned char j,h;
for(;m>0;m--)
for(h=38;h>0;h--)
for(j=130;j>0;j--);
}
void main()
{
BZ=1;
TMOD=0x01; //定时器0方式1
TH1=(65536-50000)/256; //恢复定时器1初值
TL1=(65536-50000)%256;
EA=1;
P0=0x00;
while (1)
{
while(state==0)
{
if(start==0)
{
Yanshi10ms(1);
if(start==0)
{
P0 = 0x40;
BZ=0;
ET1=1;TR1=1;
a=0;
state=1;
while(start==0);
}
}
}
while(state==1)
{
if(AnJan_1==0)
{
P0 = SMG_CODE[1];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_2==0)
{
P0 = SMG_CODE[2];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_3==0)
{
P0 = SMG_CODE[3];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_4==0)
{
P0 = SMG_CODE[4];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_5==0)
{
P0 = SMG_CODE[5];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_6==0)
{
P0 = SMG_CODE[6];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_7==0)
{
P0 = SMG_CODE[7];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_8==0)
{
P0 = SMG_CODE[8];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(reset==0)
{
state=0;
P0=SMG_CODE[17];
BZ=1;
break;
}
}
while(state==2)
{
if(reset==0)
{
state=0;
BZ=1;
P0=SMG_CODE[17];
break;
}
}
}
}
void Dingshiqi1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a>=20)
{
ET1=0;TR1=0;
a=0;
BZ=1;
}
}
复制代码
作者:
wc86110
时间:
2019-4-11 19:44
要响得用对蜂鸣器和三极管
作者:
yzwzfyz
时间:
2019-4-12 16:01
你向P3.0送个1看它响不响?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1