一个按键控制一个发光二极管功能。具体功能描述如下:按一下按键灯亮,再按一下灯灭,再按一下灯亮

一个按键控制一个发光二极管功能。具体功能描述如下:按一下按键灯亮,再按一下灯灭,再按一下灯亮。

首先是按键电路原理:按键按下去电路接通,P3的IO口识别到接地的低电平 

因此按键的程序编写,就是识别到低电平后,输出相应功能

①但是又由于开关特性,按下去和回弹有抖动,有时会使得IO口识别低电平混乱,因此按键需要去抖,按键按下去后以及回弹时通过延时函数,延时相对应的抖动时间 。

②开关还要进行松开检测。

按键控制一个发光二极管的原理:但识别到按键按下去后,并且识别到松开,使led灯的IO口对输出电平进行取反

#include<REGX52.h>

void Delay20ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 1;
	j = 216;
	k = 35;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

sbit KEY=P3^4;				//定义KEY是P3.4口
sbit LED=P1^0;				//定义led是P1.0口

void main()
{
	while(1)
	{
		if(KEY==0)			//检测开关按下
		{
			Delay20ms();	 //开关按下延时
			while(KEY==0)	 //如果开关不松开,循环空内容
			{}				 //开关松开跳出空循环
			Delay20ms();	 //松手延时
			LED=~LED;		 //LED电平取反
		}
	}
}

仿真图参考

 LED灯初始状态需要注意以下,有需要就再while(1)前定义LED输出低电平

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿贝多分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值