51单片机流水灯电路以及C代码
流水灯是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代码相关推荐
- 51单片机流水灯制作
文章目录 51单片机流水灯制作 初试与复试 初试 复试 制作 分工 制作之硬件 制作之软件 总结 51单片机流水灯制作 我不得不承认自己的毅力实在是太差了,原先准备一星期写一篇博客的目标一致没有实现, ...
- 51单片机流水灯现象1
**` 51单片机流水灯程序 `** 初学者小白,分享上课时写的小程序和普中科技程序,感兴趣的可以瞧瞧. 程序如有相同冒犯了. /*********************************** ...
- 51单片机-------流水灯(实验报告)
实验二:LED流水灯 一.实验目的 掌握51单片机开发板的使用步骤: 掌握51单片机开发板所需软件的安装过程: 以LED流水灯实验为例子,掌握软件KEIL4的使用方法. 二.实验设备 实验仪器设备: ...
- 如何用多种代码实现51单片机流水灯
用51单片机实现流水灯的方法有多种:普通电灯法,位移法,数组法.其次模拟电路的电流图也与点一盏LED相似.具体如下: 一 首先是最简单的代码: #include <reg52.h> ...
- 设计一:51单片机流水灯控制
目录 一.设计内容 二.硬件电路分析 三.仿真原理图 四.程序设计 五.仿真结果 六.思考题 作者有话说 一.设计内容 本次设计使用4个按键,当KEY1按下时,P0口所接的发光二极管(D1~D8)以1 ...
- 51单片机——流水灯
51单片机--单向流水灯 编写程序8个LED灯从最高位依次点亮,每次只亮一盏灯,依此循环. 电路原理图 源代码 #include "reg51.h" #define u8 unsi ...
- 51单片机流水灯控制(5种方法)
实现流程: 1. 新建一个工程(新项目)2. 查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚3. 编写程序(通过查看原理图可以看到我们需要控制整个P2口以控制8个LED灯)4. 编译程 ...
- 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)
c语言 #include typedef unsigned char uint8; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit EN ...
- 51单片机流水灯的三种实现方法
首先,介绍下原理.下图为主控芯片和流水灯模块的原理图.流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯.相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可. ...
- 51单片机流水灯:控制LED亮暗顺序
我这个是笨方法,就是根据需要LED位置,将二进制转化为16进制去控制其亮. 比如让LED灯按照从右往左数1,3,5,7,8,6,4,2的顺序依次亮,就根据二进制转16进制的表 表示出来即可,代码如下: ...
最新文章
- Laravel7使用Auth进行用户认证
- 王飞跃:平行汽车到平行驾驶,从“功能汽车”到“智能汽车”
- macOS配置Apache服务器
- 关于ext在IE下的“ Internet Explorer 無法開啓網際網路網站 ”的问题
- 新 CEO 谈论GitHub 被微软接管后的未来
- 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度转
- matlab2014 下的 libsvm 安装
- 关于Big-Endian 和Little-Endian
- 写的一个58获取房东手机号,爬虫,奈何号码都是加密,练手用
- UE4UMG之TreeView
- 使用HC05蓝牙模块实现数据无线传输,看完包会
- python 网络培训班费用具体是多少?
- day05数据类型(上)
- 相似度系列-3:传统方法ROUGE ROUGE: A Package for Automatic Evaluation of Summaries
- Go 1.16中值得关注的几个变化
- Excel同一单元格多数据如何求平均数
- cfg文件Linux怎么打开,cfg文件扩展名,cfg文件怎么打开?
- iis php 404错误页面,IIS自定义404错误页面
- 大公司的病,很难治愈
- Cryptohack刷题记录(二) Mathematics部分 Modular Math WriteUp