標(biāo)題: [求助]求助:為什么我的時(shí)鐘有如下問(wèn)題? [打印本頁(yè)]

作者: daixiaoxiao3824    時(shí)間: 2011-10-2 01:10
標(biāo)題: [求助]求助:為什么我的時(shí)鐘有如下問(wèn)題?
參考資料寫(xiě)的時(shí)鐘程序,6位共陰數(shù)碼管,P2口接段,P3口接位,在中斷中計(jì)數(shù)并將數(shù)分配到顯示緩沖中,主程序掃描鍵盤(pán)。 發(fā)現(xiàn) 1 定時(shí)器無(wú)論初值是多少,都是一樣的速度,刷新很慢,只有每秒幾次,可以看到一個(gè)個(gè)字顯示,是我哪里寫(xiě)錯(cuò)了? 2 本來(lái)是最后一位是秒個(gè)位,現(xiàn)在倒過(guò)來(lái)了,最末一位是時(shí)十位。 3 每次上電,總是從秒十位開(kāi)始顯示。就是從第二位,這本來(lái)該顯示時(shí)個(gè)位的。 請(qǐng)各位指正啊!改了好幾天了沒(méi)有效果。。。。! 程序如下: #define uint unsigned int #define uchar unsigned char #include 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