用C语言编程 怎么用单片机使2位数码管动态显示00---99? P1口接1个二位数码管 P30和P31控制位选!急用

如题所述

第1个回答  2011-10-24
#include<reg51.h>
#include<stdlib.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
unsigned char buffer[6];
bit flag;
unsigned int n;
unsigned char j =0;
void delay(int ms)
{ int i;
while(ms--)
for(i=0;i<200;i++);
}
handle(unsigned int n)
{
unsigned char i;
for(i=0;i<6;i++)
{
buffer[i]=n%10;
n=n/10;
}
}
void jinzhi()
{
if(n<100)

{ n++;

if(n==99)
{
n=0;
}
flag=0;
}

}
void xianshi()
{
unsigned char i,weixuan;
weixuan=0x80;
for(i=0;i<6;i++)
{
P2=weixuan;
P3=tab[buffer[i]];
delay(0);
weixuan>>=1;
}
}
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
n=0;
handle(n);
while(1)
{ handle(n);
xianshi();
if(flag==1)
jinzhi();

}
}
int0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==20)
{
j=0;
flag=1;
}
}
第2个回答  2011-10-19
不要上来就问怎么做,要自己动手搞一搞,遇到具体问题提出来,大家都会帮助你的,整个一个命题,要说的太多了本回答被网友采纳
第3个回答  2011-10-19
我觉得你应该自己写,因为很简单,不懂脑筋是学不好的。虽然我的话不中听,但希望你能接受。
第4个回答  2011-10-19
把要显示的数分成十位和个位,分别显示,至于0-99变化,你用延时或定时器都行。
第5个回答  2012-04-27
半年过去了,兄弟 我还在想 你教教我。
相似回答