51单片机数码管3分钟计时
时间: 2023-11-04 17:18:05 浏览: 75
51单片机数码管倒计时.zip
以下是51单片机数码管3分钟计时的代码示例:
```
#include <reg51.h> // 导入51单片机头文件
#define uchar unsigned char // 定义无符号字符型变量
sbit D1 = P1^0; // 数码管的位选引脚
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
sbit LSA = P2^2; // 数码管的段选引脚
sbit LSB = P2^3;
sbit LSC = P2^4;
uchar code DisplayTable[] = { // 数码管显示表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x00
};
void Delayms(uchar n) { // 延时函数
uchar i, j;
for(i = n; i > 0; i--)
for(j = 110; j > 0; j--);
}
void Display(uchar num) { // 数码管显示函数
LSA = 0; LSB = 0; LSC = 0; // 关闭段选
P0 = DisplayTable[num]; // 设置显示的数字
Delayms(5); // 延时
}
void main() {
uchar i, j, k;
for(i = 0; i < 3; i++) { // 3分钟计时
for(j = 0; j < 60; j++) { // 60秒计时
for(k = 0; k < 100; k++) { // 100毫秒计时
Display(j % 10); // 显示秒的个位数
D1 = 1; D2 = 0; D3 = 0; D4 = 0; // 选择第1位数码管
Delayms(1); // 延时
Display(j / 10); // 显示秒的十位数
D1 = 0; D2 = 1; D3 = 0; D4 = 0; // 选择第2位数码管
Delayms(1);
Display(i % 10); // 显示分的个位数
D1 = 0; D2 = 0; D3 = 1; D4 = 0; // 选择第3位数码管
Delayms(1);
Display(i / 10); // 显示分的十位数
D1 = 0; D2 = 0; D3 = 0; D4 = 1; // 选择第4位数码管
Delayms(1);
}
}
}
}
```
以上代码实现了3分钟计时功能,使用了延时函数和数码管显示函数。在主函数中,分别对秒、分和小时进行计时,并通过数码管显示出来。其中,位选引脚用于选择数码管的哪一位进行显示,段选引脚则用于控制数码管显示的数字。
阅读全文