《基于单片机的步进电机控制系统的设计40052.pdf》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制系统的设计40052.pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于单片机的步进电机控制系统的设计 Last updated on the afternoon of January 3,2021 本科毕业设计 遥控小车控制系统的设计 摘要 智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是其中的一个体现。智能遥控技术是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领域应用广泛。而红外遥控也是一种无线、非接触控制技术,但是由于它具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显着优点,因此被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到
2、计算机系统中。本文介绍了基于红外遥控技术的遥控小车控制系统,以STC89C52RC单片机为核心,利用红外遥控器来控制小车的运行方向和速度。系统的硬件部分主要由单片机最小系统模块、红外发射端的独立式键盘电路、红外发射电路、红外接收端的红外接收电路、控制电路等组成。软件部分使用C 语言编程,由红外发射端的主程序、键盘扫描子程序、红外编码子程序、红外接收端的主程序、红外解码子程序、小车控制子程序等组成。当独立式键盘有按键按下时,单片机扫描并确认是哪一个键按下,并将键对应的操作编码后通过红外发射电路发射出去,红外接收电路接收到操作码后,单片机对其进行解码,并将码对应的操作交予控制电路,电机、指示灯开始
3、工作,从而实现对小车的控制。关键词:STC89C52RC单片机红外发射红外接收 DesignoftheControlSystemofRemoteControlCar ChenYouchao(CollegeofEngineering,SouthChinaAgriculturalUniversity,Guangzhou510642,China)Abstract:,managementwithoutanybody;目录 7 7 8 华南农业大学本科生毕业设计成绩评定表1 前言 设计背景 遥控小车是上世纪提出的一种新型小车,是一种智能小车。从小的方面说,遥控小车可以开发幼儿的智力,提高小孩子左右手的协
4、调能力;从大的方面来说,遥控小汽车可以在军事侦察、反恐、防污染等各种高污染高危险的环境代替人的工作,因此它有广阔的应用前景。而且,遥控小车具有成本低,体积小,以及生存能力强等特点。本设计基于单片机控制和无线数据传输技术的设计思想。目前单片机已经渗透到我们生活中的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机网络通信与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种 IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程序控制玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械
5、以及各种智能机械了。无线数据传输技术也迅猛发展并已被广泛应用在各个领域,如:无线 RS485、无线 PLC,电力线无线报警,工业遥控、遥测,石油钻井张力无线监测,安防设备无线监控等。设计内容及意义 本设计基于单片机控制和无线数据传输技术的设计思想,以 STC89C52RC 单片机为核心来控制小车,利用红外线遥控器来控制小车的运行方向(前进、后退、左转、右转)和速度(加速、减速)。共分为两个模块,红外接收模块和红外发射模块。红外接收模块主要由单片机最小系统、红外接收电路、控制电路组成;红外发射模块主要有单片机最小系统、红外发送电路、独立式键盘电路组成。通过此课题的研究学习,可以将单片机课程所学的
6、知识应用到实际中,了解单片机的控制方法及无线数据传输技术的运用。此外,通过本次设计,更可以提高自己的动手能力,积累实践的经验。单片机概述 单片机又称为“微控制器 MCU”,是把中央处理器 CPU(CentralProcessingUnit)、存储器(Memory)、定时器(Timer)、I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。中文“单片机”是由英文“SingleChipMicrocomputer”直接翻译而来的。(王卫星,2009)单片机主要特点如下:(1)集成度高、体积小、可靠性高。单片机把各功能部件集成在一块芯片上,内部采用
7、总线结构,减少了各芯片之间的连线,许多信号的通道均在一个芯片内,大大提高了单片机的可靠性与抗干扰能力。另外,由于其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。系统软件(如:程序指令、常数、表格)固化在 ROM中,不易受病毒破坏,故运作时系统稳定可靠。(2)控制能力强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。(3)便于扩展。单片机片内具有计算机正常运行所必需的部件,片外有很多供扩展用的管脚(总线,并行和串行的输入/输出),很容易组成一定规模的计算机应用系统。外部总线增加了 I2C(Inter-IntegratedCi
8、rcuit)及 SPI(SerialPeripheralInterface)等串行总线方式,进一步缩小了体积,简化了结构。(4)功能强,有着丰富的内置资源。(5)实用性好。低功耗、低电压,便于生产便携式产品。红外技术概述 红外简介 从光学的角度而言,红外是频率低于红色光的不可见光,在无线光谱的整个频率中占有很小一个频率段,波长为100 微秒之间,其中3 微秒之间的红外光称为近红外,330 微秒之间的红外光称为中红外,30100 微秒之间的称为远红外。红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检
9、测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键。(李湘闽,唐宏,葛继,2004)当今红外技术的一个重要分支是红外通信技术的应用,这个应用的发展非常迅速,尤其是红外通信应用于计算机设备中,近几年的发展已经表现出其非常成熟的特性。(李洪明,2000)红外遥控 无线遥控方式可分为无线电波式、声控式、超声波式和红外线式。由于无线电容易对其它电视机和无线电通讯设备造成干扰,而且,系统本身的抗干扰性能也很差,误动作多,所以未能大量使用。超声波式频带较窄,易受噪声干扰,系统抗干扰能力差以及声控式识别正确率低,难度大而未能大量采用。红外遥控方式是以红外线作为载
10、体来传送控制信息的,同时随着电子技术的发展,单片机的出现,催生了数字编码方式的红外遥控系统的快速发展。另外,红外遥控具有很多的优点,例如红外线发射装置采用红外发光二极管,遥控发射器易于小型化且价格低廉;采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度快、传输效率高、工作稳定可靠等。所以现在很多无线遥控方式都采用红外遥控方式。(戴峻峰,付丽辉,2002)2 方案确定及原理分析 设计原理 目前市场上一般采用的遥控编码及解码集成电路。此方案具有制作简单、容易等特点,但由于功能
11、键数及功能受到特定的限制,只适合用某一专用电器产品的应用,应用范围受到限制。而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随意设定等优点。(李光飞,楼然苗,胡佳文等,2004)本单片机遥控应用系统采用红外线发射频率的不同,来识别不同的遥控功能。当我们按下某一个按键的时候,由单片机识别出该按键后,由 CPU 向接有红外发射管的端口发射一定频率的脉冲,该脉冲与 38KHz 左右的载波脉冲进行调制,然后将已调制的脉冲进行缓冲放大,激励红外发光二极管将电能转化为光能,使得红外发光二极管发射出一定频率的红外线,当接收控制系统接收到该红外光后,由单片机内定时/计数器得到该红外光的频率,
12、然后将该频率送往 CPU,由 CPU 对该信号进行反编码,识别出控制信号,从而对控制电路实施控制功能,完成整个遥控功能。(杨恢先,王子菡,杨穗等,2004)红外发射端原理 红外遥控发射端主要由单片机、单片机最小系统(包括时钟电路、复位电路)、电源、独立式键盘以及红外发射电路等组成。当独立式键盘有按键按下时,发射端单片机扫描并确认是哪一个键按下,并将键对应的操作编码后通过红外发射电路发射出去,这样便完成了一次红外数据的发射。其原理图如图 1 所示。红外接收端原理 红外遥控接收端主要有单片机、单片机最小系统(包括时钟电路、复位电路)、电源、红外接收电路以及控制电路(包括电机驱动电路、指示灯电路)等
13、组成。红外接收模块接收到红外数据后,接收端单片机对红外数据进行解码,并将码对应的操作交予控制电路,电机、指示灯开始工作,从而实现对小车的控制。其原理图如图2 所示。图 1 红外发射端原理框图 图 2 红外接收端原理框图 3 系统设计 单片机最小系统设计 单片机最小系统通常由单片机、时钟电路、复位电路、电源以及扩展部分组成。单片机简介 STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,主要特性如下:(1)增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意选择,指令代码完全兼容传统 8051。(2)工作电压:(5V单片机)/(3V单片机)
14、。(3)工作频率范围:040MHz,相当于普通 8051 的 080MHz,实际工作频率可达 48MHz。(4)用户应用程序空间为 8K字节。(5)片上集成 512 字节 RAM。(6)通用 I/O口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/,TxD/)直接下载用户程序,数秒即可完成一片。(8)具有 EEPROM 功能。(9)具有看门狗功能。(10)共 3 个 16 位定
15、时器/计数器。即定时器 T0、T1、T2。(11)外部中断 4 路,下降沿中断或低电平触发电路,PowerDown 模式可由外部中断低电平触发中断方式唤醒。(12)通用异步串行口(UART),还可用定时器软件实现多个 UART。(13)工作温度范围:-40+85(工业级)/075(商业级)。(14)PDIP 封装。图 3STC89C52RC 单片机引脚图 3.1.2 时钟电路设计 时钟电路用于产生单片机工作所需要的时钟信号。在 STC89C52RC单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2.而在芯片的外部,XTAL1 和 XTAL2 之间跨接
16、晶体振荡器和微调电容,再利用芯片内不得振荡电路形成反馈电路,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路。时钟电路产生的振荡脉冲经过单片机内部的触发器进行二分频以后,才成为单片机的时钟脉冲信号。一般的,电容 C1 和 C2 取 30pF左右,晶体的振荡频率范围是 024MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就快。STC89C52RC 单片机在通常应用情况下,使用的振荡频率为 6MHz 或 12MHz。时钟信号可以有两种方式产生:内部时钟方式和外部时钟方式。一般情况下,单片机时钟输入均采用内部时钟方式,外接一个振荡电路,本系统采用内部时钟方式,其电路如图 4 所
17、示。图 4 时钟振荡电路 3.1.3 复位电路设计 复位是单片机的一个很重要的操作方式。但是,单片机本身是不能自动进行复位的,必须配合相应的外部电路才能产生复位信号,实现复位操作。复位操作有上电复位和按键复位。(1)上电复位:STC89 系列单片及为高电平复位,通常在复位引脚 RST 上连接一个电容到 VCC,再连接一个电阻到 GND,由此形成一个 RC 充放电回路保证单片机在上电时 RST 脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为 10K和 10uF。(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST 也被拉
18、到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。本系统采用按键复位方式,其电路如图 5 所示。图 5 复位电路 稳压电路设计 考虑到本设计使用的直流电机的工作电压为+12V,而单片机的工作电压为+5V,因此,要为电源设计一个电路使得从+12V 电压中分出一个+5V 电压提供单片机工作。这样就使得不仅可以单片机正常工作同时直流电机也能够正常使用。经过对电路的整体探究决定基于一个稳压管来设计电源电路。用 78/79 系列三端稳压 IC 来组成稳压电源所需的外围元件极少电路内部还有过流、过热及调整管的保护电路使用起来可靠、方便而且价格便宜。最后决定选用 7805 稳压管来设计一个
19、稳压电路,其电路如图 6 所示。图 67805稳压电路 红外发射端设计 红外发射端主要由单片机最小系统、独立式键盘电路、红外发射电路组成。独立式键盘电路设计 独立式键盘是指直接用 I/O线构成的单个按键电路,每个独立式按键占有一根 I/O口线,每根 I/O口线上的按键的工作状态不会影响其他 I/O口线的工作状态,主要特点是结构简单,易于设计。本设计的独立式键盘由 8 个独立按键组成,每个按键对应一个独立的操作,即每个按键控制小车的一个状态,其电路如图 7 所示。当键 K1 被按下时,对应的操作为“左转”,小车左转、左转灯亮;当键 K2 被按下时,对应的操作为“前进”,小车前进;当键K3 被按下
20、时,对应的操作为“后退”,小车后退;当键 K4 被按下时,对应的操作为“右转”,小车右转;当键 K5 被按下时,对应的操作为“停止”,小车停止;当键 K6 被按下时,对应的操作为“加速”,小车加速;当键 K7 被按下时,对应的操作为“减速”,小车减速;当键 K8 被按下时,对应的操作为“前灯”,小车前灯亮。图 7 独立式键盘电路 红外发射电路设计 根据红外发射管本身的物理特性,必须要有载波信号与即将发射的信号相“与”,然后将相“与”后的信号送发射管,才能进行红外信号的发射传送,而在频率为 38KHz 的载波信号下,发射管的性能最好,发射距离最远,所以在硬件设计上,本设计采用 38KHz的晶振产
21、生载波信号,与发射信号进行逻辑“与”运算后,通过三极管的功率驱动到红外发光二极管上。红外发送电路单片机发送控制电路和红外发送管驱动输出电路组成,当单片机口输出为“0”时,发射管不发光,当单片机口输出为“1”时,红外发送管发出 38KHz 调制红外线。其电路如图 8 所示。图 8 红外发射电路 红外接收端设计 红外接收端主要由单片机最小系统、红外接收电路、电机驱动电路及指示灯电路组成。红外接收芯片介绍 SM0038(实物图如图 9 所示)是一个小型的红外遥控接收器件电路内置P/N 二极管和前置放大器,采用可红外滤波的环氧树能材料封装。SM0038 的解调输出信号可以直接由微处理器解码,本电路的主
22、要特点是可靠性好,不易受环境干扰,并可以防止非控制信号的输出脉冲出现。它的主要特点是内置光电检测器和前置放大器,内置 PCM频率滤波器,内置防电场干扰设计,输出电平与 TLL 和 CMOS 兼容,输出低电平有效,低功率消耗,不受环境光源干扰,可以连续进行数据发送 1200bit/s,输入脉冲串长度=10 周期/脉冲串。SM0038 红外接收头作为红外接收电路的核心部门,是一种一体化红外接收头。红外接收电路通常被厂家集成在一个元件中成为一体化红外接收头。内部电路包括红外监测二极管、放大器、限副器、带通滤波器、积分电路、比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把
23、脉冲幅度控制在一定的水平而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过30KHz 到 60KHz 的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制载波的不同应选用相应解调频率的接收头。红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在 22uf以上。有的厂家建议在供电脚和电源之间接入 330 欧电阻,进一步降低电
24、源干扰。图 9SM0038 红外接收头 SM0038 电路内置带通滤波器、积分器和自动增益控制电路,以抑制各种干扰和噪声,避免产生不希望的非控制脉冲信号输出。数据信号和干扰信号的区别体现在载波频率、脉冲长度、工作周期上。数据信号应满足以下条件:(1)载波频率应尽量接近带通滤波器中心频率;(2)脉冲长度应有 300us以上;(3)对于脉冲长度在 300us的脉冲,脉冲间隙应不小于 400us;(4)对于脉冲长度在以上的脉冲,脉冲间隙应在脉冲长度的倍以上;(5)每秒钟最多可接受 1000 个短脉冲信号。红外接收电路设计 红外接收电路专门采用集成电路 SM0038,SM0038 有三个引脚,一个接电
25、源一个接地,另外一个接信号端,它集光电转换,解调和放大于一体。当收到38KHz 调制红外线时,SM0038 输出为“0”,平时输出为“1”。信号脚接到脚上,当 SM0038 收到第一个红外脉冲时,触发 INT0 产生中断,使单片机退出低功耗状态,进入工作状态,同时使计数器 0 和定时器 1 开始工作。其电路如图 10 所示。电机驱动芯片介绍 无刷直流电机一般是小型的电机,采用 L298N(实物图如图 11 所示)驱动,它一般可以同时驱动两电机,如果担心驱动不够就可以采用两个 L298N。其内部原理是采用H 桥式差动放大。L298N 是 SGS 公司的产品,内部包含 4 通道逻辑驱动电路。是一种
26、二相和四相电机的专用驱动器,即内含二个 H 桥的高电压大电流双全桥式驱动器,接收标准 TTL 逻辑电平信号,可驱动 46V、2A以下的电机。图 10SM0038 接收电路 图 11L298N 驱动芯片 电机驱动电路设计 L298N可驱动 2 个电机,OUTl、OUT2和 OUT3、OUT4 之间分别接 2 个电动机。5、7、10、12 脚接输入控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机的停转。STC89C52RC输出二组 PWM波每一组 PWM 波用来控制一个电机的速度。另外二个 I/O口可以控制电机的正反转,控制方法与控制电路都比较简单。即、控制第一个电机的方向,输入的
27、 PWMl 控制第一个电机的速度;、控制第二个电机的方向,输入的 PWM2 控制第二个电机的速度。由于电机在正常工作时对电源的干扰很大,只用一组电源时会影响单片机的正常工作。所以选用双电源供电。一组5V电源给单片机和控制电路供电,另外一组5V、12V 电源给 L298N的+VCC、+VS 供电。在控制部分和电机驱动部分之间用光耦隔开,以免影响控制部分电源的品质。其电路如图 12所示。指示灯电路设计 小车的指示灯设计思想来源于实际生活。现实中,马路上的汽车左转或右转时,都被要求要开左转灯或右转灯以示意其行为。本设计的指示灯电路由四个 LED等组成。当小车左转时,代表小车左转灯的一个红色 LED灯
28、亮,直到小车进入除左转外的其他状态,左转灯灭。当小车右转转时,代表小车右转灯的另一个红色 LED灯亮,直到小车进入除右转外的其他状态,右转灯灭。无论小车在任何一个状态,可通过操作控制小车代表小车前灯的两个黄色 LED灯的亮灭。其电路如图 13 所示。图 12L298N驱动电路 图 13 指示灯电路 3.4 软件设计 本设计的软件部分由红外发射端程序和红外接收端程序两个部分组成。红外发射端程序主要由主程序、键盘扫描子程序、红外编码子程序组成,红外接收端程序主要由主程序、红外解码子程序、小车控制子程序组成。3.4.1 红外编码介绍 当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这
29、种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为、间隔、周期为的组合表示二制的“0”;以脉宽为、间隔、周期为的组合表示二进制的“1”,其波形如图 14 所示。图 14 遥控码的“0”和“1”上述“0”和“1”组成的 32 位二进制码经 38KHz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,SM0038 所发射的一帧码含有一个引导码,16 位的用户编码和 8 位的键数据码、键数据码的反码也同时被传送。引导码由一个 9ms 的载波波形和的关断时间构成,它作为随后发射的码的引导,这样当接收系统是由微处理器构成的时候,能更有效地处理码的
30、接收与检测及其它各项控制之间的时序关系。编码采脉冲位置调制方式(PPM)。利用脉冲之间的时间间隔来区分“0”和“1”。每次 8 位的码被传送之后,它们的反码也被传送,减少了系统的误码率。引导码之后,是连续的 32 位二进制码组,其中前 16 位为用户识别码,能区别不同的电器设备,防止不同机种遥控码相互干扰。该芯片的用户识别码固定为十六进制01H;后 16 位为 8 位操作码(功能码)及其反码。SM0038最多可以有128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种 32 位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在之间,
31、输出波形如图15 所示。当一个键按下超过 36ms,振荡器使芯片激活,将发射一组 108ms 的编码脉冲,这108ms 发射代码由一个引导码(9ms),一个结果码(),低 8 位地址码(9ms18ms),高 8 位地址码(9ms18ms),8 位数据码(9ms18 ms)和这 8 位数据的反码(9ms18 ms)组成。如果键按下超过 108ms 仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码()组成。图 15 发射电路输出波形 红外发射端软件设计 本部分软件主要由主程序、键盘扫描子程序、红外编码子程序组成。当键盘有按键按下时,单片机进入工作状态,键盘扫描子程序确认是哪一个键
32、按下并查询键所对应的操作码,红外编码子程序对操作码进行编码后通过红外发射管发射出去。主程序流程图如图 16所示。图 16 红外发射端主程序流程图 1.键盘扫描子程序 当有按键按下时,程序进行消抖后再次确认是否有按键按下,如无,则继续等待按键按下,如有,程序扫描是哪个键按下并转换相应的键值。其流程图如图17 所示。2.红外编码子程序 程序先发射引导码,从数据缓存区取数据,根据数据位是否为“0”调用“0”发射模或“1”发射模,发射数据直到数据发射完。其流程图如图18 所示。图 17 按键扫描子程序流程图 外接收端软件设计 本部分软件主要由主程序、红外解码子程序、小车控制子程序组成。当红外接收端接收
33、到红外数据时,单片机进入工作状态,红外解码子程序对红外数据进行解码,小车控制子程序根据码值对应的操作控制小车进入某一状态。主程序流程图如图 19所示。1.红外解码子程序 红外解码是红外编码的反编码。红外子程序先接收引导码,后接收 32 位二进制码,反编码出相应码值,再检测 8 位操作码取反是否与 8 位反码一致,若否,则此次接收失败,程序结束,若是,则确定码值。2.小车控制子程序 小车控制子程序根据红外解码子程序解出的码值,查询码值所对应的的操作,控制单片机各 I/O口,使小车进入相应状态。图 18 红外编码子程序流程图 图 19 红外接收端主程序流程图 N 4 系统测试 硬件测试 系统的硬件
34、测试主要是确定电路设计的可行性、电路焊接的正确性以及系统运行的稳定性。在系统的硬件测试中,首先是经过仿真软件绘制电路图进行仿真,验证系统电路设计的可行性,之后在万用板上焊接电路,焊接后检查电路是否正确,是否存在开路、短路等现象,再检查外围电路是否正确连接,经过这几个方面的反复验证,可确保电路板的准确无误。在本系统的调试过程中,出现过一下几个问题:(1)红外发射模块调试过程中,红外发射二极管有在工作但接收端接收不到信号,经过排查研究,可能原因是发射管的工作电压太低,在电路上增加一个三极管后发射管工作正常,接收端收到红外信号。(2)红外接收模块调试过程中,一开机指示灯便保持常亮、直流电机不工作,经
35、过排查研究,发现是 L298 外围线路存在短路现象,排除故障之后指示灯正常,直流电机正常工作。软件测试 系统的软件测试相对硬件测试来说更加麻烦,软件测试时可参考的资料不多,更多的是靠自己的想法并在测试过程中不断地摸索出正确的方法。而且在实际硬件电路上调试时如果出现故障时很难确定是硬件故障还是软件故障,所以更多的还是得依靠开发板进行调试。通过在 Keil 编译器下调试程序,有两种错误:一种逻辑错误,也就是语法错误,是很容易被发现的;另一种是功能错误,是指在没有语法错误的基础上,由于设计思想或算法的问题导致不能实现软件功能的一种错误。调试过程中出现的问题主要是功能上得错误:(1)红外发射模块实际调
36、试过程中,红外发射管正常工作但是接收端收不到红外信号,经过排查研究,原因是定时器的初值设置出现问题,使得发射管发射的信号频率不是 38KHz,调整定时器初值后接收端能收到发射端的红外信号。(2)红外接收模块仿真调试过程中,直流电机总是不工作,经过排查研究,原因是主程序中没有把直流电机子程序的调用语句放在合适的位置,把调用语句放在合适的位置后直流电机正常工作。(3)红外接收模块实际调试过程中,直流电机依然不工作,经过排查研究,原因是程序中把直流电机的复位状态设置为“速度为 0”,所以在实际运行环境中如果没有先对直流电机进行加速使其速度不为 0 的话,是观察不到直流电机工作的。5 结语 经过查阅资
37、料、思考以及实践,终于完成了毕业设计。作品设计的过程中遇到了很多问题,几度修改方案,成果虽不是非常完美,但还是能比较满意。论文是边做实物设计边整理的,所以写起来还是相对顺利的。本文介绍了基于红外遥控技术的遥控小车控制系统,以 STC89C52RC 单片机为核心,利用红外遥控器来控制小车的运行方向和速度。系统的硬件部分主要由单片机最小系统模块、红外发射端的独立式键盘电路、红外发射电路、红外接收端的红外接收电路、控制电路等组成。硬件设计简单可靠,结合软件,实现了对小车的远程控制。在设计过程中,比以往更深刻的学习了关于单片机、无线数据传输技术的知识,不仅仅是知识的沉淀,还有在硬件、软件设计过程中得到
38、加强的实践能力。相信这些能力的提升都会对我以后的职业生涯有很大的帮助。参考文献 戴峻峰,付丽辉.多功能红外线遥控器的设计 J.传感器世界,2002,8(12):16-18 李洪明.漫谈红外遥控J.电子世界,2000,(1):53 李光飞,楼然苗,胡佳文等.单片机课程设计实例指导M.北京:北京航空航天出版社,2004:168-170 李湘闽,唐宏,葛继.学习型红外遥控器J,2004,11(8):33-36 王卫星.单片机原理与应用技术M.北京:中国水利水电出版社,2009:1-21 杨恢先,王子菡,杨穗等.一种基于单片机的红外遥控软件解码方法J.自动化与仪器仪表,2004,22(2):16-18
39、 附录 A 电路原理图 红外发射端电路图:红外接收端电路图:附录 B 主要程序代码 红外发射端程序:#include#include#defineuintunsignedint#defineucharunsignedchar bitirout;/红外管状态 sbitir=P17;/红外发射管控制脚 uintcount,set_count;/中断计数,设定中断次数 bitflag,keyflag;/红外发送标志,按键标志位 ucharirsys2=0 x00,0 xFF;/16 位系统码 ucharircode,irdata;/*延时 1ms 函数*/voiddelay1ms(intms)uch
40、ary;while(ms-)for(y=0;y250;y+)_nop_();_nop_();_nop_();_nop_();/*按键扫描*/voidkeyscan(void)ucharkeytemp;P2=0 xff;keytemp=P2&0 xff;if(keytemp!=0 xff)delay1ms(20);keytemp=P2&0 xff;if(keytemp!=0 xff)keyflag=1;/有按键标志 switch(keytemp)case0 xfe:irdata=0 x42;break;/按键 1 case0 xfd:irdata=0 x5e;break;/按键 2 case0
41、xfb:irdata=0 x0c;break;/按键 3 case0 xf7:irdata=0 x4a;break;/按键 4 case0 xef:irdata=0 x5a;break;/按键 5 case0 xdf:irdata=0 x52;break;/按键 6 case0 xbf:irdata=0 x18;break;/按键 7 case0 x7f:irdata=0 x08;break;/按键 8 /*发送 8 位红外数据*/voidsendcode_8(void)uchari;for(i=0;i8;i+)set_count=28;/发送红外波 flag=1;count=0;TR0=1;
42、while(countset_count);TR0=0;if(ircode&0 x01)/判断红外编码最低位 set_count=120;else set_count=38;flag=0;count=0;TR0=1;while(count1;/*发送红外数据*/voidsendcode(void)set_count=575;/发送 9ms38K红外光 flag=1;count=0;TR0=1;while(countset_count);TR0=0;set_count=320;/间隔;flag=0;count=0;TR0=1;while(countset_count);TR0=0;ircode=
43、irsys0;/发送 16 位系统码的前 1-8 位 sendcode_8();ircode=irsys1;/发送 16 位系统码的前 9-16 位 sendcode_8();ircode=irdata;/发送 8 位数据码 sendcode_8();ircode=irdata;/发送 8 位数据反码 sendcode_8();set_count=575;flag=1;count=0;TR0=1;while(countset_count);TR0=0;set_count=148;flag=0;count=0;TR0=1;while(countset_count);TR0=0;set_count
44、=28;flag=1;count=0;TR0=1;while(countset_count);TR0=0;flag=0;/*定时器初始化*/voidinit_timer()EA=1;TMOD=0 x02;/8 位自动装载模式 ET0=1;TH0=0 xE6;/定时 13us 的 38K红外波,晶振 24M TL0=0 xE6;/*主函数*/voidmain(void)init_timer();count=0;flag=0;irout=0;while(1)keyscan();if(keyflag)/若有新按键 delay1ms(10);sendcode();/发送红外编码 delay1ms(50
45、0);keyflag=0;/按键标志清零 /*定时器中断*/voidtimer0(void)interrupt1 count+;if(flag=1)irout=irout;else irout=0;ir=irout;红外接收端程序:#include#include#defineuintunsignedint#defineucharunsignedchar sbitIRIN=P32;ucharIRCOM7;ucharkeys=0 xff;sbitmotor=P20;sbitzheng=P21;sbitfan=P22;sbitzuo=P23;sbityou=P24;sbithouzuo=P25;s
46、bithouyou=P27;sbitqian=P26;ucharon=0;/*延时 1ms 函数*/voiddelay1ms(intms)uchary;while(ms-)for(y=0;y250;y+)_nop_();_nop_();_nop_();_nop_();/*延时函数*/voidIRdelay(ucharx)/x*uchari;while(x-)for(i=0;i13;i+)/*加速程序*/voidinc()if(on!=100)on+=10;keys=0;/*减速程序*/voiddec()if(on!=0)on-=10;keys=0;/*方向向前*/voidgo()zheng=1
47、;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
48、=0;/*前灯程序*/voidflight()qian=qian;keys=0;/*中断读取红外键值程序*/voidint0(void)interrupt0 ucharj,k,N=0;IRdelay(15);if(IRIN=1)return;/确认 IR 信号出现 while(!IRIN)/等 IR 变为高电平,跳过 9ms 的前导低电平信号 IRdelay(1);for(j=0;j4;j+)/收集四组数据 for(k=0;k=30)return;/计数过长自动离开 /高电平计数完毕 IRCOMj=IRCOMj1;/数据最高位补“0”if(N=8)IRCOMj=IRCOMj|0 x80;/数据
49、最高位补“1”N=0;/endfork /endforj if(IRCOM2!=IRCOM3)EX1=1;return;keys=IRCOM2;/*码检测程序*/voidkeyscan(void)switch(keys)case0 x18:go();break;/向前 case0 x52:back();break;/向后 case0 x08:turn_lef();break;/左转 case0 x5a:turn_rig();break;/右转 case0 x5e:inc();break;/加速 case0 x0c:dec();break;/减速 case0 x42:stop();break;/停止 case0 x4a:flight();break;/前灯 default:break;/*主程序*/voidmain(void)IE=0 x81;TCON=0 x01;qian=0;houzuo=0;houyou=0;motor=0;while(1)keyscan();motor=0;delay1ms(100-on);motor=1;delay1ms(on);致谢 对本班所有同学表示感谢。