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

相关推荐
云伴枫轻舞几秒前
我对 OTA 的理解随记,附GD32/STM32例程
stm32·单片机·嵌入式硬件
Aczone2841 分钟前
硬件(五) 存储、ARM 架构与指令系统
arm开发·嵌入式硬件·架构
LS·Cui1 小时前
单片机按键示例功能
单片机
【ql君】qlexcel1 小时前
MCU上电到运行的全过程
单片机·嵌入式硬件·mcu·启动过程
搞一搞汽车电子2 小时前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
pQAQqa2 小时前
FreeRTOS项目(2)摇杆按键检测
stm32·单片机·嵌入式硬件·freertos
小莞尔3 小时前
【51单片机】【protues仿真】基于51单片机停车场的车位管理系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
一川月白7094 小时前
51单片机---硬件学习(跑马灯、数码管、外部中断、按键、蜂鸣器)
单片机·学习·51单片机·外部中断·蜂鸣器·数码管·跑马灯
月阳羊4 小时前
【硬件-笔试面试题-69】硬件/电子工程师,笔试面试题(知识点:电机驱动电路的反馈电路)
java·经验分享·嵌入式硬件·面试
weixin_468466857 小时前
树莓派32位与64位系统安装teamviewer远程软件
linux·单片机·自动化·树莓派·远程控制·vnc·teamviewer