高手求救!!!蜂鸣器发声与数码管动态显示同步执行程序纠错
本程序的功能在实现数码管动态显示14.5的同时,让蜂鸣器发出频率1\8000Hz的声音。数码管为共阳数码管。单片机P0口接数码管段,P2口接数码管位,P1^7接蜂鸣器。程...
本程序的功能在实现数码管动态显示14.5的同时,让蜂鸣器发出频率1\8000Hz的声音。数码管为共阳数码管。单片机P0口接数码管段,P2口接数码管位,P1^7接蜂鸣器。
程序如下
#include<stdio.h>
#include<reg51.h>
sbit FMQ=P1^7;
sbit P07=P0^7;
unsigned char code Tabduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x99};
unsigned int PL;
void delay4ms(void) /*延时4.5ms*/
{unsigned char k,l;
for(k=0;k<25;k++)
for(l=0;l<60;l++);
}
void main()
{
unsigned int a,b,c,i;
PL=4000;
FMQ=1;
a=1;
b=4;
c=5;
EA=1;
ET0=1;
TMOD=0x01;
TL0=(65536-PL)%256;
TH0=(65536-PL)/256;
TR0=1;
while(1) /*数码管动态显示*/
{P2=0x00;
P0=Tabduan[a];
P2=0x01;
delay4ms();
P2=0x00;
P0=Tabduan[b];
P07=0;
P2=0x02;
delay4ms();
P2=0x00;
P0=Tabduan[c];
P2=0x04;
delay4ms();
}}
Time0(void) interrupt 1 using 0 /*中断实现发声*/
{FMQ=~FMQ;
TL0=(65536-PL)%256;
TH0=(65536-PL)/256;}
单独显示数码管或是单独发声都没有问题,可是将两者综合后数码管就不能正常显示了。 展开
程序如下
#include<stdio.h>
#include<reg51.h>
sbit FMQ=P1^7;
sbit P07=P0^7;
unsigned char code Tabduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x99};
unsigned int PL;
void delay4ms(void) /*延时4.5ms*/
{unsigned char k,l;
for(k=0;k<25;k++)
for(l=0;l<60;l++);
}
void main()
{
unsigned int a,b,c,i;
PL=4000;
FMQ=1;
a=1;
b=4;
c=5;
EA=1;
ET0=1;
TMOD=0x01;
TL0=(65536-PL)%256;
TH0=(65536-PL)/256;
TR0=1;
while(1) /*数码管动态显示*/
{P2=0x00;
P0=Tabduan[a];
P2=0x01;
delay4ms();
P2=0x00;
P0=Tabduan[b];
P07=0;
P2=0x02;
delay4ms();
P2=0x00;
P0=Tabduan[c];
P2=0x04;
delay4ms();
}}
Time0(void) interrupt 1 using 0 /*中断实现发声*/
{FMQ=~FMQ;
TL0=(65536-PL)%256;
TH0=(65536-PL)/256;}
单独显示数码管或是单独发声都没有问题,可是将两者综合后数码管就不能正常显示了。 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询