因你没有给原理图,所以,画了一个仿真图,一位共阴数码管接在P0口,组成静态显示电路,每个数字显示0.5秒,采用定时器T0定时来实现。仿真图如下,请及时采纳。
程序如下
#include<reg52.h>
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char n,x;//中断程序中的变量必须定义成全局变量
void main()
{
TMOD=0x01;
TH0=0x3C;//晶振12M,定时50ms
TL0=0xB0;
TR0=1;
EA=1;
ET0=1;
P0=smgduan[0];//先显示0
while(1);//等待中断计数
}
//定时器T0中断程序
void time0() interrupt 1
{
TH0=0x3C;
TL0=0xB0;
n++;
if(n==10)//0.5秒到
{
n=0;//秒回0
x++;//计数加1
if(x>9)//大于9,回0
x=0;
P0=smgduan[x];//显示0~9
}
}