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

相关推荐
-凌凌漆-2 小时前
【嵌入式】FreeRTOS串口等待vTaskDelay()
嵌入式硬件
小昭在路上……2 小时前
GPIO端口引脚(位域)打包技巧笔记
单片机·嵌入式硬件
是翔仔呐2 小时前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
悠哉悠哉愿意3 小时前
【单片机复习笔记】第十六届省赛复盘
笔记·单片机·嵌入式硬件
IT方大同3 小时前
RT_thread(RTOS实时操作系统)线程的创建与切换
c语言·开发语言·嵌入式硬件
是翔仔呐3 小时前
第14章 CAN总线通信全解:底层原理、帧结构与双机CAN通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
沐欣工作室_lvyiyi4 小时前
基于单片机的智能浴室(论文+源码)
stm32·单片机·嵌入式硬件·智能浴室
二本咕咕-机械转码4 小时前
STM32是怎么跑起来的?启动流程 + 时钟树一次讲透(面试高频)
stm32·嵌入式硬件·面试
撩妹小狗4 小时前
揭秘舵机精准控制的PWM奥秘
单片机·嵌入式硬件
Heartache boy4 小时前
野火STM32_HAL库版课程笔记-TIM通道输出应用之PWM实现呼吸灯
笔记·stm32·单片机·嵌入式硬件