51单片机按下独立按键数码管一直显示
时间: 2023-07-03 10:05:10 浏览: 76
你可以使用下面的代码来实现按下独立按键后数码管一直显示:
```
#include<reg51.h>
sbit key = P3^2; // 定义独立按键的引脚
sbit dula = P2^6;
sbit wela = P2^7;
unsigned char code table[] = { //显示数字0-9的编码表
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int i) { //延时函数
unsigned int j, k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void main() {
unsigned char num = 0; //初始化数字为0
while(1) {
if(key == 0) { //检测独立按键是否按下
delay(10); //延时去抖动
if(key == 0) { //再次判断独立按键是否按下
num++; //数字加1
if(num > 9)
num = 0; //数字超过9则清零
P0 = table[num]; //显示数字
dula = 0; //打开数码管锁存器
dula = 1; //关闭数码管锁存器
}
}
}
}
```
在这个代码中,我们首先定义了独立按键的引脚,然后使用延时函数来去抖动,避免按键的机械震动导致误触发。当检测到独立按键按下后,数字加1,如果数字超过9,则清零。最后将数字显示到数码管上,并打开数码管锁存器,使其显示出来。
需要注意的是,这个代码中只是实现了单次按下独立按键后数码管显示,如果需要一直显示,则可以将循环放在while(1)中,这样每次循环都会检测独立按键是否按下,并更新数码管的显示。