标题:
51单片机30S倒计时显示程序+电路图
[打印本页]
作者:
lianlian
时间:
2015-7-10 02:45
标题:
51单片机30S倒计时显示程序+电路图
//计时程序,要求有两个定时器,要有声音(蜂鸣器就行),显示(数码管)
//2016 04 29 E:\DPJ_C\OTHER\30S倒计时\30s.c
#include <reg52.h>
#define uchar unsigned char
sbit BZ = P1^2;
sbit P20=P2^0;
sbit P21=P2^1;
uchar a=30,b,c,time,flag;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(unsigned int ms) //1ms延时
{
while(ms--)
for(b=123;b>0;b--);
}
void disp();
void t0intinit()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xfe;
TL1=0x0c;
EA=1;
ET0=1;
ET1=1;
TR0=1;
}
void main(void)
{
t0intinit();
while(1)
{
disp();
while(flag)
{
disp();
TR1=1;
if(c==3) //蜂鸣3s后停止
{
flag=0;
TR0=0;
TR1=0;
}
}
}
}
void disp( )
{
P0=tab[a%10];
P21=0;
delay_ms(1);
P21=1;
P0=tab[a/10];
P20=0;
delay_ms(1);
P20=1;
}
void t0int(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
if(a!=0)
a--;
else
{
flag=1;
c++;
}
}
}
void t1int(void) interrupt 3 //定时器T1作1kz蜂鸣
{
TH1=0xfe; //0.5ms定时
TL1=0x0c;
if(flag==1)
BZ=~BZ;
}
复制代码
作者:
小菜鸟3号
时间:
2021-12-29 12:39
有完整的电路图吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1