本文目录
- 51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序
- 让静态数码管循环显示0到9,每个数字显示延迟半秒
51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序
#include《reg51.h》#define uchar unsigned charuchar code ledtab={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9uchar time,scanled,tiao;uchar disdat=“201803“;void delay(unsigned int x){unsigned int i,j;for(i=0;i《x;i++)for(j=0;j《120;j++);}void t0isr() interrupt 1//秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;tiao++;tiao%=10;}}void t1isr() interrupt 3//显示{TH1=0xec;TL1=0x78;P2=1《《scanled;P0=~ledtab;scanled++;scanled%=4;}main(){TMOD=0x11;TH0=0x3c;TL0=0xb0;TH1=0xec;TL1=0x78;TR1=1;TR0=1;ET0=1;ET1=1;EA=1;while(1);}
让静态数码管循环显示0到9,每个数字显示延迟半秒
因你没有给原理图,所以,画了一个仿真图,一位共阴数码管接在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
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;//显示0~9
}
}