微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C51二位数码管显示程序设计

C51二位数码管显示程序设计

时间:11-27 来源:互联网 点击:

#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;

}
}

回答:

肯定不同时的啊 因为你是显示为十再显示个的

其实所谓的同时显示就是循环扫描 时间间隔短了 自然看着就是同时了

你要做的就是在显示延时的同时显示一下十位 再显示一下个位 而不是显示完一个再显示另一个

最好的做法是放在中断中 这样能确保显示效果

bit flag;

int shi ,ge;

这三个为外部变量在延时的过程中调用这个函数 应该就OK了

void showled()

{

if (flag==0)

{

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

}

else

{

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

}

flag=~flag;

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top