51单片机按键控制数码管0~9
时间: 2023-12-28 18:05:14 浏览: 37
下面是51单片机按键控制数码管0~9的简单代码:
```c
#include <reg51.h>
sbit P2_0 = P2^0; // 按键接口定义
sbit P2_1 = P2^1;
unsigned char code smgduan[] = { // 数码管显示0~9的码表
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int x){
unsigned int i, j;
for(i=x; i>0; i--){
for(j=110; j>0; j--);
}
}
void main(){
unsigned char i = 0;
while(1){
if(!P2_0){ // 按键0按下,数码管显示0
P0 = smgduan[0];
delay(10);
}
else if(!P2_1){ // 按键1按下,数码管显示1
P0 = smgduan[1];
delay(10);
}
else{ // 按键未按下,数码管不显示
P0 = 0xff;
}
}
}
```
这里使用了P2口的两个引脚P2_0和P2_1作为按键接口,通过判断按键是否按下来决定数码管显示哪个数字。在循环中,检测P2_0和P2_1引脚的电平状态,如果为低电平,就显示相应的数字,否则就不显示。同时为了防止按键松开后抖动引起的误触,增加了一个简单的延时函数。