第1个回答 2017-08-22
以下程序适合在TX-1C 51单 片机开发板
//0-99999计数
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned long int num=99999;
uchar a=0;
sbit dula=P2^6;
sbit wela=P2^7;
//共阴数码管七段码
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void display(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5)//显示程序
{
P0=table[a1];//显示第一个数
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a2]; //显示第二个数
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a3];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a4]; /
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a5];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
Delay1ms(2);
}
void main(void )//主程序
{
uchar b1,b2,b3,b4,b5;
TMOD=0x10;// 定时器1工作方式一
ET1=1;
EA=1;
TH1=(65536-50000)/256;//定时50ms
TL1=(65536-50000)%256;
TR1=1;
while(1)
{
b1=num/10000;//分离个十百千万
b2=num/1000%10;
b3=num/100%10;
b4=num/10%10;
b5=num%10;
display(b1,b2,b3,b4,b5);//显示
}
}
void Timer1(void) interrupt 3//中断程序
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a==20)//20次是1 秒
{ a=0;num--;}
}