微波光电子课程设计.docx

上传人:b****6 文档编号:4302100 上传时间:2022-11-29 格式:DOCX 页数:20 大小:732.76KB
下载 相关 举报
微波光电子课程设计.docx_第1页
第1页 / 共20页
微波光电子课程设计.docx_第2页
第2页 / 共20页
微波光电子课程设计.docx_第3页
第3页 / 共20页
微波光电子课程设计.docx_第4页
第4页 / 共20页
微波光电子课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微波光电子课程设计.docx

《微波光电子课程设计.docx》由会员分享,可在线阅读,更多相关《微波光电子课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

微波光电子课程设计.docx

微波光电子课程设计

2014年微波光电子课程设计

设计报告

项目名称基于51单片机的红外编码解码实验

参与者李思彧徐楠李梦婷袁高峰王阳

所在学院电子科学与应用物理学院

专业年级电子科学与技术11-1班

指导教师毛剑波

报告人李思彧

时间2014.7

一、设计题目,主要指标和要求

1.利用Proteus设计仿真电路,要求可以实现红外编码以及红外解码。

在编码端通过16个按钮开关实现选码,用单片机实现编码。

在解码端要求利用数码管将编码电路中按键所对应的数值显示出来。

2.编写程序,利用学林单片机实验箱实现对ht6221遥控器的红外解码,要求利用数码管显示ht6221各键所对应的键值编码。

二、方案设计以及基本原理

1.红外遥控系统

红外遥控系统主要由红外遥控发射装置、红外接收设备、遥控微处理机等组成。

红外遥控发射装置,其主要组件为红外发光二极体。

单只红外发光二极管的发射功率约100mW。

接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。

红外遥控器的常见协议分析

常用的红外线信号传输协议有ITT协议、NEC协议、NokiaNRC协议、Sharp协议、PhilipsRC-5协议、PhilipsRC-6协议,PhilipsRECS-80协议,以及SonySIRC协议等。

协议组成:

一般由引导码,用户码,资料码,重复码或资料码的反码和结束码构成。

载波:

常用的有33K,36K,36.6K,38K,40K,56K,无载波、占空比:

常用的有1/3,1/2,不常用1/4、调制方式:

脉宽调制,相位调制,脉冲位置调制

2.红外编码和解码原理

红外遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC协议为例说明编码原理。

当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。

这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms间隔0.56ms周期1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”其波形如下图所示。

上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。

然后再通过红外发射二极管产生红外线向空间发射。

编码数据如下图所示

遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。

遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。

一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,发射波形图如下图所示

当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。

如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。

需要注意的是:

当一体化接收头接收到38kHz红外信号时,输出端输出低电平,否则为高电平。

所以一体化接收头输了的波形是与发射波形是反向的,接收头接收到的波形如图所示:

3.方案设计

根据题目要求我们需要利用Proteus完成电路的仿真,所以在设计方案时我们不仅要设计红外的接收模块,同时,也要完成红外发射编码的模块设计为了完成任务要求我们将方案设计如下:

在红外编码发射模块中,我们用开关键盘实现红外编码发射过程的控制,并通过键盘选择需要发射的数据,之后经过单片机编码将数据传输给红外发射管进行发射。

在红外解码接收模块中,红外接收管接收到红外信号,将信号传输给单片机,利用单片机进行解码,解码的结果通过数码管显示出来。

设计方案如图:

 

三、电路设计

1.单元电路设计

键盘电路:

我们使用16个按钮开关作为键盘按键,按钮排列成四行四列,4根行选择线通过总线接单片机P1口的低四位,4根列选择线通过总线接单片机P1口的高四位。

每个开关按钮一端接行线,另一端接列线。

当开关被按下,低四位中的一位与高四位中的一位引脚相连,利用P1口的高低电平变化来获取按键位置,从而获取按键信息。

电路设计如图:

单片机编码电路:

红外发射电路:

在红外发射电路中我们加入了PNP管来完成电平信号的放大,同时也使得电平反转。

红外接收电路:

在Proteus中我们使用irlink来模拟红外发射管与红外接收管。

红外解码电路:

 

数码管显示电路:

在数码管显示电路中我们加入了74LS240来实现增强电平驱动的作用。

2.完整电路设计:

 

3.元件清单:

3Resistors

Quantity:

References

Value

OrderCode

1

R1

2

H1K

1

R2

10k

M10K

1

R3

1k

H1K

3IntegratedCircuits

Quantity:

References

Value

OrderCode

2

U1,U2

80C52

1

U3

74LS240

1Transistors

Quantity:

References

Value

OrderCode

1

Q1

PNP

1Miscellaneous

Quantity:

References

Value

OrderCode

1

IRL1

IRLINK

 

四、程序设计

1.单片机实验板红外接收程序设计:

数码管显示,P0口为数码管的数据口,p2为数码管的控制位

控器接p3.2,喇叭接p3.7,每次按键喇叭提示

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

voidIR_show();

voiddelay(unsignedcharx);

sbitIRIN=P3^2;

sbitGEWEI=P2^7;

sbitSHIWEI=P2^6;

 

ucharIRCOM[8];

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E};

ucharx,y;

voidmain(void)

{x=0;

y=0;

IT0=1;

EX0=1;

EA=1;

while

(1)

{IR_show();}

}

voidIR_IN()interrupt0

{

uintN;

uchari;

EX0=0;

N=0;

while(!

IRIN)N++;

if(N<1000){EX0=1;return;}

N=0;

while(IRIN)if(N++>400){EX0=1;return;}

if(N<200){EX0=1;return;}

for(i=0;i<32;i++)

{

N=0;

while(!

IRIN);

while(IRIN)if(N++>200){EX0=1;return;}

IRCOM[i/8]>>=1;

if(N>60)IRCOM[i/8]|=0x80;

}

if(IRCOM[2]==~IRCOM[3]&&IRCOM[0]==~IRCOM[1])

{x=IRCOM[2]/16;

y=IRCOM[2]%16;

}

EX0=1;

}

voidIR_show()

{

SHIWEI=1;

P0=table[y];

GEWEI=0;

delay

(1);

GEWEI=1;

P0=table[x];

SHIWEI=0;

delay

(1);

}

voiddelay(ucharx)

{

uchari,j;

for(i=0;i

for(j=0;j<24;j++)_nop_();

}

2.Proteus仿真红外解码程序:

使用外部中断0接收P3.2

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

voidIR_show();

voiddelay(unsignedcharx);

sbitIRIN=P3^2;

sbitGEWEI=P2^7;

sbitSHIWEI=P2^6;

 

ucharIRCOM[8];

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

ucharx,y;

voidmain(void)

{x=0;

y=0;

IT0=1;

EX0=1;

EA=1;

while

(1){IR_show();}

}

voidIR_IN()interrupt0

{

uintN;

uchari;

EX0=0;

N=0;

while(!

IRIN)N++;

if(N<1000){EX0=1;return;}

N=0;

while(IRIN)if(N++>400){EX0=1;return;}

if(N<200){EX0=1;return;}

for(i=0;i<32;i++)

{

N=0;

while(!

IRIN);

while(IRIN)if(N++>200){EX0=1;return;}

IRCOM[i/8]>>=1;

if(N>60)IRCOM[i/8]|=0x80;

}

if(IRCOM[2]==~IRCOM[3]&&IRCOM[0]==~IRCOM[1])

{x=IRCOM[2]/16;

y=IRCOM[2]%16;

}

EX0=1;

}

voidIR_show()

{

SHIWEI=1;

P0=table[y];

GEWEI=0;

delay

(1);

GEWEI=1;

P0=table[x];

SHIWEI=0;

delay

(1);

}

voiddelay(ucharx)

{

uchari,j;

for(i=0;i

for(j=0;j<24;j++)_nop_();

}

3.Proteus仿真红外编码程序:

发射引脚(接PNP三极管b极)

PNP三极管e极接2Ω电阻,c极接红外发射管

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineSBM0x80

#definem9(65536-9000)

#definem4_5(65536-4500)

#definem1_6(65536-1630)

#definem_65(65536-580)

#definem_56(65536-560)

#definem40(65536-40000)

#definem56(65536-56000)

#definem2_25(65536-2250)

sbitIR=P3^6;

sbitLED=P3^7;

ucharKEY(void);

voidSanZhuan(void);

voidZZ(ucharx);

voidZ0(uchartemp);

voidTT0(bitBT,uintx);

voidYS(uchartime);

voidmain(void)

{TMOD=0x01;

IR=1;

while

(1)

{

SanZhuan();

}

}

ucharKEY(void)

{

ucharH,L;

H=0;

L=0;

P1=0xf0;

if(P1!

=0xf0)

{

YS(10);

if(P1!

=0xf0)

{

H=P1&0xf0;

P1=0x0f;

L=P1&0x0f;

}

return(H+L);

}

return0;

}

voidSanZhuan(void)

{

ucharv;

v=KEY();

switch(v)

{

case0x77:

ZZ(0x01);v=0;break;//""

case0xb7:

ZZ(0x02);v=0;break;//""

case0xd7:

ZZ(0x03);v=0;break;//""

case0xe7:

ZZ(0x04);v=0;break;//""

case0x7b:

ZZ(0x05);v=0;break;//""

case0xbb:

ZZ(0x06);v=0;break;//""

case0xdb:

ZZ(0x07);v=0;break;//""

case0xeb:

ZZ(0x08);v=0;break;//""

case0x7d:

ZZ(0x09);v=0;break;//""

case0xbd:

ZZ(0x10);v=0;break;//""

case0xdd:

ZZ(0x11);v=0;break;//""

case0xed:

ZZ(0x12);v=0;break;//""

case0x7e:

ZZ(0x13);v=0;break;//""

case0xbe:

ZZ(0x14);v=0;break;//""

case0xde:

ZZ(0x15);v=0;break;//""

case0xee:

ZZ(0x16);v=0;break;//""

default:

v=0;

}

}

voidZZ(ucharx)

{

TT0(1,m9);

TT0(0,m4_5);

Z0(SBM);

Z0(~SBM);

Z0(x);

Z0(~x);

TT0(1,m_65);

TT0(0,m40);

while(KEY())

{TT0(1,m9);

TT0(0,m2_25);

TT0(1,m_56);

TT0(0,m40);

TT0(0,m56);

};

}

voidZ0(uchartemp)

{

ucharv;

for(v=0;v<8;v++)

{

TT0(1,m_65);

if(temp&0x01)TT0(0,m1_6);

else

TT0(0,m_56);

temp>>=1;}}

voidTT0(bitBT,uintx)

{

TH0=x>>8;

TL0=x;

TF0=0;

TR0=1;

if(BT==0)while(!

TF0);

elsewhile

(1)

{IR=0;

if(TF0)break;

if(TF0)break;

IR=1;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

if(TF0)break;

}

TR0=0;

TF0=0;

IR=1;}

voidYS(uchartime)

{

uchari,j;

for(i=0;i

for(j=0;j<247;j++)_nop_();

}

 

五、实验效果

利用软件仿真,实现了实验要求的各项功能,当我们按下按键时可以在数码管上看到对应的编码值,实验效果如图:

利用学林单片机实验箱实现效果如图

六、心得体会

通过这次课程设计,让我了解了红外编码,红外解码的基本原理,对日本NEC协议有了更深刻的了解,在这个过程中我也了解到了红外遥控系统的基本组成以及工作方式。

对HT6221红外遥控的编码也有了一定的了解,这次课程设计让我接触到了以前不曾接触过的一个领域,学习到了很多课本中没有讲授过的知识。

通过这次课程设计,我将以前在课堂上学到的单片机的有关知识运用于实现一个具体的工程任务,使自己对单片机编程以及电路设计有了更清晰的认识,自己的编程能力也得到了锻炼,对c语言的使用也明显更加熟练。

同时也让自己对单片机有了更大的兴趣去研究,探索。

通过这次课程设计,我初步掌握了ProteusISIS软件的使用方法,对元件的查找,电路的绘制,程序的装载,仿真运行等环节可以熟练运用。

通过这次课程设计,我的解决实际问题的能力得到了提升,查找文献资料也比以前更加有针对性,但是这次课程设计也暴露了我的一些问题,比如:

自己在遇到困难时不能坚持自己正确的看法,会动摇,容易放弃。

这样的问题要在日后的学习过程中不断改进克服。

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

当前位置:首页 > 初中教育 > 理化生

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

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