首页 > 其他分享 >51单片机学习日记:独立按键控制LED灯

51单片机学习日记:独立按键控制LED灯

时间:2025-01-17 20:56:50浏览次数:3  
标签:LED 函数 消抖 51 取反 单片机 按下 延时 按键

我们可以再单片机上看到4个独立的按键,控制一个LED灯的亮灭先用第一个就可以,我们先找到独立按键的原理图来看看如何通过按键来控制LED灯的亮灭;

独立按键的一段接地,另一端接P3,则我们按下按键时会使端口为低电平,我们就可以通过逻辑 :当P31=0(按下去按键)时让灯亮,当P31=1时灯灭。

(大家记得加头文件哦)

这里直接用条件语句使P3_1控制LED2.结果就是按下第一个按键时,灯亮,松开时灯灭。

然后我们来看下如何按下之后控制开,再按一下控制关,这时候我们就会接触到按键消抖的问题

如何解决按键消抖呢,我们可以按下后进行延时,来吧抖动的时间掠过,这是软件消抖的一种方式

其中的延时函数和上节不太相同,我这里时通过stcisp写了一个1ms的延时函数,然后给他加循环,达到括号内输入想要的延时时间,但是我的代码出现了一些问题,就是我Delay函数里是3的情况下他就已经能延时500ms了,所以大家可以直接去stc里面搞一个20ms的延时函数,以下是我延时函数的代码(大佬可以看看我的错误在哪)

在主函数中我们通过if进行判断是否按下按键,按下后延时20ms左右,略过按键抖动时间,然后需要加一个while循环检测有没有松手,如果还在一直按着就不会改变状态,松手后我们直接让P2_0取反,也就是让LED1从灭变为亮,再按一次就会再取反一次,从亮变灭。

这是从江协截的图,  ~就表示取反,当然我也写过位运算,可以看下我往期文章。

标签:LED,函数,消抖,51,取反,单片机,按下,延时,按键
From: https://blog.csdn.net/2301_80548884/article/details/145214031

相关文章

  • 单片机毕业设计之stm32单片机物联网远程心率血氧MAX30102健康监控系统,老人健康监测+行
    一、设计简介        本项目旨在利用STM32F103C8T6微控制器为核心,构建一个实时人体健康监测系统。该系统集成了多种传感器和模块,能够全面、准确地监测并显示人体的关键健康数据,同时提供异常报警功能,还通过蓝牙通信功能实现了数据的远程传输和记录,方便用户随时了解自己......
  • 基于STM32单片机自动售货机扫码支付无人超市语音播报无线蓝牙APP/WIFI-APP控制/WIFI视
    STM32-S147语音播报+二维码付+4种商品+4路电机出货+选货+手付+库存+缺货+找零+声光+按键+TFT屏+(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/无线WIFI/无线视频监控模块-可选)、步进电机控制电路、语音播报模块接口、蜂鸣器报警电......
  • JSP驴友网站管理系统w51si程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着旅游业的繁荣和驴友文化的兴起,越来越多的驴友倾向于通过网络平台获取旅游信息、分享旅行经验。为了满足驴友群体的需求,构建一个功......
  • STC12单片机设置50Hz的PWM波驱动舵机
    STC12单片机设置50Hz的PWM波驱动舵机一、引言在机器人控制、航模制作以及各种自动化设备领域,舵机作为一种关键的执行元件,能够精准地控制角度,实现诸如机械臂关节运动、模型转向等功能。而使用STC12单片机来产生50Hz的PWM波驱动舵机,是一种经济高效且灵活的方案。STC12系列单......
  • Flutter使用FractionallySizedBox组件报错Failed assertion: line 2164 pos 12: 'hasS
    这里从解决方法那里直接给出个有效的方式。就是如果你使用了FractionallySizedBox组件,第一是这个组件只能在固定宽高下或者Row,Flex,Column组件下使用。第二就是这个组件需要在Flexible下使用.结构就是:Row->Flexible->FractionallySizedBox给出简单的代码示例......
  • IAR编译工程报错:CreateProcess failed:The system cannot find the file specified
    IAR安装完成后,编译STM32的工程时报如下错误信息:CreateProcessfailed:Thesystemcannotfindthefilespecified全网检索各种答案都有,尝试重新安装、版本升级等都没能解决。因为之前有过安装8.32版本,卸载后又进行安装的9.2版本,抱着试探的心理,打开注册表将和IAR相关......
  • 新手如何学会单片机?(五)XC8P9530按键扫描以及功能处理
            单片机的按键扫描方法以及原理,百度有太多的案例解释,我这里就不做太多的赘述,只教大家如何利用XC8P9530配置输入上拉下拉,然后配合时基检测的方法。一般IO口按键检测要高电平有效,那IO口就要配置成输入下拉,反之则配置成输入上拉,一般我们单片机检测按键低电平有效的......
  • 课设毕设分享:基于单片机的风扇控制器设计 (AT89C52、Proteus、Keil)二、DHT11温湿度传感
    往期内容课设毕设分享:基于单片机的风扇控制器设计(AT89C52、Proteus、Keil)一、初期准备+单片机最小系统(时钟电路、复位电路)手把手教学如何做一份高分课设文章目录往期内容前言一、课设要求1.基本要求2.方案设定首先进行前期准备工作配置环境绘制思维导图功能要求分析大......
  • rK3568-修改RTL8211F-CG网口led显示灯状态
    1.修改代码路径/home/salesdmcf/works/SDK/Linux/kernel/drivers/net/phy/realtek.cstaticintphy_rtl8211f_led_fixup(structphy_device*phydev){u32val,val2;printk("lyc----->in:%s\n",__func__);/*setled1(green)Link10/100/1000M......
  • 0.LED基础控制
    典中典之发光二极管,我从小学到大长脚是正级,断脚是负极里面大块的是负级,小块的是正极电阻标注:若标注102->代表着为1K电阻(10^2)若标注473->代表着为47K电阻(47*10^3)以此类推其他器件标注也为类似模式RP7RP9模块为限流电阻此单片机使用TTL规范(高电平5V低电平0V)......