51单片机数码管显示秒表,秒表都能够在数码管上显示不加按键的代码
时间: 2023-12-26 07:32:00 浏览: 87
下面是一个简单的示例代码,使用51单片控制数码管显示秒表,并且可以数码管上显示秒表的计时:
```C
#include <reg51.h>
sbit D1 = P^0; // 数码管段选控制引脚
sbit D2 = P0^1;
sbit D3 = P0^2;
sbit D4 = P0^3;
unsigned char code table[] = { // 数码管段选编码表
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 display(unsigned int time) {
unsigned int min, sec;
min = time / 60;
sec = time % 60;
D1 = 1; D2 = D3 = D4 = 0;
P2 = table[min / 10]; // 显示分钟的十位
delay(5);
D2 = 1; D1 = D3 = D4 = 0;
P2 = table[min % 10]; // 显示分钟的个位
delay(5);
D3 = 1; D1 = D2 = D4 = 0;
P2 = table[sec / 10]; // 显示秒钟的十位
delay(5);
D4 = 1; D1 = D2 = D3 = 0;
P2 = table[sec % 10]; // 显示秒钟的个位
delay(5);
}
void main() {
unsigned int time = 0; // 秒表计时时间
while (1) {
delay(1000); // 延时1秒
time++; // 时间加1
display(time); // 显示计时时间
}
}
```
这段代码与上一个示例代码非常相似,唯一的区别是在计时循环中,先进行延时1秒,然后再将时间加1,最后再进行数码管的显示。这样可以确保每隔1秒更新一次时间并显示在数码管上,实现了秒表的功能。
阅读全文