#include<STC15W.h>
/************************通信接口配置*************************************************/
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit LSA=P1^1;
sbit LSB=P1^2;
sbit LSC=P1^3;
u8 code smgduan[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90};//顯示0~F的值 共陽0-9
u16 s,shi=0,fen=0,miao=0;
u8 mb[8];
void Timer0Init()
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0xFC; //給定時器賦初值,定時1ms
TL0=0X18;
TR0=1;//打開定時器
}
void yanshi(u16 i)
{
while(i--);
}
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
}
P2=smgduan[mb[i]];//發送段碼
yanshi(1); //間隔一段時間掃描
P2=0xff;//消隱
}
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
******v*************************************************************************/
void main()
{
Timer0Init();
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
s++;
}
if(s==1000) //到達1s時間
{
s=0;
miao++;
}
mb[0]=miao%10;
mb[1]=miao/10;
mb[2]=16;
mb[3]=fen%10;
mb[4]=fen/10;
mb[5]=16;
mb[6]=shi%10;
mb[7]=shi/10;
if(miao==60)fen++,miao=0;
if(fen==60)shi++,fen=0;
if(shi==24)shi=0;
DigDisplay();
}
}
|