news 2026/7/18 4:43:08

51单片机从零到实战(3)——按键判断

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
51单片机从零到实战(3)——按键判断

第 3 篇:按键——让单片机"听话"

前两篇都是单片机"输出"(控制 LED 亮灭)。这篇开始学"输入"——让单片机读取按键状态。


1. 按键电路

VCC(5V) │ 10kΩ(上拉电阻) │ ├── 接到 P3.2(单片机读取) │ 按键 │ GND 没按:P3.2 = 1(被上拉电阻拉到 5V) 按下:P3.2 = 0(直接接地)

2. 按键消抖——必知必会

按键按下去的瞬间,金属触点会弹跳("哒哒哒"振动),导致单片机读到一连串 0 和 1。消抖 = 读到第一次变化后,等 20ms 再读一次。

sbit KEY=P3^2;unsignedcharkey_scan(void){if(KEY==0)// 检测到按下(低电平){delay(20);// 消抖:等 20msif(KEY==0)// 再次确认——真的按下了{while(KEY==0);// 等待松开return1;// 返回"按下"}}return0;// 没按}

3. 按键控制 LED 开关

sbit LED=P1^0;sbit KEY=P3^2;voidmain(){LED=1;// 初始灭while(1){if(key_scan()){LED=~LED;// 取反:亮变灭,灭变亮}}}

4. 按键切换流水灯模式

unsignedcharmode=0;// 当前模式voidmain(){while(1){if(key_scan()){mode++;if(mode>=3)mode=0;}switch(mode){case0:run_flow_left();break;// 单灯左移case1:run_pingpong();break;// 来回跑case2:run_all_blink();break;// 全闪}}}

5. 按键状态机——检测短按、长按

unsignedcharkey_state=0;unsignedinthold_time=0;unsignedcharkey_process(void)// 调用间隔 1ms{if(KEY==0){hold_time++;if(hold_time==1000)// 按住 1 秒 → 长按returnKEY_LONG;}else{if(hold_time>20&&hold_time<1000){// 按过但不到 1 秒 → 短按hold_time=0;returnKEY_SHORT;}hold_time=0;}returnKEY_NONE;}

6. 小结

  • 按键必须消抖(延时 20ms 两次确认)
  • 按键要等松开(while(KEY==0); 防止重复触发)
  • 状态机可以区分短按和长按——这已经是产品级代码了

下一篇:数码管——学会"显示数字"


下一篇:数码管——学会"显示数字"

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 4:42:18

Spring Boot集成Sa-Token实现精细化权限控制

1. Sa-Token与Spring Boot的权限控制基础在Java生态中&#xff0c;权限管理一直是系统开发的核心需求。传统的Shiro和Spring Security虽然功能强大&#xff0c;但配置复杂度常常让开发者望而生畏。Sa-Token作为一款轻量级Java权限认证框架&#xff0c;以其简洁的API和灵活的配置…

作者头像 李华
网站建设 2026/7/18 4:42:11

PECVD TEOS工艺在半导体制造中的关键技术与应用

1. PECVD TEOS工艺概述在半导体制造和微电子领域&#xff0c;等离子体增强化学气相沉积&#xff08;PECVD&#xff09;技术因其低温沉积特性而广受青睐。其中以正硅酸乙酯&#xff08;TEOS&#xff09;为前驱体的SiO₂薄膜沉积工艺&#xff0c;已成为现代集成电路制造中不可或缺…

作者头像 李华
网站建设 2026/7/18 4:41:06

MOSFET开关损耗计算与优化实践指南

1. MOSFET开关损耗的本质与计算意义在电力电子系统中&#xff0c;MOSFET作为核心开关器件&#xff0c;其损耗直接决定了整机效率与温升。开关损耗&#xff08;Switching Loss&#xff09;特指MOSFET在导通与关断状态切换过程中产生的能量损耗&#xff0c;这部分损耗会以热量的形…

作者头像 李华
网站建设 2026/7/18 4:40:50

Python与GMSSL实战:从零构建SM2国密算法应用

1. 项目概述&#xff1a;为什么选择Python与GMSSL构建SM2应用&#xff1f; 如果你正在开发一个需要数据加密、身份认证或电子签名的项目&#xff0c;尤其是在金融、政务、物联网这些对合规性有明确要求的领域&#xff0c;那么“国密算法”这个词你一定不陌生。SM2作为国密算法…

作者头像 李华
网站建设 2026/7/18 4:40:18

小白学习C#笔记 day4 - 继承进阶:protected访问修饰符与多态基础

⭐以下内容可能有误&#xff0c;请仔细甄别1.protected访问修饰符我们之前学了两种访问权限&#xff1a;• public&#xff1a;完全公开&#xff0c;任何地方都能读写• private&#xff1a;完全私有&#xff0c;只有当前类内部能用在继承场景里会出现一个中间需求&#xff1a;…

作者头像 李华