|
#include<STC15W.h>
/************************通信接口配置*************************************************/
typedef unsigned int u16; //對(duì)數(shù)據(jù)類(lèi)型進(jìn)行聲明定義
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的值 共陽(yáng)0-9
u16 s,shi=0,fen=0,miao=0;
u8 mb[8];
void Timer0Init()
{
TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開(kāi)啟動(dòng)。
TH0=0xFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
TR0=1;//打開(kāi)定時(shí)器
}
void yanshi(u16 i)
{
while(i--);
}
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
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]];//發(fā)送段碼
yanshi(1); //間隔一段時(shí)間掃描
P2=0xff;//消隱
}
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
******v*************************************************************************/
void main()
{
Timer0Init();
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
s++;
}
if(s==1000) //到達(dá)1s時(shí)間
{
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();
}
}
|
|