还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本科毕业设计遥控小车控制系统的设计摘要智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途智能电动车就是其中的一个体现智能遥控技术是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领域应用广泛而红外遥控也是一种无线、非接触控制技术,但是由于它具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,因此被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中本文介绍了基于红外遥控技术的遥控小车控制系统,以STC89C52RC单片机为核心,利用红外遥控器来控制小车的运行方向和速度系统的硬件部分主要由单片机最小系统模块、红外发射端的独立式键盘电路、红外发射电路、红外接收端的红外接收电路、控制电路等组成软件部分使用C语言编程,由红外发射端的主程序、键盘扫描子程序、红外编码子程序、红外接收端的主程序、红外解码子程序、小车控制子程序等组成当独立式键盘有按键按下时,单片机扫描并确认是哪一个键按下,并将键对应的操作编码后通过红外发射电路发射出去,红外接收电路接收到操作码后,单片机对其进行解码,并将码对应的操作交予控制电路,电机、指示灯开始工作,从而实现对小车的控制关键词STC89C52RC单片机红外发射红外接收DesignoftheControlSystemofRemoteControlCarChenYouchao(CollegeofEngineering,SouthChinaAgriculturalUniversity,Guangzhou510642,China)Abstract Theintelligentisadirectionofdevelopinginthefuturethatasanewmoderninvent.Itcanfollowtheautomaticoperationinanenvironmentwiththepre-setpatternmanagementwithoutanybody;alsocanbeappliedtotheuseofscientificexpiration.Intelligentcarisonereflectofitsfeatures.Intelligentremotecontroltechnologymeanschargedwiththetargetremotecontrolitwidelyusedinindustrialcontrolaerospacehomeappliancesfield.Howevertheinfraredremotecontrolisalsoawirelessnon-contactcontroltechnologybutithasastronganti-interferenceabilityreliableinformationtransmissionlowpowerconsumptioncheapereasytoimplementandothersignificantadvantages.Soitwidelyusedinmanyelectronicdeviceswhichespeciallyhouseholdappliancesandmoreandmoreapplicationsusedintothecomputersystem.ThispaperintroducestheremotecontrolcarcontrolsystembasedoninfraredremotecontroltechnologywithSTC89C52RCsingle-chipmicrocomputerasthecoretheuseofinfraredremotecontroltocontrolthedirectionandspeedofthecar.Thehardwarepartofthesystemismainlycomposedofsinglechipmicrocomputerminimumsystemmoduleinfraredlaunchtheindependenttypekeyboardcircuitinfraredemissioncircuitinfraredinfraredreceivingcircuitcontrolcircuitatthereceivingendetc.UsedClanguageprogrammingsoftwareparttheinfraredemissionisthemainprogramkeyboardscanningsubroutinetheinfraredcodingsubroutineirmainprogramatthereceivingendtheinfrareddecodingsubroutinethecarcontrolsubroutineetc.Whenindependenttypekeyboardhasakeypresssinglechipmicrocomputerscanandconfirmwhichkeysarepressedandthekeycorrespondingtothecodingoperationafterlaunchoutbyinfraredemissioncircuitinfraredreceivingcircuittoreceiveaftertheoperationcodesinglechipmicrocomputertodecodeandcodecorrespondingoperationtocontrolcircuitsmotorslightsbegantoworksoastorealizethecontrolofthecar.Keyword:STC89C52RCsingle-chipmicrocomputerinfraredemissioninfraredreceive目录TOC\o1-3\h\z\uHYPERLINK\l_Toc3561982691前言1HYPERLINK\l_Toc
3561982701.1设计背景1HYPERLINK\l_Toc
3561982711.2设计内容及意义1HYPERLINK\l_Toc
3561982721.3单片机概述1HYPERLINK\l_Toc
3561982731.4红外技术概述2HYPERLINK\l_Toc
3561982741.
4.1红外简介2HYPERLINK\l_Toc
3561982751.
4.2红外遥控2HYPERLINK\l_Toc3561982762方案确定及原理分析3HYPERLINK\l_Toc
3561982772.1设计原理3HYPERLINK\l_Toc
3561982782.2红外发射端原理3HYPERLINK\l_Toc
3561982792.3红外接收端原理3HYPERLINK\l_Toc3561982803系统设计4HYPERLINK\l_Toc
3561982813.1单片机最小系统设计4HYPERLINK\l_Toc
3561982823.
1.1STC89C52RC单片机简介4HYPERLINK\l_Toc
3561982833.
1.2时钟电路设计6HYPERLINK\l_Toc
3561982843.
1.3复位电路设计6HYPERLINK\l_Toc
3561982853.
1.4稳压电路设计7HYPERLINK\l_Toc
3561982863.2红外发射端设计8HYPERLINK\l_Toc
3561982873.
2.1独立式键盘电路设计8HYPERLINK\l_Toc
3561982883.
2.2红外发射电路设计8HYPERLINK\l_Toc
3561982893.3红外接收端设计9HYPERLINK\l_Toc
3561982903.
3.1红外接收芯片介绍9HYPERLINK\l_Toc
3561982913.
3.2红外接收电路设计10HYPERLINK\l_Toc
3561982923.
3.3电机驱动芯片介绍10HYPERLINK\l_Toc
3561982933.
3.4电机驱动电路设计11HYPERLINK\l_Toc
3561982943.
3.5指示灯电路设计12HYPERLINK\l_Toc
3561982953.4软件设计12HYPERLINK\l_Toc
3561982963.
4.1红外编码介绍13HYPERLINK\l_Toc
3561982973.
4.2红外发射端软件设计14HYPERLINK\l_Toc
3561982983.
4.3红外接收端软件设计1577HYPERLINK\l_Toc
3561983014.2软件测试178HYPERLINK\l_Toc356198303参考文献19HYPERLINK\l_Toc356198304附录A电路原理图20HYPERLINK\l_Toc356198305附录B主要程序代码21HYPERLINK\l_Toc356198306致谢36华南农业大学本科生毕业设计成绩评定表1前言
1.1设计背景遥控小车是上世纪提出的一种新型小车,是一种智能小车从小的方面说,遥控小车可以开发幼儿的智力,提高小孩子左右手的协调能力;从大的方面来说,遥控小汽车可以在军事侦察、反恐、防污染等各种高污染高危险的环境代替人的工作,因此它有广阔的应用前景而且,遥控小车具有成本低,体积小,以及生存能力强等特点本设计基于单片机控制和无线数据传输技术的设计思想目前单片机已经渗透到我们生活中的各个领域,几乎很难找到哪个领域没有单片机的踪迹导弹的导航装置,飞机上各种仪表的控制,计算机网络通信与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程序控制玩具、电子宠物等等,这些都离不开单片机更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了无线数据传输技术也迅猛发展并已被广泛应用在各个领域如无线RS
485、无线PLC电力线无线报警工业遥控、遥测石油钻井张力无线监测安防设备无线监控等
1.2设计内容及意义本设计基于单片机控制和无线数据传输技术的设计思想,以STC89C52RC单片机为核心来控制小车,利用红外线遥控器来控制小车的运行方向(前进、后退、左转、右转)和速度(加速、减速)共分为两个模块,红外接收模块和红外发射模块红外接收模块主要由单片机最小系统、红外接收电路、控制电路组成;红外发射模块主要有单片机最小系统、红外发送电路、独立式键盘电路组成通过此课题的研究学习,可以将单片机课程所学的知识应用到实际中,了解单片机的控制方法及无线数据传输技术的运用此外,通过本次设计,更可以提高自己的动手能力,积累实践的经验
1.3单片机概述单片机又称为“微控制器MCU”,是把中央处理器CPU(CentralProcessingUnit)、存储器(Memory)、定时器(Timer)、I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机中文“单片机”是由英文“SingleChipMicrocomputer”直接翻译而来的(王卫星,2009)单片机主要特点如下
(1)集成度高、体积小、可靠性高单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,许多信号的通道均在一个芯片内,大大提高了单片机的可靠性与抗干扰能力另外,由于其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作系统软件(如程序指令、常数、表格)固化在ROM中,不易受病毒破坏,故运作时系统稳定可靠
(2)控制能力强为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能
(3)便于扩展单片机片内具有计算机正常运行所必需的部件,片外有很多供扩展用的管脚(总线,并行和串行的输入/输出),很容易组成一定规模的计算机应用系统外部总线增加了I2C(Inter-IntegratedCircuit)及SPI(SerialPeripheralInterface)等串行总线方式,进一步缩小了体积,简化了结构
(4)功能强,有着丰富的内置资源
(5)实用性好低功耗、低电压,便于生产便携式产品
1.4红外技术概述
1.
4.1红外简介从光学的角度而言,红外是频率低于红色光的不可见光,在无线光谱的整个频率中占有很小一个频率段,波长为
0.75—100微秒之间,其中
0.75—3微秒之间的红外光称为近红外,3—30微秒之间的红外光称为中红外,30—100微秒之间的称为远红外红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键(李湘闽,唐宏,葛继,2004)当今红外技术的一个重要分支是红外通信技术的应用,这个应用的发展非常迅速,尤其是红外通信应用于计算机设备中,近几年的发展已经表现出其非常成熟的特性(李洪明,2000)
1.
4.2红外遥控无线遥控方式可分为无线电波式、声控式、超声波式和红外线式由于无线电容易对其它电视机和无线电通讯设备造成干扰,而且,系统本身的抗干扰性能也很差,误动作多,所以未能大量使用超声波式频带较窄,易受噪声干扰,系统抗干扰能力差以及声控式识别正确率低,难度大而未能大量采用红外遥控方式是以红外线作为载体来传送控制信息的,同时随着电子技术的发展,单片机的出现,催生了数字编码方式的红外遥控系统的快速发展另外,红外遥控具有很多的优点,例如红外线发射装置采用红外发光二极管,遥控发射器易于小型化且价格低廉;采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度快、传输效率高、工作稳定可靠等所以现在很多无线遥控方式都采用红外遥控方式(戴峻峰,付丽辉,2002)2方案确定及原理分析
2.1设计原理目前市场上一般采用的遥控编码及解码集成电路此方案具有制作简单、容易等特点,但由于功能键数及功能受到特定的限制,只适合用某一专用电器产品的应用,应用范围受到限制而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随意设定等优点(李光飞,楼然苗,胡佳文等,2004)本单片机遥控应用系统采用红外线发射频率的不同,来识别不同的遥控功能当我们按下某一个按键的时候,由单片机识别出该按键后,由CPU向接有红外发射管的端口发射一定频率的脉冲,该脉冲与38KHz左右的载波脉冲进行调制,然后将已调制的脉冲进行缓冲放大,激励红外发光二极管将电能转化为光能,使得红外发光二极管发射出一定频率的红外线,当接收控制系统接收到该红外光后,由单片机内定时/计数器得到该红外光的频率,然后将该频率送往CPU,由CPU对该信号进行反编码,识别出控制信号,从而对控制电路实施控制功能,完成整个遥控功能(杨恢先,王子菡,杨穗等,2004)
2.2红外发射端原理红外遥控发射端主要由单片机、单片机最小系统(包括时钟电路、复位电路)、电源、独立式键盘以及红外发射电路等组成当独立式键盘有按键按下时,发射端单片机扫描并确认是哪一个键按下,并将键对应的操作编码后通过红外发射电路发射出去,这样便完成了一次红外数据的发射其原理图如图1所示
2.3红外接收端原理红外遥控接收端主要有单片机、单片机最小系统(包括时钟电路、复位电路)、电源、红外接收电路以及控制电路(包括电机驱动电路、指示灯电路)等组成红外接收模块接收到红外数据后,接收端单片机对红外数据进行解码,并将码对应的操作交予控制电路,电机、指示灯开始工作,从而实现对小车的控制其原理图如图2所示图1红外发射端原理框图图2红外接收端原理框图3系统设计
3.1单片机最小系统设计单片机最小系统通常由单片机、时钟电路、复位电路、电源以及扩展部分组成
3.
1.1STC89C52RC单片机简介STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,主要特性如下
(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051
(2)工作电压
5.5V~
3.3V(5V单片机)/
3.8V~
2.0V(3V单片机)
(3)工作频率范围0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
(4)用户应用程序空间为8K字节
(5)片上集成512字节RAM
(6)通用I/O口(32个),复位后为P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P
3.0TxD/P
3.1)直接下载用户程序,数秒即可完成一片
(8)具有EEPROM功能
(9)具有看门狗功能
(10)共3个16位定时器/计数器即定时器T
0、T
1、T2
(11)外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
(12)通用异步串行口(UART),还可用定时器软件实现多个UART
(13)工作温度范围-40~+85℃(工业级)/0~75℃(商业级)
(14)PDIP封装图3STC89C52RC单片机引脚图
3.
1.2时钟电路设计时钟电路用于产生单片机工作所需要的时钟信号在STC89C52RC单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL
2.而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,再利用芯片内不得振荡电路形成反馈电路,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路时钟电路产生的振荡脉冲经过单片机内部的触发器进行二分频以后,才成为单片机的时钟脉冲信号一般的,电容C1和C2取30pF左右,晶体的振荡频率范围是0~24MHz晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就快STC89C52RC单片机在通常应用情况下,使用的振荡频率为6MHz或12MHz时钟信号可以有两种方式产生内部时钟方式和外部时钟方式一般情况下,单片机时钟输入均采用内部时钟方式,外接一个振荡电路,本系统采用内部时钟方式,其电路如图4所示图4时钟振荡电路
3.
1.3复位电路设计复位是单片机的一个很重要的操作方式但是,单片机本身是不能自动进行复位的,必须配合相应的外部电路才能产生复位信号,实现复位操作复位操作有上电复位和按键复位
(1)上电复位STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF
(2)按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位本系统采用按键复位方式,其电路如图5所示图5复位电路
3.
1.4稳压电路设计考虑到本设计使用的直流电机的工作电压为+12V,而单片机的工作电压为+5V,因此,要为电源设计一个电路使得从+12V电压中分出一个+5V电压提供单片机工作这样就使得不仅可以单片机正常工作同时直流电机也能够正常使用经过对电路的整体探究决定基于一个稳压管来设计电源电路用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少电路内部还有过流、过热及调整管的保护电路使用起来可靠、方便而且价格便宜最后决定选用7805稳压管来设计一个稳压电路,其电路如图6所示图67805稳压电路
3.2红外发射端设计红外发射端主要由单片机最小系统、独立式键盘电路、红外发射电路组成
3.
2.1独立式键盘电路设计独立式键盘是指直接用I/O线构成的单个按键电路,每个独立式按键占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其他I/O口线的工作状态,主要特点是结构简单,易于设计本设计的独立式键盘由8个独立按键组成,每个按键对应一个独立的操作,即每个按键控制小车的一个状态,其电路如图7所示当键K1被按下时,对应的操作为“左转”,小车左转、左转灯亮;当键K2被按下时,对应的操作为“前进”,小车前进;当键K3被按下时,对应的操作为“后退”,小车后退;当键K4被按下时,对应的操作为“右转”,小车右转;当键K5被按下时,对应的操作为“停止”,小车停止;当键K6被按下时,对应的操作为“加速”,小车加速;当键K7被按下时,对应的操作为“减速”,小车减速;当键K8被按下时,对应的操作为“前灯”,小车前灯亮图7独立式键盘电路
3.
2.2红外发射电路设计根据红外发射管本身的物理特性,必须要有载波信号与即将发射的信号相“与”,然后将相“与”后的信号送发射管,才能进行红外信号的发射传送,而在频率为38KHz的载波信号下,发射管的性能最好,发射距离最远,所以在硬件设计上,本设计采用38KHz的晶振产生载波信号,与发射信号进行逻辑“与”运算后,通过三极管的功率驱动到红外发光二极管上红外发送电路单片机发送控制电路和红外发送管驱动输出电路组成,当单片机P
1.7口输出为“0”时,发射管不发光,当单片机P
1.7口输出为“1”时,红外发送管发出38KHz调制红外线其电路如图8所示图8红外发射电路
3.3红外接收端设计红外接收端主要由单片机最小系统、红外接收电路、电机驱动电路及指示灯电路组成
3.
3.1红外接收芯片介绍SM0038(实物图如图9所示)是一个小型的红外遥控接收器件电路内置P/N二极管和前置放大器,采用可红外滤波的环氧树能材料封装SM0038的解调输出信号可以直接由微处理器解码,本电路的主要特点是可靠性好,不易受环境干扰,并可以防止非控制信号的输出脉冲出现它的主要特点是内置光电检测器和前置放大器,内置PCM频率滤波器,内置防电场干扰设计,输出电平与TLL和CMOS兼容,输出低电平有效,低功率消耗,不受环境光源干扰,可以连续进行数据发送1200bit/s,输入脉冲串长度=10周期/脉冲串SM0038红外接收头作为红外接收电路的核心部门,是一种一体化红外接收头红外接收电路通常被厂家集成在一个元件中成为一体化红外接收头内部电路包括红外监测二极管、放大器、限副器、带通滤波器、积分电路、比较器等红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平而不论红外发射器和接收器的距离远近交流信号进入带通滤波器,带通滤波器可以通过30KHz到60KHz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚根据发射端调制载波的不同应选用相应解调频率的接收头红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰图9SM0038红外接收头SM0038电路内置带通滤波器、积分器和自动增益控制电路,以抑制各种干扰和噪声,避免产生不希望的非控制脉冲信号输出数据信号和干扰信号的区别体现在载波频率、脉冲长度、工作周期上数据信号应满足以下条件
(1)载波频率应尽量接近带通滤波器中心频率;
(2)脉冲长度应有300us以上;
(3)对于脉冲长度在300us~
1.8ms的脉冲,脉冲间隙应不小于400us;
(4)对于脉冲长度在
1.8ms以上的脉冲,脉冲间隙应在脉冲长度的
1.3倍以上;
(5)每秒钟最多可接受1000个短脉冲信号
3.
3.2红外接收电路设计红外接收电路专门采用集成电路SM0038,SM0038有三个引脚,一个接电源一个接地,另外一个接信号端,它集光电转换,解调和放大于一体当收到38KHz调制红外线时,SM0038输出为“0”,平时输出为“1”信号脚接到P
3.2脚上,当SM0038收到第一个红外脉冲时,触发INT0产生中断,使单片机退出低功耗状态,进入工作状态,同时使计数器0和定时器1开始工作其电路如图10所示
3.
3.3电机驱动芯片介绍无刷直流电机一般是小型的电机,采用L298N(实物图如图11所示)驱动,它一般可以同时驱动两电机,如果担心驱动不够就可以采用两个L298N其内部原理是采用H桥式差动放大L298N是SGS公司的产品,内部包含4通道逻辑驱动电路是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机图10SM0038接收电路图11L298N驱动芯片
3.
3.4电机驱动电路设计L298N可驱动2个电机,OUTl、OUT2和OUT
3、OUT4之间分别接2个电动机
5、
7、
10、12脚接输入控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机的停转STC89C52RC输出二组PWM波每一组PWM波用来控制一个电机的速度另外二个I/O口可以控制电机的正反转,控制方法与控制电路都比较简单即P
2.
2、P
2.3控制第一个电机的方向,输入的PWMl控制第一个电机的速度;P
2.
4、P
2.5控制第二个电机的方向,输入的PWM2控制第二个电机的速度由于电机在正常工作时对电源的干扰很大,只用一组电源时会影响单片机的正常工作所以选用双电源供电一组5V电源给单片机和控制电路供电,另外一组5V、12V电源给L298N的+VCC、+VS供电在控制部分和电机驱动部分之间用光耦隔开,以免影响控制部分电源的品质其电路如图12所示
3.
3.5指示灯电路设计小车的指示灯设计思想来源于实际生活现实中,马路上的汽车左转或右转时,都被要求要开左转灯或右转灯以示意其行为本设计的指示灯电路由四个LED等组成当小车左转时,代表小车左转灯的一个红色LED灯亮,直到小车进入除左转外的其他状态,左转灯灭当小车右转转时,代表小车右转灯的另一个红色LED灯亮,直到小车进入除右转外的其他状态,右转灯灭无论小车在任何一个状态,可通过操作控制小车代表小车前灯的两个黄色LED灯的亮灭其电路如图13所示图12L298N驱动电路图13指示灯电路
3.4软件设计本设计的软件部分由红外发射端程序和红外接收端程序两个部分组成红外发射端程序主要由主程序、键盘扫描子程序、红外编码子程序组成,红外接收端程序主要由主程序、红外解码子程序、小车控制子程序组成
3.
4.1红外编码介绍当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同这种遥控码具有以下特征采用脉宽调制的串行码,以脉宽为
0.565ms、间隔
0.56ms、周期为
1.125ms的组合表示二制的“0”;以脉宽为
0.565ms、间隔
1.685ms、周期为
2.25ms的组合表示二进制的“1”,其波形如图14所示图14遥控码的“0”和“1”上述“0”和“1”组成的32位二进制码经38KHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的然后再通过红外发射二极管产生红外线向空间发射,SM0038所发射的一帧码含有一个引导码,16位的用户编码和8位的键数据码、键数据码的反码也同时被传送引导码由一个9ms的载波波形和
4.5ms的关断时间构成,它作为随后发射的码的引导,这样当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系编码采脉冲位置调制方式(PPM)利用脉冲之间的时间间隔来区分“0”和“1”每次8位的码被传送之后,它们的反码也被传送,减少了系统的误码率引导码之后,是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码相互干扰该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码SM0038最多可以有128种不同组合的编码遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在
58.5~
76.5ms之间,输出波形如图15所示当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲这108ms发射代码由一个引导码(9ms)一个结果码(
4.5ms)低8位地址码(9ms~18ms)高8位地址码(9ms~18ms)8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(
2.25ms)组成图15发射电路输出波形
3.
4.2红外发射端软件设计本部分软件主要由主程序、键盘扫描子程序、红外编码子程序组成当键盘有按键按下时,单片机进入工作状态,键盘扫描子程序确认是哪一个键按下并查询键所对应的操作码,红外编码子程序对操作码进行编码后通过红外发射管发射出去主程序流程图如图16所示图16红外发射端主程序流程图
1.键盘扫描子程序当有按键按下时,程序进行消抖后再次确认是否有按键按下,如无,则继续等待按键按下,如有,程序扫描是哪个键按下并转换相应的键值其流程图如图17所示
2.红外编码子程序程序先发射引导码,从数据缓存区取数据,根据数据位是否为“0”调用“0”发射模或“1”发射模,发射数据直到数据发射完其流程图如图18所示图17按键扫描子程序流程图
3.
4.3外接收端软件设计本部分软件主要由主程序、红外解码子程序、小车控制子程序组成当红外接收端接收到红外数据时,单片机进入工作状态,红外解码子程序对红外数据进行解码,小车控制子程序根据码值对应的操作控制小车进入某一状态主程序流程图如图19所示
1.红外解码子程序红外解码是红外编码的反编码红外子程序先接收引导码,后接收32位二进制码,反编码出相应码值,再检测8位操作码取反是否与8位反码一致,若否,则此次接收失败,程序结束,若是,则确定码值
2.小车控制子程序小车控制子程序根据红外解码子程序解出的码值,查询码值所对应的的操作,控制单片机各I/O口,使小车进入相应状态图18红外编码子程序流程图INCLUDEPICTURE../Local%20Settings/Temp/ksohtml/wps_clip_image-
13789.png\*MERGEFORMAT图19红外接收端主程序流程图4系统测试
4.1硬件测试系统的硬件测试主要是确定电路设计的可行性、电路焊接的正确性以及系统运行的稳定性在系统的硬件测试中,首先是经过仿真软件绘制电路图进行仿真,验证系统电路设计的可行性,之后在万用板上焊接电路,焊接后检查电路是否正确,是否存在开路、短路等现象,再检查外围电路是否正确连接,经过这几个方面的反复验证,可确保电路板的准确无误在本系统的调试过程中,出现过一下几个问题
(1)红外发射模块调试过程中,红外发射二极管有在工作但接收端接收不到信号,经过排查研究,可能原因是发射管的工作电压太低,在电路上增加一个三极管后发射管工作正常,接收端收到红外信号
(2)红外接收模块调试过程中,一开机指示灯便保持常亮、直流电机不工作,经过排查研究,发现是L298外围线路存在短路现象,排除故障之后指示灯正常,直流电机正常工作
4.2软件测试系统的软件测试相对硬件测试来说更加麻烦,软件测试时可参考的资料不多,更多的是靠自己的想法并在测试过程中不断地摸索出正确的方法而且在实际硬件电路上调试时如果出现故障时很难确定是硬件故障还是软件故障,所以更多的还是得依靠开发板进行调试通过在Keil编译器下调试程序,有两种错误一种逻辑错误,也就是语法错误,是很容易被发现的;另一种是功能错误,是指在没有语法错误的基础上,由于设计思想或算法的问题导致不能实现软件功能的一种错误调试过程中出现的问题主要是功能上得错误
(1)红外发射模块实际调试过程中,红外发射管正常工作但是接收端收不到红外信号,经过排查研究,原因是定时器的初值设置出现问题,使得发射管发射的信号频率不是38KHz,调整定时器初值后接收端能收到发射端的红外信号
(2)红外接收模块仿真调试过程中,直流电机总是不工作,经过排查研究,原因是主程序中没有把直流电机子程序的调用语句放在合适的位置,把调用语句放在合适的位置后直流电机正常工作
(3)红外接收模块实际调试过程中,直流电机依然不工作,经过排查研究,原因是程序中把直流电机的复位状态设置为“速度为0”,所以在实际运行环境中如果没有先对直流电机进行加速使其速度不为0的话,是观察不到直流电机工作的5结语经过查阅资料、思考以及实践,终于完成了毕业设计作品设计的过程中遇到了很多问题,几度修改方案,成果虽不是非常完美,但还是能比较满意论文是边做实物设计边整理的,所以写起来还是相对顺利的本文介绍了基于红外遥控技术的遥控小车控制系统,以STC89C52RC单片机为核心,利用红外遥控器来控制小车的运行方向和速度系统的硬件部分主要由单片机最小系统模块、红外发射端的独立式键盘电路、红外发射电路、红外接收端的红外接收电路、控制电路等组成硬件设计简单可靠,结合软件,实现了对小车的远程控制在设计过程中,比以往更深刻的学习了关于单片机、无线数据传输技术的知识,不仅仅是知识的沉淀,还有在硬件、软件设计过程中得到加强的实践能力相信这些能力的提升都会对我以后的职业生涯有很大的帮助参考文献戴峻峰,付丽辉.多功能红外线遥控器的设计[J].传感器世界,2002,81216-18李洪明.漫谈红外遥控[J].电子世界,2000,153李光飞,楼然苗,胡佳文等.单片机课程设计实例指导[M].北京北京航空航天出版社,2004168-170李湘闽,唐宏,葛继.学习型红外遥控器[J],2004,11833-36王卫星.单片机原理与应用技术[M].北京中国水利水电出版社,20091-21杨恢先,王子菡,杨穗等.一种基于单片机的红外遥控软件解码方法[J].自动化与仪器仪表,2004,22216-18附录A电路原理图红外发射端电路图红外接收端电路图附录B主要程序代码红外发射端程序#includereg
51.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharbitirout;//红外管状态sbitir=P1^7;//红外发射管控制脚uintcountset_count;//中断计数,设定中断次数bitflagkeyflag;//红外发送标志,按键标志位ucharirsys
[2]={0x000xFF};//16位系统码ucharircodeirdata;/******************************************延时1ms函数******************************************/voiddelay1msintms{uchary;whilems--{fory=0;y250;y++{_nop_;_nop_;_nop_;_nop_;}}}/******************************************按键扫描******************************************/voidkeyscanvoid{ucharkeytemp;P2=0xff;keytemp=P20xff;ifkeytemp!=0xff{delay1ms20;keytemp=P20xff;ifkeytemp!=0xffkeyflag=1;//有按键标志switchkeytemp{case0xfe:irdata=0x42;break;//按键1case0xfd:irdata=0x5e;break;//按键2case0xfb:irdata=0x0c;break;//按键3case0xf7:irdata=0x4a;break;//按键4case0xef:irdata=0x5a;break;//按键5case0xdf:irdata=0x52;break;//按键6case0xbf:irdata=0x18;break;//按键7case0x7f:irdata=0x08;break;//按键8}}}/******************************************发送8位红外数据******************************************/voidsendcode_8void{uchari;fori=0;i8;i++{set_count=28;//发送
0.56ms38K红外波flag=1;count=0;TR0=1;whilecountset_count;TR0=0;ifircode0x01//判断红外编码最低位{set_count=120;}else{set_count=38;}flag=0;count=0;TR0=1;whilecountset_count;TR0=0;ircode=ircode1;}}/******************************************发送红外数据******************************************/voidsendcodevoid{set_count=575;//发送9ms38K红外光flag=1;count=0;TR0=1;whilecountset_count;TR0=0;set_count=320;//间隔
4.5ms;flag=0;count=0;TR0=1;whilecountset_count;TR0=0;ircode=irsys
[0];//发送16位系统码的前1-8位sendcode_8;ircode=irsys
[1];//发送16位系统码的前9-16位sendcode_8;ircode=irdata;//发送8位数据码sendcode_8;ircode=~irdata;//发送8位数据反码sendcode_8;set_count=575;flag=1;count=0;TR0=1;whilecountset_count;TR0=0;set_count=148;flag=0;count=0;TR0=1;whilecountset_count;TR0=0;set_count=28;flag=1;count=0;TR0=1;whilecountset_count;TR0=0;flag=0;}/******************************************定时器初始化******************************************/voidinit_timer{EA=1;TMOD=0x02;//8位自动装载模式ET0=1;TH0=0xE6;//定时13us的38K红外波,晶振24MTL0=0xE6;}/******************************************主函数******************************************/voidmainvoid{init_timer;count=0;flag=0;irout=0;while1{keyscan;ifkeyflag//若有新按键{delay1ms10;sendcode;//发送红外编码delay1ms500;keyflag=0;//按键标志清零}}}/******************************************定时器中断******************************************/voidtimer0voidinterrupt1{count++;ifflag==1{irout=~irout;}else{irout=0;}ir=irout;}红外接收端程序#includereg
51.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharsbitIRIN=P3^2;ucharIRCOM
[7];ucharkeys=0xff;sbitmotor=P2^0;sbitzheng=P2^1;sbitfan=P2^2;sbitzuo=P2^3;sbityou=P2^4;sbithouzuo=P2^5;sbithouyou=P2^7;sbitqian=P2^6;ucharon=0;/******************************************延时1ms函数******************************************/voiddelay1msintms{uchary;whilems--{fory=0;y250;y++{_nop_;_nop_;_nop_;_nop_;}}}/******************************************延时
0.14ms函数******************************************/voidIRdelayucharx//x*
0.14ms{uchari;whilex--{fori=0;i13;i++{}}}/******************************************加速程序******************************************/voidinc{ifon!=100on+=10;keys=0;}/******************************************减速程序******************************************/voiddec{ifon!=0on-=10;keys=0;}/******************************************方向向前******************************************/voidgo{zheng=1;fan=0;zuo=1;you=0;houzuo=0;houyou=0;keys=0;}/******************************************方向向后******************************************/voidback{zheng=0;fan=1;zuo=0;you=1;houzuo=0;houyou=0;keys=0;}/******************************************左转******************************************/voidturn_lef{zheng=0;fan=1;zuo=1;you=0;houzuo=1;houyou=0;keys=0;}/******************************************右转******************************************/voidturn_rig{zheng=1;fan=0;zuo=0;you=1;houzuo=0;houyou=1;keys=0;}/******************************************停止程序******************************************/voidstop{on=0;houzuo=0;houyou=0;keys=0;}/******************************************前灯程序******************************************/voidflight{qian=~qian;keys=0;}/******************************************中断读取红外键值程序******************************************/voidint0voidinterrupt0{ucharjkN=0;IRdelay15;ifIRIN==1{return;}//确认IR信号出现while!IRIN//等IR变为高电平,跳过9ms的前导低电平信号{IRdelay1;}forj=0;j4;j++//收集四组数据{fork=0;k8;k++//每组数据有8位{whileIRIN//等IR变为低电平,跳过
4.5ms的前导高电平信号{IRdelay1;}while!IRIN//等IR变为高电平{IRdelay1;}whileIRIN//计算IR高电平时长{IRdelay1;N++;ifN=30{return;}//
0.14ms计数过长自动离开}//高电平计数完毕IRCOM[j]=IRCOM[j]1;//数据最高位补“0”ifN=8{IRCOM[j]=IRCOM[j]|0x80;}//数据最高位补“1”N=0;}//endfork}//endforjifIRCOM
[2]!=~IRCOM
[3]{EX1=1;return;}keys=IRCOM
[2];}/******************************************码检测程序******************************************/voidkeyscanvoid{switchkeys{case0x18:go;break;//向前case0x52:back;break;//向后case0x08:turn_lef;break;//左转case0x5a:turn_rig;break;//右转case0x5e:inc;break;//加速case0x0c:dec;break;//减速case0x42:stop;break;//停止case0x4a:flight;break;//前灯default:break;}}/******************************************主程序******************************************/voidmainvoid{IE=0x81;TCON=0x01;qian=0;houzuo=0;houyou=0;motor=0;while1{keyscan;motor=0;delay1ms100-on;motor=1;delay1mson;}致谢对本班所有同学表示感谢N。