//海翔開發(fā)板數(shù)碼管倒計時
//作者:yxf7499
//初次練手,做的不好,請多擔待。
//原理圖如下
數(shù)碼管.png (45.8 KB, 下載次數(shù): 34)
下載附件
2019-1-26 00:22 上傳
#include <reg52.h>
unsigned char code seg[]={0,1,2,3,4,5,6,7};//分別對應(yīng)相應(yīng)的數(shù)碼管點亮,即位碼
unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned long DuanBuff[9]={9,9,9,9,9,9,9,9,9};
unsigned long sec=3600;
unsigned int cnt;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0FC;
TL0 = 0x18;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0FC;
TL0 = 0x18;
cnt++;
if(cnt>1000)
{
cnt=0;
sec--;
}
}
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=110;n>0;n--);
}
void main()
{
InitTimer0();
while(1)
{
DuanBuff[7]=sec%10;
DuanBuff[6]=sec/10%10;
DuanBuff[5]=sec/100%10;
DuanBuff[4]=sec/1000%10;
DuanBuff[3]=sec/10000%10;
DuanBuff[2]=sec/100000%10;
DuanBuff[1]=sec/1000000%10;
DuanBuff[0]=sec/10000000%10;
P2=seg[0];
P0=duan[DuanBuff[0]];
delay(1);
P2=seg[1];
P0=duan[DuanBuff[1]];
delay(1);
P2=seg[2];
P0=duan[DuanBuff[2]];
delay(1);
P2=seg[3];
P0=duan[DuanBuff[3]];
delay(1);
P2=seg[4];
P0=duan[DuanBuff[4]];
delay(1);
P2=seg[5];
P0=duan[DuanBuff[5]];
delay(1);
P2=seg[6];
P0=duan[DuanBuff[6]];
delay(1);
P2=seg[7];
P0=duan[DuanBuff[7]];
delay(1);
}
}
|