【51单片机论流水灯的工作原理】2023-10-3

缘由那又是怎么实现我按下独立按键LED灯逐个变亮#include <regx52.h>(相关搜索:单片机|数据类型|二进制)_嵌入式-CSDN问答

char类型的变量只能存储8位二进制数即0-255,这就足够在8位单片机中做流水灯用了,当然使用int做流水灯也是可以的,不过是存储单元浪费而已,而int能存储16位二进制数即0-65535;在8位单片机中,一组IO有8个引脚,可以输出高或低电平,那么接LED就会点亮,因此,可以做流水灯用,当赋值0时一组IO的8个引脚全部低电平,当赋值255时一组IO的8个引脚全部高电平,当赋值0到255中间的其他数值时一组IO的8个引脚的电平变化就是二进制的变化;比如当赋值1时第一个引脚高电平余引脚都低电平,当赋值2时第二个引脚高电平余引脚都低电平,赋值3时第一第二引脚都高电平余引脚都低电平,当赋值4时第三个引脚高电平余引脚都是低电平,当赋值5时第一和第四引脚高电平余引脚都低电平,其他的值依上述类推,流水灯的赋值分别是1 2 4 8 16 32 64 128即前值的2的倍数,因此,能看到只有1个灯亮,那么,8个灯分别亮看起来就像是流水一样了,流水灯可以直接用数值赋值,其效果是一样的,因此,用数值赋值写的程序代码可以写得更简洁易于阅读和理解,如char ls=0;P2=ls;if(ls==0)ls=1;else ls*=2;这样就实现了从全部熄的情况下从第一个灯亮起的效果,就是上述的2的倍数的运算,值得注意的是当128*2等于256时单片机其实是返回0的,因此上述代码就会重复一个方向流水效果了。

相关推荐
2401_854151552 小时前
ARM Cortex-M 体系结构深度解析——寄存器模型、处理器模式、AAPCS 与异常模型
arm开发·stm32·单片机·嵌入式硬件
KaifuZeng4 小时前
通信与接口协议面试五、RS422
嵌入式硬件·面试·通信与接口
迷茫、Peanut5 小时前
蜂鸣器介绍
单片机
Topplyz6 小时前
如何减小DCDC的纹波?
单片机·嵌入式硬件·硬件工程·电源·layout·dcdc
sramdram7 小时前
灵动高性能32位MCU空调解决方案
单片机·嵌入式硬件·mcu·32位mcu
Hotchip_MEMS9 小时前
ASIC+MCU方案简化:MS2102AB-M00如何降低主控芯片的判别压力?
人工智能·单片机·嵌入式硬件·物联网·制造
sramdram9 小时前
应用在单片机上的MRAM芯片嵌入式存储方案
单片机·嵌入式硬件·mram·mram芯片
piaoyiren9 小时前
普中A6 STC8A 动态数码管显示讲解
嵌入式硬件·51单片机·c
阿拉斯攀登11 小时前
内核模块开发:module_init 与模块机制详解
linux·网络·嵌入式硬件·linux驱动
ICGOODFIND111 小时前
2026物联网模组选型指南:U-BLOX定位模组+SIMCOM芯讯通主流蜂窝通信模组参数与场景适配
嵌入式硬件·物联网·硬件工程·iot