【51单片机】花式流水灯

来源:淘金网官方    发布时间:2025-11-23 17:33:01

  1、按键 1、2、3、4 按下,使 8 个 LED 完成下面对应的形式 1、 2、 3、4,上电默许每种形式流水灯的流通时刻距离为 500ms。

  2、按键5按下贱水灯的流通时刻距离添加100ms,超越1200ms从400ms开端,用守时器操控时刻

  咱们先把按键放在守时器里改写,识别到几号按键按下,就对应LED灯依照第几个形式点亮,按键1按下便是形式1,按键2按下便是形式2……形式1234转化可以用一个全局变量完成,我代码中本变量名称为Light_Mode

  主函数要循环判别Light_Mode变量的数值,所以写一个无参数无返回值的LED处理的函数,先依据按键返回值,给Light_Mode变量赋相应的状况值,再依据这个状况值,完成四种不同形式的点灯。

  守时时刻10ms,由于51单片机守时时刻上限大约是70ms,按键消抖的部分大概是10ms,所以按键在守时器中以10ms时刻扫描一次它的状况,每10ms扫描一次它的状况,就会滤除硬件颤动的部分,LED要求的500ms守时,可以在这个10ms基础上累加计数,便是每10ms计数变量自加1,计数变量==50的时分,便是500ms了

  上图是普中科技的51开发板 原理图上阐明P2端口对应了8个发光二极管,从P20~P27

  或许对P2整个端口赋值,P2 = 0xFE; 十六进制的0xFE转化二进制后为1111 1110,只要第一个LED点亮。

  不难发现,只要0向前移位,一次移动移位,由此可以想到位运算中的移位运算符

  书上指出,左移运算符,高位放弃,低位补0(补0的那些位LED就会亮起),所以不符合咱们的要求

  由于高位放弃,低位补0,假如咱们找到和上面八个数相反的数,再给它取反,就得到了想要的作用

  LED流水完成部分有个BUG:由于我写的是for循环,尽管这时分按下按键,变量Light_Mode现已被从头赋值了,所以不能马上跳出循环,履行下一个流水灯作用。之前有测试过跳出那个for循环,可是没有完成过,有爱好的小伙伴可以测验修正一下bug。

  不过有一个解决方案,把每一个流水灯状况否寄存在数组里,顺次完成,这样就避开运用for循环~

  ###51单片机学习-----怎么经过C言语运用延时函数规划LED流水灯

  ###51单片机学习-----怎么经过C言语运用延时函数规划LED流水灯

  【连载】物联网全栈教程-从云端到设备(十二)---最简略的单片机上云办法!

  嵌入式开发者的魂灵拷问:通义灵码2.0能否Hold住51单片机比赛级开发?



上一篇:基于C51单片机4按键4种花样流水灯设计
联系我们
1688企业店
淘金网官方

扫一扫,咨询报价

友情链接

扫一扫下单购买