在Keil5软件中编写程序,实现每按动开关3次,数码管显示器上的数字增1
时间: 2023-12-12 14:03:31 浏览: 79
拨动开关控制双七段数码管显示的程序vhdl源代码
4星 · 用户满意度95%
好的,以下是在Keil5软件中实现每按动开关3次,数码管显示器上的数字增1的程序:
```c
#include<reg52.h> //包含头文件
#define uint unsigned int //定义uint为unsigned int类型
sbit KEY=P3^2; //定义按键接口
sbit D1=P0^0; //定义第一位数码管接口
sbit D2=P0^1; //定义第二位数码管接口
sbit D3=P0^2; //定义第三位数码管接口
sbit D4=P0^3; //定义第四位数码管接口
uint count=0; //定义计数器变量并初始化为0
uint t=0; //定义计时器变量并初始化为0
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
while(1) //循环执行
{
if(!KEY) //判断按键是否按下
{
delay(10); //延时去抖
if(!KEY) //再次判断按键是否按下
{
t++; //计时器加1
if(t>=3) //如果按键按下的次数大于等于3
{
t=0; //计时器清零
count++; //计数器加1
if(count>=10000) //如果计数器大于等于10000
count=0; //计数器清零
}
while(!KEY); //等待按键松开
}
}
D1=count%10; //计算并显示个位数
D2=count%100/10; //计算并显示十位数
D3=count%1000/100; //计算并显示百位数
D4=count/1000; //计算并显示千位数
}
}
```
这个程序中,我们使用P3.2作为按键输入口,P0.0~P0.3作为数码管输出口。当按下按键时,计时器加1,当计时器的值等于3时,计数器加1,计时器清零。同时通过数码管依次显示计数器的千位、百位、十位、个位。
需要注意的是,由于按键的物理特性,按下按键时会产生抖动,为了防止抖动干扰计数器的计数,我们需要在程序中加入去抖延时。
阅读全文