文章目录

  • 前言
  • 一、延时函数
  • 二、流水灯代码
  • 三、代码改进
  • 总结

前言

上次已经实现了LED的点亮了,这篇文章将带大家实现流水灯。

一、延时函数

要想实现流水灯首先就得知道什么是延时函数,延时函数的作用就是等待。比如延时一毫秒就是让程序在这里等待一毫秒。延时函数的本质就是执行一些空指令,因为执行指令需要耗费时间,所以执行一定数量的空指令就能达到延时的效果。

延时函数的实现
这里的延时函数就是不断的在执行;表达式来达到延时的效果。

/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{unsigned char i;while(x--){for(i=0;i<113;i++);}
}

二、流水灯代码

下面就是流水灯的代码了,其实操作起来也是非常简单的。不过这样写一个流水灯看起来实在是太过于复杂了,下面将对代码进行整改。

#include <reg52.h>/*LED灯端口定义*/
sbit LED0 = P2^0;
sbit LED1 = P2^1;
sbit LED2 = P2^2;
sbit LED3 = P2^3;
sbit LED4 = P2^4;
sbit LED5 = P2^5;
sbit LED6 = P2^6;
sbit LED7 = P2^7;/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{unsigned char i;while(x--){for(i=0;i<113;i++);}
}void main()
{while(1){LED0 = 0;delayms(1000);LED1 = 0;delayms(1000);LED2 = 0;delayms(1000);LED3 = 0;delayms(1000);LED4 = 0;delayms(1000);LED5 = 0;delayms(1000);LED6 = 0;delayms(1000);LED7 = 0;delayms(1000);LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = 1;    }
}

三、代码改进

上篇文章我们已经讲到了8个LED灯分别接到了P2.0—P2.7上面。所以我们可以直接对P2端口进行操作实现点亮LED灯。
默认状态LED灯都为灭,也就是状态都为1。所以P2.0—P2.7的8个端口状态为
1111 1111。
我们只需要让其中一个位变成0即可让LED灯点亮。
对P2直接进行操作让第一个LED灯点亮就是对P2赋值如下:
1111 1110
换成16进制也就是0xfe
下面的代码就可以点亮第一个LED了

P2 = 0xfe;

所以可以直接对P2进行操作达到流水灯的效果。

#include <reg52.h>/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{unsigned char i;while(x--){for(i=0;i<113;i++);}
}void main()
{int i = 0;while(1){for(i = 0; i < 8; i ++ ){P2 = ~(1<<i);delayms(1000);}}}

板子上面有8个LED灯,所以这里设计了一个for循环。利用左移操作和取反操作实现了流水灯的效果。
简单解释一下这个for循环实现流水灯的原理
一开始i=0 P2 = ~(1<<0)相当于是1111 1110
i = 2时P2 = ~(1<<1)相当于是1111 1101
后面的以此类推,这里0移到到了哪里哪个LED就会被点亮了。
对左移和取反操作还不熟悉的同学建议去加强一下C语言的知识。

总结

流水灯的点亮就介绍到这里了,大家主要是掌握sbit位定义和直接操作P2进行流水灯的点亮。

51单片机入门流水灯相关推荐

  1. 51单片机入门 - 流水灯 和 呼吸灯

    本文编程环境在 51单片机开发环境搭建 - VS Code 从编写到烧录 有过介绍.使用 VS Code + SDCC + stcgal. 关于软硬件的信息: Windows 10 STC89C52R ...

  2. 51单片机:流水灯蜂鸣器控制

    //51单片机:流水灯&蜂鸣器控制 //bglei@nuaa.edu.cn 2022/8/28<流水灯&蜂鸣器控制> #include<reg52.h> #in ...

  3. 51单片机循环流水灯源码

    51单片机循环流水灯源码 #include <reg52.h> #include <intrins.h> void delay(unsigned char a) {unsign ...

  4. 51单片机花样流水灯

    目录 工作原理 51代码 总结 工作原理 许多单片机上面都有若干LED灯,在控制系统的控制下能够按照设定的顺序和时间点亮和熄灭,形成一定的视觉效果叫做跑马灯.其中若干个LED灯依次点亮,在视觉上感觉灯 ...

  5. 51单片机LED流水灯、走马灯的实现

    目录 1. 硬件设计 2. 软件设计 流水灯: 跑马灯: 1. 硬件设计 流水灯的原理: 图中主要包括51单片机芯片和流水灯模块,流水灯模块接在了单片机的P2口,500欧电阻是用来保护电路的.由原理图 ...

  6. 基于51单片机的流水灯设计

    三个按键:A按键启动.B按键控制不同流水速度(低中高).C按键 设计思路一(未用中断): 8个LED灯正极解电源,负极接单片机I/O口. 死循环:设置P2口为11111110,使用左移函数,循环七次. ...

  7. 51单片机的流水灯实现仿真。

    使用KeilC51进行C语言的程序编写生成hex文件后导入51单片机中形成流水灯. 由于51单片机I/O口的驱动能力有限,因此在P0需要使用上拉电阻(限流电阻)来驱动二极管. 流水灯驱动程序如下: # ...

  8. 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...

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

  9. 流水灯c语言程序tm,51单片机LED流水灯课程设计任务书+论文

    郑州工程技术学院课程设计 设计题目:LED流水灯设计 学    院:机电与车辆工程学院 专    业:16电气自动化技术专业班 级普招二班 姓    名:王*&刘* 指导教师:李* 日    ...

最新文章

  1. 14、Java Swing星座选择器界面的实现
  2. ARGB 转换为RGB
  3. java jdbc 删除_java使用jdbc实现各种类型添加删除修改数据
  4. dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具
  5. Openbiz Cubi 企业级应用程序开发(一)
  6. Linux的timerfd分析
  7. shell基础之综合练习
  8. WIN7下odbc数据源配置问题
  9. STM32通过SIM800L向yeelink端上传数据
  10. iPhone/苹果手机不用数据线传输文件到电脑的方法/步骤
  11. C/C++编程:trivial和non-trivial
  12. 从零开始学python第八篇
  13. 所有iOS设备的屏幕分辨率
  14. QT自制精美Ui模板系列展示(一)桃子风格模板 - 二次开发专用
  15. 魔图互联:知识图谱推荐系统-给人们带来更个性化的推荐
  16. 【渝粤教育】国家开放大学2018年秋季 8634-22T (1)Android智能手机编程 参考试题
  17. 华为路由 鸿蒙,华为鸿蒙系统适配流程介绍
  18. Matlab R2021a 安装使用教程
  19. 大泉州人才网(整站)程序 免维护 V1.0
  20. boat启动器 minecraft_我的世界boat启动器下载-我的世界boat启动器最新版下载-37uu游游...

热门文章

  1. 题目 1162: 密码
  2. DataStore入门及在项目中的使用
  3. oracle的rowid和rownumber
  4. 《相约星期二》读书笔记
  5. 计算机视觉发展和应用浅谈
  6. 交响乐排布及乐器音色特点
  7. python-网络图片下载(两种方式)
  8. 通过自适应UM(非锐化掩膜)算法进行图像增强(Image Enhancement via Adaptive Unsharp Masking)
  9. DHCP CLIENT不能启动,错误ID 1004,7023
  10. 黑马头条(学习笔记)