单片机-流水灯的程序
- 格式:ppt
- 大小:549.00 KB
- 文档页数:18


51单片机经典流水灯汇编程序(共8页)
单片机流水灯汇编程序设计
流水灯汇编程序
8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
;用最直接的方式实现流水灯
ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#B ;最下面第二个的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#B ;最下面第三个的LED点亮 (以下省略) LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B ;完成第一次循环点亮,延时约秒 AJMP START ;反复循环
;延时子程序,12M晶振延时约250毫秒DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250msPUSH PSW ;现场保护指令(有时可以不加)MOV R4,#2 L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END
--本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小--
51 单片机流水灯左移 右移控制程序
电路很简单 8 位流水灯接在单片机的 P1 口.如下是源代码:
//============================================================
= //程序名:LLL22_4.C //程序功能:流水灯控制左移 右移
//============================================================
== #include//头文件 L_M(); //流水灯左移控制程序 R_M();
//流水灯右移控制程序
//============================================================
=== main() //主函数 { while(1) //无限循环 {
L_M(); //调用左移程序 R_M(); //调用右移程序 } }
//========左移控制程序
============================================== L_M() //左
移主函数{ unsigned char i,temp,a,b; //声明无符号字符型变量 A,TEMP I,B
unsigned int s; //声明无符号整型变量 S temp=0xfe; //左移初始
值 P1=temp; //P1 输出信号点亮发光管 for( s=0;s>(8-i) ; //数
据右移(8-I)位 P1=a|b ; //逻辑或运算,并输出到 P1 口 for(s=0;s>i;
b=temp<<(8-i); //数据右移(8-I)位 P1=a|b; //逻辑或运算,
并输出到 P1 口 for(s=0;s<30000;s++); //延时程序 } }
//============================================================
目录
流水灯最原始 .................................................................................................................................. 1
流水灯位左移 .................................................................................................................................. 3
流水灯移位函数 .............................................................................................................................. 4
流水灯数组 ...................................................................................................................................... 5
流水灯精确定时器 .......................................................................................................................... 6 1
流水灯最原始
#include "reg51.h"
sbit p0=P1^0;
sbit p1=P1^1;
sbit p2=P1^2;
sbit p3=P1^3;
sbit p4=P1^4;
sbit p5=P1^5;
单片机流水灯实验报告
引言
单片机是一种集成电路,可以通过编程来控制不同的功能。其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。
实验原理
流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。
实验步骤
1. 硬件准备
将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。同时,我们还需要连接一个电位器,用于调节流水灯的速度。
2. 程序设计
使用 Arduino 开发环境来编写 AVR 单片机的程序。首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。然后,我们需要定义一个名为 “led” 的一个数组,来存储各个 LED 灯的输出状态。同时,还需要定义一个变量“dir”,来表示流水灯的方向。
在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。
3. 程序烧录
使用 AVR ISP 编程器将编写好的程序烧录到单片机中。在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。
实验结果
经过实际测试,我们成功地实现了一个流水灯控制器。在调节电位器之后,灯的闪烁速度可以得到不同的调整。同时,也可以通过改变方向控制信号来改变流水灯的运动方向。
结论
通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。在实际应用中,也可以用学习到的技术来实现更复杂的单片机控制系统。