调光灯设计
调光灯设计,调光,设计
2009年江西省大学生电子设计竞赛试题(C)(高职)遥控调光灯设计报告(C题)参赛学校:江西渝州科技职业学院参赛队员:翁怡冬 谢金朝 彭赞华日期:2009年5月27日晚8:00摘要 在现代社会发展中环保节能是必然的发展的趋势。电子遥控技术的发展使现代人的生活习惯慢慢走向便利,本设计就设计一款可遥控调光。它主要以51单片机为主控芯片,由ADC0809对旋转亮度旋钮进转把模拟量换成数字量。使用PWM驱动方式,通过调速PWM脉冲的脉宽比控制双向可控硅的导通角从而达到LED亮度连续可调。遥控部分使用AT89C2051单片机进行红外编码调制提高抗干扰能力,接收用红外一体化接收头,由51单片机对信号进行解码,实现整机控制。关键词:ADC0809 PWM调制 红外编码 连续可调 目录摘要21方案论证41方案论述42 方案论证42硬件电路的设计41 电路方框图42主要单元电路53软件的部分设计6 1遥控红外编码部分72主机解码部分105系统测试121 主机功能测试12 2 从机功能测试126总结137参考文献138附录13一 方案论证1方案论述方案一:手动调节由电位器直接控制双向可控硅的导通角,遥控发射部分用NE555多谐振荡电路控制红外发光管,接收部分用SONYCX20106红外接收芯片,在经过分频电路,再来通过切换电阻阻值来调节可控硅的导通角。 方案二:手动调节由电位器直接控制可控硅的导通角完成,红外发射部分由小单片机AT89C2051来完成,接收有红外一体化接收,然后在由单片机完成数据处理,用单片机的I/O切换不同阻值电阻来控制可控硅的导通角。 方案三:手动调节先由电位器来调节一个模拟量,在由AD0809来转换成一个数字量,再由单片机来处理。红外发射部分还是由小单片机AT89C2051来完成,接收部分是由红外一体化接收,在由单片机处理,用PWM调制方式控制输出电压。2. 方案论证 (1) 方案一里面电路简单,但达不到题目要求采用单片机为主控芯片的要求,功能也不能完全实现,所以舍弃此方案。 (2) 方案二电路简单易控制,但在手动调节和遥控调节会互相干扰,达不到便利的目的,所以就舍弃此方案。 (3) 方案三电路较复杂,程序控制也较难,在成本控制方面因为使用了AD0809所以也不是很理想。但在功能方面手动调节和遥控调可以相互转换。功能也就比较强大,达到题意的基本要求。综上所述这里采用方案三。二 硬件电路的设计1. 电路方框图:(1)主机电路方框图:时钟电路 红外接收AD0809模数转换电路可控硅调光电路复位电路单片机(2)遥控电路方框图:AT89C2051时钟电路复位电路键盘电路红外发射电路2. 主要单元电路(1)调光电路从单片机P1.6出来的PWM调制信号控制可控硅的导通角,导通角越大灯的亮度越高。(2)模数转换电路(3)遥控电路三 软件设计:其中PWM程序使用定时器1作为PWM脉冲输出的基本单位。程序中定时器0工作在模式2,且计时高低字节寄存器TH1、TL1的初始值为0x97H。定时器的定时过程如图5-9所示。TL0(0x97H)1212MHz(晶振)TF0TH0(0x97H)从上图可以看出,中断与中断之间相隔时间为256us(即每256产生中断一次)。程序中每一脉冲的周期有“P”个基本时间单位。如果“P”为00H,则表示脉冲周期为256个基本时间单位。因此每一个脉冲周期计算如下: 脉冲周期=25625us =65536us =65.536ms程序中“clock”设为“FFH”,表示总共送出去255个高电平部分逐次曾大的脉冲。输出的脉冲波形如图5-10所示。输出脉冲中,第一个脉冲“T1”的脉宽比例为 1. 遥控红外编码部分/*发送8位红外数据*/void sendcode_8(void)uchar i;for(i=0; i8; i+)set_count = 28;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while (countset_count);TR0=0;if(ircode & 0x01)/判断红外编码最低位,1宽的高电平,0窄的高电平set_count = 120;elseset_count=38;flag=0;count=0;TR0=1;while( count 1;/*发送2位红外数据*/void sendcode_2(void)/前26位系统码最后两位uchar i;for(i=0;i2;i+)set_count=28;flag = 1;count = 0;TR0 = 1;while (countset_count);TR0 = 0;if(ircode&0x01)set_count = 120;elseset_count = 38;flag = 0;count = 0;TR0 = 1;while(count1;/*发送红外数据*/void sendcode(void)set_count = 575;/发送9ms 38K红外光flag = 1;count = 0;TR0 = 1;while(count set_count);TR0 = 0;set_count = 320;/间隔4.5msflag = 0;count = 0;TR0 = 1;while(count set_count);TR0 = 0;ircode = irsys0;/发送26位系统码的前1-8位sendcode_8();ircode = irsys1;/发送26位系统码的前9-16位sendcode_8();ircode = irsys2;/发送26位系统码的前17-24位sendcode_8();ircode = irsys3;/发送26位系统码的前24-26位sendcode_2();ircode = irdata;/发送8位数据码sendcode_8();ircode = irdata; /发送8位数据反码sendcode_8();set_count = 28;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while(count set_count);TR0 = 0;ir = 1;delay(23);/延时23ms(编码中的23ms高电平)set_count = 575;/发送9ms 38k红外波flag=1;count=0;TR0=1;while(countset_count);TR0=0;set_count = 330;/间隔4.5msflag = 0;count = 0;TR0 = 1;while(count set_count);TR0 = 0;set_count = 30;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while(count 12&count12 & buf_count210 & buf_count= 25)/若收完26个脉冲ir_status=2;/数据解码标记common_code_count=0;/系统码计算清零buf_count=0;/中断计数暂存清0else if (buf_count40 & buf_count12 & buf_count32)buf_count = 0;common_code_count+;/每收到一个信号自加1else if (ir_status = 2)/进入数据编码接收if (key_bit_count 40 & buf_count= 1;buf_key_code |= 0x80;/收到1key_bit_count+;/数据脉冲累加else if (buf_count12 & buf_count=1;/收到0key_bit_count+;else /若收完8位数据则做以下处理ir_status = 0;/接收状态返回到空闲key_code = buf_key_code;key_bit_count = 0;buf_key_code = 0;buf_count = 0;TR0 = 0;new_code = 1;四 系统测试4、1主机功能测试这里测试是以数字示波器(型号:DS5022M,带宽:25MHz,实时采样率:500MSa/s)数字万用表(型号:VC9807A+),旋转主机亮度旋钮,测量旋钮上的电压与PWM频率(如下表所示):旋钮电压(V)0.8451.2151.6431.9942.4082.7603.1033.4963.8934.2244.616脉宽2/133/134/135/136/137/138/139/1310/1311/1312/13(注:其中我们设定1/13为高亮度,6/13为中亮度,11/13中低亮度)电压与脉宽如下图所示:由上图看出ACD0809转换数据较准确。4、1从机功能测试 从机部分的测试,我们只测量距离。实际制作中,距离可以达到8米左右。五总结1.这是我们第一次参加这样的比赛,感觉很累很辛苦。但我们感觉很高兴,我们通过几天的奋战,做出了我赛题所要求的产品。2.我们在这次比赛中确实学到了很多东西,队友的分工合作直接影响到工作的效率,在比赛中也体会到那么一点一个产品开发的流程的味道。3.这次比赛也为我们9月份的全国赛提供了一次演练的机会,得到了比赛时间按安排的宝贵经验。4.这次比赛也让我们认识到自身的缺陷,让我们知道以后该训练的重点六参考文献1电子电工实践指导王港元 主编江西科学技术出版社(第四版)2C51单片机典型模块设计与应用边春元 李文涛 江杰 杜平 等编著3模拟电子技术周雪 主编西安电子科技大学出版社(修订版)4常用集成电路应用实例荷希才 编电子工业出版社5数字集成电路应用300例黄继昌等编人民邮电出版社6单片机C语言应用程序设计马忠梅等编北京航空航天大学出版社7单片机外围电路设计沙占友 王彦朋 孟志永等编电子工业出版社七、附录附录一:主机原程序代码:#include #include #define uint unsigned int#define uchar unsigned char#define AD_data P2uint k,k_on,off,TH;uchar time;bit ON_OFF; /电位器调接允许端,0允许,1允许sbit ALE =P36; /ADC0809 地址锁存允许信号sbit EOC =P31; /ADC0809 转换结束信号sbit OE =P34; /ADC0809 输出允许sbit clock=P30; /ADC0809 外部时钟脉冲输入端sbit LAMP =P16; /高亮度LED驱动sbit ir=P33; /红外端口uchar key_code=0; /遥控键值uchar new_code=0; /有无新按键uint buf_key_code=0; /键值暂存uchar key_bit_count=0; /键编码脉冲计数uint count=0; /定时中断次数计数uint buf_count=0; /定时中断计数暂存uchar common_code_count=0; /前导码脉冲计数uchar ir_status=0; /脉冲接收器所处的状态,0:无信号,1:系统码接收区,2:数据编码接收区void delay_10us(unsigned char y)/延时子程序10usunsigned char x;for(x=y;x0;x-);void delay_ms(uint z)/延时子程序1msuint x,y;for(x=z;x0;x-)for(y=113;y0;y-);void init(void) / 时器初使化ir=1; /红外端口写1EA=1; /开总中断TMOD=0x22; /定时器01,模式2,8位自动装载模式TH0=0Xd1; TL0=0Xd1; TH1=156;TL1=156;TR1=1;ET1=1;IT1=1; /INT1下降沿触发ET0=1; EX1=1; /*定时器0中断*/void time0() interrupt 1 /时器中断count+;/定时器中断次数累加/*外部中断,红外解码程序*/void int1() interrupt 2/外部中断TR0=1;/开定时器中断if (count12&count12 & buf_count210 & buf_count= 25)/若收完26个脉冲ir_status=2;/数据解码标记common_code_count=0;/系统码计算清零buf_count=0;/中断计数暂存清0else if (buf_count40 & buf_count12 & buf_count32)buf_count = 0;common_code_count+;/每收到一个信号自加1else if (ir_status = 2)/进入数据编码接收if (key_bit_count 40 & buf_count= 1;buf_key_code |= 0x80;/收到1key_bit_count+;/数据脉冲累加else if (buf_count12 & buf_count=1;/收到0key_bit_count+;else /若收完8位数据则做以下处理ir_status = 0;/接收状态返回到空闲key_code = buf_key_code;key_bit_count = 0;buf_key_code = 0;buf_count = 0;TR0 = 0;new_code = 1;void RUN_AD(void)ALE = 0; delay_ms(20);ALE = 1; /启动AD转换delay_ms(20);ALE = 0;while(0 = EOC); OE = 1;k = AD_data;if(abs(k_on-k)5) ON_OFF = 0;off = 0; /重新激活 旋转亮度调节 k_on=k;OE = 0;if(!ON_OFF) TH = k;P0=k;void time_t1(void)interrupt 3 clock=clock; /ADC0809外部时钟信号 time+; if (time = 128) time = 0;LAMP = 1|off; /PWM调节 if (time = TH/2) LAMP = 0|off;/*主程序*/void main()init(); /定时器初始化while(1)while(!new_code) RUN_AD(); /判断是否有新按键,如果有则执行下面程序,没有则一直循环if(key_code 50) /遥控器对应switch(key_code)/按键处理case 30: off = off; break; /开关case 31: ON_OFF = 1; TH = 220; break; /低亮度case 26: ON_OFF = 1; TH = 140; break; /中亮度case 27: ON_OFF = 1; TH = 10; break; /高亮度new_code=0;附录二:从机程序代码:#include #define uint unsigned int#define uchar unsigned charbit irout;/红外管状态sbit ir=P12;/红外发射管控制脚uint count, set_count;/中断计数,设定中断次数bit flag,keyflag;/红外发送标志,按键标志位uchar irsys4=0x1a,0xa1,0xdc,0x03;/26位系统码,最后一个字节只用2位uchar ircode,irdata;/*延时1ms*/void delay(uint z)/延时1ms,晶振22.1184Muint x,y;for(x=z;x0;x-)for(y=225;y0;y-);/*按键扫描*/void keyscan(void)uchar keytemp;P3=0xff;keytemp=P3&0x0f;if(keytemp!=0x0f)delay(20);keytemp=P3&0x0f;if(keytemp!=0x0f)keyflag=1;/有按键标志switch(keytemp)case 0x0e:irdata=27;break;/按键1对应该遥控器P+的键值case 0x0d:irdata=26;break;/按键2对应该遥控器P-的键值case 0x0b:irdata=31;break;/按键3对应该遥控器VOL+的键值case 0x07:irdata=30;break;/按键4对应该遥控器VOL-的键值/*发送8位红外数据*/void sendcode_8(void)uchar i;for(i=0; i8; i+)set_count = 28;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while (countset_count);TR0=0;if(ircode & 0x01)/判断红外编码最低位,1宽的高电平,0窄的高电平set_count = 120;elseset_count=38;flag=0;count=0;TR0=1;while( count 1;/*发送2位红外数据*/void sendcode_2(void)/前26位系统码最后两位uchar i;for(i=0;i2;i+)set_count=28;flag = 1;count = 0;TR0 = 1;while (countset_count);TR0 = 0;if(ircode&0x01)set_count = 120;elseset_count = 38;flag = 0;count = 0;TR0 = 1;while(count1;/*发送红外数据*/void sendcode(void)set_count = 575;/发送9ms 38K红外光flag = 1;count = 0;TR0 = 1;while(count set_count);TR0 = 0;set_count = 320;/间隔4.5msflag = 0;count = 0;TR0 = 1;while(count set_count);TR0 = 0;ircode = irsys0;/发送26位系统码的前1-8位sendcode_8();ircode = irsys1;/发送26位系统码的前9-16位sendcode_8();ircode = irsys2;/发送26位系统码的前17-24位sendcode_8();ircode = irsys3;/发送26位系统码的前24-26位sendcode_2();ircode = irdata;/发送8位数据码sendcode_8();ircode = irdata; /发送8位数据反码sendcode_8();set_count = 28;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while(count set_count);TR0 = 0;ir = 1;delay(23);/延时23ms(编码中的23ms高电平)set_count = 575;/发送9ms 38k红外波flag=1;count=0;TR0=1;while(countset_count);TR0=0;set_count = 330;/间隔4.5msflag = 0;count = 0;TR0 = 1;while(count set_count);TR0 = 0;set_count = 30;/发送0.56ms 38k红外波(编码中的0.56ms低电平)flag = 1;count = 0;TR0 = 1;while(count set_count);TR0 = 0;ir = 1;/*定时器初始化*/void init_timer()EA = 1;TMOD = 0X02;/8位自动重载模式ET0 = 1;TH0 = 0XE8;/定时13us,38K红外波,晶振22.1184TL0 = 0XE8;/*主函数*/void main(void)init_timer();count=0;flag=0;irout=1;while(1)keyscan();if(keyflag)/若有新按键delay(10);sendcode();/发送红外编码delay(500);keyflag=0;/按键标志清零/*定时器中断*/void timer0(void) interrupt 1count+;if(flag=1)irout=irout;elseirout=1;ir=irout;23
收藏
编号:2680179
类型:共享资源
大小:121.95KB
格式:ZIP
上传时间:2019-11-28
15
积分
- 关 键 词:
-
调光
设计
- 资源描述:
-
调光灯设计,调光,设计
展开阅读全文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。