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

相关推荐
范纹杉想快点毕业11 分钟前
ZYNQ7045芯片中UART实现RS422通信详解,50000字解析,C语言,嵌入式开发,软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·fpga开发
与你诗画38 分钟前
电路中的 ”CT“
单片机·嵌入式硬件
沐欣工作室_lvyiyi2 小时前
基于单片机的盲人智能水杯(论文+源码)
单片机·嵌入式硬件·物联网·毕业设计·智能水杯
brave and determined2 小时前
硬件-电容学习DAY20——从零到精通的电容实战指南
单片机·嵌入式硬件·滤波·储能·硬件设计·电路设计·电容核心功能
是大强4 小时前
嵌入式开发中用于调试的技术Semihosting
单片机·嵌入式硬件
RaLi和夕4 小时前
嵌入式学习笔记4.STM32中断系统及外部中断EXTI
笔记·stm32·单片机·学习
瓢儿菜20185 小时前
【Proteus8.17仿真】 STM32仿真 0.96OLED 屏幕显示ds1302实时时间
stm32·单片机·嵌入式硬件
10001hours5 小时前
(基于江协科技)51单片机入门:8.DS1302
科技·嵌入式硬件·51单片机
充哥单片机设计5 小时前
【STM32项目开源】基于STM32的工地环境监测系统
stm32·单片机·嵌入式硬件
速易达网络6 小时前
树莓派点亮LED灯
单片机·嵌入式硬件