当前位置:文档之家› 基于AT89C51单片机的彩灯控制方案设计(含源文件)

基于AT89C51单片机的彩灯控制方案设计(含源文件)

机械电子工程系毕业设计报告
目录
引言 (1)
设计目的任务和要求 (1)
总体设计方案 (2)
结语 (10)
一、引言
随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。

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

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

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

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

因此有必要对现有的彩灯控制器进行改进。

我们采用一种基于AT89C51单片机的彩灯控制方案,实现对LED 彩灯的控制。

本方案以AT89C51单片机作为主控核心,与显示、驱动等模块组成核心主控制模块。

在主控模块上设有24个LED显示灯,根据用户需要可以编写若干种亮灯模式,利用程序定时实现各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。

所以亮灯模式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。

与普通LED彩灯相比,具有体积小、价格低、低能耗等优点。

二、设计目的任务和要求
1. 掌握单片机AT89C51的逻辑电路的设计方法,灵活运用理论
知识。

2. 根据AT89C51单片机的功能设计一个彩灯逻辑电路,能够显
示不同的形状。

3. 提高同学们的数字逻辑系统设计能力和实际动手能力。

三、总体设计方案
1.系统功能
LED彩灯分为2部分,即彩灯控制器(AT89C51单片机)和管内LED板模块(受控模块)。

彩灯控制器可直接与220 V交流市电相连接,经过变压器变换,输出直流工作电压,一方面为主控模块单片机系统(彩灯控制器)提供5 V工作电源,另一方面驱动LED彩灯。

整个系统工作由软件程序控制运行,根据需要,用户可以在主控模块单片机系统内编程设定亮灯时间和灯光闪动频率。

单片机上电后系统经过初始化,进入用户设定的模式状态下,用户可以根据个人爱好及不同场合的需要来编程指定调用彩灯控制模式,并且可以改变每种模式的闪动时间、闪动频率。

在确定的工作状态下,LED彩灯控制器按照程序设定好的亮灯花样程序数据表table _i按顺序调用执行,从第table_1亮灯模式开始工作,自table_1到table_2……到table_n为一个亮灯周期,然后再回到table_1循环继续工作。

整个n种亮灯模式时间可以看作一个大周期T,其中的每一种花样工作模式table_i(i=1,2,…,n)时间为小周期,对于每一个彩灯模式都有一个独立的工作代码table_i,它设定了LED
灯的点亮时刻和熄灭时刻,以及模式工作时间以及该模式LED 闪烁频率。

因此在LED 彩灯上电工作后,用户可以方便地通过主控模块控制LED 亮灯代码,根据实际应用需要在不同场合和时间来改变彩灯闪亮效果,以便符合实际需要。

此外如果用户对某一种模式感兴趣需要仔细观看该种亮灯模式,可以通过编程选定任意第table_i 模式使系统循环重复工作在该花样模式下。

图1 系统原理框图
2.硬件设计
新型LED 彩灯系统包括2大部分,即LED 彩灯控制器(89C51主控模块)和LED 彩灯管(32个LED 灯)。

前者是主控模块,编程控制功能,并利用89C51的4个端口输出控制信号;后者是受控模块,根据不同的控制信号亮灯。

系统编程 主控电路
内圈LED

外圈LED
灯 8个LED 灯
24个LED 灯
-
主控模块电路如上图所示。

主控模块主要设计器件有89C51单片机, LED板模块设计主要器件有LED彩灯(红、黄、绿、蓝)等。

根据实际应用彩灯长度需要,可将不同数量LED模块实现级连,组成一个更加完整的LED彩灯。

将LED灯排列成不同的形状就得到更多的花样模式效果,这样具有很好的动感视觉效果。

3.软件设计
这种LED彩灯控制器最大特点在于所有亮灯模式均由软件控制
完成。

系统中软件可以分为主程序和彩灯数据库table-1、table-2。

上电后按顺序调用Model_i花样亮灯模式流程为主程序,以一个del
ay定时为中断服务子程序。

在这个定时基础上,可以根据需要来确定各种模式工作时间,以及确定在各种亮灯模式table_i内点亮的频率等。

整个系统软件由主程序( Main)、各个模式子程序(table-1、table-2)、延时中断服务子程序(delay)、显示模块程序组成。

除了定时中断之外,程序的大部份时间是在处理LED模式的查表和LED显示的延时。

table-1、table-2中共有85种不同的LED亮灯模式,程序按顺序查表得出此时LED灯的亮灯顺序,输出到不同的端口,驱动相应的LED灯。

电路图仿真图如下:
程序如下:
#include<reg51.h>
unsigned char i,j,a,b,c;
unsigned char code table_1[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f, //左移两次//
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe, //右移两次//
0x00,0xff,0x00,0xff,0x00}; //闪烁两次//
unsigned char code table_2[]={0x00,0xff,0x00,0x00,
0x00,0xff,0x00,0x00,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfc,0xf3,0xcf,0x3f, 0xfa,0xf5,0xaf,0x5f, 0xf0,0x0f,0x7f,0xbf,
0xdf,0xef,0xf7,0xfb,
0xfd,0xfe,0x3f,0xcf,
0xf3,0xfc,0x5f,0xaf,
0xf5,0xfa,0x0f,0xf0,
0x00,0xff,0x00,0xff,0x00}; void delay()
{ for(a=10;a>0;a--)
for(b=20;b>0;b--)
for(c=248;c>0;c--)
{};}
void main()
{ i=0;
j=0;
P1=0x00;
P2=0x00;
P3=0x00;
while(1)
{ for(j=0;j<49;j++)
{P0=table_2[j];
d elay();
delay();
}
for(i=0;i<=36;i++)
{P1=table_1[i];
P2=table_1[i];
P3=table_1[i];
delay();
}
}
}
四.结语
与一般的LED彩灯相比,该种彩灯具有更好的灯光装饰效果,性价比更高,与普通的全硬件LED彩灯相比具有更好的经济效益。

应用主控模块输出的控制信号去控制灯管内的LED板模块工作,使得产品性能稳定,便以安装容易操作。

由于控制程序存储在89C51单片机的电可擦除Flash闪存EPROM中,如果用户需要更改系统的亮灯模式table_i,无须改变系统硬件电路,只需修改其中程序即可,是一种很有发展前途的彩灯控制器。

参考文献
蔡美琴,张为民,沈新群等.MCS51系列单片机系统及其应用[M].北京:高等教育出版社,1992.。

相关主题