新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的倒計(jì)時(shí)器設(shè)計(jì)

基于51單片機(jī)的倒計(jì)時(shí)器設(shè)計(jì)

作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏

void Displaypro(void)
{
StrTab[0]=tab[hour/10]; //存儲小時(shí)
StrTab[1]=tab[hour%10];
StrTab[2]=0x40; //存儲"-"
StrTab[3]=tab[minute/10]; //存儲分鐘
StrTab[4]=tab[minute%10];
StrTab[5]=0x40; //存儲"-"
StrTab[6]=tab[second/10]; //存儲秒
StrTab[7]=tab[second%10];
}

void Print_play_pro(void) //動態(tài)掃描數(shù)碼管
{
D0=1; D1=1; D2=1; //顯示秒
P0=StrTab[7];
delay(3);

D0=0;D1=1; D2=1;
P0=StrTab[6];
delay(3);
D0=1;D1=0; D2=1; //顯示"-"
P0=StrTab[5];
delay(3);
D0=0;D1=0;D2=1; //顯示分
P0=StrTab[4];
delay(3);

D0=1;D1=1;D2=0;
P0=StrTab[3];
delay(3);
D0=0;D1=1;D2=0; //顯示"-"
P0=StrTab[2];
delay(3);
D0=1;D1=0;D2=0; //顯示小時(shí)
P0=StrTab[1];
delay(3);
D0=0;D1=0;D2=0;
P0=StrTab[0];
delay(3);
}
/*****************************定時(shí)器1中斷*********************************/
void time1_isr(void) interrupt 3 //定時(shí)器1用來處理蜂鳴器
{
static uint count = 1; //位置待定
TH1=0xd8; //重入初值定時(shí)20ms
TL1=0xf0;
//Print_play_pro(); //抖動效果
count++;
D3=0; //產(chǎn)生鬧鐘方波
if(200==count)
{
TR0=1;
TR1=0;
count=1;
D3=1;
}
}
/***************************定時(shí)器0中斷**********************************/
void tim(void) interrupt 1 //定時(shí)器0用來處理倒計(jì)時(shí)
{
static uchar count; //定義內(nèi)部局部變量
TH0=0xd8; //重新賦值
TL0=0xf0;
count++;
switch (count)
{
case 80:Displaypro();break; //隔一定時(shí)間調(diào)用顯示處理
default:break;
}
if (count==100)
{
clock_judge_pro(); //定時(shí)時(shí)間判斷
count=0;

if((0==minute)&&(second==0)) //倒計(jì)時(shí)值處理
{
if(0==hour) { hour=0; }
else { hour--; }
minute=60;
}
if(0==second)
{
if(0==minute) { minute=59; }
else { minute-=1; }
}
if(0==second) { second=60; }
else { second-=1; }
if((0==hour)&&(0==minute)&&(0==second)) //倒計(jì)時(shí)到00:00:00,結(jié)束倒計(jì)時(shí)
{ hour=0; minute=0; second=0; Displaypro(); TR0=0; }
}
}

上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉