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;
}
C51二位数码管显示程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)