继电器控制心型流水灯
PLC花样流水灯的控制
PLC花样流水灯的控制【摘要】:【关键词】:目录一、课程设计目的的 (2)二、课程设计题目和要求............................................. . (2)三、设计内容 (2)(一)PLC的介绍 (2)(二) PLC的特点及运用 (4)(三)PLC工作原理 (6)(四)、PLC的I/O地址分配 (7)(五) 外部PLC接线图 (7)(六) PLC主程序的设计 (8)(七) 花样1 子程序 (11)(八)花样2子程序 (11)( 九) 花样3子程序 (11)(十)控制系统测试与分析 (13)四、设计总结 (13)参考书目 (16)附录 (17)一、课程设计目的在现代生活中,彩灯作为一种装饰,既可以增强人们的感观,起到广告宣传的作用,又可以增添节日气氛,为人们的生活增添亮丽,用在舞台上增强晚会灯光效果。
随着科学技术的发展以及人民生活水平的提高,人们对于彩灯的要求越来越高,另一方面,随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展,PLC技术的应用引起电子产品及系统开发的巨大变革。
梯形图语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。
于是,人们开始追求贯彻整个系统设计的自动化,可以从繁重的设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。
整个过程通过PLC自动完成,大大减轻了设计人员的工作强度,减少了出错的机会,并且提高了设计质量。
为了便于学生掌握PLC 变成设计,因此需要设计一个霓虹灯闪烁控制系统。
由此引入流水灯的花样控制二、课程设计题目和要求课程设计题目,基于PLC的霓虹灯闪烁控制系统课程设计要求,彩灯L1--L10按如下花样(1):先使所有灯都复位(熄灭),然后从L1等开始,每隔0.5秒按顺序增加一个彩灯,直至都亮为一个周期,重复循环3花样(2):L1~L5、L6~L10两组彩灯亮灭交替三次,间隔0.5秒花样(3):先L1灯亮0.5秒后,L2灯亮L1灭,延迟0.5秒后L3灯亮L2灭,以此类推,形成单灯跑马效果,循环3次三种花样连续执行,形成周期循环,直至停止。
心形花样LED流水灯程序
/*心形花样LED 流水灯程序*/#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~7uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7uchar 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) // 顺时针逐个点亮{uchar i,j;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);}P1=0x00;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++){zgxh(100,1);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--);}}。
心形流水灯程序
#include<reg52.h>#define uchar unsigned charuchar flag=200;///////////////////////////////////////////////////////////////////////uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff};////////////////////////////////////////////////////////////////////uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff};uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};uchar code Tab6[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff};uchar code Tab7[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code Tab8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};////////////////////////////////////////////////////////////////void shansuo();void xl();///////////////////////////////////////////////////////////////void delay(void){unsigned char m,n;for(m=0;m<flag;m++)for(n=0;n<250;n++);}///////////////////////////////////void hy1(void) //点亮状态逆时针旋转90度(一个一个灭){unsigned char i;for(i=0;i<8;i++){P0=Tab11[i];P1=Tab22[i];P2=Tab11[i];P3=Tab22[i];delay();}for(i=0;i<8;i++){P0=Tab44[i];P1=Tab55[i];P2=Tab44[i];P3=Tab55[i];delay();}///////////////////////////////////////////void hy2(void) //暗中逆时针转360。
控制心型流水灯的显示
控制心形流水灯的显示班级: 10电子科学与技术(1)班学号: 201010330131姓名:敖军指导:曹老师时间: 2013 年5 月 16 日景德镇陶瓷学院目录•一、设计分析 (3)•二、设计实现………………………………………………4,5,6,72.1设计方案确定2.2硬件电路设计2.3显示电路设计2.4 并行接口电路2.5单片机2.6晶体振荡电路设计2.7复位电路设计•三、软件设计 (8)3.1主体程序3.2延时程序•四、调试与仿真 (9)4.1实现软件4.2仿真结果•五、元件清单 (10)•六、设计心得 (10)•七、参考文献 (11)•八、附录总电路图 (12)一、设计分析原理:采用8个发光二极管可以用来模拟8个信号灯,如果按照图1所示的规律依次点亮每一个发光二极管并延时一段时间,将实现流水灯效果。
点亮第点亮第点亮第图1运用单片机的p1端口控制发光二极管的亮、灭状态。
通过采用p1端的8个端口,从而控制8个发光二极管,采用输出口扩展方式,则可控制更多发光二极管。
见图2所示二、设计实现2.1设计方案确定选用AT89C51单片机,时钟电路,复位电路,晶体振荡电路,若干适当阻值电阻,8个发光二极管和电源构成最小工作系统,控制心形流水灯。
2.2硬件电路设计根据设计要求分析,采用直接驱动,为提高驱动电流能力,LED采用共阳极接法,广告灯输出心形,用Proteus软件进行原理设计与绘图以及keil单片机编程。
2.3显示电路设计本次设计的流水灯为发光二极管。
为了防止流过发光二极管的电流过大对二极管造成损坏而影响实验,每个二极管都串联一个电阻分压,串联电阻越大,流过二极管的电流越小,灯的亮度越低。
此次选的是LED-RED,正向电压2v,最高耐压值4v,全驱动电流为0-10mA为安全。
所以为了保证发光二极管导通时的安全和发光亮度,串联电阻为500欧姆,此时流过二极管电流为:I=(5-2)/500=6mA,满足要求。
十八路心形流水灯设计报告
十八路心形流水灯——设计报告目录一、摘要 (2)二、设计目的和作用 (2)(三、设计方案和原理 (2)电路功能 (2)电路工作原理 (2)参数计算 (3)元器件选择 (3)四、仿真调试与性能分析 (4)MUITLSIM仿真 (4)实验步骤 (5),调试分析 (5)实物图 (5)五、设计心得 (6)一、摘要随着科学技术的发展,电力电子设备与人们的工作、生活的关系日益密切。
如今人民的生活水平大幅提升,生活质量和审美情趣也大幅提升,所以本次实验,我们设计了一个十八路心形流水灯,灯交替闪烁,组成心形图案,集美观于实用于一体,也可以用于馈赠亲朋好友,是十分有意义的。
关键字:LED 十八路流水灯心形流水灯交替闪烁二、设计目的和作用随着微电子技术的迅速发展,各类功能芯片的性能不断提高,数字信号处理得到越来越广泛的应用,而十八路流水灯是一个简单的应用,在通信系统、数字仪器仪表、语音、图像处理等方面都是必不可少的部分,所以流水灯的基础设计显得尤为重要。
本次设计在软硬件常规实验的基础上,运用“模拟电子技术”的理论知识,设计、分析、测试基本电路系统,初步掌握综合运用理论知识、软件仿真以及硬件测试进行简单系统的设计与分析的基本方法。
流水灯在日常生活中非常重要,运用非常广泛,在电子工程,通信工程,自动控制,遥测控制,测量仪器,仪表和计算机等技术领域,经常需要用到各种各样的流水灯。
随着集成电路的迅速发展,用集成电路可很方便地构成各种复杂功能的流水灯。
用集成电路实现的流水灯与其他流水灯相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
流水灯在电路实验和设备检测中具有十分广泛的用途。
三、设计方案和原理电路功能18颗LED排列成心形,由三只振荡三极管驱动,通电后LED依次旋转闪亮,夜间效果更佳。
电路工作原理本电路是由3只三极管组成的循环驱动电路。
每当电源接通时,3只三极管会争先导通,但由于元器件存在差异,只会有1只三极管最先导通。
PLC爱心流水灯课程设计报告
机电工程系课程设计报告题目:爱心流水灯的PLC控制设计专业:应用电子技术班级:10应用电子(4)班学号:1006190120姓名:同组人:(1006190113)指导老师:答辩日期:2012年6月目录一、课程设计目的 (4)二、实验设备 (4)三、实验步骤 (4)四、课程设计内容及技术指标 (4)1、制作爱心流水灯的要求: (4)五、系统硬件设计 (5)1、系统硬件介绍 (5)2、系统输入输出点分配 (5)4、器件清单 (7)5、外部接线图 (8)六、触摸屏设计 (10)1、主菜单 (10)2、爱心流水灯 (10)七、系统软件设计 (11)1、爱心流水灯的工作情况分析 (11)2、系统梯形图设计 (11)(1)系统内存分配 (11)(2)主程序 (11)八、系统调试 (13)1、调试环境介绍 (13)2、调试步骤 (13)九、总结及体会 (13)十、参考文献 (13)一、课程设计目的本课程设计的目的在于运用已学的PLC控制技术的基础知识和基本理论,加以综合运用,进行PLC控制系统设计的初等训练,掌握运用PLC进行系统控制设计的原则、设计内容和设计步骤,为从事PLC相关的毕业设计或今后的工作需要打下良好的基础。
二、实验设备电脑一台;实验箱一台;AB接口的USB连线一条;电源线两条。
三、实验步骤1.把实验箱的电源及各个输入端的拨动按钮置于“OFF”位,即向下拨动,再用AB接口的USB连线把PLC与电脑连接起来,然后给PLC上电。
2.启动CX-P软件,新建工程,进入CX-P软件编程环境。
3.根据实验内容在CX-P软件编程环境里进行编程,然后进行相关操作。
4.程序运行调试并修改。
5.保存好文件,做好各项记录。
6.把实验箱的电源及各个输入端的拨动按钮置于“OFF”位,切断点实验箱的电源,盖好实验箱的盖子。
四、课程设计内容及技术指标1、制作爱心流水灯的要求:●爱心分内爱心和外爱心两部分;●从外爱心开始亮从头亮到尾;●又从尾开始每个都亮起来;●然后外爱心开始闪烁5秒;●外爱心灭,内爱心从头亮到尾;●内爱心开始闪烁5秒;●最后再两个同时闪烁5秒;●依次循环;五、系统硬件设计1、系统硬件介绍国际电工委员会(IEC)对PLC的定义是:可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。
心形流水灯STC89C52电子制作焊接套件单片机程序设计0资料
x9 =0; delay2ms();
x10 =0; delay2ms();
x11 =0; delay2ms();
x12 =0; delay2ms();
x13 =0; delay2ms();
x14 =0; delay2ms();
x15 =0; delay2ms();
x16 =0; delay2ms();
x31 =0; delay2ms();
x3elay2ms();
x28 =0; delay2ms();
x27 =0; delay2ms();
x26 =0; delay2ms();
x25 =0; delay2ms();
x13 =0;
x20 =0; delay2ms();
x21 =0;
x12 =0; delay2ms();
x11 =0;
x22 =0; delay2ms();
x23 =0;
x10 =0; delay2ms();
x9 =0;
x24 =0; delay2ms();
x8 =0;
x25 =0; delay2ms();
P1=0xff;
P2=0xff;
P3=0xff;
delay2ms();
x1 =0; delay2ms();
x2 =0; delay2ms();
x3 =0; delay2ms();
x4 =0; delay2ms();
x5 =0; delay2ms();
x6 =0; delay2ms();
x7 =0; delay2ms();
x24 =0; delay2ms();
x23 =0; delay2ms();
心形花样LED流水灯参考文
心形花样LED 流水灯(带程序)1.引言当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效方法就是理论与实践并重,本文笔者用STC89C52RC单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。
2、主控制器按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
STC89C52RC单片机是以51内核为主的系列单片机,STC单片机是宏晶生产的单时钟/机器周期的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8—12倍,内部集成MAX810专用复位电路。
4路PWM 8路高速10位A、D转换,针对电机控制,强干扰场合。
STC89C52RC单片机引脚如下图:STC89C52RC单片机主要性能●高速:1 个时钟/ 机器周期,增强型8051 内核,速度比普通8051 快8~12 倍●宽电压:5.5~3.8V,2.4~3.8V(STC12LE5410AD 系列)●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)●工作频率:0~35MHz,相当于普通8051:0~420MHz--- 实际可到48MHz,相当于8051: 0~576MHz●时钟:外部晶体或内部RC 振荡器可选,在ISP 下载编程用户程序时设置● 16K 字节片内Flash 程序存储器,擦写次数10 万次以上● 512 字节片内RAM 数据存储器●芯片内EEPROM 功能● ISP / IAP,在系统可编程/ 在应用可编程,无需编程器/ 仿真器● 10 位ADC,8 通道, STC12C5A16S2 系列为8 位ADC。
24个心形流水灯设计报告
24个心形流水灯设计报告1. 引言流水灯作为一种常见的LED灯效设计,在展示舞台、节日装饰、商业广告等领域有着广泛应用。
为了增加节日气氛,我们设计了一个由24个心形灯组成的流水灯。
本设计报告将详细介绍设计思路、硬件连接、软件控制以及预期效果等相关内容。
2. 设计思路由于流水灯需要按照一定的顺序依次点亮各个LED灯,我们选择使用Arduino控制器来实现该功能。
考虑到增加趣味性和节日氛围,我们决定采用心形灯组成的模式。
共有24个心形灯,每个心形灯内部由若干个LED 灯组成,可以通过控制流水灯模式,实现心形灯的动态变化。
3. 硬件连接为了实现24个心形灯的控制,我们需要准备以下硬件设备:- Arduino控制器- 24个心形灯- 简单的电路板- 面包板或者焊接器件将Arduino控制器与电路板相连接,并将24个心形灯连接到电路板上。
每个心形灯都连接到相应的引脚上,以便于控制单个灯的点亮与熄灭。
4. 软件控制使用Arduino开发环境,通过编写相应的代码来控制流水灯的效果。
首先,我们定义了24个心形灯对应的引脚号,以便于控制单个心形灯的点亮与熄灭。
然后,我们编写了循环代码,按照一定的顺序控制心形灯的点亮与熄灭。
通过调整循环次数、延时时间等参数,可以实现不同的流水灯效果。
5. 预期效果通过硬件连接和软件控制,我们预期实现以下效果:- 24个心形灯按照一定的顺序动态点亮与熄灭- 流水灯的速度可调,可以实现快速、中速、慢速等不同的流动效果- 可以组合不同的心形灯亮起,创造出更多样化的效果- 通过控制器的输入,可以实现远程控制,方便日常使用6. 总结通过本次24个心形流水灯的设计,我们掌握了硬件与软件的配合使用,提高了自己的电子设计与嵌入式编程能力。
同时,这个设计还具有一定的实用性和观赏性,可以应用于节日装饰、舞台演出等场合,为人们带来更多的乐趣和温暖。
我们希望通过这次设计报告的分享,能够启发更多人参与到电子设计与嵌入式编程的学习中。
51心形流水灯代码
51心形流水灯代码#include //调用reg52头文件void delay(unsigned int t);//定义延时函数void one();//定义流水一函数void two();//定义流水二函数void three();//定义流水三函数void four();//定义流水四函数void five();//定义流水五函数void six();//定义流水六函数void seven();//定义流水七函数void eight();//定义流水八函数void night();//定义流水九函数void ten();//定义流水十函数void eleven();//定义流水十一函数void twelve();//定义流水十二函数void thirteen();//定义流水十三函数void fouteen();//定义流水十四函数sbit led00=P0^0;sbit led01=P0^1;sbit led02=P0^2;sbit led03=P0^3;sbit led04=P0^4;sbit led05=P0^5;sbit led10=P1^0;sbit led11=P1^1;sbit led12=P1^2;sbit led13=P1^3;sbit led14=P1^4;sbit led15=P1^5;sbit led20=P2^0;sbit led21=P2^1;sbit led22=P2^2;sbit led23=P2^3;sbit led24=P2^4;sbit led25=P2^5;sbit led30=P3^0;sbit led31=P3^1;sbit led32=P3^2;sbit led33=P3^3;sbit led34=P3^4;sbit led35=P3^5;void main()//主函数开启{unsigned int i;one();//执行流水一two();//执行流水二three();//执行流水三four();//执行流水四five();//执行流水五six();//执行流水六seven();//执行流水七eight();//执行流水八night();//执行流水九ten();//执行流水十eleven();//执行流水十一twelve();//执行流水十二thirteen();//执行流水十三fouteen();//执行流水十四for(i=0;i<3;i++){P0=0xF0;P1=0xE1;P2=0xE0;P3=0x03;delay(65000);P0=P1=P2=P3=0xFF;delay(65000);}while(1){led00=led01=led02=led03=led11=led12=led13=led14=led 32=led33=led34=led35=led20=led21=led22=led23=led24=0;led10=led15=led30=led31=led04=led05=led25=0;delay(30000);led10=led15=led30=led31=led04=led05=led25=1;delay(30000);}}////////////////////////////////////////////////////////我是分割线1(全灯闪亮三次)////////////////////////////////////////////////// void one()//编写流水一函数{unsigned int i;for(i=0;i<3;i++){P0=P1=P2=P3=0x00;//P0口全熄delay(30000);//延时P0=P1=P2=P3=0xFF;//P0口全熄delay(40000);//延时}}/////////////////////////////////////////////////////////我是分割线2(逆时针转一圈)//////////////////////////////////////////////////////void two()//编写流水二{unsigned char code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//定义数组unsigned char code table1[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//定义数组unsigned int i;for(i=0;i<6;i++){P1=table[i];delay(20000);//延时}P1=0xFF;for(i=0;i<6;i++){P3=table[i];delay(20000);//延时}P3=0xFF;for(i=0;i<6;i++){P2=table[i];delay(20000);//延时}P2=0xFF;for(i=0;i<6;i++){P0=table1[i];delay(20000);//延时}P0=0xFF;}////////////////////////////////////////////////////////我是分割线3(顺时针转一圈)//////////////////////////////////////////////////////////// void three()//编写流水三{unsigned char code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//定义数组unsigned char code table1[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//定义数组unsigned int i;P1=0xFE;delay(20000);P1=0xFF;for(i=0;i<6;i++){P0=table[i];delay(20000);//延时}P0=0xFF;for(i=0;i<6;i++){P2=table1[i];delay(20000);//延时}P2=0xFF;for(i=0;i<6;i++){P3=table1[i];delay(20000);//延时}P3=0xFF;for(i=0;i<6;i++){P1=table1[i];delay(20000);//延时}P0=0xFF;}////////////////////////////////////////////////////////我是分割线4(左半圈依次全亮)//////////////////////////////////////////////////////////// void four()//编写流水四{unsigned char code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0};//定义数组unsigned int i;for(i=0;i<6;i++){P1=table[i];delay(30000);//延时}for(i=0;i<6;i++){P3=table[i];delay(30000);//延时}P2=0xFE;delay(30000);P1=P3=0xFF;//P0口全熄P0=P2=0x00;delay(30000);P0=P2=0xFF;}////////////////////////////////////////////////////////我是分割线5(右半圈依次点亮)//////////////////////////////////////////////////////////// void five()//编写流水五{unsigned char code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0};//定义数组unsigned char codetable1[]={0xdf,0xcf,0xc7,0xc3,0xc1,0xc0};//定义数组unsigned int i;P1=0xFE;delay(30000);for(i=0;i<6;i++){P0=table[i];delay(30000);//延时}for(i=0;i<6;i++){P2=table1[i];delay(30000);//延时}P0=P2=0xFF;//P0口全熄P1=P3=0x00;//P0口全熄delay(30000);//延时P1=P3=0xFF;}////////////////////////////////////////////////////////我是分割线6//////////////////////////////////////////////////////////// void six()//编写流水六{unsigned char code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xFF};//定义数组unsigned char code table1[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//定义数组unsigned int i;for(i=0;i<7;i++){P1=table[i];delay(20000);//延时P3=table[i];delay(20000);//延时P2=table[i];delay(20000);//延时P0=table1[i];delay(20000);//延时}}////////////////////////////////////////////////////////我是分割线7//////////////////////////////////////////////////////////// void seven()//编写流水七{unsigned char code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0xFF};//定义数组unsigned char code table1[]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xFF};//定义数组unsigned int i;for(i=0;i<7;i++){P1=table[i];P0=table1[i];delay(30000);}P0=0xE0;P1=0xC0;delay(60000);P2=P3=0xC0;P1=0xFF;P0=0xDF;delay(60000);}////////////////////////////////////////////////////////我是分割线8//////////////////////////////////////////////////////////// void eight()//编写流水8{unsigned char code table[]={0xF8,0xC7};//定义数组unsigned char code table1[]={0xC7,0xF8};//定义数组unsigned int i,j;for(j=0;j<2;j++){for(i=0;i<2;i++){P1=P2=P3=table[i];P0=table1[i];delay(30000);}}}////////////////////////////////////////////////////////我是分割线9//////////////////////////////////////////////////////////// void night()//编写流水9{unsigned char code table[]={0xFC,0xF3,0xCF};//定义数组unsigned char code table1[]={0xCF,0xF3,0xFC};//定义数组unsigned int i;for(i=0;i<3;i++){P1=P2=P3=table[i];P0=table1[i];delay(30000);}}////////////////////////////////////////////////////////我是分割线10//////////////////////////////////////////////////////////// void ten()//编写流水10{unsigned char code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0};//定义数组unsigned char code table1[]={0xDF,0xCF,0xC7,0xC3,0xC1,0xC0};//定义数组unsigned int i;for(i=0;i<6;i++){P1=table[i];delay(10000);//延时}for(i=0;i<6;i++){P3=table[i];delay(10000);//延时}for(i=0;i<6;i++){P2=table[i];delay(10000);//延时}for(i=0;i<6;i++){P0=table1[i];delay(10000);//延时}}////////////////////////////////////////////////////////我是分割线11//////////////////////////////////////////////////////////// void eleven()//编写流水11{unsigned char code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0};//定义数组unsigned char code table1[]={0xDF,0xCF,0xC7,0xC3,0xC1,0xC0};//定义数组unsigned int i;P1=0xFE;delay(10000);for(i=0;i<6;i++){P0=table[i];delay(10000);//延时}for(i=0;i<6;i++){P2=table1[i];delay(10000);//延时}for(i=0;i<6;i++){P3=table1[i];delay(10000);//延时}for(i=0;i<6;i++){P1=table1[i];delay(10000);//延时}}////////////////////////////////////////////////////////我是分割线12蝴蝶闪////////////////////////////////////////////////////////////void twelve()//编写流水12{unsigned int i;for(i=0;i<12;i++){P1=P3=0x00;P2=0xFE;delay(15000);P1=P2=P3=0xFF;P1=0xFE;P0=P2=0x00;delay(15000);P0=P1=P2=0xFF;}}////////////////////////////////////////////////////////我是分割线13////////////////////////////////////////////////////////////void thirteen()//编写流水十三{unsigned char code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//定义数组unsigned char code table1[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//定义数组unsigned int i,j;for(j=0;j<3;j++) {for(i=0;i<6;i++) {P3=0x00;P1=table[i]; delay(20000);//延时}P1=P3=0xFF;for(i=0;i<6;i++) {P2=0x00;P3=table[i]; delay(25000);//延时}P2=P3=0xFF;for(i=0;i<6;i++) {P0=0x00;P2=table[i]; delay(30000);//延时}P0=P2=0xFF;for(i=0;i<6;i++) {P1=0x00;P0=table1[i]; delay(35000);//延时}P0=P1=0xFF;}}/////////////////////////////////////////////////////////我是分割线14////////////////////////////////////////////////////// void fouteen()//编写流水十四{unsigned char code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//定义数组unsigned char code table1[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//定义数组unsigned int i,j;for(j=0;j<3;j++){P1=0xFE;delay(20000);P1=0xFF;for(i=0;i<6;i++){P2=0x00;P0=table[i];delay(20000);//延时}P0=P2=0xFF;for(i=0;i<6;i++){P3=0x00;P2=table1[i];delay(25000);//延时}P2=P3=0xFF;for(i=0;i<6;i++){P1=0x00;P3=table1[i];delay(30000);//延时}P1=P3=0xFF;for(i=0;i<6;i++){P0=0x00;P1=table1[i];delay(35000);//延时}P0=P1=0xFF;}}/////////////////////////////////////////////////////////我是分割线15////////////////////////////////////////////////////// void delay(unsigned int t)//编写延时函数{while(--t);}。
心型流水灯的制作包括代码和电路图
#include <intrins.h>
#defineuint unsigned int
#defineuchar unsigned char
uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //逐个点亮0~7
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); //逆时逐段一个点亮
{
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;
}
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;
心形流水灯
假设无双面板,红色线拿导线连,用到32个LED灯和32个电阻,灯用5MM七彩快闪较好看,电阻220欧到1000欧皆可,我用的是220欧的,剩下的便是单片机最小系统的元件,这是程序//***********************************************// 本例通过两种方法实现相同的流水灯功能//***********************************************#include<reg51.h>//************8位将流水灯编码存于单片机程序存储中******************unsigned char code LED1_shun[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //顺时针点亮数据unsigned char code LED2_ni[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; //逆时针点亮数据unsigned int N=300;void delay(unsigned int n){unsigned int i;unsigned char j;for(i=0;i<n;i++)for(j=100;j>0;j--);}void Display_One(void){unsigned char i,j;unsigned char temp;for(j=0;j<2;j++){//------------------顺时针------------------temp=0x7F;for(i=0;i<8;i++){P0=temp;delay(N);temp=((temp>>1)|0x80);}P0=0xFF;temp=0xFE;for(i=0;i<8;i++){P1=temp;delay(N);temp=((temp<<1)|0x01);}P1=0xFF;temp=0xFE;for(i=0;i<8;i++){P2=temp;delay(N);temp=((temp<<1)|0x01);}P2=0xFF;temp=0xFE;for(i=0;i<8;i++){P3=temp;delay(N);temp=((temp<<1)|0x01);}P3=0xFF;//----------------------------逆时针------------------------ temp=0x7F;for(i=0;i<8;i++){P3=temp;delay(N);temp=((temp>>1)|0x80);}P3=0xFF;temp=0x7F;for(i=0;i<8;i++){P2=temp;delay(N);temp=((temp>>1)|0x80);}P2=0xFF;temp=0x7F;for(i=0;i<8;i++){P1=temp;delay(N);temp=((temp>>1)|0x80);}P1=0xFF;temp=0xFE;for(i=0;i<8;i++){P0=temp;delay(N);temp=((temp<<1)|0x01);}P0=0xFF;}}void Display_Two(void){unsigned char i,j;unsigned char temp1,temp2;for(j=0;j<2;j++){//------------------------------------------temp1=0x7F;for(i=0;i<8;i++){P0=temp1;P3=temp1;delay(N);temp1=((temp1>>1)|0x80);}P0=0xFF;P3=0xFF;temp1=0xFE;temp2=0x7F;for(i=0;i<8;i++){P1=temp1;P2=temp2;delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}P1=0xFF;P2=0xFF;//-------------------------------------------- temp1=0xFE;temp2=0x7F;for(i=0;i<8;i++){P1=temp2;P2=temp1;delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}P1=0xFF;P2=0xFF;temp1=0xFE;for(i=0;i<8;i++){P0=temp1;P3=temp1;delay(N);temp1=((temp1<<1)|0x01);}P0=0xFF;P3=0xFF;}}void Display_Three(void){unsigned char i,j;unsigned char temp1,temp2;for(j=0;j<4;j++){temp1=0x77;temp2=0xEE;for(i=0;i<4;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N+N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;delay(N);}}void Display_Four(void){unsigned char i,j;unsigned char temp1;for(j=0;j<2;j++){//------------------------------------------- temp1=0x7F;for(i=0;i<8;i++){P0=temp1;delay(N);temp1=(temp1>>1);}temp1=0xFE;for(i=0;i<8;i++){P1=temp1;delay(N);temp1=(temp1<<1);}temp1=0xFE;for(i=0;i<8;i++){P2=temp1;delay(N);temp1=(temp1<<1);}temp1=0xFE;for(i=0;i<8;i++){P3=temp1;delay(N);temp1=(temp1<<1);}//------------------------------------------------ temp1=0x80;for(i=0;i<8;i++){P0=temp1;delay(N);temp1=((temp1>>1)|0x80);}temp1=0x01;for(i=0;i<8;i++){P1=temp1;delay(N);temp1=((temp1<<1)|0x01);}temp1=0x01;for(i=0;i<8;i++){P2=temp1;delay(N);temp1=((temp1<<1)|0x01);}temp1=0x01;for(i=0;i<8;i++){P3=temp1;delay(N);temp1=((temp1<<1)|0x01);}}}void Display_Five(void){unsigned char i,j;unsigned char temp1,temp2;//-----------------------------------------------for(j=0;j<4;j++){temp1=0x07;temp2=0xE0;for(i=0;i<4;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N+N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}temp1=0x70;temp2=0x0E;for(i=0;i<4;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N+N);temp1=(temp1>>1);temp2=(temp2<<1);}delay(N);}//---------------------------------------------for(j=0;j<4;j++){temp1=0xE0;temp2=0x07;for(i=0;i<4;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N+N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}temp1=0x0E;temp2=0x70;for(i=0;i<4;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N+N);// temp1=((temp1<<1)|0x01);// temp2=((temp2>>1)|0x80);temp1=(temp1<<1);temp2=(temp2>>1);}delay(N);}}void Display_Six(void){unsigned char i;for(i=0;i<4;i++){P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(N+N+N);P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;delay(N+N+N);}}void Display_Seven(void){unsigned char i;unsigned char temp1,temp2;temp1=0x7F;temp2=0xFE;for(i=0;i<8;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}temp1=0x7F;temp2=0xFE;for(i=0;i<8;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}temp1=0x7F;temp2=0xFE;for(i=0;i<7;i++){P0=(temp1&0xFE);P1=(temp2&0x7F);P2=(temp2&0x7F);P3=(temp2&0x7F);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);temp1=0x7F;temp2=0xFE;for(i=0;i<6;i++){P0=(temp1&0xFC);P1=(temp2&0x3F);P2=(temp2&0x3F);P3=(temp2&0x3F);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01); }temp1=0x7F;temp2=0xFE;for(i=0;i<5;i++){P0=(temp1&0xF8);P1=(temp2&0x1F);P2=(temp2&0x1F);P3=(temp2&0x1F);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01); }temp1=0x7F;temp2=0xFE;for(i=0;i<4;i++){P0=(temp1&0xF0);P1=(temp2&0x0F);P2=(temp2&0x0F);P3=(temp2&0x0F);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01); }temp1=0x7F;temp2=0xFE;for(i=0;i<3;i++)P0=(temp1&0xE0);P1=(temp2&0x07);P2=(temp2&0x07);P3=(temp2&0x07);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}temp1=0x7F;temp2=0xFE;for(i=0;i<2;i++){P0=(temp1&0xC0);P1=(temp2&0x03);P2=(temp2&0x03);P3=(temp2&0x03);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}temp1=0x7F;temp2=0xFE;for(i=0;i<1;i++){P0=(temp1&0x80);P1=(temp2&0x01);P2=(temp2&0x01);P3=(temp2&0x01);delay(N);temp1=((temp1>>1)|0x80);temp2=((temp2<<1)|0x01);}delay(N+N+N);}void Display_Eight(void){unsigned char i;unsigned char temp1,temp2;temp1=0x7F;temp2=0xFE;for(i=0;i<1;i++){P0=(temp1&0x80);P1=(temp2&0x01);P2=(temp2&0x01);P3=(temp2&0x01);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xBF;temp2=0xFD;for(i=0;i<2;i++){P0=(temp1&0xC0);P1=(temp2&0x03);P2=(temp2&0x03);P3=(temp2&0x03);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xDF;temp2=0xFB;for(i=0;i<3;i++){P0=(temp1&0xE0);P1=(temp2&0x07);P2=(temp2&0x07);P3=(temp2&0x07);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xEF;temp2=0xF7;for(i=0;i<4;i++){P0=(temp1&0xF0);P1=(temp2&0x0F);P2=(temp2&0x0F);P3=(temp2&0x0F);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xF7;temp2=0xEF;for(i=0;i<5;i++){P0=(temp1&0xF8);P1=(temp2&0x1F);P2=(temp2&0x1F);P3=(temp2&0x1F);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xFB;temp2=0xDF;for(i=0;i<6;i++){P0=(temp1&0xFC);P1=(temp2&0x3F);P2=(temp2&0x3F);P3=(temp2&0x3F);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80); }temp1=0xFD;temp2=0xBF;for(i=0;i<7;i++){P0=(temp1&0xFE);P1=(temp2&0x7F);P2=(temp2&0x7F);P3=(temp2&0x7F);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}temp1=0xFE;temp2=0x7F;for(i=0;i<7;i++){P0=(temp1&0xFE);P1=(temp2&0x7F);P2=(temp2&0x7F);P3=(temp2&0x7F);delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}temp1=0xFE;temp2=0x7F;for(i=0;i<8;i++){P0=temp1;P1=temp2;P2=temp2;P3=temp2;delay(N);temp1=((temp1<<1)|0x01);temp2=((temp2>>1)|0x80);}delay(N+N+N);}void Display_Nine(void){unsigned char i;for(i=0;i<8;i++){P0=0x55;P1=0xAA;P2=0xAA;P3=0xAA;delay(N);P0=0xAA;P1=0x55;P3=0x55;delay(N);}}void Display_Ten(void) {unsigned char i;for(i=0;i<8;i++){P0=0x7E;P1=0x7E;P2=0x7E;P3=0x7E;delay(N);P0=0xBD;P1=0xBD;P2=0xBD;P3=0xBD;delay(N);P0=0xDB;P1=0xDB;P2=0xDB;P3=0xDB;delay(N);P0=0xE7;P1=0xE7;P2=0xE7;P3=0xE7;delay(N);P0=0xDB;P1=0xDB;P2=0xDB;P3=0xDB;delay(N);P0=0xBD;P1=0xBD;P2=0xBD;P3=0xBD;delay(N);P0=0x7E;P1=0x7E;P2=0x7E;delay(N);}P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}void Display_Twelve(void){unsigned char i;unsigned char temp1;temp1=0x7F;for(i=0;i<8;i++){P0=temp1;delay(N);temp1=(temp1>>1);}delay(N);temp1=0x80;for(i=0;i<8;i++){P0=temp1;delay(N);temp1=((temp1>>1)|0x80);}delay(N+N);temp1=0xFE;for(i=0;i<8;i++){P1=temp1;delay(N);temp1=(temp1<<1);}delay(N);temp1=0x01;for(i=0;i<8;i++){P1=temp1;delay(N);temp1=((temp1<<1)|0x01);}delay(N+N);P1=0xFF;temp1=0xFE;for(i=0;i<8;i++){P2=temp1;delay(N);temp1=(temp1<<1);}delay(N);temp1=0x01;for(i=0;i<8;i++){P2=temp1;delay(N);temp1=((temp1<<1)|0x01);}P2=0xFF;delay(N+N);temp1=0xFE;for(i=0;i<8;i++){P3=temp1;delay(N);temp1=(temp1<<1);}delay(N);temp1=0x01;for(i=0;i<8;i++){P3=temp1;delay(N);temp1=((temp1<<1)|0x01);}delay(N+N);P3=0xFF;}void main(void){// unsigned char i;// unsigned char LED_temp;while(1){Display_One();delay(N+N+N);Display_Two();delay(N+N+N);Display_Three();delay(N+N+N);Display_Four();delay(N+N+N);Display_Five();delay(N+N+N);Display_Six();delay(N+N+N);Display_Seven();delay(N+N+N);Display_Eight();delay(N+N+N);Display_Nine();delay(N+N+N);Display_Ten();delay(N+N+N); //Display_Twelve();delay(N+N+N);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• int main (void
•{
•
• uint32_t val = 0;
• {systemInit(); //系统初始化 */
•
beepOff (); //关闭蜂鸣器
/* 系统初始化,切勿删除
lcd_init(); //LCD初始化
LCD_ClearRam();
//清屏
LCD_DisplayStrings (0, 0, "Hello EveryOne!");//列、行、显示的字符串
LCD_DisplayChinese ( 0, 1, "Relay 测试!" ); //中文显示
delayms(200); //加延时
} while (1) {
val=gpioGetValue(CFG_SW1_PORT,CFG_SW1_PIN); if(!val) { Led1On();
RelayOn();
delayms(500);
}
else
{
Led1Off();
RelayOff();
delayms(400);
}
}
}
调试
• 硬件调试
• 我们在硬件电路的制作和调试中发现并解决了很多问题:(1)由于 过于考虑电路板布局的美观,导致增加了焊接时布线的困难,最终我 们通过改变元件位置合理布线解决了这个问题;(2)单片机引脚非 常紧凑,使焊点不容易固定,容易查错引脚,这就锻炼了我们的细心 ;容易造成多点短路或虚焊,因此我们又降低烙铁的温度;(3)刚 开始插件时没有注意电解电容、发光二极管等有极性元件的正负,最 后用万用表测量它们的阻值和电压才找到接反的元件;(4)焊接过 久,导致元器件 损坏,主要是不够熟练;(5)电路板不够简洁、条 理,焊接不够熟练; 因此,我们在焊接和后续调试过程并没有想象 中的顺利。但最终经过我们一遍一遍的调试,终于制作出了一块基本 合格的电路板。
• 软件调试
• 由于继电器控制老师上课讲过,所以做起来没有那么困难一次就调试 成功。
指尖上的设计
心得体会
• 三周的课程设计结束了,在这次的课程设计中不 仅检验了我所学习的知识,也培养了我如何去把 握一件事情,如何去做一件事情,又如何完成一 件事情。在设计过程中,与同学分工设计,和同 学们相互探讨,相互学习,相互监督。学会了合 作,学会了运筹帷幄,学会了宽容,学会了理解 ,也学会了做人与处世。
仰望星空 艾茜茜茜茜
thank you
• 正面图
背面图
型心流水灯成品
继电器控制程序代码
• #include "LPC11xx.h" • #include "gpio.h" • #include "lcd.h" • #include "config.h"
• extern void delayms (uint32_t ulTime); //外部函数定义 • extern void systemInit(void); • extern void beepOff(void); • extern void beepOn(void); • extern void RelayOn(void); • extern void RelayOff(void); • extern void Led1On(void); • extern void Led1Off(void);
电)
设计电路图
PCB图
元器件清单
• AT89C51 1片
电阻 33只(1K:32只,10K:1只)
• 40脚IC座 1只
22PF瓷片电容 2只
• 7x9cm万能板1片 10uF电解质电容一只
• DC座 1只
12M晶振 1只
• 开关 1只
细导线 1米
• 发光二极管 32只 USB电源线 1条
焊接好的实物
继电器控制心型流水灯
第11小组:吴强 张茜茜
设计背景
• 流水灯在现代社会中有广泛的应用,大型 电子广告牌、霓虹灯、指示牌和工业控制 与普适计算、广 泛应用于网络的融合中,也因此被称为继 计算机、互联网之后世界信息产业发展的 第三次浪潮。将流水灯延伸到物联网的学 习对巩固和扩展电子知识有重要意义。
• “千里之行始于足下”,通过这次课程设计,我 深深体会到这句千古名言的真正含义.我今天认 真的进行课程设计,学会脚踏实地迈开这一步, 就是为明天能稳健地在社会大潮中奔跑打下坚实 的基础。
致慧慧老师
• 三尺讲台,三寸舌,三寸笔,三千桃李;十年树 木,十载风,十载雨,十万栋梁。
• 这学期课程设计中,慧慧老师给予了细心的指导 与帮助,使我克服了很多困难终于完成了设计的 制作。慧慧老师广泛的知识、严谨求实的治学态 度及兢兢业业的工作态度和忘我的敬业精神,给 我留了深刻的印象。在设计期间,慧慧老师几乎 每天都来到教室非常令人感动。马上就要离开学 校了心中不由产生“ 相逢一见太匆匆,校内繁花 几度红。厚谊常存魂梦里,深恩永志我心中”之 感。
总体设计思路
• 利用89C51设计一个控制器,控制32个发光 二极管的亮灭。
• 再用试验箱继电器模块控制型心流水灯供 电。
• 单片机最小系统 • 1.晶振,(用于计时,与两个电容并联使用, • 电容大小由晶振决定,一般用22pF) • 2.复位电路(用于复位) • 3.电源(用于供电,一般用电脑的USB口供