数码管显示按键次数程序
时间: 2023-10-04 16:12:43 浏览: 191
Key_Dis---1.rar_VHDL数码管按键_vhdl 按键次数
5星 · 资源好评率100%
以下是一个简单的数码管显示按键次数的程序:
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1 = P1^0; // 按键1
sbit k2 = P1^1; // 按键2
sbit k3 = P1^2; // 按键3
sbit k4 = P1^3; // 按键4
uchar code numTable[] = { // 数码管显示的数字表
0xc0, // 0
0xf9, // 1
0xa4, // 2
0xb0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xf8, // 7
0x80, // 8
0x90 // 9
};
uint count = 0; // 计数器
void delay(uint t) { // 延时函数
uint i;
while (t--) {
for (i = 0; i < 120; i++);
}
}
void display(uint n) { // 数码管显示函数
P2 = numTable[n / 1000];
P0 = 0xfe;
delay(1);
P0 = 0xff;
P2 = numTable[n % 1000 / 100];
P0 = 0xfd;
delay(1);
P0 = 0xff;
P2 = numTable[n % 100 / 10];
P0 = 0xfb;
delay(1);
P0 = 0xff;
P2 = numTable[n % 10];
P0 = 0xf7;
delay(1);
P0 = 0xff;
}
void main() {
while (1) {
if (!k1) { // 按键1按下
while (!k1); // 等待按键1释放
count++;
}
if (!k2) { // 按键2按下
while (!k2); // 等待按键2释放
count--;
}
if (!k3) { // 按键3按下
while (!k3); // 等待按键3释放
count = 0;
}
if (!k4) { // 按键4按下
while (!k4); // 等待按键4释放
continue; // 不显示计数器
}
display(count);
}
}
```
程序中使用了 4 个按键,分别用于计数器加 1、减 1、清零和关闭数码管显示。按键按下后需要等待释放才能进行下一次操作。数码管显示函数 `display` 通过将计数器按位转换为数码管显示的数字表中对应的数码管码值来实现显示。延时函数 `delay` 主要用于延迟一定时间以保证数码管显示的稳定性。
阅读全文