天天看点

51单片机时钟怎么加入蜂鸣器

我在主函数那加入蜂鸣器,但是数码管只能显示首个,其他5个数码管都无法显示。

求助,我想让秒种跳一位蜂鸣器响一次。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uchar code shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code weiz[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

uchar code shud[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

sbit wela=P2^7;

sbit dula=P2^6;

sbit beep=P2^3;

uchar a,num,num1;

uint i,min,sec,hour,b,c,d,e,f,j;

void display();

void init();

void delay(uchar z);

void delay2(uchar m);

void display() //显示函数

{

dula=1;

P0=shu[j];

dula=0;

P0=0xff;

wela=1;

P0=weiz[5];

wela=0;

delay(1);

dula=1;
	P0=shu[b];
	dula=0;
	  P0=0xff;
	wela=1;
	P0=weiz[4];
	wela=0;
	delay(1);

	dula=1;
	P0=shud[c];
	dula=0;
	  P0=0xff;
	wela=1;
	P0=weiz[3];
	wela=0;
	delay(1);
	
	dula=1;
	P0=shu[d];
	dula=0;
	  P0=0xff;
	wela=1;
	P0=weiz[2];
	wela=0;
	delay(1);
	
	dula=1;
	P0=shud[e];
	dula=0;
	  P0=0xff;
	wela=1;
	P0=weiz[1];
	wela=0;
	delay(1);
	
	dula=1;
	P0=shu[f];
	dula=0;
	  P0=0xff;
	wela=1;
	P0=weiz[0];
	wela=0;
	delay(1);
           

}

void init() //初始化

{

num=0;

num1=0;

sec=0;

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void delay(uchar z) //延迟1

{

uchar x,y;

for(x=z;x>0;x–)

for(y=1;y>0;y–);

}

void delay2(uchar m) //延迟2

{

uchar x,y;

for(x=m;x>0;x–)

for(y=110;y>0;y–);

}

void time0() interrupt 1 //中断1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

a++;

if(a20)

{

a=0;

sec++;

delay(100);

if(sec60)

{

sec=0;

min++;

if(min==60)

{

min=0;

hour++;

if(hour=24)

{

hour=0;

}

}

}

}

j=sec%10;

b=sec/10;

c=min%10;

d=min/10;

e=hour%10;

f=hour/10;

}

void main() //主函数

{

beep=1;

init();

while(1)

{

display();

}

}