用开关或者按键作为定时/计数器的外部脉冲输入,数码管随之计量(每按1次显示数字加1) 51单片机代码实现,其中数码管P3口控制
时间: 2024-03-06 19:49:22 浏览: 24
好的,以下是基于51单片机的代码实现,数码管显示使用P3口控制:
```c
#include <reg51.h>
// 定义数码管显示的引脚
sbit dula = P2^6;
sbit wela = P2^7;
unsigned char num = 0; // 计数器初始值为0
void delay(unsigned int xms) // 延时函数
{
unsigned int i, j;
for(i = xms; i > 0; i--)
for(j = 112; j > 0; j--);
}
void display(unsigned char num) // 数码管显示函数
{
unsigned char code table[] = { // 数码管编码表
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
P0 = table[num]; // 输出对应的数码管编码
}
void main()
{
while(1)
{
if(P1 == 0) // 如果按键按下
{
delay(10); // 延时去抖动
if(P1 == 0) // 再次检测按键是否按下
{
num++; // 计数器加1
if(num == 10) // 如果计数器达到10,则清零
num = 0;
display(num); // 数码管显示计数器的值
}
while(!P1); // 等待按键释放
}
}
}
```
以上代码实现了按键作为定时/计数器的外部脉冲输入,每按1次显示数字加1的功能,数码管使用P3口控制。当按键按下时,先进行一次延时去除抖动,然后再次检测按键是否按下,如果是,则计数器加1,如果计数器达到10,则清零,最后数码管显示计数器的值。程序会一直循环执行,等待下一次按键输入。