遥控调光灯设计Word格式文档下载.docx

上传人:b****4 文档编号:6685079 上传时间:2023-05-07 格式:DOCX 页数:33 大小:96.90KB
下载 相关 举报
遥控调光灯设计Word格式文档下载.docx_第1页
第1页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第2页
第2页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第3页
第3页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第4页
第4页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第5页
第5页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第6页
第6页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第7页
第7页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第8页
第8页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第9页
第9页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第10页
第10页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第11页
第11页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第12页
第12页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第13页
第13页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第14页
第14页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第15页
第15页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第16页
第16页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第17页
第17页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第18页
第18页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第19页
第19页 / 共33页
遥控调光灯设计Word格式文档下载.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

遥控调光灯设计Word格式文档下载.docx

《遥控调光灯设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《遥控调光灯设计Word格式文档下载.docx(33页珍藏版)》请在冰点文库上搜索。

遥控调光灯设计Word格式文档下载.docx

(3)方案三电路较复杂,程序控制也较难,在成本控制方面因为使用了AD0809所以也不是很理想。

但在功能方面手动调节和遥控调可以相互转换。

功能也就比较强大,达到题意的基本要求。

综上所述这里采用方案三。

二.

硬件电路的设计

1.电路方框图:

(1)主机电路方框图:

(2)遥控电路方框图:

2.主要单元电路

(1)调光电路

从单片机P1.6出来的PWM调制信号控制可控硅的导通角,导通角越大灯的亮度越高。

(2)模数转换电路

(3)遥控电路

三.

软件设计:

其中PWM程序使用定时器1作为PWM脉冲输出的基本单位。

程序中定时器0工作在模式2,且计时高低字节寄存器TH1、TL1的初始值为0x97H。

定时器的定时过程如图5-9所示。

从上图可以看出,中断与中断之间相隔时间为256us(即每256产生中断一次)。

程序中每一脉冲的周期有“P”个基本时间单位。

如果“P”为00H,则表示脉冲周期为256个基本时间单位。

因此每一个脉冲周期计算如下:

脉冲周期=25625us

=65536us

=65.536ms

程序中“clock”设为“FFH”,表示总共送出去255个高电平部分逐次曾大的脉冲。

输出的脉冲波形如图5-10所示。

输出脉冲中,第一个脉冲“T1”的脉宽比例为

1.遥控红外编码部分

/*******************************************

发送8位红外数据

*******************************************/

voidsendcode_8(void)

{

uchari;

for(i=0;

i<

8;

i++)

{

set_count=28;

//发送0.56ms38k红外波(编码中的0.56ms低电平)

flag=1;

count=0;

TR0=1;

while(count<

set_count);

TR0=0;

if(ircode&

0x01)//判断红外编码最低位,1宽的高电平,0窄的高电平

{

set_count=120;

}

else

set_count=38;

flag=0;

count=0;

TR0=1;

while(count<

set_count);

ircode=ircode>

>

1;

}

}

发送2位红外数据

voidsendcode_2(void)//前26位系统码最后两位

uchari;

for(i=0;

i<

2;

i++)

set_count=28;

flag=1;

count=0;

TR0=1;

while(count<

TR0=0;

if(ircode&

0x01)

set_count=120;

else

set_count=38;

flag=0;

while(count<

TR0=0;

ircode=ircode>

发送红外数据

voidsendcode(void)

set_count=575;

//发送9ms38K红外光

while(count<

set_count);

set_count=320;

//间隔4.5ms

ircode=irsys[0];

//发送26位系统码的前1-8位

sendcode_8();

ircode=irsys[1];

//发送26位系统码的前9-16位

ircode=irsys[2];

//发送26位系统码的前17-24位

ircode=irsys[3];

//发送26位系统码的前24-26位

sendcode_2();

ircode=irdata;

//发送8位数据码

ircode=~irdata;

//发送8位数据反码

set_count=28;

ir=1;

delay(23);

//延时23ms(编码中的23ms高电平)

//发送9ms38k红外波

flag=1;

count=0;

TR0=1;

set_count=330;

set_count=30;

定时器初始化

voidinit_timer()

EA=1;

TMOD=0X02;

//8位自动重载模式

ET0=1;

TH0=0XE8;

//定时13us,38K红外波,晶振22.1184

TL0=0XE8;

2.主机解码部分

voidinit(void)//时器初使化

ir=1;

//红外端口写1

EA=1;

//开总中断

TMOD=0x22;

//定时器0\1,模式2,8位自动装载模式

TH0=0Xd1;

TL0=0Xd1;

TH1=156;

TL1=156;

TR1=1;

ET1=1;

IT1=1;

//INT1下降沿触发

ET0=1;

EX1=1;

/***********************************************

定时器0中断

***********************************************/

voidtime0()interrupt1//时器中断

count++;

//定时器中断次数累加

/**********************************************

外部中断,红外解码程序

**********************************************/

voidint1()interrupt2///外部中断

//开定时器中断

if(count>

12&

&

count<

270)//如果信号合法,则放入buf_count,count清0,对下一个脉冲信号计时

buf_count=count;

delay_10us(10);

//延时100us以消除下降沿跳变抖动

if(ir==0)//INT1引脚稳定为低电平,则表法确实是信号,count重新计时,因上面延时了50us,故要补偿1次TO中断

count=2;

if(buf_count>

12&

buf_count<

270)//若收到的信号合法,则再进行信号分析

if(ir_status==0)//如果之前未收到引导码

if(buf_count>

210&

270)//判断是否引导码13.5ms

{

ir_status=1;

//系统标记

buf_count=0;

}

elseif(ir_status==1)///收到引导码

if(common_code_count>

=25)//若收完26个脉冲

ir_status=2;

//数据解码标记

common_code_count=0;

//系统码计算清零

//中断计数暂存清0

elseif((buf_count>

40&

70)||(buf_count>

32))

buf_count=0;

common_code_count++;

//每收到一个信号自加1

elseif(ir_status==2)//进入数据编码接收

if(key_bit_count<

8)//收到数据少于8位,则将收到的数据写入buf_key_code

if(buf_count>

70)

{

buf_count=0;

buf_key_code>

=1;

buf_key_code|=0x80;

//收到1

key_bit_count++;

//数据脉冲累加

}

elseif(buf_count>

32)//收到0

buf_count=0;

buf_key_code>

=1;

//收到0

else//若收完8位数据则做以下处理

ir_status=0;

//接收状态返回到空闲

key_code=buf_key_code;

key_bit_count=0;

buf_key_code=0;

TR0=0;

new_code=1;

四.

系统测试

4、1主机功能测试

这里测试是以数字示波器(型号:

DS5022M,带宽:

25MHz,实时采样率:

500MSa/s)

数字万用表(型号:

VC9807A+),旋转主机亮度旋钮,测量旋钮上的电压与PWM频率(如下表所示):

旋钮电压(V)

0.845

1.215

1.643

1.994

2.408

2.760

3.103

3.496

3.893

4.224

4.616

脉宽

2/13

3/13

4/13

5/13

6/13

7/13

8/13

9/13

10/13

11/13

12/13

(注:

其中我们设定1/13为高亮度,6/13为中亮度,11/13中低亮度)

电压与脉宽如下图所示:

由上图看出ACD0809转换数据较准确。

4、1从机功能测试

从机部分的测试,我们只测量距离。

实际制作中,距离可以达到8米左右。

五.总结

1.这是我们第一次参加这样的比赛,感觉很累很辛苦。

但我们感觉很高兴,我们通过几天的奋战,做出了我赛题所要求的产品。

2.我们在这次比赛中确实学到了很多东西,队友的分工合作直接影响到工作的效率,在比赛中也体会到那么一点一个产品开发的流程的味道。

3.这次比赛也为我们9月份的全国赛提供了一次演练的机会,得到了比赛时间按安排的宝贵经验。

4.这次比赛也让我们认识到自身的缺陷,让我们知道以后该训练的重点

六.参考文献

[1]《电子电工实践指导》王港元主编·

江西科学技术出版社(第四版)

[2]《C51单片机典型模块设计与应用》边春元李文涛江杰杜平等编著

[3]《模拟电子技术》周雪主编·

西安电子科技大学出版社(修订版)

[4]《常用集成电路应用实例》荷希才编·

电子工业出版社

[5]《数字集成电路应用300例》黄继昌等编·

人民邮电出版社

[6]《单片机C语言应用程序设计》马忠梅等编·

北京航空航天大学出版社

[7]《单片机外围电路设计》沙占友王彦朋孟志永等编·

电子工业出版社

七、附录

附录一:

主机原程序代码:

#include<

reg52.h>

math.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineAD_dataP2

uintk,k_on,off,TH;

uchartime;

bitON_OFF;

//电位器调接允许端,0允许,1允许

sbitALE=P3^6;

//ADC0809地址锁存允许信号

sbitEOC=P3^1;

//ADC0809转换结束信号

sbitOE=P3^4;

//ADC0809输出允许

sbitclock=P3^0;

//ADC0809外部时钟脉冲输入端

sbitLAMP=P1^6;

//高亮度LED驱动

sbitir=P3^3;

//红外端口

ucharkey_code=0;

//遥控键值

ucharnew_code=0;

//有无新按键

uintbuf_key_code=0;

//键值暂存

ucharkey_bit_count=0;

//键编码脉冲计数

uintcount=0;

//定时中断次数计数

uintbuf_count=0;

//定时中断计数暂存

ucharcommon_code_count=0;

//前导码脉冲计数

ucharir_status=0;

//脉冲接收器所处的状态,0:

无信号,1:

系统码接收区,2:

数据编码接收区

voiddelay_10us(unsignedchary)//延时子程序10us

unsignedcharx;

for(x=y;

x>

0;

x--);

voiddelay_ms(uintz)//延时子程序1ms

uintx,y;

for(x=z;

x--)

for(y=113;

y>

y--);

voidRUN_AD(void)

ALE=0;

delay_ms(20);

ALE=1

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2