51单片机数码管制作四位计数器0000-9999
时间: 2023-07-30 19:09:05 浏览: 134
以下是51单片机的代码实现,使用共阴极数码管:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 数码管0-9编码表
void delay(uint xms) // 延时函数
{
uint i, j;
for(i=xms; i>0; i--)
for(j=110; j>0; j--);
}
void display(uchar first, uchar second, uchar third, uchar fourth) // 数码管显示函数
{
LSA=0; LSB=0; LSC=0; // 显示第一位数码管
P0=num[first];
delay(5);
P0=0x00;
LSA=1; LSB=0; LSC=0; // 显示第二位数码管
P0=num[second];
delay(5);
P0=0x00;
LSA=0; LSB=1; LSC=0; // 显示第三位数码管
P0=num[third];
delay(5);
P0=0x00;
LSA=1; LSB=1; LSC=0; // 显示第四位数码管
P0=num[fourth];
delay(5);
P0=0x00;
}
void main()
{
uchar i, j, k, l;
for(i=0; i<10; i++)
for(j=0; j<10; j++)
for(k=0; k<10; k++)
for(l=0; l<10; l++)
{
display(i, j, k, l); // 显示当前的数码管
delay(1000); // 延时1秒
}
}
```
需要注意的是,此代码中的延时函数需要根据实际情况进行调整,以保证数码管显示效果的稳定。另外,此代码中的计数器只是简单地利用四层循环进行实现,如果想要实现更复杂的计数功能,需要根据具体需求进行修改。
阅读全文