心形流水灯
心形流水灯套件实训报告
一、实训目的1. 熟悉心形流水灯套件的基本组成和功能。
2. 掌握心形流水灯套件的组装和调试方法。
3. 提高学生的动手能力和创新思维。
4. 培养学生的团队协作精神和实践能力。
二、实训内容1. 心形流水灯套件的基本组成心形流水灯套件主要由以下几部分组成:(1)LED灯:共18个红色LED灯,分为3组,排列成心形图案。
(2)电阻:18个限流电阻,用于限制LED灯的电流。
(3)三极管:3个三极管,用于驱动LED灯。
(4)电容:1个电容,用于存储电荷。
(5)电源:一个可充电电池,为电路提供电源。
(6)连接线:用于连接各个元件。
2. 心形流水灯套件的组装与调试(1)组装步骤:1)首先,将电源的正极和负极分别连接到电路板上的电源输入端。
2)接着,将18个限流电阻分别连接到18个LED灯的正极和电路板上的LED输入端。
3)将3个三极管的集电极分别连接到3个LED灯的负极,并将3个三极管的发射极连接到电路板上的三极管输入端。
4)将电容的一端连接到电路板上的电容输入端,另一端连接到电路板上的地线。
5)最后,将连接线连接好,确保各个元件的连接正确。
(2)调试步骤:1)打开电源,观察LED灯是否正常点亮。
2)调整电容的容量,观察LED灯的闪烁频率是否发生变化。
3)调整电源的电压,观察LED灯的亮度是否发生变化。
4)观察LED灯的闪烁图案是否为心形。
三、实训过程1. 组装过程按照组装步骤,我们将各个元件连接到电路板上。
在连接过程中,要注意以下几点:(1)确保各个元件的连接正确,避免出现短路或断路现象。
(2)连接线要牢固,避免在使用过程中脱落。
(3)在连接过程中,要小心操作,避免损坏元件。
2. 调试过程在组装完成后,我们打开电源,观察LED灯是否正常点亮。
经过调整电容的容量和电源的电压,我们发现LED灯的闪烁频率和亮度均符合要求,且闪烁图案为心形。
四、实训总结1. 通过本次实训,我们掌握了心形流水灯套件的基本组成和功能,了解了各个元件的作用。
心形花样流水灯设计报告
心形花样流水灯设计报告
心形花样流水灯设计报告
心形花样流水灯是现有流水灯的一种经典改良版本,它采用16个灯作为原形,在跟随律动改变时,灯会形成一个心形的图案,从而形成艳丽夺目的画面。
该设计把流水灯的动感与闪烁的灯光有机地结合起来,带给观众一个难忘的视觉体验。
心形花样流水灯的实现原理主要基于按使灯在每个节点切换时都可以获取正确的额外信号,然后根据信号来控制灯的状态,从而实现每颗灯在固定节点可以达到设定的图案效果。
实现心形花样流水灯首先需要准备好必要的硬件,如灯、电源、封装等。
其中,灯是实现该图案花样的关键元素,合适的灯应该选择一直亮的灯,最好是采用柱面形状的灯放置;电源属于复杂的功能元件,而电源的输出功率是有限的,因此要选择规范型号的电源;灯装接容器也是必不可少的,以尽可能减少容器内部电阻增加此设计系统电源负载。
安装完必要的硬件之后,就可以编写控制程序实现心形花样的设计。
首先,程序需要实现的功能应该包括定时停档、定时启动、控制灯泡亮度等,这是该系统实现的最基本的功能,其次,控制程序设计的关键是要编写一段循环程序,使在每一节点可以实现按照心形花样拍摄计划设定的图案,最后,实现定时调节,达到改变速度以及心形持续不断等效果。
通过以上步骤,就可以实现心形花样流水灯的设计制作,从而实现不同场合的美观效果,更好的吸引更多的注意力,从而取得全新的效果。
心形流水灯安装教程
• 我们这里主要介绍的是本套件种所用到的电解电容
电解电容
100UF
3
-+
区分电解电容的极性
根据正接时漏电流小(阻值大),反 接时漏电流大来判断。
+
-
长+ 短-
• 3.二极管
发光二极管
Φ3红 Φ3绿 Φ3黄
6
D1,4,7,10,13,16
D2,5,
6
8,11,14,17
D3,7,
许误差,各种颜色所对应的数值见表 B303。固定电阻器色环标志读数识别规 则如下图所示。
• 2.电容
• 2.1 简介
• 电容(Capacitance)亦称作“电容量”,是指在给定电位差下的电荷储藏量,
记为C,国际单位是法拉(F)。一般来说,电荷在电场中会受力而移动,当 导体之间有了介质,则阻碍了电荷移动而使得电荷累积在导体上,造成电荷 的累积储存,储存的电荷量则称为电容。因电容是电子设备中大量使用的电 子元件之一,所以广泛应用于隔直、耦合、旁路、滤波、调谐回路、能量转 换、控制电路等方面。
6
9,12,15,18
长管脚一端
为正极
• 4.三极管
• 引脚排列:从左至右依次为1、2、3脚 • 1脚:发射极; 2脚:基极; 3脚:集电极
• 9013是一种最常用的普通NPN三极管, • 它是一种低电压,பைடு நூலகம்电流,小信号的NPN型 • 硅三极管特性
· 集电极电流Ic:Max 500mA · 集电极-基极电压Vcbo:40V · 工作温度:-55℃ to +150℃ · 和9012(PNP)相对 · 主要用途: 开关应用 射频放大
封装:
• 9013常见有TO-92插件封装及SOT-23贴片封装 • 9013插件封装及引脚排列
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单片机。
心形流水灯设计原理
心形流水灯设计原理
心形流水灯是一款综合多彩灯带、音乐控制灯、延时功能的智能装饰灯,它可以极具艺术美感地装点房间室外空间。
心形流水灯使用LED灯珠、电子电路技术和音乐控制技术,聚合在一起,它能够根据用户的设置,实现彩色变化、渐变变色及跟随音乐的节奏律动等功能,给人以多彩的视觉感受。
心形流水灯的原理如下:首先,根据控制要求,通过控制电路板连接相应的灯具,实现对各个灯具的控制,如果要实现彩色变化、渐变变色及跟随音乐的节奏律动,则需要将控制电路板和电脑软件结合起来使用。
其次,音乐控制灯需要使用麦克风来监听音乐信号,并将其转换为指令发送给控制电路板,以便实现跟随音乐的节奏律动等功能。
最后,控制器会根据音乐的节奏和动作,生成控制信号,通过控制电路板驱动灯具随着音乐变化,实现多彩变化的效果。
心形流水灯小巧、环保、安全,可替代传统电源装饰灯,具有节能减排的保护环境的效果。
它不仅可以满足各种变彩诉求,而且可以随着音乐节奏变化,增强视觉冲击力。
它还可以延时,可以让观看者们享受到舒服而持久的光线,让我们的生活更加温馨舒适!。
心形流水灯设计报告
山东英才学院51单片机课程设计心形流水灯学院信息工程学院专业班级本科电子信息工程学生姓名指导教师2019年04月02日设计要求:o设计一个用单片机控制的心形流水灯系统;o LED灯数量为32个;o可以实现循环点亮、依次熄灭的基本功能;o可以实现对角闪亮、间隔闪亮、顺时针闪亮、逆时针闪亮等多种功能(也可自行增加功能)。
学生需要完成的任务:完成心形流水灯电路设计,利用Keil软件编写程序,Proteus软件进行电路功能仿真,并将仿真结果采用录屏形式生成视频,视频类型建议用.mp4格式,大小不超过200M。
目录目录 (3)一、总体方案设计 ................................................................................................................. - 4 -1、单片机的选择 ........................................................................................................... - 4 -2、LED灯控制方式的比较与选择 ................................................................................ - 4 -3、硬件设计 ................................................................................................................... - 4 -二、电路原理图设计 ............................................................................................................. - 5 -1、时钟电路 ................................................................................................................... - 5 -2、复位电路 ................................................................................................................... - 5 -3、显示电路 ................................................................................................................... - 6 -4、电源电路 ................................................................................................................... - 7 -三、程序设计 ......................................................................................................................... - 9 -1、Keil 软件介绍 ........................................................................................................... - 9 -2、程序编写设计 ........................................................................................................... - 9 -3、程序调试 .................................................................................................................- 10 -4、电路功能仿真 .........................................................................................................- 11 - 附件: ...................................................................................................................................- 13 -1、程序代码: .............................................................................................................- 13 -2、小组成员任务分配表 .............................................................................................- 19 -时钟电路复位电路图1-3.1电 源一、总体方案设计1、单片机的选择单片机作为该电路的主要控制器芯片,是整个系统核心部分,主要负责控制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灯的控制技术,提高电子制作能力,同时培养创新意识和团队协作精神。
二、实训目标1. 熟悉LED灯的工作原理和驱动方法。
2. 掌握单片机编程技术,实现LED灯的控制。
3. 设计并制作爱心花样流水灯,使其具有动态效果。
4. 提高动手能力和问题解决能力。
三、实训内容1. 方案设计本次实训采用51单片机作为控制核心,通过编程控制LED灯的亮灭,实现爱心花样的动态效果。
具体方案如下:(1)选用红色LED灯作为显示单元,以形成爱心图案。
(2)采用定时器中断技术,实现LED灯的动态闪烁。
(3)设计程序,实现爱心图案的循环显示。
2. 电路设计根据方案设计,绘制电路原理图,主要包括以下部分:(1)单片机最小系统:包括晶振、复位电路、电源电路等。
(2)LED驱动电路:将单片机的输出信号转换为适合LED灯的驱动信号。
(3)显示电路:将LED灯按照爱心图案进行排列。
3. 程序设计利用C语言编写程序,实现以下功能:(1)初始化定时器,设置中断频率。
(2)编写中断服务程序,控制LED灯的亮灭。
(3)设计爱心图案的显示程序,实现循环显示效果。
4. 实物制作根据电路原理图,焊接电路板,安装LED灯,连接电源,调试程序。
四、实训过程1. 电路焊接按照电路原理图,将单片机、LED灯、电阻等元器件焊接在电路板上。
2. 程序编写利用Keil软件编写程序,通过串口下载到单片机中。
3. 调试通过观察LED灯的显示效果,检查程序是否存在错误。
如有问题,修改程序并重新下载。
4. 优化根据实际情况,对程序进行优化,提高显示效果。
五、实训成果通过本次实训,成功制作了一款爱心花样流水灯。
该流水灯具有以下特点:1. 色彩鲜艳,动态效果明显。
2. 控制简单,易于操作。
心形流水灯设计报告
山东英才学院51单片机课程设计心形流水灯学院信息工程学院专业班级本科电子信息工程学生姓名指导教师2019年04月02日设计要求:o设计一个用单片机控制的心形流水灯系统;o LED灯数量为32个;o可以实现循环点亮、依次熄灭的基本功能;o可以实现对角闪亮、间隔闪亮、顺时针闪亮、逆时针闪亮等多种功能(也可自行增加功能)。
学生需要完成的任务:完成心形流水灯电路设计,利用Keil软件编写程序,Proteus软件进行电路功能仿真,并将仿真结果采用录屏形式生成视频,视频类型建议用.mp4格式,大小不超过200M。
目录目录 (3)一、总体方案设计 ................................................................................................................. - 4 -1、单片机的选择 ........................................................................................................... - 4 -2、LED灯控制方式的比较与选择 ................................................................................ - 4 -3、硬件设计 ................................................................................................................... - 4 -二、电路原理图设计 ............................................................................................................. - 5 -1、时钟电路 ................................................................................................................... - 5 -2、复位电路 ................................................................................................................... - 5 -3、显示电路 ................................................................................................................... - 6 -4、电源电路 ................................................................................................................... - 7 -三、程序设计 ......................................................................................................................... - 9 -1、Keil 软件介绍 ........................................................................................................... - 9 -2、程序编写设计 ........................................................................................................... - 9 -3、程序调试 .................................................................................................................- 10 -4、电路功能仿真 .........................................................................................................- 11 - 附件: ...................................................................................................................................- 13 -1、程序代码: .............................................................................................................- 13 -2、小组成员任务分配表 .............................................................................................- 19 -时钟电路复位电路图1-3.1电 源一、总体方案设计1、单片机的选择单片机作为该电路的主要控制器芯片,是整个系统核心部分,主要负责控制LED 灯的亮灭变化的速度以及变化效果。
心形流水灯报告
心形流水灯报告引言心形流水灯是一种独特的装饰灯,其形状呈现为一个心形,且灯光呈现流水般效果。
心形流水灯广泛应用于情人节、婚礼、生日派对等场合,成为一种浪漫且温馨的装饰方式。
本报告将介绍心形流水灯的设计原理、制作方法和一般使用情况,并提供一些建议和注意事项。
设计原理心形流水灯的核心组成部分包括LED灯珠、心形灯板、控制电路和电源。
其工作原理是通过控制电路将电源的电能转化为LED灯珠的光能,然后通过心形灯板的特殊设计,使灯光呈现出流水效果。
制作方法以下是制作心形流水灯的一般步骤:1.准备材料和工具–LED灯珠(多达数十颗)–心形灯板–控制电路(例如Arduino)–电源线和插头–电焊工具–导线–热熔胶枪2.连接LED灯珠–使用导线将LED灯珠连接到控制电路上,确保正确极性和正常电路连接。
3.连接控制电路和电源–将控制电路和电源连接起来,注意正确的极性和电压要求。
4.安装心形灯板–将心形灯板安装在适当的位置上,确保灯珠布置整齐,并由热熔胶固定灯珠和电线。
5.测试与调试–接通电源,检查心形流水灯是否正常工作,如有异常,可通过调整控制电路或检查连线来解决问题。
6.包装和完成–可以根据需要制作灯罩或装饰外壳,以增加装饰效果和保护灯具。
使用情况心形流水灯适合用于以下情况和场合:1.情人节装饰–心形流水灯作为情人节的装饰品,能够创造出浪漫的氛围,为情侣们营造出甜蜜而温馨的氛围。
2.婚礼装饰–在婚礼现场悬挂或摆放心形流水灯,能够给婚礼增添浪漫和喜庆的氛围。
3.生日派对装饰–在生日派对上使用心形流水灯,可以为寿星带来惊喜和祝福,同时也能增加派对的欢乐氛围。
4.居家装饰–安装一个心形流水灯在家中的角落,可以增加居家生活的乐趣和温馨感。
建议和注意事项在制作和使用心形流水灯时,需要注意以下事项:1.安全第一–在制作和使用心形流水灯时,务必注意安全,避免电路短路、漏电等安全问题。
2.选择合适的材料和工具–使用高质量的LED灯珠、适用的心形灯板和控制电路,以确保心形流水灯的效果和耐用性。
心形流水灯实验报告
心形流水灯实验报告【数字电路课程设计】非遥控音乐桃心闪灯实验报告学院:物理电气信息学院专业:通信(1)班姓名:刘发虎学号:12011244070指导老师:王国金一.实验目的:1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2学习和掌握单片机的基本知识。
3.培养实践技能,提高分析和解决实际问题的能力。
二.实验器材:品名型号数量元件符号单片机 MCU8051 1 U1电容 30pf 2 C1 C210uf 1 C3100uf 1 C4电阻 1K 30 R1 R2 R3 R4...R28 R29 R30 10K 1 R313.6K 1 R32晶振 12M 1 Y0电源 5 1 VCC三级管8550 1 Q18050 1 Q2开关 2 RESET喇叭 1 SPKLED灯 6mm 30 p1 p2p p3...p28 p29p p30 三.单片机MCU8051主要功能;8位CPU·4kbytes 程序存储器(ROM) (52为8K)·256bytes的数据存储器(RAM) (52有384bytes的RAM)·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)·一个全双工串行通信口如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.30口的其他29个LED的点亮和熄灭的方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED30依次点亮、熄灭,30只LED灯便会一亮一暗的做流水灯了。
同样的道理,可以30个灯左移点亮,全亮、全灭。
在此还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果了。
心形流水灯的实验报告
心形流水灯的实验报告心形流水灯的实验报告一、引言心形流水灯是一种具有艺术性和创意性的灯光装饰,它通过流动的灯光呈现出一个心形的图案。
本实验旨在探索心形流水灯的制作原理和工作原理,并通过实际搭建一个心形流水灯来验证理论。
二、实验材料和方法1. 实验材料:- Arduino开发板- LED灯珠- 面包板- 连接线- 电阻- 电池或电源2. 实验方法:- 将Arduino开发板与面包板连接,并将LED灯珠插入面包板上。
- 根据电路图连接电路,包括电阻和电源的连接。
- 编写Arduino程序,控制LED灯珠按照心形图案流动。
三、实验过程1. 搭建电路根据电路图,将Arduino开发板与面包板连接,并将LED灯珠插入面包板上。
根据需要,可以选择不同颜色的LED灯珠,以增加艺术效果。
2. 连接电路根据电路图连接电路。
首先,将Arduino开发板的数字引脚与面包板上的LED灯珠连接,以控制灯珠的亮灭。
然后,将电阻连接到面包板上的LED灯珠,以限制电流。
最后,将电源连接到电路上,为LED灯珠提供电力。
3. 编写Arduino程序使用Arduino编程软件,编写程序以控制LED灯珠按照心形图案流动。
可以使用Arduino的编程语言,通过控制数字引脚的高低电平来控制LED灯珠的亮灭。
通过循环和延时函数,可以实现LED灯珠按照一定的频率和顺序流动,形成心形图案。
四、实验结果经过实验,我们成功搭建了一个心形流水灯,并通过Arduino程序控制LED灯珠按照心形图案流动。
当灯珠流动时,形成一个明亮的心形图案,给人一种浪漫和温馨的感觉。
五、实验分析心形流水灯的制作原理是通过控制LED灯珠的亮灭和流动顺序,形成一个心形图案。
通过Arduino开发板和编程软件,我们可以方便地控制LED灯珠的亮灭和流动,实现心形流水灯的效果。
在实验过程中,我们还可以对实验进行一些改进和扩展。
例如,可以增加更多LED灯珠,以增加心形图案的亮度和效果。
【VIP专享】心形流水灯实验报告
【数字电路课程设计】非遥控音乐桃心闪灯实验报告学院:物理电气信息学院专业:通信(1)班姓名:刘发虎学号:12011244070指导老师:王国金一.实验目的:1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2学习和掌握单片机的基本知识。
3.培养实践技能,提高分析和解决实际问题的能力。
二.实验器材:品名型号数量元件符号单片机 MCU80511U1电容 30pf2C1 C210uf1C3100uf1C4电阻 1K30R1 R2 R3 R4...R28 R29 R30 10K1R313.6K1R32晶振 12M1Y0电源51VCC三级管85501Q180501Q2开关2RESET喇叭1SPKLED灯 6mm30p1 p2p p3...p28 p29p p30三.单片机MCU8051主要功能;8位CPU·4kbytes 程序存储器(ROM) (52为8K)·256bytes的数据存储器(RAM) (52有384bytes的RAM)·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)·一个全双工串行通信口·外部数据存储器寻址空间为64kB·外部程序存储器寻址空间为64kB·逻辑操作位寻址功能·双列直插40PinDIP封装·单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
十八路心形流水灯设计报告
十八路心形流水灯——设计报告目录一、摘要 ................................................................ 错误!未定义书签。
二、设计目的和作用 ............................................. 错误!未定义书签。
三、设计方案和原理 ............................................. 错误!未定义书签。
3.1电路功能........................................................ 错误!未定义书签。
3.2电路工作原理 (2)3.3参数计算 (3)3.4元器件选择 (3)四、仿真调试与性能分析 (4)4.1MUITLSIM仿真 (4)4.2实验步骤 (5)4.3调试分析 (5)4.4实物图 (5)五、设计心得 (6)一、摘要随着科学技术的发展,电力电子设备与人们的工作、生活的关系日益密切。
如今人民的生活水平大幅提升,生活质量和审美情趣也大幅提升,所以本次实验,我们设计了一个十八路心形流水灯,灯交替闪烁,组成心形图案,集美观于实用于一体,也可以用于馈赠亲朋好友,是十分有意义的。
关键字:LED 十八路流水灯心形流水灯交替闪烁二、设计目的和作用随着微电子技术的迅速发展,各类功能芯片的性能不断提高,数字信号处理得到越来越广泛的应用,而十八路流水灯是一个简单的应用,在通信系统、数字仪器仪表、语音、图像处理等方面都是必不可少的部分,所以流水灯的基础设计显得尤为重要。
本次设计在软硬件常规实验的基础上,运用“模拟电子技术”的理论知识,设计、分析、测试基本电路系统,初步掌握综合运用理论知识、软件仿真以及硬件测试进行简单系统的设计与分析的基本方法。
流水灯在日常生活中非常重要,运用非常广泛,在电子工程,通信工程,自动控制,遥测控制,测量仪器,仪表和计算机等技术领域,经常需要用到各种各样的流水灯。
心形流水灯焊接实训报告
一、实训背景随着科技的不断发展,电子技术逐渐渗透到我们的日常生活。
为了提高学生的实践能力和创新能力,我校特开设了心形流水灯焊接实训课程。
本课程旨在让学生通过动手实践,掌握心形流水灯的设计、制作和调试方法,提高学生的电子焊接技能。
二、实训目的1. 了解心形流水灯的原理和设计方法。
2. 掌握心形流水灯的焊接技术。
3. 学会使用电子元器件,提高电子制作能力。
4. 培养学生的团队合作精神和创新意识。
三、实训内容1. 心形流水灯电路设计2. 元器件选用与准备3. 心形流水灯焊接4. 心形流水灯调试与测试四、实训过程1. 心形流水灯电路设计在设计心形流水灯电路时,首先需要确定电路的基本原理。
心形流水灯主要由LED 灯、三极管、电阻、电容、晶体管等元器件组成。
通过合理设计电路,实现LED灯的闪烁和心形图案的展示。
2. 元器件选用与准备根据电路设计,选用合适的元器件。
本实训所选用的元器件如下:- LED灯:红色LED,共18个- 三极管:2N2222,共3个- 电阻:1kΩ,共18个- 电容:0.1μF,共3个- 晶体管:8051单片机- 连接线:杜邦线- 电源:5V电源准备好元器件后,将它们放置在实验台上,以便后续焊接。
3. 心形流水灯焊接在焊接前,先进行电路布局。
将元器件按照电路图进行排列,确保焊接过程中方便操作。
然后,按照以下步骤进行焊接:(1)焊接电源:将电源正负极焊接在电路板上的相应位置。
(2)焊接三极管:将三极管焊接在电路板上,确保焊接牢固。
(3)焊接电阻:将电阻焊接在三极管和LED灯之间,连接电路。
(4)焊接LED灯:将LED灯焊接在电路板上,确保LED灯正负极正确连接。
(5)焊接电容:将电容焊接在电路板上,连接电路。
(6)焊接单片机:将单片机焊接在电路板上,连接电路。
焊接过程中,注意以下几点:- 焊接时,保持焊接温度适宜,避免烧毁元器件。
- 焊接时,确保焊点牢固,避免虚焊。
- 焊接完成后,检查电路连接是否正确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流水灯程序申明:此代码用于学习交流,禁止用于商业用途!//====================================蓝色之心==================================================//名称:蓝色之心//文件功能:流水灯移动//修改时间:2014年5月18日//修改人:刘祚东//说明:1T单片机12M晶振//===================================================================== =========================main.c#include "STC12C5A60S2.H"#include "typedef.h"#include "led.h"#include "water.h"void main(){while(1){LED_0(5);//运算方式流水灯dropWater(50); //水滴效果流水灯}}typedef.h#ifndef _typedef#define _typedeftypedef unsigned char uchar;typedef unsigned char uchar8;typedef unsigned char Byte;typedef unsigned int uint;typedef unsigned int uchar16;typedef unsigned int Word;#endifled.h#ifndef _led#define _ledvoid Delay_1ms(uint Time); //误差0usvoid P0LED_LeftShift(uint Time);//LED左移void P1LED_LeftShift(uint Time);//LED左移void P2LED_LeftShift(uint Time);//LED左移void P3LED_LeftShift(uint Time);//LED左移void P0LED_RightShift(uint Time);//LED右移void P1LED_RightShift(uint Time);//LED右移void P2LED_RightShift(uint Time);//LED右移void P3LED_RightShift(uint Time);//LED右移void P0_LeftShift(uint Time);//LED左移流水void P1_LeftShift(uint Time);//LED左移流水void P2_LeftShift(uint Time);//LED左移流水void P3_LeftShift(uint Time);//LED左移流水void P0_RightShift(uint Time);//LED右移流水void P1_RightShift(uint Time);//LED右移流水void P2_RightShift(uint Time);//LED右移流水void P3_RightShift(uint Time);//LED右移流水void P0P1LED_DownShift(uint Time);//LED向下void P2P3LED_DownShift(uint Time);//LED向下void P0P1_DownShift(uint Time);//LED向下流水void P2P3_DownShift(uint Time);//LED向下流水void P0P1LED_UpShift(uint Time);//LED向上void P2P3LED_UpShift(uint Time);//LED向上void P0P1_UpShift(uint Time);//LED向上流水void P2P3_UpShift(uint Time);//LED向上流水void P0P1P2P3_flicker(uint Time);//LED全闪烁void P0P1P2P3_downShift(uint Time);//LED四组同时向下移动void P0P1P2P3_upShift(uint Time);//LED四组同时向上移动void P0123_RightShift(uint Time);//LED向右顺时针旋转void P0123_LeftShift(uint Time);//LED向左顺时针旋转void LED_0(uint time);//流水灯函数#endifled.c#include "STC12C5A60S2.H"#include "intrins.h"#include "typedef.h"//===================================================================== =========================//函数名称:延时函数//功能:1ms*Time延时//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void Delay_1ms(uint Time) //误差0us{unsigned char a,b;uint c;for(c=Time;c>0;c--)for(b=129;b>0;b--)for(a=43;a>0;a--);}//===================================================================== =========================//函数名称:LED移动函数//功能:P0LED左移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0LED_LeftShift(uint Time){uchar a=0xfe,i;for(i=0;i<8;i++){P0=a;Delay_1ms(Time);a<<=1;a|=1;}P0 =0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P1LED左移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P1LED_LeftShift(uint Time)//LED左移{uchar a=0xfe,i;for(i=0;i<8;i++){P1=a;Delay_1ms(Time);a<<=1;a|=1;}P1=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2LED左移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2LED_LeftShift(uint Time)//LED左移{uchar a=0x7F,i;for(i=0;i<8;i++){P2=a;Delay_1ms(Time);a>>=1;a|=0X80;}P2=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P3LED左移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P3LED_LeftShift(uint Time)//LED左移{uchar a=0xfe,i;for(i=0;i<8;i++){P3=a;Delay_1ms(Time);a<<=1;a|=1;}P3=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0LED右移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0LED_RightShift(uint Time)//LED右移{uchar a=0x7F,i;for(i=0;i<8;i++){P0=a;Delay_1ms(Time);a>>=1;a|=0X80;}P0=0XFF;}//==============================================================================================//函数名称:LED移动函数//功能:P1LED右移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P1LED_RightShift(uint Time)//LED右移{uchar a=0x7F,i;for(i=0;i<8;i++){P1=a;Delay_1ms(Time);a>>=1;a|=0X80;}P1=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2LED右移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2LED_RightShift(uint Time)//LED右移{uchar a=0xfe,i;for(i=0;i<8;i++){P2=a;Delay_1ms(Time);a<<=1;a|=1;}P2=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P3LED右移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P3LED_RightShift(uint Time)//LED右移{uchar a=0x7F,i;for(i=0;i<8;i++){P3=a;Delay_1ms(Time);a>>=1;a|=0X80;}P3=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0、P1LED下移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1LED_DownShift(uint Time)//LED向下{uchar a=0xfe,i;for(i=0;i<8;i++){P0=a;P1=a;Delay_1ms(Time);a<<=1;a|=1;}P0=0XFF;P1=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2、P3LED下移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2P3LED_DownShift(uint Time)//LED向下{uchar a=0x7F,b=0xfe,i;for(i=0;i<8;i++){P2=a;P3=b;Delay_1ms(Time);a>>=1;a|=0X80;b<<=1;b|=1;}P2=0XFF;P3=0XFF;}//==================================================================== ==========================//函数名称:LED移动函数//功能:P0、P1LED上移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1LED_UpShift(uint Time)//LED向上{uchar a=0x7f,i;for(i=0;i<8;i++){P0=a;P1=a;Delay_1ms(Time);a>>=1;a|=0x80;}P0=0XFF;P1=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2、P3LED上移//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2P3LED_UpShift(uint Time)//LED向上{uchar a=0x7F,b=0xfe,i;for(i=0;i<8;i++){P2=b;P3=a;Delay_1ms(Time);a>>=1;a|=0X80;b<<=1;b|=1;}P2=0XFF;P3=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0LED左移流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0_LeftShift(uint Time)//LED左移流水{uchar a=0xfe,i;for(i=0;i<8;i++){P0=a;Delay_1ms(Time);a<<=1;}P0=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P1LED左移流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P1_LeftShift(uint Time)//LED左移流水{uchar a=0xfe,i;for(i=0;i<8;i++){P1=a;Delay_1ms(Time);a<<=1;}P1 =0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2LED左移流水//入口参数:Time//编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2_LeftShift(uint Time)//LED左移流水{uchar a=0x7F,i;for(i=0;i<8;i++){P2=a;Delay_1ms(Time);a>>=1;}P2=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P3LED左移流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P3_LeftShift(uint Time)//LED左移流水{uchar a=0xfe,i;for(i=0;i<8;i++){P3=a;Delay_1ms(Time);a<<=1;}P3 =0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0LED右移流水//入口参数:Time//编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0_RightShift(uint Time)//LED右移流水{uchar a=0x7F,i;for(i=0;i<8;i++){P0=a;Delay_1ms(Time);a>>=1;}P0=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P1LED右移流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P1_RightShift(uint Time)//LED右移流水{uchar a=0x7F,i;for(i=0;i<8;i++){P1=a;Delay_1ms(Time);a>>=1;}P1=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P2LED右移流水//入口参数:Time//编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2_RightShift(uint Time)//LED右移流水{uchar a=0xfe,i;for(i=0;i<8;i++){P2=a;Delay_1ms(Time);a<<=1;}P2=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P3LED右移流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P3_RightShift(uint Time)//LED右移流水{uchar a=0x7F,i;for(i=0;i<8;i++){P3=a;Delay_1ms(Time);a>>=1;}P3=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0、P1LED向下流水//入口参数:Time//编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1_DownShift(uint Time)//LED向下流水{uchar a=0xfe,i;for(i=0;i<8;i++){P0=a;P1=a;Delay_1ms(Time);a<<=1;}}//===================================================================== =========================//函数名称:LED移动函数//功能:P2、P3LED向下流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2P3_DownShift(uint Time)//LED向下流水{uchar a=0x7F,b=0xfe,i;for(i=0;i<8;i++){P2=a;P3=b;Delay_1ms(Time);a>>=1;b<<=1;}P0=0XFF;P1=0XFF;P2=0XFF;P3=0XFF;}//===================================================================== =========================//函数名称:LED移动函数//功能:P0、P1LED向上流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1_UpShift(uint Time)//LED向上流水{uchar a=0x7f,i;for(i=0;i<8;i++){P0=a;P1=a;Delay_1ms(Time);a>>=1;}}//===================================================================== =========================//函数名称:LED移动函数//功能:P2、P3LED向上流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P2P3_UpShift(uint Time)//LED向上流水{uchar a=0x7F,b=0xfe,i;for(i=0;i<8;i++){P2=b;P3=a;Delay_1ms(Time);a>>=1;b<<=1;}P0=0XFF;P1=0XFF;P2=0XFF;P3=0XFF;}//===================================================================== =========================//函数名称:LED全闪//功能:LED花样全闪//入口参数:Time//出口函数://编写(修改)时间:2014年8月29日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1P2P3_flicker(uint Time)//LED全闪烁{P0=0X55;P1=0X55;P2=0Xaa;P3=0X55;Delay_1ms(Time);P0=0Xaa;P1=0Xaa;P2=0X55;P3=0Xaa;Delay_1ms(Time);P0=0X55;P1=0X55;P2=0Xaa;P3=0X55;Delay_1ms(Time);P0=0Xaa;P1=0Xaa;P2=0X55;P3=0Xaa;Delay_1ms(Time);P0=0Xff;P1=0X00;P2=0Xff;P3=0X00;Delay_1ms(Time);P0=0X00;P1=0Xff;P2=0X00;P3=0Xff;Delay_1ms(Time);P0=0Xff;P1=0X00;P2=0Xff;P3=0X00;Delay_1ms(Time);P0=0X00;P1=0Xff;P2=0X00;P3=0Xff;Delay_1ms(Time);P0=0X00;P1=0X00;P2=0Xff;P3=0Xff;Delay_1ms(Time);P0=0Xff;P1=0Xff;P2=0X00;P3=0X00;Delay_1ms(Time);P0=0X00;P1=0X00;P2=0Xff;P3=0Xff;Delay_1ms(Time);P0=0Xff;P1=0Xff;P2=0X00;P3=0X00;Delay_1ms(Time);P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;Delay_1ms(Time);P0=0X00;P1=0X00;P2=0X00;P3=0X00;Delay_1ms(Time);P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;Delay_1ms(Time);P0=0X00;P1=0X00;P2=0X00;P3=0X00;Delay_1ms(Time);P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;}//===================================================================== =========================//函数名称:LED四组同时向下移动//功能:LED四组同时向下移动//入口参数:Time//出口函数://编写(修改)时间:2014年8月29日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1P2P3_downShift(uint Time)//LED四组同时向下移动{uchar tempP013=0xfe,tempP2=0x7f,m,n;for(m=0;m<7;m++){for(n=0;n<8;n++){P0=P1=P3=tempP013;;P2=tempP2;Delay_1ms(Time);tempP013=_crol_(tempP013,1);tempP2=_cror_(tempP2,1);}tempP013<<=1;tempP2>>=1;}}//===================================================================== =========================//函数名称:LED四组同时向上移动//功能:LED四组同时向上移动//入口参数:Time//出口函数://编写(修改)时间:2014年8月29日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0P1P2P3_upShift(uint Time)//LED四组同时向上移动{uchar tempP013=0x7f,tempP2=0xfe,m,n;for(m=0;m<7;m++){for(n=0;n<8;n++){P0=P1=P3=tempP013;;P2=tempP2;Delay_1ms(Time);tempP013=_cror_(tempP013,1);tempP2=_crol_(tempP2,1);}tempP013>>=1;tempP2<<=1;}}//===================================================================== =========================//函数名称:LED向右顺时针旋转//功能:LED向右顺时针旋转//入口参数:Time//出口函数://编写(修改)时间:2014年8月29日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0123_RightShift(uint Time)//LED向右顺时针旋转{uchar tempP0=0xfe,tempP123=0x7f,m,n;for(m=0;m<7;m++){for(n=0;n<8;n++){P0=tempP0;;P1=P2=P3=tempP123;Delay_1ms(Time);tempP0=_crol_(tempP0,1);tempP123=_cror_(tempP123,1);}tempP123>>=1;tempP0<<=1;}P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;}//===================================================================== =========================//函数名称:LED向左顺时针旋转//功能:LED向左顺时针旋转//入口参数:Time//出口函数://编写(修改)时间:2014年8月29日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void P0123_LeftShift(uint Time)//LED向左顺时针旋转{uchar tempP0=0x7f,tempP123=0xfe,m,n;for(m=0;m<7;m++){for(n=0;n<8;n++){P0=tempP0;;P1=P2=P3=tempP123;Delay_1ms(Time);tempP0=_cror_(tempP0,1);tempP123=_crol_(tempP123,1);}tempP123<<=1;tempP0>>=1;}P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;}//===================================================================== =========================//函数名称:流水灯函数//功能:运算实现流水//入口参数:Time//出口函数://编写(修改)时间:2014年5月18日//编写(修改)人:刘祚东//备注:1T单片机12M晶振//===================================================================== =========================void LED_0(uint time)//流水灯函数{P1LED_LeftShift(time);P3LED_LeftShift(time);P0LED_LeftShift(time);P2LED_LeftShift(time);P1_LeftShift(time);P3_LeftShift(time);P0_LeftShift(time);P2_LeftShift(time);P0P1LED_DownShift(time);P2P3LED_DownShift(time);P2P3LED_UpShift(time);P0P1LED_UpShift(time);P1_LeftShift(time);P1=0X00;P3_LeftShift(time);P1=0XFF;P0_LeftShift(time);P0=0X00;P2_LeftShift(time);P0=0XFF;P1_LeftShift(time);P1=0X00;P3_LeftShift(time);P3=0X00;P0_LeftShift(time);P0=0X00;P2_LeftShift(time);P1=0XFF;P0=0XFF;P3=0XFF;P3LED_RightShift(time);P1LED_RightShift(time);P2LED_RightShift(time);P0LED_RightShift(time);P3_RightShift(time);P1_RightShift(time);P2_RightShift(time);P0_RightShift(time);P3_RightShift(time);P3=0X00;P1_RightShift(time);P3=0XFF;P2_RightShift(time);P2=0X00;P0_RightShift(time);P2=0XFF;P3_RightShift(time);P3=0X00;P1_RightShift(time);P1=0X00;P2_RightShift(time);P2=0X00;P0_RightShift(time);P3=0XFF;P2=0XFF;P1=0XFF;P0P1_DownShift(time);P2P3_DownShift(time);P2P3_UpShift(time);P0P1_UpShift(time);P0P1P2P3_flicker(4*time);//LED全闪烁P0P1P2P3_downShift(2*time);//LED四组同时向下移动P0P1P2P3_upShift(2*time);//LED四组同时向上移动P0123_RightShift(5);//LED向右顺时针旋转P0123_LeftShift(5);//LED向左顺时针旋转}water.h#ifndef _water#define _watervoid dropWater(uchar temp);#endifwater.c#include "reg52.h"#include "typedef.h"#define bit(n) (0x01<<(n))#define LED0 P1#define LED1 P3#define LED2 P0#define LED3 P2bit a,b,c,d,e,f,g,h;uchar H_LInterchange(uchar Data){uchar temp=0x00;uchar a,b,c,d,e,f,g,h;a=(Data&0x80)>>7;b=(Data&0x40)>>6;c=(Data&0x20)>>5;d=(Data&0x10)>>4;e=(Data&0x08)>>3;f=(Data&0x04)>>2;g=(Data&0x02)>>1;h=Data&0x01;h=h<<7;g=g<<6;f=f<<5;e=e<<4;d=d<<3;c=c<<2;b=b<<1;temp=a+b+c+d+e+f+g+h;return temp;}//编码文件/**********************************************每个状态分成四层分别为8LED,6LED,4LED,2LED**************************************************/code char b8[32]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, //8 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x81,0x03, //60xfe,0xfc,0xf8,0xf0,0xe1,0xc3,0x87,0x0f, //40xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f //2};//流星进入状态编码code char a8[32]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff, //8 0x07,0x0f,0x1f,0x3f,0x7f,0xff,0xff,0xff, //60x1f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff, //40x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff //2}; //流星离开状态编码char pd[8];//端口数据8 5 3 1char stateN=0;int staytime=50; //单个状态停留时间,设置速度void delay(int ms); //延时函数void display(char N);//根据传入的状态数,获得单颗流星相应的端口数据void dropWater(uchar temp){char n2=96,n4=20,n6=6,n8=1; //调整辉光,形成扫尾while(temp--){int i=0;display(stateN);for(i=0;i<staytime;i++){LED0=pd[0]; //0000 0000 8LED点亮LED2=pd[0];LED1=pd[1];LED3=H_LInterchange(pd[1]);delay(n8) ;LED0=pd[2]; //1100 0000 6LED点亮LED2=pd[2];LED1=pd[3];LED3=H_LInterchange(pd[3]);delay(n6) ;LED0=pd[4]; //1111 0000 4LED点亮LED2=pd[4];LED1=pd[5];LED3=H_LInterchange(pd[5]);delay(n4) ;LED0=pd[6]; //1111 1100 2LED点亮LED2=pd[6];LED1=pd[7];LED3=H_LInterchange(pd[7]);delay(n2) ;}stateN++;}LED0=0xff;LED1=0xff;LED2=0xff;LED3=0xff;}void delay(int ms){while(ms--){ms++;ms--;}}void display(char N){if(N<8){pd[6]=b8[24+N];pd[4]=b8[16+N];pd[2]=b8[8+N];pd[0]=b8[N];pd[7]=0xff;pd[5]=0xff;pd[3]=0xff;pd[1]=0xff;}else if(N<12){pd[6]=a8[16+N];pd[4]=a8[8+N];pd[2]=a8[N];pd[0]=a8[N-8];pd[7]=b8[N+16];pd[5]=b8[N+8];pd[3]=b8[N];pd[1]=b8[N-8];}else if(N<16) //第十二个状态出现第二颗流星{pd[6]=a8[16+N]&b8[N+12];pd[4]=a8[8+N]&b8[N+4];pd[2]=a8[N]&b8[N-4];pd[0]=a8[N-8]&b8[N-12];pd[7]=b8[N+16];pd[5]=b8[N+8];pd[3]=b8[N];pd[1]=b8[N-8];}else if(N<20){pd[6]=b8[N+12];pd[4]=b8[N+4];pd[2]=b8[N-4];pd[0]=b8[N-12];pd[7]=a8[N+8];pd[5]=a8[N];pd[3]=a8[N-8];pd[1]=a8[N-16];}else{pd[6]=a8[N+4];pd[4]=a8[N-4];pd[2]=a8[N-12];pd[0]=a8[N-20];pd[7]=a8[N+8]&b8[N+4];pd[5]=a8[N]&b8[N-4];pd[3]=a8[N-8]&b8[N-12];pd[1]=a8[N-16]&b8[N-20];}if(stateN==23)stateN=11;}。