51单片机数码管显示头文件为#include<reg52.h>不加按键控制的秒表,秒表中能显示毫秒的代码,秒表八位数码管都能计时到
时间: 2024-04-09 10:28:17 浏览: 107
FPGA课程设计——秒表设计。有启停功能,按键消抖,按键时间修改,6位数码管显示时分秒。
5星 · 资源好评率100%
以下是一个使用51单片机控制八位数码管显示毫秒的秒表代码:
```c
#include <reg52.h>
sbit D1 = P1^0; // 数码管位选引脚
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
sbit D5 = P1^4;
sbit D6 = P1^5;
sbit D7 = P1^6;
sbit D8 = P1^7;
unsigned char code LEDChar[] = { // 数码管显示字符编码
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 = 114; j > 0; j--);
}
void display(unsigned int ms) {
unsigned int i;
unsigned char digit[8] = {0};
digit[0] = ms / 10000000;
digit[1] = (ms % 10000000) / 1000000;
digit[2] = (ms % 1000000) / 100000;
digit[3] = (ms % 100000) / 10000;
digit[4] = (ms % 10000) / 1000;
digit[5] = (ms % 1000) / 100;
digit[6] = (ms % 100) / 10;
digit[7] = ms % 10;
for(i = 0; i < 8; i++) {
switch(i) {
case 0:
D8 = 0;
D7 = 0;
D6 = 0;
D5 = 0;
D4 = 0;
D3 = 0;
D2 = 0;
D1 = 1;
P0 = LEDChar[digit[0]];
break;
case 1:
D8 = 0;
D7 = 0;
D6 = 0;
D5 = 0;
D4 = 0;
D3 = 0;
D2 = 1;
D1 = 0;
P0 = LEDChar[digit[1]];
break;
case 2:
D8 = 0;
D7 = 0;
D6 = 0;
D5 = 0;
D4 = 0;
D3 = 1;
D2 = 0;
D1 = 0;
P0 = LEDChar[digit[2]];
break;
case 3:
D8 = 0;
D7 = 0;
D6 = 0;
D5 = 0;
D4 = 1;
D3 = 0;
D2 = 0;
D1 = 0;
P0 = LEDChar[digit[
阅读全文