流水灯是51单片机的入门级实验,以下是其电路图以及C代码

流水灯proteus电路图

此图发光二极管采用 共阳极式连接

流水灯C代码

#include<reg51.h>
#define TIME 1
//宏定义秒数,方便更改间隔时间
void delaySec(unsigned char n);
void Movinglight();
unsigned char code MovinglightArray[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char i,n = 1;
int main()
{Movinglight();return 0;
}
void Movinglight()
{while(1){for(i = 0;i < 8;i++)P1 = MovinglightArray[i];delaySec(TIME);}
}
void delaySec(unsigned char n)
{unsigned int i,j,l;for(l = 0;l < n;l++)for(i = 0;i < 1000;i++)for(j = 0;j < 114;j++);
}/*当n为1时,误差约0.001s*/

授人以鱼不如授人以渔,在此,笔者觉得应该给大家简单剖析一下以上的代码,以方便初学者更加容易更改和理解代码。

我看代码习惯从主函数开始,相信大家大多都是这样的吧?
进入主函数:
1,调用Movinglight函数
进入Movinglight函数:
1,调用while函数,1代表死循环
2,for循环,依次给P1口赋值

初学者一般看不懂0x 加 数字,其实0x 加 数字的意思,0x就是表示后两位是16进制数。
但是单片机处理是按照二进制处理数据的。
所以我们把上述例子转化为字节(即八个二进制位)。
例如,0xfe = 1111 1110;0xfd = 1111 1101。
不要纠结0xfe或者0xfd的,对应单片机来说,P1口的值不重要,这个值包含的位才是控制单片机的关键所在,单片机只在意它所代表的二进制数的位是0还是1。

根据电路图,P1.7对应二进制数的最高位,P1.0对应二进制数的最低位。
拿0xfe举例大家就能更好地理解了。
0xfe = 1111 1110。
分解开来实际上是:
P1.0 = 0
P1.1 = 1
P1.2 = 1
P1.3 = 1
P1.4 = 1
P1.5 = 1
P1.6 = 1
P1.7 = 1

最低位为0,其余为均为1。

那么0和1有什么含义?
以本实验为例,在单片机通电的情况下:
P1.0 = 0 表示这个引脚处为低电平
其余引脚处则是高电平。

那什么是高低电平呢?
说白了就是高低电势。
其实我认为说成高低电势更容易为广大读者理解。
高低电平是相对的,比如5V相对于0V 是高电平,但是相对于10V 又是低电平。
但是圈子里的所有书都是说电平的。
一般情况下,单片机是5V和0V。
一端高电平,一端低电平才能形成电压,发光二极管才能点亮。两边都是高电平或者两边都是低电平发光二极管都不能被点亮。

通常情况下,通电情况下单片机引脚默认为高电平。

由于发光二极管正极连接公共正电压源,所以只有位为0时,灯才会亮。

以上内容如果有什么谬误,敬请指正。

51单片机流水灯电路以及C代码相关推荐

  1. 51单片机流水灯制作

    文章目录 51单片机流水灯制作 初试与复试 初试 复试 制作 分工 制作之硬件 制作之软件 总结 51单片机流水灯制作 我不得不承认自己的毅力实在是太差了,原先准备一星期写一篇博客的目标一致没有实现, ...

  2. 51单片机流水灯现象1

    **` 51单片机流水灯程序 `** 初学者小白,分享上课时写的小程序和普中科技程序,感兴趣的可以瞧瞧. 程序如有相同冒犯了. /*********************************** ...

  3. 51单片机-------流水灯(实验报告)

    实验二:LED流水灯 一.实验目的 掌握51单片机开发板的使用步骤: 掌握51单片机开发板所需软件的安装过程: 以LED流水灯实验为例子,掌握软件KEIL4的使用方法. 二.实验设备 实验仪器设备: ...

  4. 如何用多种代码实现51单片机流水灯

    用51单片机实现流水灯的方法有多种:普通电灯法,位移法,数组法.其次模拟电路的电流图也与点一盏LED相似.具体如下: 一   首先是最简单的代码: #include <reg52.h>   ...

  5. 设计一:51单片机流水灯控制

    目录 一.设计内容 二.硬件电路分析 三.仿真原理图 四.程序设计 五.仿真结果 六.思考题 作者有话说 一.设计内容 本次设计使用4个按键,当KEY1按下时,P0口所接的发光二极管(D1~D8)以1 ...

  6. 51单片机——流水灯

    51单片机--单向流水灯 编写程序8个LED灯从最高位依次点亮,每次只亮一盏灯,依此循环. 电路原理图 源代码 #include "reg51.h" #define u8 unsi ...

  7. 51单片机流水灯控制(5种方法)

    实现流程: 1. 新建一个工程(新项目)2. 查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚3. 编写程序(通过查看原理图可以看到我们需要控制整个P2口以控制8个LED灯)4. 编译程 ...

  8. 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)

    c语言 #include typedef unsigned char uint8; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit EN ...

  9. 51单片机流水灯的三种实现方法

    首先,介绍下原理.下图为主控芯片和流水灯模块的原理图.流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯.相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可. ...

  10. 51单片机流水灯:控制LED亮暗顺序

    我这个是笨方法,就是根据需要LED位置,将二进制转化为16进制去控制其亮. 比如让LED灯按照从右往左数1,3,5,7,8,6,4,2的顺序依次亮,就根据二进制转16进制的表 表示出来即可,代码如下: ...

最新文章

  1. Laravel7使用Auth进行用户认证
  2. 王飞跃:平行汽车到平行驾驶,从“功能汽车”到“智能汽车”
  3. macOS配置Apache服务器
  4. 关于ext在IE下的“ Internet Explorer 無法開啓網際網路網站 ”的问题
  5. 新 CEO 谈论GitHub 被微软接管后的未来
  6. 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度转
  7. matlab2014 下的 libsvm 安装
  8. 关于Big-Endian 和Little-Endian
  9. 写的一个58获取房东手机号,爬虫,奈何号码都是加密,练手用
  10. UE4UMG之TreeView
  11. 使用HC05蓝牙模块实现数据无线传输,看完包会
  12. python 网络培训班费用具体是多少?
  13. day05数据类型(上)
  14. 相似度系列-3:传统方法ROUGE ROUGE: A Package for Automatic Evaluation of Summaries
  15. Go 1.16中值得关注的几个变化
  16. Excel同一单元格多数据如何求平均数
  17. cfg文件Linux怎么打开,cfg文件扩展名,cfg文件怎么打开?
  18. iis php 404错误页面,IIS自定义404错误页面
  19. 大公司的病,很难治愈
  20. Cryptohack刷题记录(二) Mathematics部分 Modular Math WriteUp

热门文章

  1. CAD二次开发获取已选择实体
  2. cachecloud 安装
  3. maxscale mysql 主从_orchestrator+maxscale+mysql5.7GTID主从切换测试过程
  4. EPSON机械手视觉操作手册
  5. linux下复制文件并重命名,linux复制文件并修改文件名
  6. 项目工作说明书(SOW)
  7. java企业员工管理系统_基于JavaWeb的企业员工信息管理系统的设计任务书
  8. wav格式怎样转换成flac
  9. H5 input 浮层 键盘遮挡
  10. 移动安全-IOS越狱