按键循环控制数码管显示数字
时间: 2023-07-15 17:15:01 浏览: 70
以下是使用C语言编写的按键循环控制数码管显示数字的程序:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit KEY3 = P3^4;
sbit KEY4 = P3^5;
uchar code LED_DuanMa[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79,
0x71, 0x00};
void Delayms(uint xms)
{
uint i, j;
for(i = xms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void Key_Scan(void)
{
uchar key_num = 0;
if(KEY1 == 0) key_num = 1;
else if(KEY2 == 0) key_num = 2;
else if(KEY3 == 0) key_num = 3;
else if(KEY4 == 0) key_num = 4;
if(key_num == 1) P0 = LED_DuanMa[1];
else if(key_num == 2) P0 = LED_DuanMa[2];
else if(key_num == 3) P0 = LED_DuanMa[3];
else if(key_num == 4) P0 = LED_DuanMa[4];
}
void main()
{
while(1)
{
Key_Scan();
Delayms(20);
}
}
```
该程序中,我们使用了P3口的四个引脚作为按键输入,使用P0口的八个引脚控制数码管的显示。程序中的`Key_Scan()`函数用于扫描按键输入,并根据按下的按键选择显示的数字,最终将数字对应的段码写入P0口。程序通过一个无限循环不断扫描按键输入和显示数字,使用`Delayms()`函数进行延时。
需要注意的是,由于数码管的显示需要高频率的刷新,因此在实际应用中需要使用定时器中断或者多任务调度等方式来实现。