一个按键控制一个发光二极管功能。具体功能描述如下:按一下按键灯亮,再按一下灯灭,再按一下灯亮。
首先是按键电路原理:按键按下去电路接通,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输出低电平