首先代码
#include "reg51.h"
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
uchar num[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar wei[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
uint n1=0;
uint n2=0;
void delay(unsigned int t){
unsigned char i;
for(;t>0;t--){
for(i=300;i>0;i--);
}
}
// p1控制哪一位显示
// p2控制显示什么数字
// T0定时,T1计数
// 当T0定时间到了,就取出T1计数值,然后显示到数码管上面
void main(void) {
TMOD=0X51; // T0定时,T1计数,都是16位的
TH0=(65536-50000)/256; // 定T0的时间位50ms
TL0=(65536-50000)%256;
ET0=1;
EA = 1;
TR0=1; // 启动T0
TR1=1; // 启动T1
while(1){
P1=wei[7];
P2=num[n1%10];
delay(10);
P1=wei[6];
P2=num[(n1/10)%10];
delay(10);
P1=wei[5];
P2=num[(n1/100)%10];
delay(10);
P1=wei[4];
P2=num[(n1/1000)%10];
delay(10);
P1=wei[3];
P2=num[(n1/10000)%10];
delay(10);
P1=wei[2];
P2=num[(n1/100000)%10];
delay(10);
P1=wei[1];
P2=num[(n1/1000000)%10];
delay(10);
P1=wei[0];
P2=num[(n1/10000000)%10];
delay(10);
}
}
// 用T0定时
void timer ()interrupt 1
{
TH0=(65536-50000)/256; // 定T0的时间位50ms
TL0=(65536-50000)%256;
n1=TH1;
n2=TL1;
n1=TH1*256+n2;
TH1=0;
TL1=0;
}
线路图: