51单片机数码管显示0~99代码
时间: 2023-10-21 09:03:44 浏览: 521
当然,下面是一个使用51单片机控制数码管显示0~99的代码示例:
```c
#include <reg51.h>
// 数码管段选引脚定义
sbit segA = P2^0;
sbit segB = P2^1;
sbit segC = P2^2;
sbit segD = P2^3;
sbit segE = P2^4;
sbit segF = P2^5;
sbit segG = P2^6;
sbit segDP = P2^7;
// 数码管位选引脚定义
sbit dig1 = P1^0;
sbit dig2 = P1^1;
// 数码管显示的数字数组
unsigned char code numTable[] = {
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};
// 延时函数
void delay(unsigned int ms)
{
unsigned int i, j;
for (i = ms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
unsigned char num, tens, ones;
while (1)
{
for (num = 0; num < 100; num++)
{
tens = num / 10; // 十位数
ones = num % 10; // 个位数
// 数码管1显示十位数
dig1 = 1; // 打开位选1
dig2 = 0; // 关闭位选2
P0 = numTable[tens];
delay(5);
// 数码管2显示个位数
dig1 = 0; // 关闭位选1
dig2 = 1; // 打开位选2
P0 = numTable[ones];
delay(5);
}
}
}
```
这段代码使用了P2口来控制数码管的段选引脚,P1口来控制数码管的位选引脚。通过循环遍历0~99的数字,在每次循环中将十位数和个位数分别显示在两个数码管上。延时函数`delay()`用于控制数码管刷新的速度。
阅读全文