当前位置:文档之家› 四路彩灯控制系统的设计

四路彩灯控制系统的设计

目录0.前言 (1)1.总体方案的设计 (1)2.硬件电路的设计 (2)2.1 时钟电路设计 (2)2.2 单片机 (2)2.3 LED彩灯 (4)3.软件设计 (4)4.调试分析及说明 (5)4.1第一节拍的调试 (5)4.2第二节拍的调试 (6)4.3第三节拍的调试 (6)5.结论 (6)参考文献 (6)课设体会 (8)附录1 电路原理 (9)附录2 程序清单 (10)四路彩灯控制系统的设计许山沈阳航空航天大学自动化学院摘要:彩灯是我国普遍流行的传统的民间的综合性的工艺品。

彩灯艺术也就是灯的综合性的装饰艺术。

LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

这里我们所设计的四路彩灯控制系统是8051单片机作为控制核心,电源开关等较少的辅助硬件电路相结合,利用软件实现对彩灯的控制。

本系统具有硬件少、体积小、电路结构简单等优点,而且方便调节亮灯模式,只需要修改软件程序,无需修改硬件电路等。

关键词:单片机;四路彩灯;控制0.前言近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

尤其是单片机在最小系统的应用越来越多,也越是成熟。

LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。

但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此需要我们改进,该为单片机作为控制核心的最小系统。

1.总体方案的设计设计一个四路彩灯控制系统,系统功能如下:(1)、采用单片机作为控制核心电路。

(2)、彩灯的控制由三节拍组成:第一拍时从第一路到第四路每间隔1s逐次点亮,第二拍时从第四路到第一路每间隔1s逐次熄灭,第三拍时第一路到第四路同时0.5s点亮,0.5s熄灭,20次后重复前面的过程。

该系统由89C51、BUTTON、LED彩灯等构成,采用晶振电路作为驱动电路,利用单片机的P1端口作为输出口,这样就无需再外接上拉电阻。

四路彩灯采用共阳极接电源,阴极分别接P1.0到P1.3。

通过控制P1端口的输出高低电平来实现点亮和熄灭彩灯,系统中软件部分比较简单,由一个入口函数和四个子函数构成。

图1 系统结构框图从系统框图可以看出本次设计的核心就是单片机,可以说是单片机的简单应用。

通过软件来控制单片机的输出,高低电平的输出决定彩灯亮灭。

2.硬件电路的设计2.1 时钟电路设计单片机利用外部12MHZ晶振构成振荡电路作为时钟源,时钟电路的原理如下图:图2 时钟电路2.2 单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

外形及引脚排列如下图:图3 单片机1)四个I/O口P0口有三个功能:1、外部扩展存储器时,当作数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口:只做I/O口使用:其内部有上拉电阻。

P2口有两个功能:1、扩展外部存储器时,当作地址总线使用;2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。

有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢?这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。

2)汇编指令指令由于操作码和操作数。

分为单字节指令,双字节指令,三字节指令。

3)寻址方式:立即寻址:操作数包含在指令字节中,指令操作码后面字节的内容就是操作数本身。

直接寻址:1内部数据存储器的低128个字节单元(00H-7FH)2位地址空间;3专用功能寄存器寄存器寻址:由指令指出某一个寄存器中的内容作为操作数,这种寻址方式称为寄存器寻址。

寄存器间接寻址:由指令指出某一个寄存器的内容作为操作数的地址。

基址寄存器加变址寄存器间接寻址:用于访问程序存储器中的数据表格。

相对寻址:以PC的内容作为基地址,加上指令中给定的偏移量所得结果作为转移地址,只适用于双字节转移指令。

2.3 LED彩灯单片机的P1.0到P1.3分别外接彩灯D3到D0的阴极,彩灯共阳极接电源。

图4 彩灯的设计3.软件设计软件主要由一个主程序和四个子程序构成:入口程序、延时子程序、第一节拍子程序、第二节拍子程序和第三节拍子程序。

系统流程图如下:图5 软件系统流程图设计思路:根据系统设计要求,很容易看出系统由三大模块组成,即三个节拍。

要求用单片机作为控制核心,那么只需要选取其中一个端口来控制四路彩灯。

考虑系统的性价比,这里我们就不选P0端口,选取P1端口作为控制端(P1到P4端口的输出级都接有内部的上拉电阻)。

单片机的P1.0到P1.3分别外接彩灯D3到D0的阴极,彩灯共阳极接电源,根据“共阳极,阴极谁低谁导通”来实现LED 的亮灭。

4.调试分析及说明4.1第一节拍的调试图6 第一节拍运行结果图4.2第二节拍的调试图7 第二节拍运行结果图4.3第三节拍的调试图8 第三节拍运行结果图5.结论本次课程设计顺利完成,任务要求的三个节拍(第一拍时从第一路到第四路每间隔1s逐次点亮,第二拍时从第四路到第一路每间隔1s逐次熄灭,第三拍时第一路到第四路同时0.5s点亮,0.5s熄灭,20次后重复前面的过程。

)全都完美的实现了。

硬件的运行也很完美的完成了,所有要求功能都实现了,虽然实物做的不美观。

参考文献[1]李建忠《单片机原理及应用》西安:西安电子科技大学出版社 2001[2]高峰《单片微型计算机原理与接口技术》北京:电子工业出版社 1998[3]邹逢兴《单片机应用新技术教程》北京:高等教育出版社 1997[4]朱宇光《16位微型计算机原理接口及其应用》北京:电子工业出版社 2003[5]吴秀清《微型计算机原理与接口技术》北京:中国科学技术出版社 2001[6]邓亚平《微型计算机接口技术》北京:清华大学出版社 2000[7]王迎旭《单片机原理及及应用》北京:机械工业出版社 2003课设体会两周的时间就这么的过去了,课程设计也就这样的结束。

本次课设非常的顺利,不仅很好的完成设计,更是做出了实物,虽然实物做的不是完美。

通过本次课设让我又重新的学习了一遍单片机等相关知识,更是提高了我的动手能力,完成彩灯的设计制作,为明年的毕业设计打下了一定的基础和信心。

本次课设中在动手制作这一环节发现了很多问题,也学了很多,动手做一做还是非常有必要和益处的。

学再多的理论知识,如果不能做出东西来,那么就和没有学的人几乎一样。

此次动手环节,由于自己的粗心大意,烧坏了两个LED灯和一个单片机。

没有接限流电阻,烧了灯,单片机也插反了。

由于焊接技术不行,直接浪费了一块板。

没有做之前,个人认为如此简单的最小系统一个小时就能完成,结果确实整整半天时间才完成。

虽然过程是痛苦的,但通过这个痛苦的环节我学到了很多,比如排版布局的技巧、开关等器件的焊接法、简单系统检查错误和错误分析。

软件的设计让我对C语言看法改变了不少,让我认识到它的重要性,同时也发现了我对汇编语言的一片茫然。

汇编语言一点不会,在以后的日子里需要加紧恶补一下汇编语言了。

即将毕业走向社会,我相信多会一个语言,而且是如此重要的语言,肯定能给我带来不一样的竞争力。

最后感谢老师的指导![2013年1月9日完成]附录1 电路原理附录2 程序清单#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;void Delay_ms(uint xms){uchar i;while(xms--){for(i=110;i>0;i--);}}void Dis_1(){Delay_ms(1000);led1=0;Delay_ms(1000);led2=0;Delay_ms(1000);led3=0;Delay_ms(1000);led4=0;Delay_ms(1000);}void Dis_2()Delay_ms(1000);led4=1;Delay_ms(1000);led3=1;Delay_ms(1000);led2=1;Delay_ms(1000);led1=1;Delay_ms(1000);}void Dis_3(){int i=20;while(i--){Delay_ms(500);P1=0xf0;Delay_ms(500);P1=0xff;Delay_ms(500);// continue;}}void main(){P1=0xff;while(1){Dis_1();Dis_2();Dis_3();}}。

相关主题