用51单片机写数码管显示0000到9999,时间间隔500ms,显示结束后进入主程序的代码
时间: 2024-05-04 09:20:48 浏览: 9
以下是用51单片机和共阳数码管实现0000到9999循环显示,每个数码管显示时长为500ms的代码:
```c
#include<reg52.h> //头文件
sbit s1=P2^2; //数码管位选引脚
sbit s2=P2^3;
sbit s3=P2^4;
sbit s4=P2^5;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管0-9编码
void delay(unsigned int t) //延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void main()
{
unsigned int i,j,k,l;
while(1) //循环显示
{
for(i=0;i<10;i++) //千位循环0-9
{
s1=0; //选中第一位数码管
P0=table[i]; //显示千位
delay(10); //延时
s1=1; //关闭第一位数码管
for(j=0;j<10;j++) //百位循环0-9
{
s2=0; //选中第二位数码管
P0=table[j]; //显示百位
delay(10); //延时
s2=1; //关闭第二位数码管
for(k=0;k<10;k++) //十位循环0-9
{
s3=0; //选中第三位数码管
P0=table[k]; //显示十位
delay(10); //延时
s3=1; //关闭第三位数码管
for(l=0;l<10;l++) //个位循环0-9
{
s4=0; //选中第四位数码管
P0=table[l]; //显示个位
delay(10); //延时
s4=1; //关闭第四位数码管
if(i==9&&j==9&&k==9&&l==9) //显示结束后跳出循环
goto end;
}
}
}
}
}
end: //跳出循环后进入主程序
while(1) //主程序
{
//此处填写主程序代码
}
}
```
需要注意的是,以上代码中的延时函数需要根据实际情况进行调整。