基于单片机的流水灯设计

合集下载

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

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

基于51单片机的流水灯设计51单片机是一种常用的微控制器,它具有高性价比、易于编程和广泛的应用范围。

流水灯是一种常见的电子灯光装置,它通过类似于瀑布般的效果,逐个点亮一系列的灯。

本文将介绍基于51单片机的流水灯的设计。

流水灯的设计过程可以分为硬件设计和软件设计两个步骤。

硬件设计:在硬件设计方面,我们需要准备以下器件和材料:1.51单片机开发板2.杜邦线3.LED灯4.电阻接下来,根据流水灯的设计思路,将多个LED灯连接在一起,形成一个线性的灯带。

为了控制LED灯的亮灭,我们需要使用51单片机的GPIO 口来提供高低电平信号。

通过改变GPIO口的输出信号,我们可以实现各个LED灯的顺序点亮和熄灭。

软件设计:在软件设计方面,我们需要使用到汇编或C语言来编写控制程序。

以下是一个简单的流水灯程序的伪代码:```1.初始化51单片机的GPIO口方向,设置为输出模式2. 定义一个存储灯光模式的数组,比如`light_pattern[] = {0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01}`3.定义一个循环计数器`i`4.进入无限循环5. 通过将`light_pattern[i]`的值写入GPIO口,控制LED灯的亮灭6.延时一定时间(比如几百毫秒)7.更新循环计数器`i`8.如果`i`超过了数组的长度,将其重置为09.结束循环```在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。

通过不断更新`i`的值,我们可以实现灯光模式的循环播放。

总结:。

基于51单片机流水灯毕业设计

基于51单片机流水灯毕业设计

基于51单片机的流水灯毕业设计方案:一、引言流水灯是一种常见的电子设计项目,适合初学者练习和毕业设计。

通过使用51单片机和少量外围元件,可以实现一个简单而有趣的流水灯效果。

本文将介绍基于51单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。

二、硬件设计1. 材料准备:51单片机(如STC89C52)、LED灯若干(建议4-8个)、电阻、面包板、连线等。

2. 连接方式:将LED灯按顺序连接到51单片机的IO口,每个LED 灯通过一个电阻连接到IO口,确保电流限制。

3. 电源供应:连接电源至电路板,保证正常工作电压和电流。

三、软件设计1. 编程环境:使用Keil C51等集成开发环境进行程序编写。

2. 程序设计:设计一个循环移位的程序,控制51单片机的IO口依次点亮LED灯,形成流水灯效果。

3. 定时控制:通过定时器中断或延时函数控制LED灯的亮灭时间,实现流水灯的效果。

四、效果展示1. 烧录程序:将编写好的程序烧录到51单片机中。

2. 调试测试:连接电路并通电,观察LED灯按顺序点亮并流动的效果。

3. 优化改进:根据实际效果调整程序和硬件设计,优化流水灯的效果和稳定性。

五、注意事项1. 电路连接:确保电路连接正确,避免短路或接反现象。

2. 程序设计:合理设计程序逻辑,确保LED灯的流水效果符合预期。

3. 调试测试:在调试过程中注意观察LED灯的亮暗情况,及时发现问题并进行调整。

六、总结基于51单片机的流水灯设计是一个适合初学者和毕业设计的简单而有趣的项目,通过设计和实现可以提升对单片机编程和电路连接的理解和技能。

希望通过本文的介绍,读者能够顺利完成基于51单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。

2.掌握单片机电路原理图。

3.掌握单片机C语言软件开发以及试验箱使用。

二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。

四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。

4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。

4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。

五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。

课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。

单片机控制左右循环的流水灯设计

单片机控制左右循环的流水灯设计

单片机控制左右循环的流水灯设计单片机是一种微型计算机芯片,可以用于控制和管理各种电子设备。

流水灯是一种经典的电子元件,通过依次点亮或熄灭一组LED灯来形成流动效果。

本文将设计一个使用单片机控制的左右循环流水灯。

设计思路:1.硬件设计:a.先准备一个单片机开发板、一组LED灯和与LED灯串联的电阻。

b.将LED灯按照循序连接,连接方式可以为并联或串联。

c.通过引脚和外部电路将LED灯与单片机的IO口相连。

每个LED灯与一个IO口相连,并且通过电阻限流。

2.软件设计:a.在单片机上编写控制流水灯的程序。

这可以使用C语言或汇编语言进行编写。

b.程序主要通过循环结构来实现流水灯的效果。

编写一个循环函数,用于控制LED灯的点亮和熄灭。

c.在循环函数中,通过控制IO口输出高电平或低电平来控制LED灯的亮灭。

每次循环,根据需要逐个点亮或熄灭LED灯。

d.为了实现左右循环的效果,可以通过改变点亮或熄灭的顺序来改变流水灯的方向。

可以使用一个变量来控制点亮和熄灭的顺序,每次循环后改变该变量的值。

示例代码:以下是一个使用C语言编写的简单示例代码,来控制左右循环流水灯。

```c#include <reg52.h>//定义LED灯使用的IO口sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3;//控制流水灯循环void lightFlowint i;int direction = 1; // 控制流水灯的方向,1表示向右,-1表示向左//流水灯循环while(1)//控制LED灯的点亮和熄灭LED1=0;LED2=1;LED3=1;LED1=1;LED2=0;LED3=1;LED4=1;LED1=1;LED2=1;LED3=0;LED4=1;LED1=1;LED2=1;LED3=1;LED4=0;//根据方向改变控制顺序if(direction == 1)//向右direction = -1;}elsedirection = 1;}}void mainlightFlow(;```这个示例代码中,使用P1口上的4个IO口来控制4个LED灯的点亮和熄灭。

课程设计-- 基于单片机的双向流水灯

课程设计-- 基于单片机的双向流水灯
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
[3]宋庆环,才卫国,高志.89C51单片机在直流电动机调速系统中的应用[M].唐山学院,2008.4
[4]杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2008.3
[6]曹巧媛.单片机原理及应用[M].北京,电子工业出版社,1997.9
指导教师签字
教研室主任签字
2013年12月23日
摘要
经年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。在电子领域尤其是自动化智能控制领域,传统的分立元件或者数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

基于单片机的流水灯设计-

基于单片机的流水灯设计-

目录引言 --------------------------------------------------------------------------------------------------------------------- - 1 -第一章总体设计方案 ---------------------------------------------------------------------------------------- - 3 -1.1设计思路 ---------------------------------------------------------------------------------------------------- - 3 -1.2原件清单 ---------------------------------------------------------------------------------------------------- - 4 -第二章电路设计与分析------------------------------------------------------------------------------------- - 5 -2.1 AT89C51----------------------------------------------------------------------------------------------------- - 5 -2.1.1主要特性---------------------------------------------------------------------------------------------- - 5 -2.1.2 2.1.2 管脚说明管脚说明 --------------------------------------------------------------------------------------------- - 5 -2.1.3 AT89C51单片机的P 口特点 ------------------------------------------------------------------------ - 7 -2.2 2.2 设计原理图设计原理图 ------------------------------------------------------------------------------------------------ - 9 -第三章软件设计与分析---------------------------------------------------------------------- - 11 -3.1位控法 ------------------------------------------------------------------------------------------------------ - 11 -3.2 proteus 仿真--------------------------------------------------------------------------------------------- - 14 -第四章总结与致谢------------------------------------------------------------------------------------------- - 15 -4.1总结 --------------------------------------------------------------------------------------------------------- - 15 -4.2致谢 --------------------------------------------------------------------------------------------------------- - 18 -参考文献------------------------------------------------------------------------------------------------------------- - 19 -附录1 ----------------------------------------------------------------------------------------------------------------- - 21 -附录2 ----------------------------------------------------------------------------------------------------------------- - 23 -引言当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。

单片机原理流水灯实验

单片机原理流水灯实验

单片机原理流水灯实验单片机原理流水灯实验是一种十分基础的单片机实验,在学习单片机的初级阶段非常重要。

流水灯可以通过多个灯依次亮起,再逐个熄灭,形成灯光流动的效果。

下面将详细介绍单片机原理流水灯实验的步骤和实现原理。

首先,我们需要准备的材料和工具有:1. 单片机主板:例如STC89C52RC型号。

2. LED灯:我们需要7个LED灯,可以选择不同颜色和尺寸的。

3. 面包板:用于连接电路。

4. 连接线:用于连接单片机主板和面包板以及连接LED灯。

接下来,我们开始进行单片机原理流水灯实验的步骤:第一步:连接电路1. 将7个LED灯连接到面包板上,按照流水灯的顺序连接,可以使用杜邦线连接。

2. 在面包板上连接7个电流限制电阻,以保护LED灯,限制电流的大小根据具体LED灯的要求确定。

3. 将面包板的VCC和GND引线分别连接到单片机主板的VCC和GND引脚上。

第二步:编写程序1. 打开Keil C51编译器,新建一个项目。

2. 编写C语言程序,实现流水灯的效果,代码如下:c#include <reg52.h>声明I/O口函数void delay(unsigned int t);void ledFlow(void);程序入口void main(void){主循环while (1){LED流水灯效果ledFlow();}}延时函数void delay(unsigned int t)unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}LED流水灯效果函数void ledFlow(void){unsigned int i;unsigned char flowData = 0x01;for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData <<= 1; 左移一位}delay(500); 延时500msflowData = 0x80; 数据复位for (i = 0; i < 8; i++){P0 = flowData; 将数据输出到P0口delay(500); 延时500msflowData >>= 1; 右移一位}delay(500); 延时500ms}第三步:烧录程序1. 将单片机主板连接到电脑上,并打开STC-ISP烧录软件。

基于单片机的流水灯设计

基于单片机的流水灯设计

基于单片机的流水灯设计摘要:随着时代的变化,很多商品在确保其性能前提下也开始变得更加美观大方。

在其中LED流水灯的运用也越来越广泛下去。

利用单片机加以控制促使LED造成流水实际效果因为价格低廉,实际操作方便快捷而便备受欢迎。

文中选择用C51单片机利用C语言程序编写操纵LED小灯的闪动,利用单片机P0-P3口输出高低电平差别促使不同类型的小灯产生不同类型的明暗度转变进而产生流水效果。

并引入for语句和分数句子进行流水灯款式的循环和自动选择。

关键字:流水灯,单片机,C语言,LED小灯1引言1.1设计背景LED灯在现代社会中一直都拥有广泛应用,其便宜实惠能够在很大程度上满足人们在各个领域里的要求,比如广告牌子、工业控制系统的操作面板等具有流水灯的运用。

在这样的新趋势状态下那就需要开专门自动控制系统,而利用单片机制作出来的流水灯的自动控制系统因为省时省力简单实用。

可以在很大程度上达到也支持现阶段的必须。

而且利用了单片机的结构有很多相近计时器、存储器能够很容易地进行针对小灯控制。

其简单实用的特点也是具备主要代表实际意义。

1.2需求分析报告应用8051系列产品单片机进行心型流水灯的设计方案,利用单片机导出高低电平的改变来促使小灯闪动进而实现循环系统流水,而且在尽可能美观大方前提下开发出更多的小灯闪动款式。

2设计2.1总体方案设计总体目标此次课题研究选用AT89S51单片机完成LED小灯闪烁的实际效果。

与此同时加入复位电路。

复位后闪动款式则再次开始。

而且在确保电源电路没有问题的情形下尽可能进行更多小灯闪动款式,以保证其美观度。

2.2总体方案设计框架图应用5V电压源根据联接USB接口立即供电系统。

依据在单片机及内部结构烧提前准备好的系统控制单片机P0-P3口的高低电平转变促使小灯产生变化。

并加入复位电路,当复位按键启动时,小灯状态将回应至最初的状态。

3 AT89C51单片机单片机全称是片式微型机,也被称为单片微控制板,经过不断的技术升级和优化,现在的单片机已经将一个基本上完整的、可以实现电子计算机基本要素的元器件集成化于一块微处理芯片之中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流水灯设计系别:班级:XX:学号:摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

我们周围有许多广告牌。

通过单片机的控制,我们可以把城市的夜晚装饰的更漂亮。

通过对单片机的系统学习,对一些广告灯的设计做了一些必要的改进。

同时对自己的改进也做了真实的仿真。

达到了预期的目的。

但是在改进的过程里也发现了自己的很多的不足。

这会在以后的学习生活里不断提高。

逐步完善自己。

关键字:广告灯,单片机,程序设计目录1单片机技术概述 (1)1.1 基本概念 (1)1.2 MCS-51系列单片机简介 (2)2 系统的硬件设计 (3)2.1硬件组成 (3)2.2流水灯硬件原理图 (3)2.3开发软件 (3)2.4编程语言特点 (4)3系统软件设计及调试.........................................................5 3.1设计思路 (5)3.2 软件编程 (5)3.3 位控法 (5)3.4 循环移位法 (6)3.5 查表法 (7)3.6 汇编语法要求、规则 (9)3.7小灯控制程序 (9)3.8 结语 (11)4参考文献 (12)5致谢 (13)1 单片机技术概述1.1基本概念单片机实际上是微型计算机的一种,自从它问世以来,人们对它不断地改进,以应用于现代化社会的各方各面。

单片机体积小,价格低廉,开发较为容易,可根据需要制作成各种智能控制器以代替人工的操作,实现自动化。

在我国,由于ASIC(专用集成电路)的生产还跟不上,单片机的作用更加地重要,在智能仪器仪表、工业设备过程控制、家用电器中,都可以见到它的踪迹。

单片机应用的意义不仅在于它的广阔X围及所带来的经济效益。

更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。

以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。

这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。

单片微型计算机就是将CPU、RAM、ROM、时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。

(引脚图例如图1.1)按用途可分为通用型和专用型两大类根据单片机能够一次处理的数据的宽度,单片机可分为1位机,4位机,8 位机,16位机,32位机。

(内部逻辑如图1.2)地址总线(AB)CC SS数据总线(DB)(a)(b)P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/V PD RXD 、P3.0TXD 、P3.1INT0、P3.2INT1、P3.3T0、P3.4T1、P3.5WR 、P3.6RD 、P3.7XTAL2XTAL1V SS图1.1 51系列单片机引脚图图1.2 51系列单片机内部逻辑图1.2 MCS-51系列单片机简介MCS是Intel公司生产的单片机的系列符号。

20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给了许多半导体芯片生产厂家,如AMTEL、PHILIPS、ANALOG DEVICES、DALLAS公司等。

这些厂家生产与MCS-51指令系统兼容的单片机。

这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而常用80C51系列来称呼所有具有8051指令系统的单片机。

不应该把它们直接称为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列符号。

2 系统的硬件设计2.1 硬件组成按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作X围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。

因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

2.2 流水灯硬件原理图图2.1 系统硬件原理图2.3开发软件Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。

它可以结合proteus软件可以实现单机仿真。

对于初学者的需求基本能得到满足。

而对于所需电路图的绘制则需要专用的protel软件的支持。

它也是个功能全面的软件。

所以学好单片机首先要熟悉上面提到的几种软件。

以便于理论与实践的真正结合。

用protel软件的主要注意的是对各图标代码的熟悉。

一提高绘画速度。

Keil C51软件主要是对程序的编写要准确。

软件的使用要在学习理论知识的同时带着使用,在使用中不断的熟悉。

如果在实验室则主要熟悉对Keil C51与硬件设备的连接和使用。

为了正确仿真串口,在软件仿真调试时,在用户的Keil工程文件的属性中,还需要设置实际使用的晶振频率。

这个参数非常重要,直接影响通信的波特率,可以按照实际使用的参数进行设置。

2.4编程软件特点它最大的好处就是简单、方便,容易使用,不需要使用任何电路,也没有特殊的要求;甚至可以在硬件电路制作好之前就将串口部分的程序编写、调试完毕。

3系统软件设计及调试3.1 设计思路从硬件原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

3.2 软件编程单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。

软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。

下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。

3.3位控法这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。

程序如下:ORG0000H;单片机上电后从0000H地址执行AJMPSTART;跳转到主程序存放地址处ORG0030H;设置主程序开始地址START:MOVSP,#60H;设置堆栈起始地址为60HCLRP1.0;P1.0输出低电平,使LED1点亮ACALLDELAY;调用延时子程序SETBP1.0;P1.0输出高电平,使LED1熄灭CLRP1.1;P1.1输出低电平,使LED2点亮ACALLDELAY;调用延时子程序SETBP1.1;P1.1输出高电平,使LED2熄灭CLRP1.2;P1.2输出低电平,使LED3点亮ACALL DELAY;调用延时子程序SETBP1.2;P1.2输出高电平,使LED3熄灭CLRP1.3;P1.3输出低电平,使LED4点亮ACALLDELAY;调用延时子程序SETBP1.3;P1.3输出高电平,使LED4熄灭CLRP1.4;P1.4输出低电平,使LED5点亮ACALL DELAY;调用延时子程序SETBP1.4;P1.4输出高电平,使LED5熄灭CLRP1.5;P1.5输出低电平,使LED6点亮ACALLDELAY;调用延时子程序SETBP1.5;P1.5输出高电平,使LED6熄灭CLRP1.6;P1.6输出低电平,使LED7点亮ACALLDELAY;调用延时子程序SETBP1.6;P1.6输出高电平,使LED7熄灭CLRP1.7;P1.7输出低电平,使LED8点亮ACALLDELAY;调用延时子程序SETBP1.7;P1.7输出高电平,使LED8熄灭ACALLDELAY;调用延时子程序AJMPSTART;8个LED流了一遍后返回到标号START处再循环DELAY:;延时子程序MOVR0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET;子程序返回END;程序结束3.4循环移位法在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。

我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。

由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。

具体编程如下所示,程序结构确实简单了很多。

ORG0000H;单片机上电后从0000H地址执行AJMPSTART;跳转到主程序存放地址处ORG0030H;设置主程序开始地址START:MOVSP,#60H;设置堆栈起始地址为60HMOVA,#0FEH;ACC中先装入LED1亮的数据(二进制的11111110)MOVP1,A;将ACC的数据送P1口MOVR0,#7;将数据再移动7次就完成一个8位流水过程LOOP:RL A;将ACC中的数据左移一位MOV P1,A;把ACC移动过的数据送p1口显示ACALL DELAY;调用延时子程序DJNZ R0,LOOP;没有移动够7次继续移动AJMP START;移动完7次后跳到开始重来,以达到循环流动效果DELAY:;延时子程序MOVR0,#255 ;延时一段时间D1:MOVR1,#255DJNZR1,$DJNZR0,D1RET;子程序返回END;程序结束3.5查表法上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的“从左到右”流方式。

运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。

相关文档
最新文档