简易舞台灯光控制箱Word文档下载推荐.docx

上传人:b****6 文档编号:17901759 上传时间:2022-12-12 格式:DOCX 页数:32 大小:552.89KB
下载 相关 举报
简易舞台灯光控制箱Word文档下载推荐.docx_第1页
第1页 / 共32页
简易舞台灯光控制箱Word文档下载推荐.docx_第2页
第2页 / 共32页
简易舞台灯光控制箱Word文档下载推荐.docx_第3页
第3页 / 共32页
简易舞台灯光控制箱Word文档下载推荐.docx_第4页
第4页 / 共32页
简易舞台灯光控制箱Word文档下载推荐.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

简易舞台灯光控制箱Word文档下载推荐.docx

《简易舞台灯光控制箱Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简易舞台灯光控制箱Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。

简易舞台灯光控制箱Word文档下载推荐.docx

5、组合开关键(D键):

按一下组合开关键后,再分别按A、B、C键即可打开相应的开关。

(2)操作说明

灯光箱正常通电情况下:

1、按A,B键可以按自己意愿让地毯两边的灯依次点亮或熄灭;

2、按C键既进入模式选择,系统默认5种模式供用户选择,每按一次即可切换模式,第6次按下即退出选择;

3、按下D键,进入组合开关模式,再分别按A,B,C即可实现分别控制3组不同的灯的功能。

(3)显示说明

1、7805稳压管上,接了一个LED灯,作为该电控板正常工作的指示灯。

2、为了增加箱子的趣味性,用一块现成的电控板作为箱子的显示板,显示板会随着模式的改变而出现不同显示模式,非常吸引眼球。

3、组合模式指示灯,当按下“D”键的时候,该指示灯即亮起,提醒用户已进入组合按键模式。

二、软硬件总体设计

(三)系统框图

图2.1系统框图

(四)硬件总体设计

图2.2.1完成后电控板

(五)软件总体设计

图2.3软件总体设计流程图

三、简易舞台灯光控制箱的软硬件设计分析

(六)概述

灯光箱的硬件设计并没有你们想象中的那么复杂,要想实现随意控制闭合与断开,只有两种方法,一种就是有线控制,即用人手工控制开关的闭合,从而达到我们所想要的效果;

第二种就是无线控制,即用红外线遥控或无线电遥控控制灯组的开关。

把场地的原因考虑进去,排除了用有线控制这种控制方法,因为现场环境是复杂的,用线来把灯组和控制器都连接上是不合理的,因始排除这控制方法。

所以只能选择无线遥控这种方式,无线遥控常用有两种,一种是家庭使用比较多的,红外线遥控,红外线遥控的优点是接收快,反应迅速,而缺点也显而易见,就是如果有东西挡在接收点前,即无法接收。

无线电遥控模式相对来说自由性比较大,能在大范围内接收与发射,但反应没有红外线这种模式快。

同样的结合了场地的需要,如果灯光箱前面刚好有人挡住了,我不就不能控制灯组了吗?

所以最终还是选择了无线电遥控这种控制方法。

使用的模式决定了,接下来就是定设计的主体思路了,有无线电的加入,必然离不开单片机,有单片机的使用,必然需要稳压电路;

用继电器控制开关闭合,因为继电器工作电压是12VDC,而单片机工作电压为5V,所以也会用到反相器.......思路就慢慢的,有条理的建立起来。

在接下来的论述中,我会详细讲解本设计中的元器件作用及各部分的相互关系。

图3.1.1舞台灯光控制箱成品图

(七)主芯片管脚

(4)管脚配置

图3.2.1主芯片各管脚图

该单片机的特点:

1、增强型6时钟/机器周期,12时钟/机器周期8051CPU

2、工作电压:

5.5V-3.4V(5V单片机)/3.8V-2.0V(3V单片机)

3、工作频率范围:

0-40MHz,相当于普通8051的0~80MHz.实际工作频率可达48MHz.

4、用户应用程序空间4K/8K/13K/16K/20K/32K/64K字节

5、片上集成1280字节/512字节RAM

6、通用I/O口(32/36个),复位后为:

P1、P2、P3、P4是准双向口/弱上拉(普通8051传统I/O口).PO口是开漏输出,作为总线扩展使用时,不用加上拉电阻,作为I/O口使用时,需加上拉电子.

7、ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器,可通过串口(P3.0、P3.1)直接下载用户程序,8K程序3S即可完成一片.

8、EEPROM功能

9、Wantchdog功能

10、内部集成MAX810专用复位电路(D版本才有),外部晶体20M以下时,可省外部复位电路

11、共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用

12、外部中断4路,下降沿中断或低电平触发中断,POWERDOWN模式可由外部中断低电平触发中断方式唤醒

13、通用异步串口(UART),还可用定时器软件实现多个UART

14、工作温度范围:

0-75'

C/-40-+85'

C

15、封装:

LQFP-44,PDIP-40,PLCC-44,PQFP-44

图3.2.2STC89C52RCPDIP-40封装图

(5)电气特性

图3.2电气特性参数表

(6)各部分电路原理分析

图3.3.1主芯片电路

如上图3.1.1所示:

该电路图为主芯片电路;

单片机正常工作必须满足3个条件,1)复位电路2)时钟电路3)电源电路如图所示,单片机左上方电路为复位电路,下方的电路为由晶振组成的时钟电路,电源电路就是直接给单片机上5V直流电。

图3.3.2反向驱动电路

该电路图是由两块反向芯片为核心组成的反向驱动电路,两块反向芯片的型号分别是2003APG和2083APG组成的,反向芯片的作用为:

输入高电平,输出低电平,输入低电平,输出高电平。

2003有8对管脚,其中1对为供电用管脚,其他7对都为反向管脚,而2083比2003多一对反向管脚;

通过把两块反向芯片与12个继电器相连,即可达到用5V直流电控制220V的交流,弱电控制强电的目的。

图3.3.37805稳压电路

该原理图为7805稳压电路:

POWEROUT输入12V直流电经过1000UF电解电容和104陶瓷电容滤波滤波以后,进入稳压管7805,出来以后继续经过两个电容滤波,得到平滑的5V直流电,供单片机使用。

图3.3.4315MHz无线电收发电路

上图是除了主芯片以外的另一块核心芯片:

315MHz无线收发模块,该模块是一块现成的PCB板

图3.3.574LS04芯片

74LS04芯片,作用与2003反向芯片相似;

IC2为315无线电模块,是成品模块,直接从商家手上买回来套用。

图3.3.6电源电路

电源电路:

市电220V交流通过3.15A保险管,压敏电阻,热敏电阻,滤波电容组成的保护电路,保护了PCB板的正常工作与安全,包括过流保护,过压保护等保护措施。

(八)软件编写

选择STC89C52的原因之一就是这个芯片不用专门的编写设备,用一个普通的编程实验盒即可拷录程序。

程序的编写也不复杂,只要有一台电脑,然后下载相应的编程软件,即可达到编写的目的,相比其他单片机,更适合大众使用。

在大学的时候简单的学习了汇编语言,知道了软件的基本构成,还有语句的简单运用。

但在实际操作中,并没有书本上学的那么简单,毕竟使用的环境不一样,你需要举一反三才能把原理搞明白。

接下来的程序,在我初次编写以后,经朋友帮助多次修改而成的,能正常运行的程序。

我会详细的讲解每个程序语句的组成及用法。

(九)程序分析

单片机内程序:

#include<

reg52.h>

intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

//第一第二句是头文件,第三第四句是宏定义语句,对单片机的宏定义,有头文件和宏定义语句,才能让程序正常运作并简化程序

sbitkeyA=P1^4;

sbitkeyB=P1^5;

sbitkeyC=P1^6;

sbitkeyD=P1^7;

sbitP10=P1^0;

//游侠灯

sbitP11=P1^1;

//低速灯

sbitP12=P1^2;

//高速灯

sbitP13=P1^3;

//D键按下时的提示灯

sbitP23=P2^3;

sbitP22=P2^2;

sbitP21=P2^1;

inttemp,time;

ucharkeyA_flag,keyB_flag,keyC_flag,keyC_flag2,keyC_flag3,keyD_flag,keyD_flagC,keyD_flagB,keyD_flagA,mode_flag,temp1,mode,tt,t1;

//位定义,对单片机内的管教进行相关的定义,P14—P17管脚为遥控模块输入管脚,然后到各指示灯的定义,等

ucharcodetable[]={

0x00,0x01,0x03,0x07,0x0f,

0x1f,0x3f,0x7f,0xff};

voiddelay(uintz)//延时子程序

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=124;

y>

y--);

}

//延时子程序,起延时作用,为下面按键扫描程序作铺垫

voidinit()//初始化子程序

P0=0x00;

temp=0;

temp1=0;

keyD_flagA=0;

keyD_flagB=0;

keyD_flagC=0;

mode_flag=0;

keyD_flag=0;

keyC_flag=0;

//time=15;

mode=0;

//模式清0

//IT0=1;

//外中断跳变产生中断

//EX0=1;

TMOD=0x01;

//设置定时器0

TH0=(65536-50000)/256;

//设置定时器的初值

TL0=(65536-50000)%256;

EA=1;

//打开总中断EA为总中断口

ET0=1;

//ET0为定时允许位

TR0=0;

//TR0为定时控制位

voidkey()//按键扫描与处理子程序

if(keyD==0)

{

delay(10);

if(keyD==0)

{

while(!

keyD);

//松手检测

keyD_flag++;

if(keyD_flag==1)

P13=0;

if(keyD_flag==2)

{

keyD_flag=0;

P13=1;

}

}

}

if(keyA==0)//加1键按下时

if(keyA==0)

keyA);

//松手检测

if(keyD_flag==0)

if(keyA_flag==0&

mode_flag==0)//模式键没按下时,按下A键时灯加1//有加1时才允许减1

{

temp++;

keyB_flag=0;

P10=~P10;

if(temp==8)//判断是否加了8次

{

temp=8;

//加够了8次就不能再加了

keyA_flag=1;

}

}

/*if(mode_flag==1)//模式键按下时,按下A键时加速

time=time+5;

//P12=1;

if(time==40)

time=5;

//P12=0;

}*/

keyD_flagA++;

//if(keyD_flagA==1)

//{

P21=1;

//LAMP3亮

//}

if(keyD_flagA==2)

P21=0;

keyD_flagA=0;

}

if(keyB==0)

if(keyB==0)

keyB);

if(keyB_flag==0&

mode_flag==0)

temp--;

keyA_flag=0;

if(temp==-1)

temp=0;

keyB_flag=1;

/*if(mode_flag==1)

time=time-5;

//P11=1;

if(time==0)

time=35;

//P11=0;

}

keyD_flagB++;

//if(keyD_flagB==1)

P22=1;

//LAMP2亮

if(keyD_flagB==2)

P22=0;

keyD_flagB=0;

}

if(keyC==0)//模式键按下时

if(keyC==0)

keyC);

keyC_flag++;

if(keyC_flag==1)//按下第1次时开启模式循环显示

time=5;

//第一种模式循环时间为0.25s

tt=0;

mode_flag=1;

temp=0;

temp1=0x01;

P0=temp1;

TR0=1;

//打开定时器

if(keyC_flag==2)

P0=0;

temp1=0;

time=15;

//第二种模式循环时间为0.75s

}

if(keyC_flag==3)

temp1=0xfe;

//对P0口赋一个初值,为下一个模式准备

mode=2;

t1=0;

//第三种模式循环时间为0.25s

if(keyC_flag==4)

P0=0x55;

mode=4;

P10=0;

//第四种模式循环时间为0.75s

if(keyC_flag==5)

TR0=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time=2;

//第五种模式循环时间为0.1s

if(keyC_flag==6)//按下第6次时关闭模式显示

//关闭定时器

keyC_flag=0;

mode_flag=0;

keyD_flag=0;

mode=0;

P11=1;

P12=1;

keyD_flagC++;

//if(keyD_flagC==1)

P23=1;

//LAMP1亮

if(keyD_flagC==2)

P23=0;

keyD_flagC=0;

voiddisplay()

if(keyC_flag==0)

P0=table[temp];

voidmain()

init();

while

(1)

key();

display();

voidtimer0()interrupt1//中断子程序

tt++;

if(tt==time)//50ms中断一次,20次就为1s

tt=0;

if(keyC_flag==1)//第一种模式:

点亮一个灯左移8次,然后右移8次,如此循环3次

if(mode==0)//左移

t1++;

temp1=_crol_(temp1,1);

//左移指令

P0=temp1;

if(t1==8)//判断是否左移了8次,是的话就退出左移

mode=1;

if(mode==1)//右移

temp1=_cror_(temp1,1);

//右移指令

if(t1==8)//判断是否右移了8次,是的话就退出右移

}

if(keyC_flag==2)//第二种模式:

全亮0.5S然后全灭0.5S,循环4次

P0=~P0;

//对P0口取反

if(keyC_flag==3)//第三种模式:

灭一个灯左移8次,然后右移8次,如此循环3次

if(mode==2)

if(t1==8)

mode=3;

P10=1;

if(mode==3)

if(keyC_flag==4)//第四种模式:

1357全亮0.5S然后2468全亮0.5S,循环4次

//对P0口取反

if(keyC_flag==5)

if(mode==4)

temp++;

P0=table[temp];

if(temp==9)//判断是否加了8次

mode=5;

if(mode==5)

temp--;

if(temp==0)//判断是否减了8次

}

}

}

四、软硬件测试

(一十)硬件测试

电路板焊好以后,不一定能够正常地工作,在投入使用之前必须进行硬件的调试检查,调试检查包括电路通断检查,电压电流的检查,芯片安装是否正确,等等。

电路板在通电之前必须先检查是否存在短路或断路的现象,如果存在短路或断路的现象必须手工进行修正。

确认没有存在短路或断路的现象后,可以给电路板通电进行静态测试。

静态测试时,对电路板的关键点电压进行测试,这些关键点电压有电源电压,复位电路电压,晶振电路电压,等。

(一十一)软件测试

软件测试是一个复杂的步骤,因为你需要非常细心才能发现程序中的错误,因为当你顺着思路写程序的时候,有时候会不小心的犯一些基本的错误,好像漏了一个句号,语句字母的输入错误等。

下面我将会把我编写程序时出现的问题作一个简单的归纳。

1)电控板初次上电时所有灯闪一下,除了第9,10,11号等没闪。

初次检查没发现大的问题,排除了程序结构的错误。

再次检查,小问题也没有,原来以为会有漏符号,语句输入错误这些发生,发现也没出现,排除了程序的编写错误。

于是请教我指导我设计的指导老师,经过几番周折,终于知道这不是我程序的编写错误或者硬件的不合理组合。

是由于主芯片的管脚分布,主芯片一共有4组I/O端口,分别为P0、P1、P2、P3口,P1、P2、P3口为内置10开上拉电阻,P0口没有接上拉电阻,这样可以给予顾客不同的选择,因为我设计和布线的需要,我选择了P0、P1和P2口,前面8个继电器都是通过P0口来控制,P0口外接10K排阻,所以在上电的瞬间,芯片P0口输出低电平,2003反向,继电器吸合,所以会有一瞬间的点亮。

2)在逐次递增闪烁模式下,灯的闪烁频率太高太快,这样会导致继电器长期吸合从而造成打火现象。

于是查找相关的程序语句:

中断子程序:

TH0=(6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1