新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51二位數(shù)碼管顯示程序設(shè)計(jì)

C51二位數(shù)碼管顯示程序設(shè)計(jì)

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

#define uint unsigned int
#define uchar unsigned char
sbit k1=P2^0;
sbit k2=P2^1;
uint code table[]={0X00,0X80,0X10,0X90,0X20,0XA0,0X30,0XB0,0X40,0XC0};
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
{
for(b=z;b>0;b--);
}
}
void main()
{
int c=99,t,shi,ge;
for(t=99;t>0;t--)
{
shi=c/10;
ge=c;
k1=0,k2=1;
P1=table[shi];
delay(300);
P1=0XFF;

k2=0,k1=1;
P1=table[ge];
delay(200);
P1=0XFF;
k1=0,k2=0;
c--;
if(c==0)
c=99;

本文引用地址:http://butianyuan.cn/article/201611/322475.htm


}
}

回答:

肯定不同時(shí)的啊 因?yàn)槟闶秋@示為十再顯示個(gè)的

其實(shí)所謂的同時(shí)顯示就是循環(huán)掃描 時(shí)間間隔短了 自然看著就是同時(shí)了

你要做的就是在顯示延時(shí)的同時(shí)顯示一下十位 再顯示一下個(gè)位 而不是顯示完一個(gè)再顯示另一個(gè)

最好的做法是放在中斷中 這樣能確保顯示效果

bit flag;

int shi ,ge;

這三個(gè)為外部變量在延時(shí)的過(guò)程中調(diào)用這個(gè)函數(shù) 應(yīng)該就OK了

void showled()

{

if (flag==0)

{

P1=table[shi];k2=1,k1=0;

}

else

{

P1=table[ge];k2=0,k1=1;

}

flag=~flag;

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉