一、按键介绍
1.工作原理
工作按键内部简易图
按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态。
如果按键按下,初始导通状态变为断开,初始断开状态变为导通。
二.独立按键控制步骤
-
确定LED连接到哪个引脚上。每个单片机都有一些可用的引脚,可以将LED连接到其中一个引脚上。
-
在独立按键软件中设置引脚的工作模式为输出模式。这可以通过设置引脚的寄存器来实现。例如,如果LED连接到引脚A0,则可以使用特定的寄存器设置引脚A0为输出模式。
-
在独立按键软件中设置引脚的电平状态以控制LED的亮度。如果引脚设为高电平,则LED会亮起;如果设为低电平,则LED会熄灭。
-
在主循环中添加代码以读取独立按键的状态。如果按键被按下,则改变LED的亮度状态。例如,如果LED当前是熄灭的,则按下按键后将其设为亮起;如果LED当前是亮起的,则按下按键后将其设为熄灭。
三.独立按键控制LED如下:![](https://i-blog.csdnimg.cn/blog_migrate/950847dacd71d7c629ad4d7d6879fb8b.png)
/*
实现功能:使用独立按键控制指示灯的亮灭
[2023-12-06] zoya
*/
#include "reg52.h"
typedef unsigned short u16;
sbit KEY1 = P3^0; // 独立按键
#define GPIO_LED P2 // 指示灯
// 延时函数,i=1延时10us
void delay(u16 i)
{
while(i--);
}
// 独立按键处理函数
void keypros()
{
if(0 == KEY1){ // 2. 读取IO口是否为低电平确认按键是否按下
delay(1000); // 3. 延时10ms
if(0 == KEY1) { // 4. 在读取IO口判断是否为低电平,如果仍然是低电平,说明按键按下
GPIO_LED = ~GPIO_LED; // 5. 执行按键按下的操作
}
while(!KEY1); // 6. 稳定闭合期间保持按键操作
}
}
void main()
{
KEY1 = 1; // 1. 先设置IO口为高电平
GPIO_LED = 0xFF; // 默认指示灯为不亮状态
while(1)
{
keypros();
}
}
proteus仿真结果:
四.总结:上述示例程序会不断检测按键状态,当按键被按下时,会切换LED的状态。可以根据实际硬件连接情况以及单片机型号进行相应的修改和适配。