51单片机流水灯控制(5种方法)
实现流程:
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
注意事项:
这里要注意勾选HEX这个选项,否则不会生成hex文件(因为我们下载程序使用的是Hex文件)
在使用代码中的方法二时一定要记得添加头文件 #include “intrins.h”
这里开始使用了模块化编程(模块化中的延时代码已放在代码下面,使用记得要添加 .h 文件)
实现效果:
项目总结:
51单片机流水灯控制(5种方法)相关推荐
- 51单片机流水灯的三种实现方法
首先,介绍下原理.下图为主控芯片和流水灯模块的原理图.流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯.相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可. ...
- 设计一:51单片机流水灯控制
目录 一.设计内容 二.硬件电路分析 三.仿真原理图 四.程序设计 五.仿真结果 六.思考题 作者有话说 一.设计内容 本次设计使用4个按键,当KEY1按下时,P0口所接的发光二极管(D1~D8)以1 ...
- 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
描述 首先,介绍下原理.下图为主控芯片和流水灯模块的原理图.流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯.相反,如果要LED灯熄灭,就要把P1口的电平变为高电平 ...
- 51单片机流水灯制作
文章目录 51单片机流水灯制作 初试与复试 初试 复试 制作 分工 制作之硬件 制作之软件 总结 51单片机流水灯制作 我不得不承认自己的毅力实在是太差了,原先准备一星期写一篇博客的目标一致没有实现, ...
- 51单片机流水灯现象1
**` 51单片机流水灯程序 `** 初学者小白,分享上课时写的小程序和普中科技程序,感兴趣的可以瞧瞧. 程序如有相同冒犯了. /*********************************** ...
- 如何用多种代码实现51单片机流水灯
用51单片机实现流水灯的方法有多种:普通电灯法,位移法,数组法.其次模拟电路的电流图也与点一盏LED相似.具体如下: 一 首先是最简单的代码: #include <reg52.h> ...
- 51单片机-------流水灯(实验报告)
实验二:LED流水灯 一.实验目的 掌握51单片机开发板的使用步骤: 掌握51单片机开发板所需软件的安装过程: 以LED流水灯实验为例子,掌握软件KEIL4的使用方法. 二.实验设备 实验仪器设备: ...
- 51单片机——流水灯
51单片机--单向流水灯 编写程序8个LED灯从最高位依次点亮,每次只亮一盏灯,依此循环. 电路原理图 源代码 #include "reg51.h" #define u8 unsi ...
- 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)
c语言 #include typedef unsigned char uint8; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit EN ...
最新文章
- 谷歌或被迫拆分Chrome浏览器,谁将会接盘?
- R语言搭建炫酷的线上博客系统
- 软件工程 项目管理的目标和细节
- F - Parenthesis Checking
- 陕西2021高考成绩在哪查询,2021陕西高考成绩查询入口
- 给 layui upload 带每个文件的进度条, .net 后台代码
- 2. 虚拟机常用操作
- RocketMQ 消息队列单机部署及使用
- Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结
- 考研微机原理是计算机基础吗,2015年电子科技大学微机原理与应用考研复试大纲...
- matlab进化树的下载,MEGA官网下载|MEGA进化树 V7.0.26 官方最新版 下载_当下软件园_软件下载...
- HDU - How far away ?(DFS+vector)
- 浅析 微信公共平台消息 开发原理
- Kaldi:提特征报错“compute-fbank-feats: error while loading shared libraries: libkaldi-hmm.so”
- uni-app 学习笔记(三)uni-app中的各种引用
- 指纹锁的识别与原理及安全性
- List逆向遍历、反向遍历--Iterator详解
- 20169220 网络攻防实践 第二周学习总结
- CNN Matlab例子RGB_MATLAB如何提取曲线原始数据
- Excel导出工具类