51单片机数码管显示代码
时间: 2023-10-01 18:03:39 浏览: 84
51数码管显示代码
5星 · 资源好评率100%
以下是一个简单的 51 单片机数码管显示代码,可以在 4 位共阴数码管上显示数字 0-9:
```
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit D1=P2^0; // 数码管1
sbit D2=P2^1; // 数码管2
sbit D3=P2^2; // 数码管3
sbit D4=P2^3; // 数码管4
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 数码管显示 0-9 的编码
void delayms(uchar x) // 延时函数
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar i,j,k,l,num;
while(1)
{
num=0;
for(i=0;i<100;i++) // 循环 100 次,每次显示数字 0-9
{
for(j=0;j<50;j++) // 循环 50 次,每次显示同一个数字,防止闪烁
{
l=num/1000; // 千位
k=num%1000/100; // 百位
j=num%100/10; // 十位
i=num%10; // 个位
D1=0; // 打开第一位数码管
P0=table[l]; // 显示千位
delayms(1); // 延时 1ms
D1=1; // 关闭第一位数码管
D2=0; // 打开第二位数码管
P0=table[k]; // 显示百位
delayms(1); // 延时 1ms
D2=1; // 关闭第二位数码管
D3=0; // 打开第三位数码管
P0=table[j]; // 显示十位
delayms(1); // 延时 1ms
D3=1; // 关闭第三位数码管
D4=0; // 打开第四位数码管
P0=table[i]; // 显示个位
delayms(1); // 延时 1ms
D4=1; // 关闭第四位数码管
}
num++; // 每次加 1
if(num>9999) // 超过 9999,从头开始
num=0;
}
}
}
```
注释已经解释了每个部分的作用。这只是一个简单的示例,你可以根据你的需求进行修改和扩展。
阅读全文