按键循环控制数码管显示数字
时间: 2023-07-15 21:15:01 浏览: 106
以下是使用51单片机控制数码管显示数字的代码,其中使用按键循环控制数字的变化:
```
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
//定义数码管编码表
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void delay(uint i)
{
while(i--);
}
void main()
{
uchar num = 0; //显示数字
uchar key = 0; //按键状态
//循环检测按键并改变数字
while(1)
{
key = P1 & 0x0f; //读取P1口低4位
if(key != 0x0f) //如果有按键按下
{
delay(1000); //延时去抖动
key = P1 & 0x0f; //再次读取P1口低4位
if(key != 0x0f) //如果按键仍然按下
{
switch(key)
{
case 0x0e: num++; break; //按下K1,数字加1
case 0x0d: num--; break; //按下K2,数字减1
default: break;
}
}
}
//显示数字
P0 = table[num % 10]; //个位
P2 = table[num / 10]; //十位
delay(1000); //延时1秒
}
}
```
上述代码中,使用P1口作为按键输入口,P0和P2口分别接两位数码管的A~G和DP端口,通过循环检测按键状态来改变显示的数字,然后将该数字转换成对应的编码值显示在数码管上。注意,在读取P1口状态时需要加一定的延时以去抖动。
阅读全文