毕业设计论文单片机红外遥控电路设计.docx
《毕业设计论文单片机红外遥控电路设计.docx》由会员分享,可在线阅读,更多相关《毕业设计论文单片机红外遥控电路设计.docx(31页珍藏版)》请在冰豆网上搜索。
![毕业设计论文单片机红外遥控电路设计.docx](https://file1.bdocx.com/fileroot1/2023-7/21/b07d2c1f-2e05-458c-8990-7bebe4712b2f/b07d2c1f-2e05-458c-8990-7bebe4712b2f1.gif)
毕业设计论文单片机红外遥控电路设计
红外遥控电路设计
摘要
通过对设计要求地认真分析和研究,拿出了几种可行方案,最终选定了一个最佳方案。
该方案是采用先进的单片机技术实现遥控的主要手段。
我们所设计的遥控器能控制电器的3个电源开关。
关键字:
遥控电路红外发射红外接收单片机
INFRAREDREMOTECONTROLCIRCUITDESIGN
ABSTRACT
Afteranalyzingandresearchingontherequestofthedesign,wetakeseveralblueprintandweselectedthebestoneintheend.TheprojectmakeuseofadvancedSCMtorealizetheremotecontrol.Remotecontrollerwedesignedcandominate3electricalsourceswitches.
【KEYWORDS】RemotecontrollingcircuitInfraredemissionInfraredreceivingSCM
前言1
引言
当今社会科学技术的发展与日俱增,人们生活水平也是日益提高,为了减少人们的工作量,所以对各种家用电器、电子器件的非人工控制的要求也是越来越高,针对这种情况,设计出一种集成度比较高的控制体系是必然的。
单片机的集成度很高,它具有体积小、功耗低、控制功能强、扩展灵活、微型化、使用方便等突出特点,尤其耗电少,又可使供电电源体积小、质量轻。
所以特别适用与“电脑型产品”,它的应用已深入到工业、农业、国防、科研、教育以及日常生活用品(家电、玩具)等各种领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机特别适合于把它做到产品的内部,取代部分老式机械、电子零件或元器件。
可使产品缩小体积,增强功能,实现不同程度的智能化。
红外线是一种光线,具有普通光的性质,可以以光速直线传播,强度可调,可以通过光学透镜聚焦,可以被不透明物体遮挡等等。
特别制造的半导体发光二极管,可以发出特定波长(通常是近红外)的红外线,通过控制二极管的电流可以很方便地改变红外线的强度,达到调制的目的,因此,在现代电子工程应用中,红外线常常被用做近距离视线范围内的通讯载波,最典型的应用就是家电遥控器。
使用红外线做信号载波的优点很多:
成本低、传播范围和方向可以控制、不产生电磁辐射干扰,也不受干扰等等。
因此被广泛地应用在各种技术领域中。
第一章课题概况
1.1红外遥控电路设计的目的
本次设计的主要任务是利用单片机技术,并将数字电子技术、模拟电子技术和红外学相关知识相结合,设计一款可以实现灯泡的开关和调光(或者电机启动和调速)控制的红外遥控电路。
通过设计红外遥控电路来巩固和加强对三年来所学的理论知识和锻炼自己的动手能力,熟悉和掌握以单片机为核心的电路设计的基本方法和技术,熟悉传感器的使用,提高电子电路的设计和动手能力,加深对单片机软硬件知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
1.2红外遥控电路设计功能介绍
本设计要求红外遥控电路实现以下功能:
(1)利用红外接收和发射探头发送和接收红外线;
(2)该遥控系统可以实现灯泡的开关(或者电机启动)控制;
(3)能够按键启动/停止,使用单片机进行设计或者纯数字模拟电路设计;
1.3课题方案设计
目前红外遥控器已经在各类电器上得到了广泛应用。
市场上一般设备系统均采用专用的遥控编码及解码集成电路,具有制作简单等特点,但由于这些芯片价格较贵,功能键数及功能受到特定的限制,且相互之间采用的遥控编码格式互不兼容.所以各机型的遥控器通常只能针对各自的遥控对象而无法通用,只适用于某一专用电器产品的应用,应用范围受到限制。
采用单片机进行遥控系统的应用设计,具有硬件接口简单方便。
编程灵活多样,操作码个数可随意设定等优点。
此方案可用控制键实现对电器的控制,方便实用。
且本设计用到的元器件较少,电路相对简单实用。
红外遥控电发射器主要由单片机、操作键盘和红外发射电路三部分组成。
红外发射部分结构图如图1.1所示:
+5V电源
红外发射电路
AT89C52
单片机
键盘输入
发射指示灯
图1.1红外遥控电路发射设计原理框图
当按下遥控按钮时,单片机产生相应的控制脉冲,由红外发光二极管发射出去。
控制系统采用3V电源电压,并具有低功耗空闲和掉电方式控制。
红外遥控电发射器主要由单片机、指示电路和红外接收电路三部分组成。
红外接收部分结构如图1.2所示:
+5V电源
红外接收电路
AT89C52
单片机
彩灯
指示灯
图1.2红外遥控电路接收设计原理框图
当红外接收器接收到控制脉冲后,经单片机处理由显示设备显示出当前受控电器的序号,并判断是否对电灯进行调光,如需调光则经调光电路处理后实现调光功能。
系统采用5V单电源电压供电,能满足低功耗空闲状态,并具有掉电记忆控制功能。
第二章系统硬件部分方案设计
2.1红外遥控接发电路的主控芯片
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
编辑本段主要功能特性
1、兼容MCS51指令系统
2、8k可反复擦写(大于1000次)FlashROM;
3、2个双向I/O口;
4、256x8bit内部RAM;
5、3个16位可编程定时/计数器中断;
6、时钟频率0-24MHz;
7、2个串行中断,可编程UART串行通道;
8、2个外部中断源,共8个中断源;
9、2个读写中断口线,3级加密位;
10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;
11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
AT89C52为8位通用微处理器,采用工业标PDIP封装的AT89C52引脚图准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
2.2红外发送电路
单片机遥控发射器原理图如图2.1所示,单片机遥控发射器主要由AT89C52单片机、操作键盘和红外发射电路等组成。
单片机部分主要完成遥控发射器发射过程的控制、键盘扫描的管理和显示。
其中P1.3用于输出控制红外发射电路的工作的信号,P2..1到P2.5连接键盘,用于接受键盘的信号。
电路采用5V电池供电,当有按键被按下,遥控器信息码由AT89C52单片机的定时器1中断产生38KHZ的红外线信号,由P1.3口输出—,经过三极管9013放大,由红外发射管发送。
待发送完毕。
电路采用LED发光二极管来实现按键的操作指示。
图2.1红外发射原理图
遥控器采用按键中断扫描方式。
当按下按键K1时,所有灯灭;当按下按键K2时,红灯亮,其他灯灭;当按下按键K3时,黄灯亮,其他等灭;当按下按键K4时,绿灯亮,其他灯灭;按键K5是备用按键。
2.3红外接收电路
单片机遥控接受器原理图如图2.2所示,单片机遥控发射器主要由AT89C52单片机、红外线接收电路、和电灯亮灭电路等组成。
当红外接受接收到遥控器发射的信号后,将信号传给AT89C52单片机,AT89C52单片机根据收到的信息码的不同,进行相应的状态指示。
图2.2红外接收原理图
第三章系统软件部分方案设计
3.1红外编码原理
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如下图所示。
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射。
编码数据,载波,发射,接收解码如下图所示:
UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。
该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。
UPD6121G最多额128种不同组合的编码。
遥控器在按键按下后,周期性地发出同一种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)组成。
3.2红外遥控初始化程序和主程序
红外遥控接收部分与发射部分初始化程序如图2.8、图2.10所示,红外遥控接收部分与发射部分主程序如图2.9、图2.11所示。
N
Y
图2.8发射初始化程序流程图图2.9发射主程序流程图
红外遥控发射部分初始化程序,初始化程序主要是使单片机复位,即为将IO口置于高电平状态,关闭遥控输出口P1.3口,选择定时器/计数器0方式二,自动重装初值。
红外遥控发射部分主程序,先调用初始化程序,再完成调用键盘程序。
系统完成键盘查询程序后,解码,执行相应的状态指示即显示LED灯的亮灭。
开始
单片机复位
开外部中断0
开总中断允许
设置默认电灯亮灭
返回
开始
定时器初始化
外部中断初始化
键盘扫描程序
红外处理程序
显示程序
图2.10接收初始化流程图图2.11接收主程序流程图
红外遥控接收部分初始化程序,初始化程序主要使单片机复位,即为将IOP2口为高电平状态,开外部中断0,设置默认彩灯亮灭标志位。
红外遥控接收部分主程序,先调用初始化程序,初始化程序完毕,进入主程序循环状态。
程序在循环中主要任务是接收红外数据,处理后解码送去显示。
3.3红外遥控键盘扫描、红外发射程序
红外遥控键盘扫描程序流程图如图2.12所示,红外发射程序如图2.13所示。
键盘扫键过程:
首先判断控制键是否按下,若有控制键按下则进行逐行扫描,按照P口值查找键号。
最后按照键号转至相应的发射程序。
红外信号发射过程:
首先是发射9MS的引导码(4.5ms高电平和4.5ms低电平),接着发送8位用户码和八位用户反码,发完后发送8位数据码和8位数据反码。
在实践中,采用红外线遥控方式时,由于受遥控距离,角度等影响,使用效果不是很好,如采用调频或调幅发射接收码,可提高遥控距离,并且没有角度影响。
图2.12键盘扫描程序流程图图2.13发射程序流程图
3.4红外遥控接收部分外部中断程序
中断过程:
首先判断两个下降沿之间的时间是否大于9ms,若不到9ms,则中断返回;若低电平大于9ms,则接收并对下降沿计数,如果接收到了33个下降沿,说明一帧数据接收完了。
计数清零,并送去才处理。
N
接收数据
中断数等于33?
Y
N
Y
图2.14外部中断0中断服务程序流程图
第四章系统调试
控制电路板的安装与调试在整个系统研制中占有重要位置,它是把理论付诸实践的过程,也是把纸面设计转变位实际产品的必经阶段。
对试验阶段的电路板的安装一般有两种方式即焊接方式和面包板插接方式。
使用面包板焊接更加方便,容易更换线路和器件,而且可以多次使用。
但在多次使用的面包板中弹簧片会变松,弹性变差,容易造成接触不良,这是需要注意的。
实验和调试常用的仪器有:
万用表、稳压电源、示波器、信号发生器等。
调试的主要步骤。
1.调试前不加电源的检查
对照电路图和实际线路检查连线是否正确,包括错接、少接、多接等;用万用表电阻档检查焊接和接插是否良好;元器件引脚之间有无短路,连接处有无接触不良,二极管、三极管、集成电路和电解电容的极性是否正确;电源供电包括极性、信号源连线是否正确;电源端对地是否存在短路(用万用表测量电阻)。
若电路经过上述检查,确认无误后,可转入静态检测与调试。
2.静态检测与调试
断开信号源,把经过准确测量的电源接入电路,用万用表电压档监测电源电压,观察有无异常现象:
如冒烟、异常气味、手摸元器件发烫,电源短路等,如发现异常情况,立即切断电源,排除故障;
如无异常情况,分别测量各关键点直流电压,如静态工作点、数字电路各输入端和输出端的高、低电平值及逻辑关系、放大电路输入、输出端直流电压等是否在正常工作状态下,如不符,则调整电路元器件参数、更换元器件等,使电路最终工作在合适的工作状态;
对于放大电路还要用示波器观察是否有自激发生。
3.动态检测与调试
动态调试是在静态调试的基础上进行的,调试的方法地在电路的输入端加上所需的信号源,并循着信号的注射逐级检测各有关点的波形、参数和性能指标是否满足设计要求,如必要,要对电路参数作进一步调整。
发现问题,要设法找出原因,排除故障,继续进行。
我们所设计的遥控器电路是采用码分制遥控方式,我们用示波器对发射电路输出端及接收电路输入端的信号波型的进行了检查,发现当按下不同的开关按钮时所显示的波型是不同的。
这说明了此电路是工作在正常状态的。
4.调试注意事项
(1)正确使用测量仪器的接地端,仪器的接地端与电路的接地端要可靠连接;
(2)在信号较弱的输入端,尽可能使用屏蔽线连线,屏蔽线的外屏蔽层要接到公共地线上,在频率较高时要设法隔离连接线分布电容的影响,例如用示波器测量时应该使用示波器探头连接,以减少分布电容的影响。
(3)测量电压所用仪器的输入阻抗必须远大于被测处的等效阻抗。
(4)测量仪器的带宽必须大于被测量电路的带宽。
(5)正确选择测量点和测量
(6)认真观察记录实验过程,包括条件、现象、数据、波形、相位等。
(7)出现故障时要认真查找原因
课题设计总结
毕业设计是学生即将完成学业的最后一个重要环节,它既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好的开端。
所以在此有必要对这次的毕业设计作一个系统的总结。
这次毕业设计,我选择了实做的题目,这不仅是对我的一种锻炼,也是对我大学三年所学知识的综合检查。
从开始设计到设计的完成,我感觉收获很多,不仅在理论上有了很大的升华,并且还在实践中锻炼了自己。
使自己成长了许多。
本文首先对整个系统的工作原理和实现方法进行了简单的介绍,给出了系统工作的整体框图。
在此基础上,介绍了系统设计用到的各个模块的功能特性,并进性了方案比较,选择出了最优越的方案。
在理论上对整个系统有一定了解的情况下,进行了系统模块的电路的设计,充分利用各方面的资料,发挥我所学的特长。
整个系统的开发过程是曲折的,首先在硬件设计上,由于以前所学课程有一定的基础,我多方查阅资料,不断的向老师、同学学习请教,以确保设计的电路系统完整,并能实现最完美的系统功能。
经过几个月学习,我设计出了各个部分的电路图,并实现了电路图的组合。
经过测试与修改,最终完善了硬件电路的设计,并能够比较理想的完成本次毕业设计功能——红外遥控电路。
对于软件设计,因为以前的编程经验不够,因此,在这方面花费了很多的精力和时间。
尽管过程很艰难,但是在真正意义上学到了知识,为以后的工作和学习积累了宝贵的经验。
在研制过程中注重先进、适用的原则,注重科技与应用结合,来用产、学、研结合,侧重于科研技术转化为生产力。
本系统经过了设计阶段、开发实现阶段以及最后的应用测试阶段。
经过2个月的努力,核心问题已经全部解决,所有功能均已基本实现,只是在通用性上还有待提高。
这次毕业设计的经历使我对51单片机的一些特征、性能,以及应用及原理有了深刻的了解,真正做到了学有所得、学有所用,可以说获益匪浅。
但是,总的说来,由于我在理论和实践方面存在一定的不足,所以在设计思路和实现功能上难免有不足之处,请各位老师多多批评指正。
参考文献
[1]李军.检测技术及其仪表.中国轻工业出版社
[2]贺红娟等.汇编语言程序设计教程.清华大学出版社
[3]孙亮杨鹏.自动控制技术.北京工业大学出版社
[4]刘守义钟苏.数字电子技术.西安电子科技大学出版社
[5]周雪.模拟电子技术.西安电子科技大学出版社
[6]杨宏丽王静霞.单片机基础教程.人民邮电出版社
[7]林伸茂8051单片机彻底研究经验篇.人民邮电出版社
[8]刘文涛MCS-51单片机培训教程.电子工业出版社
附录
发射模块程序:
//*************单片机红外发射********
#include
sbitir=P1^3;
sbitk1=P2^5;
sbitk2=P2^4;
sbitk3=P2^3;
sbitk4=P2^2;
sbitk5=P2^1;
unsignedintcount,set_count;
bitirflag,keyflag;
unsignedcharirsys[]={0x00,0xff};
unsignedcharirdata,ircode;
voiddelay(unsignedinta)
{
unsignedchari;
while(--a!
=0)
for(i=300;i>0;i--);
}
voidkeyscan()
{
/*if(k1==0)
{
delay(10);
if(k1==0)
{
keyflag=1;
while(!
k1);
irdata=0x01;
}
}*/
if(k2==0)
{
delay(10);
if(k2==0)
{
keyflag=1;
while(!
k2);
irdata=0x02;
}
}
if(k3==0)
{
delay(10);
if(k3==0)
{
keyflag=1;
while(!
k3);
irdata=0x03;
}
}
if(k4==0)
{
delay(10);
if(k4==0)
{
keyflag=1;
while(!
k4);
irdata=0x04;
}
}
if(k5==0)
{
delay(10);
if(k5==0)
{
keyflag=1;
while(!
k5);
irdata=0x05;
}
}
}
voidir_sendbyte()//红外发送一个字节数据
{
unsignedchari;
for(i=0;i<8;i++)//发送8位数据
{
set_count=43;//发送编码中的0.56ms高电平
irflag=1;
count=0;
TR0=1;
while(countTR0=0;
if(ircode&0x01)set_count=130;//判断红外编码最低位,若为1则1.69ms的低电平
elseset_count=43;//为0则0.565ms的低电平
irflag=0;
count=0;
TR0=1;
while(countTR0=0;
ircode=ircode>>1;
}
}
voidir_send()
{
set_count=346;//发送编码中的引导码(4.5ms高电平+4.5ms低电平)
irflag=1;
count=0;
TR0=1;
while(countTR0=0;
set_count=346;//发送编码中的4.5ms低电平
irflag=0;
count=0;
TR0=1;
while(countTR0=0;
ircode=irsys[0];
ir_sendbyte();
ircode=irsys[1];
ir_sendbyte();
ircode=irdata;//发送8位数据码
ir_sendbyte();
ircode=~irdata;//发送8位数据反码
ir_sendbyte();
set_count=43;//发送编码中的0.56ms高电平
irflag=1;
count=0;
TR0=1;
while(countTR0=0;
irflag=0;
/*delay(23);//延时23ms(编码中的23ms低电平)
set_count=346;//发送编码中的引导码(4.5ms高电平+4.5ms低电平)
irflag=1;
count=0;
TR0=1;
while(countTR0=0;
set_count=346;
irflag=0;
count=0;
TR0=1;
while(countTR0=0;*/
set_count=43;
irflag=1;
count=0;
TR0=1;