C51二位數(shù)碼管顯示程序設(shè)計(jì)
#define uint unsigned int
本文引用地址:http://butianyuan.cn/article/201611/322475.htm
#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;
}
}
- 回答:
肯定不同時(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)論