【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的,因此上述代码就会重复一个方向流水效果了。

相关推荐
sinat_360704824 小时前
STM32 看门狗
stm32·单片机·嵌入式硬件
亿道电子Emdoor4 小时前
【ARM】MDK如何生成指定大小的bin文件,并指定空区域的填充数据
arm开发·stm32·单片机
mftang4 小时前
STM32 CAN过滤器配置和应用方法介绍
stm32·单片机·嵌入式硬件
楼台的春风5 小时前
【详细讲解在STM32的UART通信中使用DMA机制】
stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式·信息与通信
Chambor_mak6 小时前
stm32单片机个人学习笔记16(SPI通信协议)
stm32·单片机·学习
电子科技圈6 小时前
在低功耗MCU上实现人工智能和机器学习
人工智能·经验分享·科技·嵌入式硬件·mcu·物联网·机器学习
小白今天也很酷7 小时前
Python与MCU通信:串口数据采集及CSV/Excel存储方法
python·单片机·excel
海的预约7 小时前
51单片机-按键
单片机·嵌入式硬件·51单片机
qq_75568224019 小时前
STM32使用NRF2401进行数据传送
stm32·单片机·嵌入式硬件
FreakStudio1 天前
开源一款串口舵机驱动扩展板-FreakStudio多米诺系列
单片机·嵌入式·大学生·电子diy