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

51单片机流水灯程序51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。
流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。
下面详细介绍51单片机流水灯程序的编写。
一、硬件连接要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。
一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。
具体连接方式如下:•将LED灯的阳极通过限流电阻连接到VCC。
•将每个LED灯的阴极通过限流电阻连接到P1端口。
•将P2端口的每个引脚依次连接到每个LED灯的阴极。
二、程序实现#include <reg52.h> //包含51单片机头文件#define LED P1 //定义LED为P1端口#define ORDER P2 //定义顺序控制为P2端口void delay(unsigned int t); //延时函数声明void main(){unsigned char i;while(1) //循环控制流水灯效果{for(i=0; i<8; i++) //控制8个LED灯{LED = 0x01<<i; //将第i个LED灯置亮delay(10000); //延时一段时间,使LED灯亮起后延时熄灭LED = 0x01>>(i+1); //将第i个LED灯置灭}}}void delay(unsigned int t) //延时函数定义{unsigned int i, j;for(i=0; i<t; i++){for(j=0; j<1275; j++);}}该程序首先定义了LED和ORDER两个变量,分别对应P1和P2端口的输出口。
在主函数中,使用一个while循环控制流水灯效果。
在循环内部,使用一个for循环控制8个LED灯的状态。
在每次循环中,先将第i个LED灯置亮,延时一段时间后将其置灭,然后进入下一个循环。
80C51单片机流水灯设计

//定义延时子函数
第二种: (数组定义 LED 灯的各种状态) #include <reg52.h> #define uint unsigned int uint aa[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //将灯的不同状态分别定 义成 8 组六进制数并存入数组中 void Delayms(); //延时子函数申明 void main() { unsigned int i = 0; while(1) { P0 = aa[i]; //定义 P0 口为 aa 数组中第 i 个元素的状 态 Delayms(); //延时一段时间 i++; //改变数组中元素下标,当再次调用 时,LED 灯的状态改变 if (i == 8) //当所有状态都运行一次后应该回到最 初的状态,才能得以无限循环 { i = 0; } } } void Delayms() //延时子函数定义 { unsigned int i, j; for (i=1000; i>0; i--) {
ledr = (ledr << 1) | 0x01; led = (ledl & ledr); if (led == 0x7e) { temp = ledr; ledr = ledl; ledl = temp; }
实验二:流水灯——叠加 方法:又多次不同的初态,初态与前次的结束状态相同。 1) 保留前次的结束状态 if (((led >> 1) | 0x80) == temp) { temp = led; } 2)平移时,右边边界会移除,则采用初态合并法 Led = ((led >> 1)| 0x80)| & temp; 思考方法总结:
51单片机流水灯实验报告-单片机实验报告流水灯

51单片机流水灯试验一、实验目的1.了解51单片机的引脚结构。
2.根据所学汇编语言编写代码实现LED灯的流水功能。
3.利用开发板下载hex文件后验证功能。
二、实验器材个人电脑,80c51单片机,开发板三、实验原理单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用rl或rr a实现位的转换。
A寄存器的位经过rr a之后转换如下所示:然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。
四、实验电路图五、通过仿真实验正确性代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,ARL AACALL DELAY SJMP LOOPDELAY:MOV R1,#255 DEL2:MOV R2,#250DEL1:DJNZ R2,DEL1DJNZ R1,DEL2RETEnd实验结果:六、实验参考程序#include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};sbit P00=P0^0;sbit P01=P0^1;void delay(uchar t){uchar i,j;for(i=0;i<t;i++)for(j=0;j<110;j++); }void main(){uchar i;while(1){P00=1;delay(2000);P00=0;for(i=0;i<8;i++){P1=table[i];P2=table[i];delay(2000);}P01=1;delay(2000);P01=0;}}实物展示:(1)单片机最小系统板(2)自己焊制的集成最小系统板自己制作的心形流水灯实验板(3)系统板与实验板的连接展示七.实验总结:这次试验我通过Proteus仿真实现对流水灯功能的实现。
基于单片机的流水灯设计

摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
我们周围有许多广告牌。
通过单片机的控制,我们可以把城市的夜晚装饰的更漂亮。
通过对单片机的系统学习,对一些广告灯的设计做了一些必要的改进。
同时对自己的改进也做了真实的仿真。
达到了预期的目的。
但是在改进的过程里也发现了自己的很多的不足。
这会在以后的学习生活里不断提高。
逐步完善自己。
关键字:广告灯,单片机,程序设计目录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 (专用集成电路)的生产还跟不上,单片机的作用更加地重要,在智能仪器仪表、工业设备过程控制、家用电器中,都可以见到它的踪迹。
单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。
更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。
51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作一、引言爱心流水灯是一种常见的电子制作项目,它使用51单片机控制LED灯的亮灭顺序,形成一个流动的爱心图案。
本文将详细介绍51单片机爱心流水灯的原理及制作过程。
二、原理介绍1. 51单片机51单片机是一种非常常见的单片机,具有广泛的应用领域。
它具有强大的计算能力和丰富的外设接口,非常适合用于控制LED灯的亮灭。
2. LED灯LED灯是一种半导体发光二极管,具有低功耗、长寿命和高亮度等特点。
在爱心流水灯中,我们使用红色的LED灯来形成爱心图案。
3. 流水灯原理流水灯是一种常见的电子灯光效果,通过控制LED灯的亮灭顺序,形成一个流动的效果。
在爱心流水灯中,我们将多个LED灯按照特定的顺序亮灭,形成一个流动的爱心图案。
4. 原理图以下是51单片机爱心流水灯的原理图:(在此处插入原理图)三、制作材料准备在开始制作爱心流水灯之前,我们需要准备以下材料:1. 51单片机开发板2. LED灯(红色)3. 电阻4. 面包板5. 连接线6. 电源四、制作步骤1. 连接电路首先,将51单片机开发板和面包板连接起来。
然后,根据原理图连接LED灯、电阻和51单片机的引脚。
确保连接正确且稳固。
2. 编写程序使用C语言编写51单片机的程序。
程序的主要功能是控制LED灯的亮灭顺序,形成一个流动的爱心图案。
以下是一个简单的示例程序:(在此处插入示例程序)3. 烧录程序将编写好的程序烧录到51单片机中。
可以使用专业的烧录工具,也可以使用通用的USB转串口模块进行烧录。
4. 测试将电源接入电路,打开电源开关,观察LED灯的亮灭情况。
如果一切正常,LED灯将按照程序中设定的顺序亮灭,形成一个流动的爱心图案。
五、注意事项在制作爱心流水灯时,需要注意以下几点:1. 连接线的接触要牢固,确保电路的稳定性。
2. 程序的编写要准确无误,确保LED灯按照预期的顺序亮灭。
3. 使用适当的电阻限流,以保护LED灯和51单片机。
实验一51单片机流水灯实验实验报告

实验一 51单片机流水灯实验实验报告
“流水灯”实验报告 一、实验目的 1.了解单片机I/O口的工作原理。 2.掌握51单片机的汇编指令。 3.熟悉汇编程序开发,调试以及仿真环境。 二、实验内容 通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。(即流水灯效果) 三、实验原理 通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。具体的亮灭情况如下表:
要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化: FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→...... 可以使用一个循环,不断对数据进行移位运算实现。这里的移位指令采用RL和RR,即不带进位的位移运算指令。如果使用带 进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。 四、实验过程 1.在仿真系统中绘制RG 0000H Delay: MOV R0, #0FFH SJMP Start Delay1: MOV R1, #0FFH Start: MOV A, #0FEH Delay2: NOP MOV P0, A DJNZ R1, Delay2 CLR P2.7 DJNZ R0, Delay1 CLR P3.7 RET Move: MOV R2, #7H END MOV R3, #7H RMove: RL A MOV P0, A CALL Delay DJNZ R2, RMove LMove: RR A MOV P0, A CALL Delay DJNZ R3, LMove SJMP Move 五、实验结果 为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。 在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:
基于51单片机的心形流水灯
基于51单片机的心形流水灯视频地址/v_show/id_XNDgzNDI4NjQ4.html新手焊接、技术有限。
振荡电路藏于单片机下。
30个led灯并联未加电阻。
供电采用移动电源内置的锂电池从生日蜡烛上拆下来的电路。
共用一个开关。
附源程序:C语言#include<reg52.h>unsigned int x,y;void delayms(unsigned int z) //延时程序{unsigned int i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}/*----------------------------------------------------------*/ void Offall() //开启所有灯{P0=0x00;P1=0x00;P2=0x00;P3=0x00;}/*----------------------------------------------------------*/void Onall()//关闭所有灯{P0=0xff;P1=0xff;P2=0xff;P3=0xff;}/*----------------------------------------------------------*/ void ls()//等时流水灯{P0=0x00;P0=0x01;delayms(50);P0=0x02;delayms(50);P0=0x04;delayms(50) ;P0=0x08;delayms(50) ;P0=0x10;delayms(50) ;P0=0x20;P0=0x40; delayms(50) ;P0=0x80; delayms(50);P0=0x00;P2=0x00;P2=0x80; delayms(50) ; P2=0x40; delayms(50);P2=0x20; delayms(50) ; P2=0x10; delayms(50) ; P2=0x08; delayms(50) ; P2=0x04; delayms(50);P2=0x02; delayms(50) ;P2=0x01;P2=0x00;P3=0x00;P3=0x80; delayms(50) ; P3=0x40; delayms(50); P3=0x20; delayms(50) ; P3=0x10; delayms(50) ; P3=0x08; delayms(50) ; P3=0x04; delayms(50);P3=0x02; delayms(50) ;P3=0x01; delayms(50);P3=0x00;P1=0x00;P1=0x80;delayms(50) ;P1=0x40;delayms(50);P1=0x20;delayms(50) ;P1=0x10;delayms(50) ;P1=0x08;delayms(50) ;P1=0x04;delayms(50);P1=0x02;delayms(50) ;P1=0x01;delayms(50);P1=0x00;P0=0x01;delayms(50);P0=0x00;}/*----------------------------------------------------------*/ void fxls()//反向等时流水灯{P0=0x00;P0=0x01;delayms(50);P0=0x00;P1=0x00;P1=0x01;delayms(50);P1=0x02;delayms(50);P1=0x04;delayms(50);P1=0x08;delayms(50);P1=0x10;delayms(50);P1=0x20;delayms(50);P1=0x40;delayms(50);P1=0x80;delayms(50);P1=0x00; P3=0x00;P3=0x01;delayms(50);P3=0x02;delayms(50);P3=0x04;delayms(50);P3=0x08;delayms(50);P3=0x10;delayms(50);P3=0x20;delayms(50);P3=0x40;delayms(50);P3=0x80;delayms(50);P3=0x00;P2=0x00;P2=0x01;delayms(50);P2=0x02;delayms(50);P2=0x04;delayms(50);P2=0x08;delayms(50);P2=0x10;delayms(50);P2=0x20;delayms(50);P2=0x40;delayms(50);P2=0x80;delayms(50);P2=0x00;P0=0x00;P0=0x80;delayms(50);P0=0x40;delayms(50);P0=0x20;delayms(50);P0=0x10;delayms(50);P0=0x08;delayms(50);P0=0x04;delayms(50);P0=0x02;delayms(50);P0=0x01;delayms(50);P0=0x00;}/*----------------------------------------------------------*/void bsb()//半双边流水由上至下{Offall();P0=0x01;delayms(50);P0=0x02;P1=0x01;delayms(50);P0=0x04;P1=0x02;delayms(50);P0=0x08;P1=0x04;delayms(50);P0=0x10;P1=0x08;delayms(50);P0=0x20;P1=0x10;delayms(50);P0=0x40;P1=0x20;delayms(50);P0=0x80;P1=0x40;delayms(50);P0=0x00; P2=0x80;P1=0x80;delayms(50);P1=0x00; P2=0x40;P3=0x01;delayms(50);P2=0x20;P3=0x02;delayms(50);P2=0x10;P3=0x04;delayms(50);P2=0x08;P3=0x08;delayms(50);P2=0x04;P3=0x10;delayms(50);P2=0x02;P3=0x20;delayms(50);P2=0x01;P3=0x40;delayms(50);Offall(); P3=0x80;delayms(50);Offall();}/*----------------------------------------------------------*/ void fbsb() //半双边流水由下至上{Offall();P3=0x80;delayms(50);P2=0x01;P3=0x40;delayms(50);P2=0x02;P3=0x20;delayms(50);P2=0x04;P3=0x10;delayms(50);P2=0x08;P3=0x08;delayms(50);P2=0x10;P3=0x04;delayms(50);P2=0x20;P3=0x02;delayms(50);P2=0x40;P3=0x01;delayms(50);Offall();P2=0x80;P1=80;delayms(50);Offall();P0=0x80;P1=0x40;delayms(50);P0=0x40;P1=0x20;delayms(50);P0=0x20;P1=0x10;delayms(50);P0=0x10;P1=0x08;delayms(50);P0=0x08;P1=0x04;delayms(50);P0=0x04;P1=0x02;delayms(50);P0=0x02;P1=0x01;delayms(50);Offall();P0=0x01;Offall();}void zxsz() //正向生长{Offall();P0=0x01;delayms(50);P0=0x03;delayms(50);P0=0x07;delayms(50);P0=0x0f;delayms(50);P0=0x1f;delayms(50);P0=0x3f;delayms(50);P0=0x7f;delayms(50);P0=0xff;delayms(50);P2=0x80;delayms(50);P2=0xc0;delayms(50);P2=0xe0;delayms(50);P2=0xf0;delayms(50);P2=0xf8;delayms(50);P2=0xfc;delayms(50);P2=0xfe;delayms(50);P2=0xff;delayms(50);P3=0x80;delayms(50);P3=0xc0;delayms(50);P3=0xe0;delayms(50);P3=0xf8;delayms(50);P3=0xfc;delayms(50);P3=0xfe;delayms(50);P3=0xff;delayms(50);P1=0x80;delayms(50);P1=0xc0;delayms(50);P1=0xe0;delayms(50);P1=0xf0;delayms(50);P1=0xf8;delayms(50);P1=0xfc;delayms(50);P1=0xfe;delayms(50);P1=0xff;delayms(50);}/*----------------------------------------------------------*/void fxsz() //反向生长{Offall();P0=0x01;delayms(50);P1=0x01;delayms(50);P1=0x07;delayms(50); P1=0x0f;delayms(50); P1=0x1f;delayms(50); P1=0x3f;delayms(50); P1=0x7f;delayms(50); P1=0xff;delayms(50); P3=0x01;delayms(50); P3=0x03;delayms(50); P3=0x07;delayms(50); P3=0x0f;delayms(50); P3=0x1f;delayms(50); P3=0x3f;delayms(50); P3=0x7f;delayms(50); P3=0xff;delayms(50); P2=0x01;delayms(50); P2=0x03;delayms(50); P2=0x07;delayms(50); P2=0x0f;delayms(50); P2=0x1f;delayms(50); P2=0x3f;delayms(50); P2=0x7f;delayms(50);P0=0x81;delayms(50);P0=0xc1;delayms(50);P0=0xe1;delayms(50);P0=0xf1;delayms(50);P0=0xf9;delayms(50);P0=0xfd;delayms(50);P0=0xff;delayms(50);}/*----------------------------------------------------------*/ void zxsw() //正向死亡{Onall();P0=0xfd;delayms(50);P0=0xf9;delayms(50);P0=0xf1;delayms(50);P0=0xf0;delayms(50);P0=0xe1;delayms(50);P0=0xc1;delayms(50);P0=0x01;delayms(50); P2=0x7f;delayms(50); P2=0x3f;delayms(50); P2=0x1f;delayms(50); P2=0x0f;delayms(50); P2=0x07;delayms(50); P2=0x03;delayms(50); P2=0x01;delayms(50); P2=0x00;delayms(50); P3=0x7f;delayms(50); P3=0x3f;delayms(50); P3=0x1f;delayms(50); P3=0x0f;delayms(50); P3=0x07;delayms(50); P3=0x03;delayms(50); P3=0x01;delayms(50); P3=0x00;delayms(50); P1=0x7f;delayms(50); P1=0x3f;delayms(50); P1=0x1f;delayms(50); P1=0x0f;delayms(50);P1=0x03;delayms(50);P1=0x01;delayms(50);P1=0x00;delayms(50);P0=0x00;delayms(50);}/*----------------------------------------------------------*/void fxsw() //反向死亡{Onall();P1=0xfe;delayms(50);P1=0xfc;delayms(50);P1=0xf8;delayms(50);P1=0xf0;delayms(50);P1=0xe0;delayms(50);P1=0xc0;delayms(50);P1=0x80;delayms(50);P3=0xfe;delayms(50); P3=0xfc;delayms(50); P3=0xf8;delayms(50); P3=0xf0;delayms(50); P3=0xe0;delayms(50); P3=0xc0;delayms(50); P3=0x80;delayms(50); P3=0x00;delayms(50); P2=0xfe;delayms(50); P2=0xfc;delayms(50); P2=0xf8;delayms(50); P2=0xf0;delayms(50); P2=0xe0;delayms(50); P2=0xc0;delayms(50); P2=0x80;delayms(50); P2=0x00;delayms(50); P0=0x7f;delayms(50); P0=0x3f;delayms(50); P0=0x1f;delayms(50); P0=0x0f;delayms(50); P0=0x07;delayms(50);P0=0x01;delayms(50);P0=0x00;delayms(50);}/*----------------------------------------------------------*/void bbs()//半边交替闪{Offall();P0=0x00;P2=0xff;P3=0x80;delayms(200);Offall(); P0=0xfe;P1=0xff;P3=0xff;delayms(200);}/*----------------------------------------------------------*/void sxs()//上下交替闪{Offall();P1=0xff;P0=0x00;P2=0x80;delayms(200);Offall();P2=0x7f;P3=0xff;delayms(200);}void cx() //出现一点点{Offall();delayms(1000);P0=0x00;P2=0x00;P1=0x40;P3=0x00;delayms(1000); P0=0x20;P2=0x40;P1=0x40;P3=0x00;delayms(1000); P0=0x24;P2=0x42;P1=0x40;P3=0x04;delayms(1000); P0=0xa6;P2=0x5a;P1=0x52;P3=0x65;delayms(1000); P0=0xee;P2=0xdf;P1=0xdb;P3=0xef; delayms(1000); P0=0xff;P2=0xff;P1=0xff;P3=0xff;delayms(1000); }void xs() //一点点消失{Onall();delayms(1000);P0=0xee;P2=0xdf;P1=0xdb;P3=0xef; delayms(1000);P0=0xa6;P2=0x5a;P1=0x52;P3=0x65;delayms(1000);P0=0x24;P2=0x42;P1=0x40;P3=0x04;delayms(1000);P0=0x20;P2=0x40;P1=0x40;P3=0x00;delayms(1000);P0=0x00;P2=0x00;P1=0x40;P3=0x00;delayms(1000);Offal l();delayms(1000);}void main(){Onall();delayms(1000);Offall();delayms(1000);cx();//一点点出现xs();zxsw();/* 正向死亡*/ls(); /* 正向流水*/zxsz();/* 正向生长*/zxsw(); /* 正向死亡*/fxsz();/* 反向生长*/fxsw(); /* 反向死亡*/fxls(); /* 反向流水*/bsb(); /* 半双边流水由上至下*/ fbsb();/* 半双边流水由下至上*/ sxs();bbs();}版权所有:山东科技大学信息与电气工程学院电气信息类2012级14班ssk。
基于8051单片机的流水灯设计毕业设计
目录摘要 (1)ABSTRACT (2)前言 (3)第1章系统方案设计 (4)1.1 系统总体设计方案 (4)1.2 基本功能简介 (4)1.3 系统程序 (4)第2章8051单片机原理分析及硬件电路 (6)2.1 8051单片机简述 (6)2.1.1 8051单片机的基本组成 (6)2.1.2 8051的信号引脚 (8)2.2 晶体振荡电路 (10)2.3 上电复位电路 (11)2.4 8051单片机的并行I/O口 (12)2.5 8051单片机的中断系统 (12)2.6 8051单片机的定时/计数器 (13)2.6.1 定时/计数器的定时功能 (13)2.6.2 用于定时/计数器控制的寄存器 (14)第3章8051单片机与8155的接口设计 (15)3.1 并行I/O接口8155 (15)3.1.1 8155内部功能结构及引脚 (15)3.1.2 作片外RAM使用 (16)3.1.3 作扩展I/O口使用 (16)3.1.4 I/O口的工作方式 (18)3.1.5 定时/计数器使用 (18)3.28051单片机并行I/O扩展 (19)3.2.1 8051并行扩展总线 (19)3.2.2 8051单片机与8155的接口 (19)第4章单片机与8155的接口设计的应用 (21)4.1 LED显示 (21)4.2 按键扫描 (22)第5章结论 (24)参考文献 (26)毕业设计小结 (27)附录 (28)摘要二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
基于单片机的流水灯设计
基于单片机的流水灯设计摘要:随着时代的变化,很多商品在确保其性能前提下也开始变得更加美观大方。
在其中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. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。
2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。
3. 提高动手实践能力,培养团队协作精神。
二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。
2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。
三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。
实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。
四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。
2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。
3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。
(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。
(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。
(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。
4. 编译程序,生成HEX文件。
5. 将生成的HEX文件导入Proteus软件,运行仿真实验。
6. 观察实验现象,检查LED灯的流水灯效果是否正常。
五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。
2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。
实验过程中,可以调整定时器的定时时间,改变流水灯的速度。
六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。
2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。
3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。