51单片机数码管显示0-99
时间: 2023-11-20 13:03:45 浏览: 66
要在51单片机上用数码管显示0-99,可以采用以下步骤:
1. 定义数码管引脚:数码管通常有7个引脚,分别是a、b、c、d、e、f、g,另外还有一个引脚用于控制小数点。在程序中需要定义这些引脚所连接的单片机的IO口。例如,可以将a~g引脚连接到P0口的0~6位,小数点引脚连接到P0.7位。
2. 定义数码管显示函数:根据数码管的真值表,可以定义一个函数来实现数码管的显示。例如,可以定义一个函数叫做show_digit,输入一个数字n,然后在数码管上显示相应的数字。
3. 主程序中调用显示函数:在主程序中,可以使用一个循环,从0循环到99,依次调用show_digit函数,以实现数码管的显示。
下面是一个简单的示例代码:
```
#include <reg52.h>
// 定义数码管引脚
sbit DIG1 = P0^0;
sbit DIG2 = P0^1;
sbit SEG_A = P0^2;
sbit SEG_B = P0^3;
sbit SEG_C = P0^4;
sbit SEG_D = P0^5;
sbit SEG_E = P0^6;
sbit SEG_F = P0^7;
// 数码管数字真值表
unsigned char digit_table[] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
// 数码管显示函数
void show_digit(unsigned char n)
{
unsigned char digit1, digit2;
// 将数字拆分成十位和个位
digit1 = n / 10;
digit2 = n % 10;
// 显示十位数字
DIG1 = 1;
DIG2 = 0;
P0 = digit_table[digit1];
// 延时
delay_ms(5);
// 显示个位数字
DIG1 = 0;
DIG2 = 1;
P0 = digit_table[digit2];
// 延时
delay_ms(5);
}
// 主程序
void main()
{
unsigned char i;
while (1)
{
// 循环显示0~99
for (i = 0; i < 100; i++)
{
show_digit(i);
}
}
}
```
阅读全文
相关推荐













