实现流程:

     1. 新建一个工程(新项目)2. 查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚3. 编写程序(通过查看原理图可以看到我们需要控制整个P2口以控制8个LED灯)4. 编译程序,下载程序至开发板5. 查看效果(调试)

进制转换表(因为单片机首先处理的是十六进制的数据,所以我们需要将二进制控制需求转换成十六进制去写代码):

控制代码:

 #include <REGX52.H>   //头文件#include "Delay.h"#include "intrins.h"​/* -------------------------------------------------------项目名称:流水灯   I/O引脚:P2口(8个引脚)----------------------------------------------------------*/​unsigned int yanchi = 100;      //延时函数参数​unsigned char code Stream_light_array[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //流水灯数组(方法二)​​void Way_1();   //流水灯控制方法一void Way_2();   //流水灯控制方法二void Way_3();   //流水灯控制方法三void Way_4();   //流水灯控制方法四void Way_5();   //流水灯控制方法五​int main()            {​Delay_ms(500);while(1)          {Way_1();Way_2();Way_3();Way_4();Way_5();}}​​/*--------------------------------------------------------名称:流水灯控制方法五功能:通过移位指令(且或上0x01)将LED实现流水灯效果​----------------------------------------------------------*/void Way_5(){int i;P2 = 0xFE;Delay_ms(500);for(i=0;i<7;i++){P2=P2 << 1;P2 = P2 | 0x01;            Delay_ms(500);}}​/*--------------------------------------------------------名称:流水灯控制方法四功能:LED灯依次左移一位(依次点亮)​----------------------------------------------------------*/void Way_4(){int i;P2 = 0xFE;Delay_ms(500);for(i=0;i<7;i++){P2 = P2 << 1;              Delay_ms(500);}P2 = 0xFF;Delay_ms(500);}​/*--------------------------------------------------------名称:流水灯控制方法三功能:C52 提供了  _crol_(字符循环左移);_cror_ (字符循环右移)等库函数,包含在头文件intrins.h中 ; ​----------------------------------------------------------*/void Way_3(){int i;P2 = 0xFE;Delay_ms(500);for(i=0;i<7;i++){P2=_crol_ (P2,1);              Delay_ms(500);}}​/*--------------------------------------------------------名称:流水灯控制方法二功能:用数组循环方式控制流水灯​----------------------------------------------------------*/void Way_2(){​int i = 0;for(i = 0;i < 8; i++){P2 = Stream_light_array[i];Delay_ms(500);}}​/*--------------------------------------------------------名称:流水灯控制方法一功能:用十六进制赋值方式控制流水灯​----------------------------------------------------------*/void Way_1(){P2 = 0xFE;       //D1Delay_ms(yanchi);P2 = 0xFF;      P2 = 0xFD;       //D2Delay_ms(yanchi);P2 = 0xFF;P2 = 0xFB;       //D3Delay_ms(yanchi);P2 = 0xFF;P2 = 0xF7;       //D4Delay_ms(yanchi);P2 = 0xFF;P2 = 0xEF;       //D5Delay_ms(yanchi);P2 = 0xFF;P2 = 0xDF;       //D6Delay_ms(yanchi);P2 = 0xFF;P2 = 0xBF;       //D7Delay_ms(yanchi);P2 = 0xFF;P2 = 0x7F;       //D8Delay_ms(yanchi);P2 = 0xFF;}

延时代码C文件

#include "Delay.h"​/*--------------------------------------------名称:延时函数功能:Ms延时----------------------------------------------*/void Delay_ms(unsigned int xms){unsigned int j,k;for(j = xms; j > 0; j--)for(k = 113; k > 0;k--);}

延时代码H文件

#ifndef __Delay_H_#define __Delay_H_​void Delay_ms(unsigned int xms);    //延时函数​#endif​

注意事项:

  1. 这里要注意勾选HEX这个选项,否则不会生成hex文件(因为我们下载程序使用的是Hex文件)

  1. 在使用代码中的方法二时一定要记得添加头文件 #include “intrins.h”

  2. 这里开始使用了模块化编程(模块化中的延时代码已放在代码下面,使用记得要添加 .h 文件)

实现效果:

项目总结:

51单片机流水灯控制(5种方法)相关推荐

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

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

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

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

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

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

  4. 51单片机流水灯制作

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

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

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

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

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

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

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

  8. 51单片机——流水灯

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

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

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

最新文章

  1. 谷歌或被迫拆分Chrome浏览器,谁将会接盘?
  2. R语言搭建炫酷的线上博客系统
  3. 软件工程 项目管理的目标和细节
  4. F - Parenthesis Checking
  5. 陕西2021高考成绩在哪查询,2021陕西高考成绩查询入口
  6. 给 layui upload 带每个文件的进度条, .net 后台代码
  7. 2. 虚拟机常用操作
  8. RocketMQ 消息队列单机部署及使用
  9. Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结
  10. 考研微机原理是计算机基础吗,2015年电子科技大学微机原理与应用考研复试大纲...
  11. matlab进化树的下载,MEGA官网下载|MEGA进化树 V7.0.26 官方最新版 下载_当下软件园_软件下载...
  12. HDU - How far away ?(DFS+vector)
  13. 浅析 微信公共平台消息 开发原理
  14. Kaldi:提特征报错“compute-fbank-feats: error while loading shared libraries: libkaldi-hmm.so”
  15. uni-app 学习笔记(三)uni-app中的各种引用
  16. 指纹锁的识别与原理及安全性
  17. List逆向遍历、反向遍历--Iterator详解
  18. 20169220 网络攻防实践 第二周学习总结
  19. CNN Matlab例子RGB_MATLAB如何提取曲线原始数据
  20. Excel导出工具类

热门文章

  1. 使用sqlmap对进行php+mysql注入实战
  2. Flutter 弹出键盘认识
  3. 语音识别技术:如何开启语音交互的新时代?
  4. 20145308 《网络对抗》 MAL_免杀原理及实践 学习总结
  5. GIS应用水平考试错题集
  6. 如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,
  7. Android 的定位分层架构
  8. [samtools]flagstat命令简介
  9. Scala编程之伴生对象
  10. 课程标准模板 java,实训(Web)课课程标准模板