|
用的是HJ-2G開(kāi)發(fā)學(xué)習(xí)板,想實(shí)現(xiàn)用動(dòng)態(tài)數(shù)碼管實(shí)時(shí)顯示ds1302的功能?仿照網(wǎng)上程序試了好多遍,為什么老是實(shí)現(xiàn)不了呢?
void Delay(unsigned long x)
{
while(x--);
}
show(uchar time[])
{
uchar time0,gw,sw, time1,time2;//
unsigned long t=500;
//uint t=2;
time0=time[0]; time[0]為得到的秒BCD碼
sw=time0/16; 求十位;
gw=time0%16; 求個(gè)位;
DDRA|=BIT(3);//把PA3設(shè)為輸出
DDRA|=BIT(4);//把PA4設(shè)為輸出
DDRB=0XFF;//把PB口設(shè)為輸出型,全為高
PORTA|=BIT(3);
PORTB=Number[sw];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(4);//位選四顯示分十位
PORTA|=BIT(4);
PORTA&=~BIT(4);
Delay(t);
PORTA|=BIT(3);
PORTB=Number[gw];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(5);//位選四顯示分個(gè)位
PORTA|=BIT(4);
PORTA&=~BIT(4);
Delay(t);
}
哪位大俠指點(diǎn)一下迷津?
補(bǔ)充:假設(shè)先前輸入的秒是50,理想情況在數(shù)碼管顯示出50并不斷加1,但最后顯示是AE, AE也不動(dòng),不知道錯(cuò)誤在哪。
時(shí)間在1602上顯示正常,當(dāng)然輸入1602的數(shù)據(jù)提前轉(zhuǎn)為ascii碼了。
|
|