LED花样流水灯
led点阵花流水灯课程设计
led点阵花流水灯课程设计一、课程目标知识目标:1. 让学生理解LED点阵的基本原理和电路组成;2. 掌握流水灯的设计方法,包括编程和电路连接;3. 了解点阵花流水灯在实际应用中的功能与作用。
技能目标:1. 学会使用相关软件进行电路设计和编程;2. 能够独立完成LED点阵花流水灯的制作与调试;3. 提高学生动手操作能力和问题解决能力。
情感态度价值观目标:1. 培养学生对电子制作的兴趣和热情,激发创新意识;2. 培养学生团队合作精神,学会互相交流、分享经验;3. 增强学生对科技改变生活的认识,提高社会责任感。
课程性质:本课程为实践性较强的课程,结合理论知识,锻炼学生动手能力和创新思维。
学生特点:针对中学生,具备一定的物理知识和电子制作基础,对新鲜事物充满好奇心。
教学要求:教师需引导学生掌握基本原理,注重实践操作,鼓励学生思考、创新,提高课堂互动性。
将课程目标分解为具体的学习成果,便于教学设计和评估。
1. 理论知识:- 介绍LED点阵的原理、结构和应用;- 讲解点阵花流水灯电路的组成和功能;- 概述编程控制LED点阵的基本方法。
2. 实践操作:- 使用相关软件(如Arduino)进行电路设计和编程;- 学习如何将LED点阵与微控制器连接,实现流水灯效果;- 动手制作LED点阵花流水灯,进行调试与优化。
3. 教学大纲:- 第一章:LED点阵原理及电路组成(1课时)- 第二章:流水灯设计方法与编程(2课时)- 第三章:LED点阵花流水灯制作与调试(2课时)4. 教材关联:- 《电子技术基础》第四章:数字电路基础;- 《Arduino编程与实践》第三章:数字输出与LED控制。
教学内容安排和进度:- 第一周:理论学习,了解LED点阵原理及电路组成;- 第二周:实践操作,学习流水灯设计方法与编程;- 第三周:实践操作,制作LED点阵花流水灯并进行调试与优化。
教学内容旨在确保学生掌握科学性和系统性的知识,结合教材章节,使学生在实践中提高技能,达到课程目标。
单片机实训报告——花样流水灯的制作
单片机实训报告——花样流水灯的制作班级:电气一班学号:110101127姓名:李亚龙一、花样流水灯的设计方案流水灯实际上就是一个带有八个发光二级管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
如果要让P0.0口的LED2亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.0~P0.7口的其他7个LED的电亮和熄灭的方法同LED2。
因此,要实现流水灯功能我们只要将发光二极管LED2~LED9依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
对8段LED数码管显示器的控制,包括“显示段”和“公共端”两个地方的控制。
其中显示段用来控制字符的形状,公共端用来控制若干个LED中的那一只被选中,前者称为“段选”,后者称为”位选”。
只有二者结合起来,才能在指定的LED上显示指定的字形。
显然,要显示某种字形就应该使此字形的相应字段点亮,按照dp、g、e、f、e、d、c、b、a的顺序,dp为最高位,a为最低位,引脚输入不同的8位二进制编码,可显示不同的数字或字符。
二、花样流水灯的硬件电路设计时钟电路是计算机的心脏,它控制着计算机的工作节奏,CPU 就是通过复杂的时序电路完成不同的指令功能的,89C52的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
单片机有多种复位电路,本系统采用电平式复位与上电复位方式,如下图所示当上电时C1相当于短路时,使单片机复位,在正常工作时,按下复位键是单片机复位。
显示部分主要是由八个LED和四个七段数码管组成,八个LED 由限流电阻限流后接入89C52的P0口。
三、花样流水灯的软件设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit key3=P3^1;sbit key2=P3^2;sbit key1=P3^3;uchar code table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; uchar code moshi1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code moshi2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code moshi3[]={0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00};uchar code moshi4[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};uchar code moshi5[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uchar code moshi6[]={0x7e,0x3c,0x18,0x00,0x81,0xc3,0xe7,0xff};uchar moshi,dingshi; //模式,定时uchar shijian,k1; //时间控制uchar num0,num;void delay(uint x) //延时程序{uchar i;while(x--);for(i=0;i<120;i++);}void keyscan() //键盘扫描{if(key1==0){delay(10);if(key1==0) //按键1,模式循环{moshi++;if(moshi==7)moshi=1;TR0=1;k1=1;while(!key1);}}if(key2==0) //按键2,时间调整{delay(10);if(key2==0){shijian++;if(shijian==15)shijian=15;while(!key2);}}if(key3==0) //按键3,时间复位{delay(10);if(key3==0){shijian--;if(shijian==1)shijian=1;while(!key3);}}}void display() //数码管显示{P1=table[moshi];P2=0xfe; //从左向右显示delay(2);P1=0XFF;P2=0XFF; //数码管不显示delay(2);P1=table[dingshi/10]; //十位显示P2=0xfd;delay(2);P1=table[dingshi%10]; //个位显示P2=0xfe;delay(2);}void liushuideng() //流水灯显示{switch(moshi) //模式选择{case 1:P0=moshi1[num];break;case 2:P0=moshi2[num];break;case 3:P0=moshi3[num];break;case 4:P0=moshi4[num];break;case 5:P0=moshi5[num];break;case 6:P0=moshi6[num];break;}}void disp() //显示器{num++;if(num==8){num=0;dingshi--;if(dingshi==0){dingshi=shijian;moshi++;if(moshi==7)moshi=1;}}}void init() //初始化{TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;shijian=5;dingshi=5;moshi=0;P3=P0=0xff;num=num0=0;}void main(){init();while(1){keyscan(); //键盘扫描display(); //数码管显示if(k1==1) //模式选择liushuideng(); //流水灯显示}}void t0_time() interrupt 1 //中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num0++;if(num0==6){num0=0;disp();}}四、总结实训中我发现主要问题是在焊接电路板的时候有虚焊,导致电路接触不良,还有多焊导致电路板损坏或短路。
中断控制LED流水灯 16页PPT文档
应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中
断的地方继续处理事件A(中断返回)。 事件A 什么
中断过程
中断请求→中断响应→中断服务→中断返回
事件B
是中
断 事件B的 ? 处理过程
中断源
80C51单片机有5个中断源。见下表
中断源 外部中断 INT 0 定时器T0中断 外部中断 INT 1 定时器T1中断 串行口中断
}
主程序流程图 图
子程序流程
关键程序代码(一)
void main(void)
{
TMOD = 0x01;
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
TR0 = 1;
ET0 = 1;
PT0 = 1;
IT0 = 1;
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
TR0 = 1;
ET0 = 1;
//允许T0中断
PT0 = 1;
//设定T0为高优先级
IT0 = 1;
EX0 = 1;
EA = 1;
//外部中断输入下降沿有效 //允许X0中断 //开放总中断
temp = 0xfe;
P1 = temp;
while(1);
单片机课程设计花样流水灯2
单⽚机课程设计花样流⽔灯2前⾔随着⼈们⽣活环境的不断改善和美化,在许多场合可以看到彩⾊霓虹灯不断变化闪烁。
LED灯由于其丰富的灯光⾊彩,低廉的造价以及控制简单等特点⽽得到了⼴泛的应⽤,⽤彩灯来装饰街道和城市建筑物已经成为⼀种时尚。
但⽬前市场上各式样的LED灯控制器⼤多数⽤全硬件电路实现,电路结构复杂、功能单⼀,这样⼀旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯⽚过多、电路复杂、功率损耗⼤等缺点。
此外从功能效果上看,亮灯模式少⽽且样式单调,缺乏⽤户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进⾏改进。
流⽔灯是⼀串按⼀定的规律像流⽔⼀样连续闪亮。
流⽔灯控制是可编程控制器的⼀个应⽤,其控制思想在⼯业控制技术领域也同样适⽤。
流⽔灯控制可⽤多种⽅法实现,但对现代可编程控制器⽽⾔,利⽤移位寄存器实现最为便利。
通常⽤左移寄存器实现灯的单⽅向移动;⽤双向移位寄存器实现灯的双向移动。
本案例利⽤价格低廉的AT89C51系列单⽚机控制基⾊LED灯泡从⽽实现丰富的变化。
1、课程设计的⽬的和要求1.1 设计⽬的近年来随着科技的发展,单⽚机的应⽤正在不断⾛向深⼊,同时带动传统控制检测⽇新⽉异更新,在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往是作为⼀个核⼼部件来使⽤,单⽚机⽅⾯知识是不够的,还应根据具体硬件结构,以及针对具体应⽤对象点的软件结合,加以完善。
流⽔灯,可以更简单、⽅便的使⽤。
通过本课程设计使学⽣进⼀步巩固单⽚机原理及应⽤的基本概念、基本理论,分析问题的基本⽅法,增强系统地运⽤已学的理论知识解决实际问题的能⼒和查阅资料的能⼒。
培养⼀定的⾃学能⼒和独⽴分析问题、解决问题的能⼒,能通过独⽴思考、查阅⼯具书、参考⽂献,寻找解决⽅案。
1.2 设计要求设计流⽔灯的基本要求:设计⼀个流⽔灯,应⽤AT89C51试验系统,电路开启后红、绿两种颜⾊的灯在时钟信号作⽤下按⼀定规律转换状态。
高级流水灯_水滴效果
高级流水灯--水滴效果(渐变带拖尾效果)实现和讲解[复制链接]spark5115主题好友124积分注册会员莫元111•发消息电梯直达1楼发表于 2011-12-6 09:03:44|只看该作者|倒序浏览简介学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。
1 什么是PWM脉冲宽度调制(Pulse Width Modulation,简称PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。
在本章的应用中可以认为PWM就是一种方波。
比如图1:(原文件名:120611_0.png)图1 方波是周期为10ms,占空比为60%的PWM。
占空比:高电平在一个周期之内所占的时间比率。
2 硬件设计在例说51单片机的第三章,我们讲过如何控制开发板上LED的亮灭。
首先译码器输出端LEDS6为低,T10导通,给8个LED供电,然后通过缓冲器8个输出端BD0~BD7的控制LED的亮灭(低亮高灭)。
(原文件名:120611_1.png)图2 LED硬件连接如果BD口输出高低不断变化,则LED会闪烁;如果这种高低电平变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。
3 软件设计3.1 PWM能否控制亮度下面我们就用实践验证PWM是否能够控制LED的亮度,测试代码如下:程序清单L1:验证PWM能否控制LED的亮度1 #include <reg52.h>2 #include "my_type.h"3 #include "hw_config.h"456 void main(void)7 {8 u8 i = 0;910 //使能独立LED的供电,即LEDS6输出低电平11 LEDEN = 0;12 ADDR0 = 0;13 ADDR1 = 1;14 ADDR2 = 1;15 ADDR3 = 1;1617 //第一个LED亮18 P0 = 0xFE;1920 while(1)21 {22 for(i=0; i<250; i++)23 {24 if(i<10)25 {26 P0 &= 0xFD; //第二个灯亮27 }28 else29 {30 P0 |= 0x02; //第二个灯灭31 }32 }33 }34 }L1(22-32):这段代码实现P0.1输出占空比为96%的方波,而P0.0恒为低。
51单片机爱心流水灯原理及制作
51单片机爱心流水灯原理及制作引言:在现代科技发展的背景下,电子产品已经成为我们生活中不可或者缺的一部份。
而作为电子制作的入门级项目,流水灯因其简单而受到泛博爱好者的爱慕。
本文将介绍使用51单片机制作爱心流水灯的原理及制作过程。
1. 原理介绍:爱心流水灯是一种特殊的流水灯效果,通过控制LED灯的亮灭顺序和时间间隔,形成一个爱心图案在LED灯带上流动的效果。
其原理基于51单片机的GPIO (通用输入输出)口控制LED灯的亮灭,通过改变LED灯的状态来实现流动效果。
2. 材料准备:制作爱心流水灯所需的材料如下:- 51单片机开辟板- LED灯带- 面包板- 杜邦线- 电阻- 电容- 电源适配器3. 硬件连接:首先,将51单片机开辟板和面包板连接起来。
然后,将LED灯带连接到面包板上,确保正极和负极正确连接。
接下来,通过杜邦线将51单片机的GPIO口与LED灯带连接起来。
最后,将电阻和电容连接到电路中,以保护电路免受过电流和过电压的伤害。
4. 软件编程:使用Keil C编译器进行软件编程。
首先,需要定义LED灯带的控制引脚,并初始化为输出模式。
然后,编写程序来控制LED灯的亮灭顺序和时间间隔。
在本例中,我们将使用循环语句和延时函数来实现流水灯效果。
通过改变LED灯的状态和延时时间,可以形成一个爱心图案在LED灯带上流动的效果。
5. 程序调试:将编写好的程序下载到51单片机开辟板上,并连接电源适配器。
打开开关,LED灯带上的爱心流水灯效果就会开始显示出来。
如果浮现问题,可以通过调试程序和检查硬件连接来解决。
6. 制作扩展:如果你对爱心流水灯的效果满意,你还可以进一步扩展你的制作。
例如,你可以添加一个按键来控制流水灯的启停,或者通过蓝牙模块和手机APP来远程控制流水灯的效果。
这些扩展可以增加你的制作的趣味性和创造性。
结论:通过本文的介绍,我们了解了51单片机爱心流水灯的原理及制作过程。
通过硬件连接和软件编程,我们可以制作出一个具有特殊效果的流水灯。
实验3:花样流水灯实验
实验三:花样流水灯实验一、实验目的1.熟悉LED的显示特点;2.了解单片机系统实现花样流水灯实验的硬件电路和软件编程技巧;3.熟悉基本汇编指令的灵活应用。
二、实验仪器、材料1.微型计算机(PⅣ以上)2.编程、汇编与模拟平台软件Keil uVision33.电子技术专业仿真软件protues运行平台4.单片机实训开发电路板三、实验内容和步骤1.2.//从左到右(或从右到左)流水循环显示实验ORG 0000HMOV A,#80H //MOV A,#01H ;从右到左LOOP:RL A //RR A ;从右到左MOV P1,AACALL DELAYSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从两端到中间、从中间到两端显示实验ORG 0000HLOOP:MOV P1,#81HACALL DELAYMOV P1,#42HACALL DELAYMOV P1,#24HACALL DELAYMOV P1,#18HACALL DELAYMOV P1,#24HACALL DELAYMOV P1,#42HACALL DELAYSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验1ORG 0000HMOV A,#80HMOV R0,#08HLOOP:RL AMOV P1,AACALL DELAYDJNZ R0,LOOPMOV R0,#07HLOOP1:RR AMOV P1,AACALL DELAYDJNZ R0,LOOP1MOV R0,#07HSJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验2ORG 0000HMOV A,#01HLOOP:RL AMOV P1,AACALL DELAYCJNE A,#80H,LOOPLOOP1:RR AMOV P1,AACALL DELAYCJNE A,#01H,LOOP1SJMP LOOPDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//从左到右、从右到左流水显示实验3ORG 0000HMOV A,#00HSETB CYLOOP:RLC AJC LOOP1MOV P1,AACALL DELAYSJMP LOOPLOOP1:RRC AJC LOOPMOV P1,AACALL DELAYSJMP LOOP1DELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND//花样流水灯查表显示实验ORG 0000HSTART:MOV R0,#00HMOV P1,#00HLOOP:MOV A,R0ADD A,#0CHMOVC A,@A+PCCJNE A,#01H,XSH ;3SJMP START ;2XSH:MOV P1,A ;2ACALL DELAY ;2INC R0 ;1SJMP LOOP ;2ASCTAB:DB0FFH,00H,0FFH,00H,0FFH,00H,0FH,0F0H,0FH,0F0H,0FH,0F0H,0FH,0F0H,0CCH,55H,0AAH,55H,0AAH,55H,0AAH,55H DB81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H,42H,24H,18H,24H,42H,81H DB03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH,06H,03H,06H,0CH,18H,30H,60H,0C0H,60H,30H,18H,0CH,06H,03H,0 1HDELAY:MOV R7,#0FFH ;延时1ms程序DELAY1:MOV R6,#0FFHDELAY2:MOV R5,#02HDELAY3:DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND。
【LED】流水灯的设计与制作
摘要本设计是一种基于89C52单片机的彩灯控制方案,实现对彩灯的控制。
本方案以89C52单片机作为主控核心,由编程实现亮灯循环模式。
由在显示模块上有8个彩灯,根据用户需要可以编写若干种亮灯模式.本系统具有体积小、硬件少、电路结构简单及容易操作和阅读等优点。
该彩灯控制器实际应用效果较好,亮灯模式多。
与其他彩灯相比,具有体积小、价格低、低能耗等优点。
在能源比较匮乏的今天,彩灯的循环控制在显示方面更表现出一种节约能源的魅力.这将使彩灯具有更广阔的发展天地。
关键字:89C51 循环彩灯a a 89c52 89c52 8 8 a 。
, a .: 89C51目录绪论 31流水灯方案设计与选择 31、1 设计要求 31、2 系统功能 31、3 方案选择 32 流水灯设计过程 42、1 元件选取 42、2 硬件设计 42、2、1 单片机介绍 42、2、2 流水灯总图 52、3 软件设计 62、3、1 编程介绍 62、3、2 编程选择 10参考文献 11绪论当今时代足一个新技术层出不穷的时代,在电子领域尤其足自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
1流水灯方案设计与选择1、1设计要求本次毕业设计要求设计一个流水灯,其设计要求如下:(1)、用8个发光二极管作为显示电路。
(2)、实现动态显示。
(3)、能连续循环显示。
1、2 系统功能流水灯可直接与220 V交流市电相连接,经过开关电源变换,输出直流工作电压,一方面为管内模块提供12 V工作电源,另一方面为主控模块单片机系统提供5 V工作电源。
整个系统工作由软件程序控制运行。
上电后,流水灯按程序设计好的模式进行显示,由全灭→按程序显示→全都熄灭为一个周期。
然后循环继续工作。
1、3 方案选择可只采用89C51作为主控芯片,将P1分别接8个实现显示,可用C语言或者汇编语言编程实现。
心形流水灯制作
爱心花样流水灯电子制作套件心形18LED循环灯安装调试:这里介绍的是一款极具流动色彩的循环灯套件产品,本款套件含有18只红色LED(发光二极管),分成3租,排列组成一个心形的图案,并由三极管震荡电路驱动,使红色的心形图案不断的按顺时针方向旋转闪亮,特别是在夜间使用时,极富动感。
1.工作原理从原理图上可以看出,18只LED被分成3组,分别是LED1-LED6、LED7-LED12、LED13-LED18,每当电源接通时,3只三极管会争先导通,但由于元器件存在差异,只会有1只三极管最先导通,这里假设V1最先导通,则LED1-LED6点亮,由于V1导通,其集电极电压下降使得电容C2左端下降,接近0V,由于电容两端的电压不能突变,因此V2的基极也被拉到近似0V,V2截止,故接在其集电极的LED7-LED12熄灭。
此时V2的高电压通过电容C3使V3集电极电压升高,V3也将迅速导通,LED13-LED18点亮。
因此在这段时间里,V1、V3的集电极均为低电平,LED1-LED6和LED13-LED18被点亮,LED7-LED13熄灭,但随着电源通过电阻R3对C2的充电,V2的基极电压逐渐升高,当超过0.7V时,V2由截至状态变为导通状态,集电极电压下降,LED7-LED12点亮。
与此同时,V2的集电极下降的电压通过电容C3使V3的基极电压也降低,V3由导通变为截至,其集电极电压升高,LED13-LED8熄灭。
接下来,电路按照上面叙述的过程循环,3组18只LED便会被轮流点亮,同一时刻有2组共12只LED被点亮。
这些LED被交叉排列呈一个心形图案,不断的按照顺时针方向循环闪烁发光,达到流动显示的效果。
1.组装调试及注意事项装配过程可参考上面的原理图和PCB版图,安装调试很简单,焊接时位置不要装错,极性不反,基本没有问题,无需调试。
焊接完成后效果图如下好了,装上电池盒,我们看看效果???????? 焊接组装好的心形循环灯最适合在夜间相对较黑的环境中使用,距离2米以外观看效果更加生动、有趣。
51八只LED灯做流水灯实验
51八只LED灯做流水灯实验第一节:单片机在上电初始后,其各端口输出为高电平。
如果我们现在想让接在P1.0口的LED1亮,那么我们只要把P1.0口的电平变为低电平就可以了。
想让LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED 1就熄灭LED2随后既点亮!依始类推如下所示8只LED变会一亮一暗的做流水灯了。
本实验在“SP-5 1实验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”代码。
我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编和C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
“汉语”语言汇编语言开始:star:P1.0低clr p1.0P1.0高setb p1.0P1.1低clr p1.1P1.1高setb p1.1P1.2低clr p1.2P1.2高setb p1.2这里用到了四条汇编指令:clr、 setb、 ljmp 、end;clr:是将其后面指定的位清为0;setb:是将其后面指定的位置成1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
心形流水灯设计原理
心形流水灯设计原理
心形流水灯是一款综合多彩灯带、音乐控制灯、延时功能的智能装饰灯,它可以极具艺术美感地装点房间室外空间。
心形流水灯使用LED灯珠、电子电路技术和音乐控制技术,聚合在一起,它能够根据用户的设置,实现彩色变化、渐变变色及跟随音乐的节奏律动等功能,给人以多彩的视觉感受。
心形流水灯的原理如下:首先,根据控制要求,通过控制电路板连接相应的灯具,实现对各个灯具的控制,如果要实现彩色变化、渐变变色及跟随音乐的节奏律动,则需要将控制电路板和电脑软件结合起来使用。
其次,音乐控制灯需要使用麦克风来监听音乐信号,并将其转换为指令发送给控制电路板,以便实现跟随音乐的节奏律动等功能。
最后,控制器会根据音乐的节奏和动作,生成控制信号,通过控制电路板驱动灯具随着音乐变化,实现多彩变化的效果。
心形流水灯小巧、环保、安全,可替代传统电源装饰灯,具有节能减排的保护环境的效果。
它不仅可以满足各种变彩诉求,而且可以随着音乐节奏变化,增强视觉冲击力。
它还可以延时,可以让观看者们享受到舒服而持久的光线,让我们的生活更加温馨舒适!。
心形花样LED流水灯(带程序)
心形花样LED 流水灯(带程序)1000146073713使用89C52做的,原理图如下:总共有32个LED灯,4个I/O全部用上了。
我在这里不加有LED保护电阻,用200的也可以晶振用12M的或11.0592M也行,C1,C2用30PF。
PCB图如下:作品效果录像:/programs/view/z0bjKg_3Cd4/程序是用C语言写的;如下:#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0/***********************************************************/void delay(uint t); //延时void zg(uint t,uchar a);//两边逐个亮void qs(uint t,uchar a);//全部闪烁void zgxh(uint t,uchar a); // 逆时针逐个点亮//void zgxh1(uint t,uchar a); // 顺时针逐个点亮void djs(uint t,uchar a); //对角闪void lbzgm(uint t,uchar a);//两边逐个灭//void sszgm(uint t,uchar a); // 顺时针逐个灭void nszgm(uint t,uchar a); // 逆时针逐个灭void sztl(uint t,uchar a);//顺时逐个同步亮void nztl(uint t,uchar a);//逆时逐个同步亮void sztm(uint t,uchar a);//顺时逐个同步灭void nztm(uint t,uchar a);//逆时逐个同步灭void hwzjl(uint t,uchar a); //横往中间亮void hwzjm(uint t,uchar a); //横往中间灭//void swzjl(uint t,uchar a); //竖往中间亮//void swzjm(uint t,uchar a); //竖往中间灭void nzdl(uint t,uchar a); //逆时逐段亮void nzdgl(uint t,uchar a); //逆时逐段一个点亮void jgs(uint t,uchar a); //间隔闪/**********************************************************/void zg(uint t,uchar a)//两边逐个亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=0x7f;delay(t);for(i=0;i<7;i++){P0=table1[i+1];P2=table1[i];delay(t);}P2=0x00;P1=0xfe;delay(t);for(i=0;i<7;i++){P1=table[i+1];P3=table1[i];delay(t);}P3=0x00;delay(t);}}void qs(uint t,uchar a) //全部闪烁{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;delay(t);P0=P1=P2=P3=0x00;delay(t);}}void zgxh(uint t,uchar a) // 逆时针逐个点亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}void nszgm(uint t,uchar a) // 逆时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P0=table3[i];delay(t);}for (i=0;i<8;i++){P1=table2[i];delay(t);}for (i=0;i<8;i++){P3=table2[i];delay(t);}for (i=0;i<8;i++){P2=table2[i];delay(t);}}}/*void zgxh1(uint t,uchar a) // 顺时针逐个点亮{for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P2=table1[i];delay(t);}for(i=0;i<8;i++){P3=table1[i];delay(t);}for(i=0;i<8;i++){P1=table1[i];delay(t);}for(i=0;i<8;i++){P0=table[i];delay(t);}}}*//*void sszgm(uint t,uchar a) // 顺时针逐个灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for (i=0;i<8;i++){P2=table3[i];delay(t);}for (i=0;i<8;i++){P3=table3[i];delay(t);}for (i=0;i<8;i++){P1=table3[i];delay(t);}for (i=0;i<8;i++){P0=table2[i];delay(t);}}}*/void djs(uint t,uchar a) //对角闪{uchar j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}}void lbzgm(uint t,uchar a)//两边逐个灭{uchar i,j;for (j=0;j<a;j++){P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}}void sztl(uint t,uchar a)//顺时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}void nztl(uint t,uchar a)//逆时逐个同步亮{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}void sztm(uint t,uchar a)//顺时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}}void nztm(uint t,uchar a)//逆时逐个同步灭{uchar i,j;for(j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}void hwzjl(uint t,uchar a) //横往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}void hwzjm(uint t,uchar a) //横往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}/*void swzjl(uint t,uchar a) //竖往中间亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table[i];P3=table1[i];delay(t);}}}void swzjm(uint t,uchar a) //竖往中间灭{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table2[i];P3=table3[i];delay(t);}}}*/void nzdl(uint t,uchar a) //逆时逐段亮{uchar i,j;for (j=0;j<a;j++){P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}void nzdgl(uint t,uchar a) //逆时逐段一个点亮{uchar i,j,k,l;for (j=0;j<a;j++){k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}void jgs(uint t,uchar a) //间隔闪{uchar j;for (j=0;j<a;j++){P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}}void main(){uchar i;while(1){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭jgs(300,10);djs(100,20); //对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20); //对角闪for(i=0;i<3;i++){zg(100,1); //两边逐个亮lbzgm(100,1); //两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(300,10); //对角闪nzdgl(300,10); //逆时逐段一个点亮jgs(300,10); //间隔闪for(i=0;i<3;i++){nszgm(100,1);}/*for(i=0;i<5;i++){zgxh1(100,1);sszgm(100,1);}*/nzdl(200,3); //逆时逐段亮jgs(50,100); //间隔闪/*///////////////////////////////////////////////////// P0=P1=P2=P3=0xff;for (i=0;i<8;i++){P0=table1[i];delay(200);}for (i=0;i<8;i++){P1=table[i];delay(200);}for(i=0;i<3;i++){P0=P1=0x00;delay(200);P0=P1=0xff;delay(200);}for (i=0;i<8;i++){P2=table1[i];delay(200);}for (i=0;i<8;i++){P3=table1[i];delay(200);}for(i=0;i<3;i++)P2=P3=0x00;delay(200);P2=P3=0xff;delay(200);}*///////////////////////////////////////////////////nzdgl(50,40); //逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}// djs(50,100); //对角闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1); //横往中间亮hwzjm(200,1); //横往中间灭}djs(300,10); //对角闪/* for(i=0;i<10;i++){swzjl(200,1); //竖往中间亮swzjm(200,1); //竖往中间灭}*/for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20); //对角闪zg(300,1);lbzgm(300,1);/*for(i=0;i<5;i++)zgxh1(100,1);sszgm(100,1);}*/for(i=0;i<5;i++){sztl(200,1); //顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1); //顺时逐个同步灭}djs(500,20); //对角闪djs(100,30); //对角闪djs(50,50); //对角闪// djs(10,100); //对角闪delay(1000);}}void delay(uint t){uint x,y;for (x=t;x>0;x--){for (y=120;y>0;y--);}}因为89C52的容量有限,所以还有几个方式注释掉了。
LED流水灯设计
LED流水灯设计流水灯(also known as running lights)是一种常见的LED灯设计,它由一系列LED灯组成,可以连续地亮起和熄灭,就像水流般流动。
流水灯设计常见于节日装饰、舞台演出和彩灯效果等场合,具有独特的美观效果。
下面将介绍流水灯的原理、设计步骤以及相关应用。
一、流水灯原理流水灯的原理基于LED灯的亮灭控制和串并联电路的设计。
LED灯的亮灭控制是通过直流电源及驱动电路实现的,而流水灯的流动效果则是通过不同的亮灭顺序实现的。
具体原理如下:1.LED灯亮灭控制:LED灯是一种直流电源下的电子元件,在正向电流的作用下,LED灯发光;而在反向电流下,LED灯熄灭。
通过控制LED灯的电流流向,可以实现其亮灭控制。
2.串并联电路:将多个LED灯连接在一起时,可以采用串联或并联的方式。
串联时,LED灯依次连接在电路中,电流在各个LED灯之间流动;并联时,LED灯同时连接在电路中,电流在各个LED灯之间分流。
流水灯设计通常采用串联电路,通过控制电流流向的方式,实现LED灯的亮灭顺序。
二、设计步骤流水灯的设计步骤包括电路设计和程序编写两个方面。
具体步骤如下:1.电路设计:首先确定流水灯的LED灯数量和排列方式,然后根据输入电压和LED灯额定电压选择适当的电阻,用于限流并防止过电流。
接下来,根据串联电路的特性,设计LED灯的串联方式和连接顺序。
最后,根据电路设计,连接LED灯和电阻。
2. 程序编写:使用相应的开发工具,编写控制LED灯亮灭顺序的程序。
程序可以通过控制IO口电平的高低实现LED灯的亮灭控制。
流水灯设计中常用的控制方式有定时控制和状态机控制。
定时控制是通过设定每个LED灯的亮灭时间来实现,例如每隔100ms亮灭一个LED灯;状态机控制是通过设置多个状态,根据当前状态判断下一个LED灯的亮灭顺序。
三、相关应用流水灯设计在日常生活和各种场合都有广泛的应用1.节日装饰:流水灯常用于节日装饰,如圣诞节、新年等,给人们带来欢乐和节日气氛。
创意流水灯实验报告(3篇)
第1篇一、实验背景随着科技的不断发展,电子技术已经渗透到我们生活的方方面面。
其中,LED流水灯作为一种新型照明产品,因其节能、环保、色彩丰富等特点,在装饰照明、广告宣传等领域得到了广泛应用。
为了深入了解LED流水灯的工作原理,提高我们的动手实践能力,我们设计并完成了一项创意流水灯实验。
二、实验目的1. 了解LED流水灯的工作原理。
2. 掌握LED流水灯的电路连接方法。
3. 通过创意设计,提高LED流水灯的观赏性和实用性。
三、实验原理LED流水灯是通过将多个LED灯珠串联或并联,通过控制电路的通断来实现流水效果的。
实验中,我们采用PWM(脉冲宽度调制)技术来控制LED灯的亮度,从而实现流水灯的动态效果。
四、实验器材1. LED灯珠:红、绿、蓝各50颗2. 马达:1台3. 电阻:若干4. 线路板:1块5. 电源:9V直流电源6. 剪刀、胶带等辅助工具五、实验步骤1. 设计电路图:根据LED灯珠的参数,设计出合适的电路图,确保电路连接正确。
2. 制作电路板:按照电路图,将LED灯珠、电阻、马达等元器件焊接在电路板上。
3. 连接电源:将电路板与9V直流电源连接,确保电路板供电正常。
4. 制作流水灯外壳:根据设计要求,制作流水灯外壳,确保内部电路布局合理。
5. 测试流水灯效果:接通电源,观察LED灯珠的流水效果,检查电路是否正常工作。
6. 优化设计:根据实验效果,对流水灯的设计进行优化,提高观赏性和实用性。
六、实验结果与分析1. 实验结果:经过多次测试,我们成功制作出了一款具有流水效果的LED流水灯。
在实验过程中,LED灯珠的流水效果稳定,颜色鲜艳,马达运行正常。
2. 结果分析:通过本次实验,我们掌握了LED流水灯的工作原理和电路连接方法。
在实验过程中,我们了解到PWM技术在控制LED灯亮度方面的应用,以及马达在流水灯中的驱动作用。
3. 优化建议:为了提高流水灯的观赏性和实用性,我们可以在以下几个方面进行优化:(1)增加LED灯珠的种类和数量,丰富流水灯的色彩效果。
LED流水灯说明书
LED流水灯产品说明书摘要近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化核心部件。
而AT89C51就是其中一种,它是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供一种灵活性高且廉价的方案。
本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。
能够通过按键控制8个LED灯从上到下依次点亮。
关键字:单片机、LED流水灯实验内容设计任务与要求设计任务:在AT89C51开发板上实现8个LED“流水”现象即8只LED左右来回点亮,并通过编写程序控制流水现象。
要求:点亮第一个流水灯,然后熄灭,接着点亮第二个流水灯,熄灭,点亮第三个,到最后点亮第八个,熄灭;点亮第七个灯,依次到第一个灯,然后循环实现流水。
1、程序先在Keil uVision编译器中输入下列程序:#include <reg51.h>void Delay1ms(unsigned int count)//延时子程序{unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}main() //主程序{unsigned char LEDIndex = 0;bit LEDDirection = 1;while(1){if(LEDDirection)P2 = ~(0x01<<LEDIndex);elseP2 = ~(0x80>>LEDIndex);if(LEDIndex==7)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%8;Delay1ms(200);}}然后将上述程序编译生成目标文件LED.hex2、需要用到的元件名称元件种类(Category)子种类(Sub-category)单片机AT89C51 Microprocessor ICs 8051 Family按钮开关BUTTON Switches & Relays Switches电容器CAP Capacitors Generic电解电容器CAP-ELEC Capacitors Generic电阻器RES Resistors Generic发光二极管LED-RED Optoelectronics LEDs晶振CRYSTAL Miscellaneous3、绘制流水灯接线图4、选用AT89C51的引脚功能XTAL1:单芯片系统时钟的反向放大器输入端。
心形流水灯报告
心形流水灯报告引言心形流水灯是一种独特的装饰灯,其形状呈现为一个心形,且灯光呈现流水般效果。
心形流水灯广泛应用于情人节、婚礼、生日派对等场合,成为一种浪漫且温馨的装饰方式。
本报告将介绍心形流水灯的设计原理、制作方法和一般使用情况,并提供一些建议和注意事项。
设计原理心形流水灯的核心组成部分包括LED灯珠、心形灯板、控制电路和电源。
其工作原理是通过控制电路将电源的电能转化为LED灯珠的光能,然后通过心形灯板的特殊设计,使灯光呈现出流水效果。
制作方法以下是制作心形流水灯的一般步骤:1.准备材料和工具–LED灯珠(多达数十颗)–心形灯板–控制电路(例如Arduino)–电源线和插头–电焊工具–导线–热熔胶枪2.连接LED灯珠–使用导线将LED灯珠连接到控制电路上,确保正确极性和正常电路连接。
3.连接控制电路和电源–将控制电路和电源连接起来,注意正确的极性和电压要求。
4.安装心形灯板–将心形灯板安装在适当的位置上,确保灯珠布置整齐,并由热熔胶固定灯珠和电线。
5.测试与调试–接通电源,检查心形流水灯是否正常工作,如有异常,可通过调整控制电路或检查连线来解决问题。
6.包装和完成–可以根据需要制作灯罩或装饰外壳,以增加装饰效果和保护灯具。
使用情况心形流水灯适合用于以下情况和场合:1.情人节装饰–心形流水灯作为情人节的装饰品,能够创造出浪漫的氛围,为情侣们营造出甜蜜而温馨的氛围。
2.婚礼装饰–在婚礼现场悬挂或摆放心形流水灯,能够给婚礼增添浪漫和喜庆的氛围。
3.生日派对装饰–在生日派对上使用心形流水灯,可以为寿星带来惊喜和祝福,同时也能增加派对的欢乐氛围。
4.居家装饰–安装一个心形流水灯在家中的角落,可以增加居家生活的乐趣和温馨感。
建议和注意事项在制作和使用心形流水灯时,需要注意以下事项:1.安全第一–在制作和使用心形流水灯时,务必注意安全,避免电路短路、漏电等安全问题。
2.选择合适的材料和工具–使用高质量的LED灯珠、适用的心形灯板和控制电路,以确保心形流水灯的效果和耐用性。
LED点阵心形流水灯单片机设计
河南理工大学开放实验室单片机设计报LED点阵心形流水灯礼品目录0 前言 (1)1系统组成与功能 (1)1.1 系统组成 (1)1.1.1 AT89C51单片机 (1)1.1.2 16乘16点阵 (2)1.2 系统功能 (3)2系统原理 (3)2.1系统仿真图 (3)2.2 实物照片 (4)3程序流程图 (6)4程序代码 (7)5结论 (14)参考文献 (14)基于单片机控制心形流水灯跟点阵0 前言随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。
比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。
本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。
这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。
由于时间紧迫,做的有些仓促,望原谅。
1系统组成与功能1.1 系统组成本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。
1.1.1 AT89C51单片机AT89S51具有如下特点:40个引脚,8kBytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可图1-1 A T89C51引脚图为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
引脚图如图1-1所示。
管脚说明1RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
花样流水灯说明书
湄洲湾职业技术学院花样流水灯说明书系别:自动化工程系年级:10级专业:电气自动化姓名:小淋学号:********** 导师姓名:梁锋职称:讲师2013年 5 月 28 日目录1前言 (1)2 系统设计技术参数要求 (2)3系统设计 (3)3.1系统设计总体框图 (3)3.2各模块原理说明 (4)3.3系统总原理图说明..................................... 错误!未定义书签。
3.4操作说明 (5)3.5系统操作注意事项 (5)参考文献 (6)致谢语.. (7)附录 (8)附录1系统总原理图 (8)附录2元件清单 (9)附录3主程序源代码如下 (9)附录4 PCB图 (13)1、前言随着电子技术的迅速发展,单片机得到了越来越多的应用。
本设计用单片机AT89S52结合LED(发光二极管)制作了一个广告移动彩灯,它由一块AT89C52组成,通过逐次扫描其中一块的P2.0--P2.7口,从而依次实现彩灯轮流点亮、逐点点亮、间隔点亮。
城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。
利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说智能控制与自动控制的核心即使单片机。
单片机的最明显的优势,就是想入到各种仪器设备中。
本课程是利用 AT89C52 单片机的自动控制功能,并结合其它电子元器件以及软件实现的流水灯,实现不同种类的流水现象。
本设计用 AT89C52单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。
该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。
2、系统设计技术参数要求(1)设计一个基于单片机的花样彩灯;(2)在设计过程中,选择1~2个单元电路使用仿真软件(例如Proteus等)进行仿真调试;(3)用计算机绘制所有的电路图。
流水灯---LED点阵艺术
流水灯————LED点阵艺术组别:______A-14______组员: ___刘洁敏_________黎芷晴 ________李宝如_______摘要电子技术的快速发展尤其是数字技术的突飞猛进,多功能流水灯凭着简易,高效,稳定等特点得到普遍的应用。
在各种娱乐场所、店铺门面装饰、家居装潢、城市墙壁更是随处可见,与此同时,还有一些城市采用不同的流水灯打造属于自己的城市文明,塑造自己的城市魅力。
目前,多功能流水灯的种类已有数十种,如家居装饰灯、店铺招牌灯等等。
所以,多功能流水灯的设计具有相当的代表性。
目录目录1.系统总方案设定 (4)1.1系统总体硬件方案选择............................................................. .... .. (4)1. 1.1LED发光显示二级管 (4)1.2 系统总体软件方案选择............................................................. (4)1.2.1 单片机编程语言.................................................................... . (5)1.3 主要元器件介绍........................................................................... . (5)1.3.1 ST89C52的介绍........................................................ .. (5)2.系统硬件方案设定........................................................ ................ ................ (5)2.1 硬件整体设计概述及功能分析 (5)2.1.1系列单片机简介.......................................................................... . (5)2.2.LED点阵的制作........................ ....................... .. (6)2.2.1 3D LED点阵的焊接....................................... . (6)3.系统软件方案设定............................................ ....................... . (6)3.1点阵源代码............................................. ....................... . (6)1.系统总方案设定1.1. 1 LED发光显示二级管压器稳压输出作为工作电压。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LED花样流水灯发布时间:2005-01-12 7:00:36 原文作者:殷建彬—Keil和Proteus结合实例之一笔者在2004年在本刊的第10期发表了《Keil和Proteus整合》一文,有不少的读者朋友不知道如何使用Proteus软件,其实笔者也正在探索这个软件的使用方法。
笔者发现它的功能非常强大,使用方法也比较有特色,如果自己摸索的话,要花费好长时间才行,为了帮助大家快速的学会使用这个软件,笔者把自己的使用体会整理出来,供读者朋友们参考。
在介绍一种软件的使用方法的时候,笔者觉得利用实例是比较快地办法。
现向读者朋友介绍LED花样流水灯的电路设计、程序设计等。
通过学习这个实例,读者朋友就可以利用Proteus设计简单的电路以及怎么样结合Keil进行调试了。
一、ISIS界面介绍假设你已经安装好了Proteus和Keil这两个软件。
笔者安装的是Proteus 6 Demonstration版本。
鼠标点击“开始”,点击“程序”,找到“Proteus 6 Demonstration”程序,在出现的菜单里点击“ISIS 6 Demo”,如图1所示,启动ISIS。
启动成功的界面如图2所示。
先向大家介绍一下这个界面的情况。
整个屏幕被分成七个区域。
最上面是菜单栏,下面接着是工具栏,再下面就是工具箱;右边很大的区域是编辑窗口,编辑窗口显示你正在编辑的电路原理图;左上方是预览窗口,预览窗口通常显示整个电路图的缩略图。
预览窗口的蓝色框标示出了图的边框,同时窗口上的绿色框标出在编辑窗口的中显示的区域。
在预览窗口上点击鼠标左键,将会以点击位置为中心刷新编辑窗口;在左下方是对象选择器,对象选择器根据由图标决定的当前状态显示不同的内容。
显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形等。
在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。
通过该窗体可以选择元件并置入元器件选择器,在今后绘图时使用;工具箱有三部分组成;左边的最下方是元器件旋转工具,有四个按钮,分别是顺时针旋转、逆时针旋转、竖直方向旋转、水平方向旋转;旋转工具的右侧是调试时候的快捷工具按钮。
二、电路设计下面详细介绍怎么样用ISIS设计电路图的。
笔者用ISIS设计的电路图如图3所示。
电路的核心是单片机AT89C52,C1、C2和晶振X1构成典型的单片机上电复位电路;八个发光二极管负极接到单片机的P2口,二极管的正极经限流电阻接到电源的正极,这样的话,当单片机是低电平时,点亮发光二极管,单片机是高电平的时候,发光二极管熄灭。
四个按键一端接到单片机的P3.2、P3.3、P3.4、P3.5脚,另一端接地,当按下按键时相应的单片机I/O口就接到了低电平。
元器件的添加和放置点击ISIS元器件选择器左边中间的按钮,出现Pick Devices对话框,如图4所示。
在这个对话框里我们选择元器件。
在Category(器件种类)下面我们找到“Micoprocessor IC”选项,鼠标左键点击一下,在对话框的右侧,我们会发现这里有大量的常见的各种型号的单片机。
这里我们选择“AT89C52”,情形如图4所示。
在图4的右上方出现了AT89C52的SCH的图样,在下面出现了它的PCB的图样,这意味着我们在ISIS设计好原理图(SCH)后,还可以在Proteus的ARES里设计印版图(PCB)。
这样在左边的元器件选择器就有了AT89C52这个元件了。
点击一下这个元件,然后把鼠标指针移到右边的原理图编辑区的适当位置,点击鼠标的左键,这时就把AT89C52器件放到了原理图区。
下面我们把需要的另外的器件找到并添加到元器件选择器下。
在Resistors选项找到RES(电阻);在Capacitors选项找到CAP(电容);在Miscellaneous选项找到CRYSTAL(晶振);在Switches&Relays 选项找到BUTTON(按键);在Operational Amplifiers选项找到LED(发光二极管),在这里有各种颜色的二极管可以选择的。
其实如果你知道元器件的名称,也可以在Pick Devices对话框的左上方Keywords 的下面输入你么添加的元器件名字,就会自动的找到器件所在的地方。
如图5是我输入AT89C52出现的情形。
接着我们把需要的元器件添加到原理图设计区,方法同放置AT89C52一样。
放置电源及接地符号点击工具箱的接线端按钮,在器件选择器里点击GROUND,鼠标移到原理图编辑区,左键点击一下即可放置接地符号;类似地把电源符号POEWE也可以放到原理图编辑区。
电路图的放大和缩小在原理图编辑区,如果想放大电路图可以连续的按F6(连续按会不断放大直到最大),按F7键可以缩小电路图(类似的连续按,会不断缩小直到最小),这两种情况无论哪种都会使显示以当前鼠标位置为中心重新显示。
当然,你也可以点击工具栏的放大按钮和缩小按钮。
按F8键可以把一整张图缩放到完全显出来,也可以点击工具栏的按钮。
图的大小可以通过View菜单的Zoom 命令或者是上述的功能键控制。
无论何时你都可以使用功能键控制缩放,即便是在滚动和拖放元器件时。
另外,按着SHIFT键,同时在一个特定的区域用鼠标左键拖一个框,则框内的部分就会被放大,这个框可以是在编辑窗口内拖,也可以是在预览窗口内拖。
如果你的鼠标有滚动轮话,也可以通过拨动滚动轮来放大或者缩小电路图的。
元器件的编辑我们在设计电路图的时候,要不断的调整元器件的位置和朝向以及改变元器件的属性。
下面笔者把这些操作简单介绍一下。
★选中元器件用鼠标指向元器件并点击右键可以选中该元器件。
该操作选中元器件并使其高亮显示,然后可以进行编辑。
选中元器件时该元器件上的所有连线同时被选中。
要选中一组元器件,可以通过依次在每个元器件右击选中每个元器件的方式。
也可以通过右键拖出一个选择框的方式,但只有完全位于选择框内的元器件才可以被选中。
在空白处点击鼠标右键可以取消所有元器件的选择。
★删除元器件用鼠标指向选中的元器件并点击右键可以删除该元器件,同时删除该元器件的所有连线。
★拖动元器件用鼠标指向选中的元器件并用左键拖曳可以拖动该元器件。
该方式不仅对整个元器件有效,而且对元器件中单独的标签也有效。
如果Wire Auto Router功能被使能的话,被拖动元器件上所有的连线将会重新排布。
这将花费一定的时间(10秒左右),尤其在元器件有很多连线的情况下,这时鼠标指针将显示为一个沙漏。
如果你误拖动一个元器件,所有的连线都变成了一团糟,你可以使用Undo命令撤消操作恢复原来的状态。
★拖动元器件的标签许多类型的元器件有一个或多个属性标签附着。
例如,每个元件有一个“reference”标签和一个“value”标签。
可以很容易地移动这些标签使你的电路图看起来更美观。
移动标签的步骤如下:首先点击右键选中元器件,然后用鼠标指向标签,按下鼠标左键。
一直按着左键就可以拖动标签到你需要的位置,释放鼠标即可。
★调整元器件的朝向许多类型的对象可以调整朝向为0 , 90 , 270 ,360 或通过x轴y轴镜象。
当该类型对象被选中后,“旋转工具按钮”图标会从蓝色变为红色,然后就可以来改变对象的朝向。
调整对象朝向的步骤是:首先点击右键选中对象,然后根据你的要求用鼠标左键点击旋转工具的四个按钮。
毫无疑问当旋转工具按钮图标是红色时,操作他们将会改变某个对象,即便你当前没有看到它,实际上,这种颜色的指示在你想对将要放置的新对象操作时是格外有用的。
当图标是红色时,首先取消对象的选择,此时图标会变成蓝色,说明现在可以“安全”调整新对象了。
★编辑元器件的属性元器件一般具有图形或文本属性,这些属性可以通过一个对话框进行编辑编辑单个对象的步骤是:先鼠标右键点击选中元器件,然后用鼠标左键点击元器件,此时出现属性编辑对话框。
也可以点击工具箱的按钮,再点击元器件。
图6是电容的编辑对话框,这里你可以改变电容的标号和它的电容值以及是否把这些东西隐藏(默认的是显示)等。
画线你一定发现没有画线的图标按钮吧!这是因为ISIS的智能化足以在你想要画线的时候进行自动检测,这就省去了选择画线模式的麻烦。
★在两个对象间连线鼠标的箭头靠近一个元器件的连接点,这个时候会跟着鼠标的箭头出现一个“×”号,鼠标左键点击元器件的连接点,移动鼠标(不需要一直按着左键的)这个时候就出现了粉红色的连接线。
如果你想让ISIS自动定出走线路径,只需左击另一个连接点。
另一方面,如果你想自己决定走线路径,只需在想要拐点处点击鼠标左键即可。
注意,一个连接点可以精确的连到一根线。
在元件和终端的管脚末端都有连接点。
一个圆点从中心出发有四个连接点,可以连四根线。
由于一般都希望能连接到现有的线上,ISIS也将线视作连续的连接点。
此外,一个连接点意味着三根线汇于一点,ISIS提供了一个圆节点,避免由于错漏点而引起的混乱。
在此过程的任何一个阶段,你都可以按ESC或者点击鼠标的右键来放弃画线。
★线路自动路径器线路自动路径器(英文是Wire Auto Router简称WAR)为你省去了必须标明每根线具体路径的麻烦。
该功能默认是打开的。
如果你只是在两个连接点左击,WAR将选择一个合适的线径。
但如果你点了一个连接点,然后点一个或几个非连接点的位置,ISIS将认为你在手工定线的路径,将会让你点击线的路径的每个角。
路径是通过左击另一个连接点来完成的。
WAR可通过使用工具菜单里的WAR命令按钮来关闭,也可以在菜单栏的Tools找到这个图标的。
这个功能在你想在两个连接点间直接定出对角线时是很有用的。
★画总线利用总线方式可以节省我们画线的时间,并且画出的电路图简洁、美观、清晰。
点击工具箱的总线按钮,即可在编辑窗口画总线。
注意,画的时候是粉红色的线,点击右键退出画线状态,此时粉红色的线变成了较粗的蓝色的线。
接着我们点击工具箱的按钮画总线的分支线用来连接总线和元器件的管脚。
我们还需要给分支线起个名字,笔者称为总线标号。
右键点击分支线选中它,接着左键点击选中的分支线就会出现分支线编辑对话框(Edit Wire Label)如图7所示。
我们在Label标签下的String 右边填上起的总线标号的符号。
三、程序设计在这里笔者用汇编设计了一个简单的程序,功能如下:按下按键K1时,八个发光二极管从LED1到LED8开始轮流发光,有向下流动的效果。
当按下按键K2时发光二极管停止发光。
在二极管流动发光的情况下按下按键K3,发光二极管会向下流动;按下按键K4发光二极管将向上流动。
程序主要有按键检测子程序、按键处理子程序、流动发光子程序等组成。
程序清单; 定义几个变量。
UpDown BIT 00H ;上下行标志。
StartEnd BIT 01H ;起动及停止标志。