写一段C语言实现80c51独立按键控制数码管依次显示一串数字
时间: 2023-06-03 21:05:03 浏览: 68
好的,以下是C语言代码实现:
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key=P3^3; // 定义独立按键连接的引脚
sbit dula=P2^6; // 数码管段选1连接的引脚
sbit wela=P2^7; // 数码管位选连接的引脚
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, // 数码管0~7的显示码
0x80,0x90 // 数码管8,9的显示码
};
void delay(uint i) // 延时函数
{
while(i--);
}
void main(void)
{
uint i = 0;
while(1)
{
if(key == 0) // 检测按键是否按下
{
delay(1000); // 延时一段时间,防止按键抖动
if(key == 0) // 再次检测按键是否按下
{
P0 = table[i]; // 显示i对应的数码管段码
dula = 0; // 数码管段选1输出低电平
dula = 1; // 数码管段选1输出高电平,将段码送到数码管
delay(1000); // 延时一段时间,显示一段时间后,数码管不显示
P0 = 0xff; // P0口输出高电平,数码管不显示
dula = 0; // 数码管段选1输出低电平
dula = 1; // 数码管段选1输出高电平,数码管不显示
wela = 0; // 数码管位选输出低电平
wela = 1; // 数码管位选输出高电平,准备显示下一个数码管上的数字
i++; // i加1,显示下一个数字
if(i == 10) // 如果i等于10,显示完所有数字,i清0重新开始显示
{
i = 0;
}
}
}
}
}
```
以上代码实现的功能为:检测独立按键是否被按下,如果检测到按键被按下,就依次显示数字0~9。其中 P0 口控制数码管的段选,dula控制数码管的段选1,wela控制数码管的位选。具体实现细节可以参考代码注释。