简易舞台灯光控制箱Word文档下载推荐.docx
- 文档编号:17901759
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:32
- 大小:552.89KB
简易舞台灯光控制箱Word文档下载推荐.docx
《简易舞台灯光控制箱Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简易舞台灯光控制箱Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 舞台灯光 控制箱