uint i,j;
uint WZ=0;//位指示
uint hour=12;//時(shí)初值為12
uint minute=0;
uint second=0;
sbit P00=P0^1;
sbit P01=P0^2;
sbit P02=P0^3;
static uchar t;
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
uchar code table2[]={0x01,0x02,0x04,0x08,0x10,0x20};//6個(gè)位
uchar disbuf[]={0,0,0,0,2,1};//顯示緩沖
void main(void)
{
TMOD=0x01;
TH0=0xec;//初值5ms
TL0=0x77;
TR0=1;
ET0=1;
EA=1;
while(1) //按鍵掃描
{
if(P00==0) //秒
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P00==0)
{
second++;
if(second==60)
{
second=0;
}
disbuf[0]=second%10;
disbuf[1]=second/10;
while(P00==0);
}
}
if(P01==0) //分
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P01==0)
{
minute++;
if(minute==60)
{
minute=0;
}
disbuf[2]=minute%10;
disbuf[3]=minute/10;
while(P01==0);
}
}
if(P02==0) //時(shí)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P02==0)
{
hour++;
if(hour==24)
{
hour=0;
}
disbuf[4]=hour%10;
disbuf[5]=hour/10;
while(P02==0);
}
}
}
}
timer0() interrupt 1
{
T0=0xec77;
P2=table1[disbuf[WZ]];//依位顯示段
P3=table2[WZ];//顯示位
WZ++;
if(WZ==6)//共6位
{
WZ=0;
}
t++;
if(t==2000)
{
t=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==13)
{
hour=0;
}
}
}
}
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[2]=minute%10;
disbuf[3]=minute/10;
disbuf[4]=hour%10;
disbuf[5]=hour/10;
}
[此貼子已經(jīng)被作者于2011-10-2 13:16:50編輯過(guò)]
作者: daixiaoxiao3824 時(shí)間: 2011-10-2 01:17
javascript:;
作者: daixiaoxiao3824 時(shí)間: 2011-10-2 13:18
以下是引用daixiaoxiao3824在2011-10-2 1:17:22的發(fā)言:
javascript:;
再試下程序可不可以正常顯示。
#define uint unsigned int
#define uchar unsigned char
#include
}
[此貼子已經(jīng)被作者于2011-10-2 13:19:16編輯過(guò)]
作者: 獨(dú)孤半球 時(shí)間: 2011-11-4 19:32
2可能是數(shù)碼管個(gè)位和十位接反了
3檢查一下位碼輸出是否正確,如果正確可能是數(shù)碼管應(yīng)該選共陽(yáng)極的。
我也剛學(xué),可能不對(duì),你試一下吧!
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |