波特律动
课程中心/51单片机教程/【06】按键切换小灯状态

【06】按键切换小灯状态

【06】按键切换小灯状态

编写按键检测代码,触发按键翻转 LED 电平状态,编译程序下载到学习板,实现按键切换小灯开关状态。



本课资源下载
3 个资源
P05按键切换小灯状态

本节课的标准源代码工程/可供参考

V1.0压缩包22 KB
下载
XL-1608SURC-06

LED红色(0603)

PDF 文档1.5 MB
预览下载
流水灯原理图

交互式原理图❇️

原理图

课程笔记


本节目标概括

创建工程 > 编写代码 > 消抖的实现 >现象展示

通过学习板上的按键控制LED的亮灭,编译并下载程序到学习板,即可看到程序效果:

  • 按一下 KEY41,L0亮/灭翻转一次

1.创建工程

2.消抖代码

  1. 为什么要消抖?机械按键通断瞬间会产生电平抖动,造成误触发。
  2. 采用什么方法消抖?我们采用软件延时消抖:初次检测到低电平后延时 20ms 再次确认按键电平,确认真实按下后翻转 LED 状态,并等待按键释放,防止重复触发。
C语言
1#include <STC89C5xRC.H>
2
3int main(){
4 while(1){
5 if(P24 == 0){
6 Delay20ms(); // 消抖 等待抖动消失
7 if(P24 == 0){
8 P00 = !P00;
9 while(P24 == 0);
10 }
11 }
12 }
13}

代码解释:

    • KEY41 按下,L0亮/灭翻转一次,然后等待按键释放(否则会导致连续翻转)

按键消抖

    • 读取到 KEY41 是低电平时,先延时 20 ms,再次判断 KEY41是否还是低电平
    • 如果是,则说明 KEY41确实被按下
    • 否则,说明 KEY41是抖动,不做任何操作

3.现象展示