通信系统综合设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五邑大学
通信系统综合设计报告题目:多路红外遥控器
院系信息工程学院
专业通信工程
学号
学生姓名
指导教师
多路红外遥控器
摘要:本文介绍基于51单片机的多路红外遥控器,可以控制两个LED灯的开关,并且可以对一路LED进行亮度调节。该遥控器采用脉冲个数调制的编码方式,三个按键开关。该遥控器电路简单,体积小,功耗小,易于推广。
关键字:单片机红外发射红外接收
一.设计目的
1.通过实际设计了解加深对通信原理的理论了解;
2.增强同学的动手能力;
3.了解红外发射管和接收头的工作原理和应用方法;
4.了解红外遥控器的红做方式。
二.设计原理
这次课程设计用到了通信原理中的编码和解码,还有调制。利用单片机作为核心,通过程序编写调制和编码的方式,利用PH303红外发射二极管作为发射头发射遥控信号,用HS0038作为接收头接受信号并执行命令。
发射端用单片机控制红外二极管发射红外信号。当按键按下时,单片机读出按键值,根据按键设置的脉冲个数,再调制成40kHz的方波用红外发射管发射出去。
接收端用单片机读取接收管的接收信号,再发出命令控制LED。当没有信号时,HS0038持续输出高电平,当接收到红外光时,HS0038输出低电平。利用HS0038的工作原理,让单片机数脉冲个数来判断发来的指令并加以执行。
无线信号利用空间传输,相互之间必然会有干扰,所以基带信号必须要调制到一定频率的载波上进行传输,利用不同的频率来避免干扰。
该课红外遥控器的编码方式采用脉冲个数编码。按下按键时,先发送一个3ms的脉冲,延时1ms后再发送相应按键设置的脉冲数,每个脉冲1ms。
脉冲个数编码方式比PWM编码方式更容易理解和实现,不过也有缺点。当多路(很多)时,脉冲个数编码将发送很长的脉冲串,不实用。
图2.1 脉冲个数调制视图三.主要元件
STC89C52单片机(最小系统)
PH303红外发射二极管
HS0038红外接收一体头
四.硬件电路设计
1.红外发射电路
该电路采用8050三极管两级放大,这样能产生足够大的电流驱动红外发射管,能增加遥控距离。
2.单片机最小系统
图4.2 单片机最小系统
复位电路采用手动和自动复位,晶振用12M晶振。
3.按键电路
图4.3 按键电路
按键电路将三个按键接在P2.0,P2.1和P2.2口上,按下按键给单片机置低电平。
4.红外接收电路
红外接收采用一体头作为接受管,它起集成了红外接收、带通滤波和放大电路,使用起来方便简单。
图4.4 红外接收电路
5.LED电路
图4.5 LED电路
LED接在单片机P2.0和P2.1口,当单片机输出高电平,灯不亮;当单片机输出低电平,LED亮。
其中LED1可以改变亮度,通过单片机编程使P2.0口输出占空比不同的方波来改变灯的亮度。
五.单片机程序设计流程
1.红外发射部分
图5.1 发送主程序
图5.2 按键扫描流程图
按键扫描过程:先判断是否有按键按下,如果有,扫描P2口的值确定是哪个按键,并执行相应的程序。
图5.3 红外信号发射程序2.红外接收部分
图5.4 接收部分主程序
图5.5 中断过程程序
六.总电路图
1.发射电路图
2.接收电路图
七.总结
这次的通信系统综合设计是基于单片机的红外遥控器,要求每人设计自己的产品并做出实物,在巩固通信原理所学的知识的同时,增强了个人的动手能力和思考能力。
为了做出这次的课程设计,我查阅了不少关于红外遥控的资料,了解了红外遥控的基本原理和几种可用的编码方式,也了解了几种红外发射和接收的元件和连接电路。我对于各种编码方式的思想有了很好的理解和认识,也分析了不同编码方式的好坏。这次我做的红外遥控器采用脉冲个数编码,其特点就是程序简单,便于实现,在实现多路(较少)遥控时比较适合。PWM编码方式程序相对复杂,但准确性比较高,可以控制更多的线路。
总的来说,这次的课程设计使我收获很多,当看到自己的产品能良好的实现功能时,心里的成就感就涌出来,就觉得努力没有白费。
八.参考文献
[1] 樊昌信,曹丽娜.通信原理(第六版)[M].北京:国防工业出版社,2011.
[2] 刘焕成.工程背景下的单片机原理及系统设计(第二版)[M].北京:清华大学出版
社,2011.
[3] 聂诗良,李磊民.红外遥控信号的一种编码解码方法[J].仪表技术与传感器,2004(8).
附录:
发送程序:
#include
#define uchar unsigned char
#define uint unsigned int
/*sbit key0=P2^0; sbit key1=P2^1;
sbit key2=P2^2;*/
#define key P2
sbit hongwai=P1^0;
uint i,j,m;
uchar keyvol;
/*********1毫秒延时程序**********/
delay1ms(uint t)
{
for(i=0;i for(j=0;j<120;j++); } /***********初始化函数**********/ init() { P2=0xff; keyvol=0; //脉冲个数标记清零 hongwai=0; //关遥控输出 IE=0x00; IP=0x01; TMOD=0x20; //8位自动重装模式 TH1=0xf3; //40KHZ初值 TL1=0xf3; EA=1; //开总中断 } keywork() { if(key==0xfe) //按下第一个按键 {