毕业设计(论文)基于ARM的机器人套件控制系统设计.doc
基于ARM的机器人套件控制系统设计学 院自动化学院专 业测控技术与仪器班 级04070101学 号2010040701021姓 名指导教师负责教师沈阳航空航天大学2014年6月摘 要智能遥控避障循迹小车是基于ARM的创新实验教学平台所开发出的一款产品,既可以作为家庭智能清洁机器人,也可以在工厂仓库中作为沿固定线路运货的货运机器人。采用先进的嵌入式系统开发,成为服务机器人里一个新的研究领域,具有很强的市场价值。本设计的智能小车采用基于ARM7架构的LPC2138微处理器,设计开发了智能小车的控制系统,通过对超声波测距原理、红外线NEC协议、PWM舵机调速原理和LPC2138内部寄存器知识的掌握和合理配置,使小车集红外线遥控、超声波避障、红外对射管循迹三种功能于一体。利用逻辑分析仪对小车三种功能的时序进行采集,根据采集到的时序设计程序,实现了利用红外遥控器对这三种方式的手动切换。关键词:红外遥控;ARM7;超声波避障;红外对射管循迹Title of Paper (in English)AbstractIntelligent Remote obstacle avoidance tracking car is based on ARM innovative experimental teaching platform. either as a family intelligent cleaning robot can also be used as cargo freight robot along a fixed line in warehouse, using advanced embedded systems technology, which become a new research field in service robots, with strong market value. The design of the intelligent car use LPC2138 ARM7 microprocessor architecture, through the principle of ultrasonic distance measurement, infrared NEC protocol, the principle of PWM and the reasonable configuration of LPC2138 internal registers, which also set three functions in one. I use a logic analyzer for collecting the sequence of time, according to the timing of the acquisition to achieve the use of infrared manual remote switching of these three founctions.Keywords:Infrared remote control;ARM7;Ultrasonic obstacle avoidance;Infrared ray tube tracking目 录1 绪论11.1 课题背景及研究的意义11.2 课题的研究现状11.3研究内容和论文的结构安排22传感器工作原理32.1主控芯片简介32.2光电传感器的工作原理32.3超声波测距的原理42.4红外通信基本原理52.5 NEC协议52.6舵机工作原理53 总体方案设计73.1超声波自动避障小车73.2手动遥控小车83.3自动循迹小车93.4利用红外遥控器实现对三种方式的手动切换104 软件功能设计114.1高低电平持续时间的捕获模型:按键持续时间采集114.2 红外编码值捕获程序134.3 超声波测距捕获程序164.4 舵机驱动程序174.5 三种方式切换程序185.系统调试分析205.1系统设计中的注意事项205.1.1外部因素205.1.2内部因素205.2硬软件总体调试205.1.1硬件215.1.2软件21参考文献22致 谢23附录智能遥控循迹避障小车程序清单241 绪论1.1 课题背景及研究的意义基于ARM7的机器人套件教学实验平台是一个专为学生提供的教学实验平台,鼓励学生亲自动手操作,按照自己的想法来设计硬件结构和软件编程,通过对机器人结构的不断设计、组装和对程序的不断修改、调试来使学生具有广阔的发挥余地并激发出学习热情和创造能力,能够广泛适用于机械、机电一体化、电气工程、自动化工程等方向的就业需求。巧妙的机械结构和高性能、多种类电子部件、软件平台的结合,可设计出独创的智能机器人。而智能车作为一个拥有感知环境、规划决策,自动驾驶等功能的综合系统,它集中地运用了计算机、传感、信息、通信、导航及自动控制等技术,是典型的高新技术综合体。在原有车辆系统的基础上,智能车添加了一些高新智能技术设备,如:1)用于完成来自外部传感器所获取的道路信息的预处理、分析、识别等工作的计算机处理系统;2)传感器,用来获得道路实时状况信息的智能车眼睛;随着微电子技术的不断发展,单片机不但集成程度越来越高,已可以在一块芯片上同时集成CPU、存储器、定时器计数器、并行和串行接口、AD 转换器、DA 转换器等多种电路,而且体积越来越小,功耗越来越低,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前的机器人技术发展异常迅速,已经出现了各种各式的用于各种用途的机器人了,机器人的设计与制造已经不是很高难度的事情了,已经具有普及性了。1.2 课题的研究现状从“七五”开始,我国的移动机器人研究开始起步,经过多年来的发展,已经取得了一定的成绩。清华大学智能移动机器人涉及到五个方面的关键技术:基于地图的全局路径规划技术研究;基于传感器信息的局部路径规划技术研究;路径规划的仿真技术研究;传感技术、信息融合技术研究;智能移动机器人的设计和实现。香港城市大学智能设计、自动化及制造研究中心的自动导航车和服务机器人。中国科学院沈阳自动化研究所得AGV和防暴机器人。中国科学院自动化所自行设计、制造的全方位移动式机器人视觉导航系统。自主移动机器人的研究虽取得了很大的进展,国防科技大学在1992年成功研制出我国第一辆真正意义上的无人驾驶汽车。先后研制出四代无人驾驶汽车。第四代全自主无人驾驶汽车于2000年6月在长沙市绕城高速公路上进行了全自主无人驾驶试验,试验最高时速达到75.6Km/h。在2004年10月12日的第六届高交会上,红旗无人驾驶汽车就引起了极大的轰动。它在高速公路上最高稳定无人驾驶速度为130公里/小时;峰值无人驾驶速度为170公里/小时。并同时具备安全超车和系统小型化两个主要指标。为如此,他们把它称为“中国汽车界的神舟五号”。智能小车作为移动式机器人的一个重要分支,随着机器人研究的深入受到越来越多人的关注。它是计算机控制与电子技术的融合,集传感器探测(光源、障碍物)、单片机自动控制、电机调速等于一体,可以说是计算机、传感器、信息、通讯、导航、人工智能及自动控制等技术的一个综合体,为电子设备智能化提供了很好的实例。 现今社会智能小车发展很快,从智能玩具到其它各行业都有实质成果。基本可实现遥控、循迹、避障、寻光入库、避崖等基本功能,这几界的电子设计大赛智能小车又在向声控系统发展。比较出名的飞思卡尔智能小车更是走在前列。我此次的设计主要实现遥控循迹避障这三个功能的切换。根据实际设计制作基于LPC2138微处理器核心控制平台的智能小车,在智能小车的红外遥控、自动循线、测距、避障、显示等方面进行一定的的研究。1.3研究内容和论文的结构安排本文的研究内容是基于LPC2138微处理器开发出一款智能小车,它集红外遥控、超声波避障、红外对射管循迹这三种功能于一体并能利用红外遥控来实现这三种功能的自由切换。文章结构包括下面几个内容: 1、综述小车的研究与现状,阐述文章的大致方向 2、对智能小车进行方案总设计,主要包括车体的选择、电驱模块驱动电机的选择、循迹模块和壁障模块传感器的选择控制系统模块和电源模块的选择 3、结合自己所学的专业知识,对小车进行软件设计,使得小车能自动的避障和循迹 5、对小车进行制作安装与调试,对测试的结果进行分析2传感器工作原理2.1主控芯片简介ARM核处理器LPC2138芯片具有丰富的片内集成功能,譬如GPIO接口、定时器、脉冲调制模块、A/D转换器、D/A转换器、UART、I2C、SPI和SSP、实时时钟、看门狗定时器及系统控制模块等。每一种片内集成功能都具有相关控制寄存器,用户只要根据自己的需求对相关的寄存器进行必要的配置。就可以方便灵活地实现这些集成功能的应用。芯片引脚大多有一个以上的功能,可以通过引脚连接模块连接到不同的片内功能上,大部分引脚复位后默认为GPIO。图2.1 LPC2138原理图2.2光电传感器的工作原理光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的。光电传感器在一般情况下,有三部分构成,它们分为:发送管、接收管和检测电路。发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围230cm,工作电压为3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。图2.2反射式光电管原理图2.3超声波测距的原理工作时超声波的频率比声波的高,在40khz左右。超声波传感器主要是由超声波发生器和接收器组成,当超声波测距时,超声波发射换能器振动并产生40khz的超声波,并让LPC2138开始计时,当超声波接收器接收到反射回来的波时,向主控芯片发送结束信号,主控芯片关闭定时器,并根据时间差计算出到障碍物的距离,并控制舵机的动作,完成对障碍物的安全避障。图 2.3超声波传感器外部结构 图 2.4 超声波传感器内部结构图2.5时序图2.4红外通信基本原理红外通信是利用950nm近红外波段的红外线作为传递信息的媒介,发送端将基带二进制信号经过38khz时钟调制为一系列的脉冲串信号,通过红外发射管发射红外信号。接收端将接收到的光脉冲转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。简言之,红外通信就是对二进制信号进行调制与解调。2.5 NEC协议遥控器的编码分好几种,常见的有32位编码和42位编码,本课题采用NEC协议的32位脉宽调制的串行码,即由32位二进制形式的高低电平组成。具体由下图表示:用户码(8位)用户码(8位)键数据反码(8位)引导码键数据码(8位)图2.6 NEC协议引导码低电平持续时间(载波时间)为9000um左右,高电平持续时间为4500us左右。键码的数值信息通过一个高低电平持续时间来表示,“1”的持续时间大概是1680us高电平加上560us低电平,“0”的持续时间约为560us高电平加上560us低电平。接收到的数据按接收到的先后顺序从低到高位排列。2.6舵机工作原理在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普,其实是一种伺服马达。而舵机又分为标准舵机和圆周舵机,标准舵机的最大转动角度是固定的,而圆周舵机则可以360度旋转,类似于步进电机,但转动的角度更加精确。控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms-0度;1.0ms-45度;1.5ms-90度;2.0ms-135度;2.5ms-180度;图2.7舵机控制时序图3 总体方案设计3.1超声波自动避障小车小车行进时能对前方障碍物距离进行测量并显示,当障碍物距离小于一定值时,小车转弯避开障碍物。超声波发射电路LPC2138超声波接收电路LED舵机图3.1系统设计框图初始化超声波发射超声波接收显示距离直走小于设定距离转弯否是开始图3.2超声波自动避障软件流程图3.2手动遥控小车红外线发射器和接收管,组成无线控制装置,可以控制小车的前进、后退、左转弯、右转弯等。LPC2138红外接收电路舵机图3.3系统设计框图初始化红外接收右转左转后退后退?左转?前进前进?是否接收到右转?是否是否是是是否否否开始图3.4 手动遥控小车软件流程图3.3自动循迹小车两对光电收发管组成一个简易的循迹小车,可以沿着黑线循迹前进。光电发射电路LPC2138光电接收电路舵机图3.5 系统设计框图 初始化直走左转右转左灯触线?右灯触线?是是否否开始图3.6 自动循迹小车软件流程图3.4利用红外遥控器实现对三种方式的手动切换超声波发射电路LPC2138超声波接收电路LCD舵机光电发射电路光电接收电路红外接收电路图3.7 系统设计总框图4 软件功能设计4.1高低电平持续时间的捕获模型:按键持续时间采集实际上红外编码之间的高低电平持续时间最大是9.12ms,而人眼能能区分光闪烁的临界频率是48.5HZ,也就是能分辨出间隔大于21.8ms的闪烁,所以靠捕捉到的红外线电平持续时间是区分不出小灯是否闪烁的,此程序只是用来验证低电平时间捕获是否可行,所以采用捕获独立按键被按下的时间作为闪烁时间间隔。将独立按键K1接0.17引脚,采集K1被按下后低电平持续时间,原计划是使用2138内部的定时器捕获寄存器CR0CR3来捕获时间,但是由于捕获寄存器只能对上升沿、下降沿和双边沿进行捕捉,例如下图一旦一个高电平经过一个下降沿变为低电平,那么这个下降沿就需要同时作为高电平定时器的截止信号和低电平定时器的开始信号,但是此下降沿作为定时器捕获前一个高电平时间的结束标志后根本无法被下一个作为低电平的定时器所捕获,而最终我想要的效果是能连续捕捉高低电平信号,所以只能通过利用处理器识别GPIO的高低电平来作为定时器的开关信号。图4.1 高电平经过下降沿变为低电平是否引脚为低读取P0.17电平是否开启定时器0读取P0.17电平是否引脚为高是否保存TC值,关闭定时器控制LED小灯闪烁5次,间隔为TC结束结束图4.2 获取低电平持续时间流程图根据图可以看到程序开始是不断检测P0.17引脚是否被拉低,一旦被拉低则开启定时器0,之后再不断检测P0.17引脚是否被拉高,一旦被拉高则关闭定时器将累加器TC值保存,TC值则正好是低电平持续的时间,将TC值赋给延时函数,通过观察LED小灯的闪烁频率来判断K1按下的时间是否被捕获。实验证明小灯的闪烁频率确实由K1按下的时间控制,说明此低电平持续时间捕获程序是可行的,同理设计出了高电平捕获程序。4.2 红外编码值捕获程序在硬件中将接收管的数据管脚连接到LPC2138的P0.17脚,使用32位红外键值码值,而解码则需要利用程序将接收到的这32位高低电平持续的时间捕获到,并区分出不同按键之间的键码值。开始捕获低电平时间8500us<T<9500us捕获高电平时间4000us<T<5000us捕获低电平时间200us<T<800us捕获高电平时间T<1120usIr_Bufm数组右移一位令Ir_Bufm最高位为1i+是是是否否否否 i=8否是 m=4m+否是是结束图4.3 红外键码捕获流程图根据图可看出红外键码值高低电平持续时间的捕获流程,首先是对引导码的捕获,9120us的低电平和4500us的高电平,接着是捕获8位的系统码和8位的系统反码,此系统码是用来防止不同机种遥控码的干扰,接下来是8位数据码和8位数据反码,此数据码用来设置不同按钮的功能。图4.4 红外键码捕时序图同一个遥控器不同按键的引导码、用户码和用户反码都是一样的,区别就在于数据码,如图是用逻辑分析仪采集到的按键“0”的键码值,它的数据码按由低到高解出来的值是00110000即0x30,而其他的一些键值数据码譬如“1”则是0x0c。所以不同的遥控器按键就是通过数据码的不同来区分的。4.3 超声波测距捕获程序在硬件中将发射端的数据管脚连接到LPC2138的P0.14脚,接收端的数据管脚连P0.15脚。按键持续时间采集模型同样适用于超声波捕获接收端引脚低电平持续时间的采集。开始发射端给10us高电平读取接收端电平是否为低打开定时器0读取接收端电平是否为高关闭定时器0保存T1TC值S=340*t/2是否是否数码管显示距离图4.5 超声波往返时间捕获流程图根据图可看出刚开始LPC2138给P0.14脚提供10us左右的高电平,激发模块内部将发出8个40kHz周期电平并检测回波,一旦检测到有回波信号则输出回响信号,超声波传感器的接收引脚就置低电平,而P0.15脚一检测到低电平就打开定时器1,开始计时,当传感器接收反射回来的波时即将接收引脚置高,P0.15脚一检测到高电平就关闭定时器1,并将累加器的值T1TC换算成“秒”后代入公式:S=340*t/2并用数码管显示测得的距离。4.4 舵机驱动程序PWMMR0=221184PWMMR6=16600 PWMMR6=26600Ir_Buf2=顺时针是否开始PWMMR6=6600 PWMLER=0x41采集红外数据码图4.6 舵机驱动流程图PWMMR0=221184代表的是周期20ms,PWMMR6=16600代表的是一个周期内高电平的持续时间为1.5ms,上图表示用遥控器控制单个舵机的正反转,当程序判断出接收到遥控器发来的顺时针信号时,令PWMMR6=26600,即高电平时间大于1.5ms,舵机顺时针转动;反之,舵机逆时针转动,PWWMR的值改变之后,再执行PWMLER=0x41锁存指令,改变后的PWM信号会在下一个周期被更新,即实现了正反转的控制。4.5 三种方式切换程序红外接收端采集键值(BZ=0)超声波避障红外遥控(BZ=1)Ir_Buf2=0x46Ir_Buf2=0x45是是否Ir_Buf2=0x44是否定时器1每720us检测一次P0.17脚电平P0.17=0是否否Ir_Buf2=0x47是否循迹定时器1每720us检测一次P0.17脚电平P0.17=0否是开始图4.7 三种方式切换流程图根据图可总体的看出红外遥控器是具两大功能,第一个功能是对小车三种方式的切换,第二个功能是控制小车行进方向,而这两种功能都是对键值进行判断的,所以为了相互之间不发生干扰,用一个标志位“BZ”来区别这两种功能,当BZ=0时,红外线采集的键值是用来判断三种方式的;当BZ=1时,红外线采集的键值是用来控制小车行进方向的。而在切换到超声波避障方式时,使用定时器1来不断检测P0.17的引脚电平是因为程序大部分时间都是在测距和控制舵机状态,当红外信号到来时P0.17脚被拉低,但程序却是大部分时间都是在测距,检测到P0.17的电平是否被拉低的几率非常低,所以我将判断P0.17脚电平程序写如定时器1里,让其每720us检测一次引脚电平,这个值是由多次实验得出的,因为理论上检测时间越小,则捕获低电平的几率越大,但是考虑到在超声波测距中捕获超声波往返时间也需要一个精确的时序,所以720us是所能成功捕获P0.17脚电平的最小值,再减小就会干扰到超声波测距功能。而跳出超声波避障功能的依据是判断P0.17是否被拉低却不是判断由此引脚捕获的数据码Ir_Buf2的原因是由红外键码值的采集程序所决定的,因为采集红外键码值的程序都是写在while循环语句中的,所以在采集到固定格式的键码时序之前,程序一直处于循环检测状态,根本不会进行超声波避障的判断,所以只采用判断引导码低电平的方式来跳出超声波测距状态。在切换到循迹模式时较为简单,只是通过判断反射式光电管的接收管是否接收到信号来控制舵机的转动方向,虽然此程序的主体也是由判断语句组成,但是和超声波测距同理,会导致无法循迹,因为程序会一直在采集键值的while循环中运行,所以执行不到判断黑白标的程序。这里沿用和判断超声波跳避障出一样的条件即检测P0.17的引脚电平来判断是否跳出循迹模式。5.系统调试分析5.1系统设计中的注意事项5.1.1外部因素外部因素主要有环境光线、赛道材质等因素。以采用光电寻迹方案的智能车为例,如果接收的信号中有很多噪声成分,或者黑白区分不清晰,就很难识别路线,从而对后续的控制过程造成很大影响。因此,合理调试传感器与地面的最佳距离很重要。5.1.2内部因素(1) 超声波测距跳出命令采样时间的影响为了不干扰超声波避障功能,经过多次测试,720us是采集红外键值时间间隔的最小值,但是由于间隔时间过长,捕获到红外键值的成功率低于100%。(2) 过度转向的避免由于是后轮驱动,在弯曲的路线上加速可能会出现过度转向现象,因此在车辆弯道行驶时需要小心控制车辆的转向速度。(3) 传感器的影响刚开始的时候,我的传感器装的比较高,这样就不能很好的感应到路线,以至于出现乱跑的现象。其次传感器两者之间的距离,如果可以的话,尽量使用四处或更多的传感接收,这样的话就可以有效避免小车未来得及做出反应就已经冲出轨迹,回不来的现象,从而实现可靠循迹,如果在以后的设计中需要的话,可以采用激光传感器进行探测,这样就会更精准的寻迹。(4) 负荷较重的影响 由于采用7.2v电池组供电,而舵机和超声波传感器的功率都较大,通电瞬时由于局部电流过小,电压被拉低,导致传感器无法正常工作,加电机驱动模块L298N来驱动舵机。5.2硬软件总体调试从最初用两个独立按键来控制舵机的正反转,到之后能够逐渐通过编程来采集不同传感器的时序,进而驱动传感器采集外界信息,并通过采集来的信息驱动舵机的转动方向,一直到现在的实现通过红外遥控器自由切换三种工作方式。5.1.1硬件由于我手上的各类传感器都只有一个,所以在进行传感器管脚连接时格外小心,我在硬件上没有做过多的设计,只是在一块最小系统板上直接连接传感器,并与软件联调,各项功能都得以完美实现。5.1.2软件在程序的设计中最难的地方就是如何跳出超声波避障功能,就是通过定时器不断采集红外线键码的方式,而且要再捕获键值成功率和不干扰超声波避障功能之间做权衡,在反复试验之后,得到了最佳时间间隔720us。一旦大于此值捕获红外键码值的成功率就会大大降低,一旦小于此值就会干扰到超声波避障功能。而最关键的地放还是对高低电平持续时间的采集,它是采集红外键码值和超声波往返时间的核心,在不断的修改采集电平持续时间的程序,最后终于修改到了一个能够稳定捕获高低电平持续时间的程序,构成了整体程序的基本要素。参考文献1 徐爱钧,徐阳.ARM嵌入式应用技术基于proteus仿真M .2012.2 周景润.ARM7嵌入式系统设计与仿真基于Proteus、Keil、与IARM .2012.3 黄智伟.印制电路板(PCB)设计技术与实践(第2版)M .2012.4 宋雪松.手把手教你学单片机V20M .2014.致 谢在这次毕设学习中,我学到了很多东西,过得很充实。本次毕业设计让我受益匪浅,我接触到了许多以前从未接触过的东西,极大地扩展了我的视野。但是由于自身的学识不足、经验匮乏,毕业设计难免有许多考虑不周的地方,如果没有指导老师的督促指导、研究生学长的指教引导以及同学的帮助与支持,这个设计是很难完成的。在这里要特别感谢我的指导老师卢艳军教授。感谢卢老师给了我这个课题,使得我有机会了解这些新鲜的事物,同时更要感谢卢老师在毕设过程中对我的悉心指导。卢老师平日里工作繁多,但在我做毕业设计的各个阶段,从编写开题报告到设计方案的修改和确定,再到中期检查,后期详细设计,以及论文的修改等过程,卢老师都给予了我悉心的指导。卢老师严谨治学的精神也给我留下了深刻的印象,并值得我永远学习。还有,感谢几个研究生学长在这段时间对我耐心的指导,感谢你们放弃自己的休息时间帮助我解决毕设难题,正是有了你们的帮助,才使我的毕业设计能够顺利完成。此外,感谢四年以来所有关心和帮助过我的老师和同学们,在这里对大家表示深深的谢意!最后,谨向在百忙之中抽出宝贵时间评审本论文和参加论文答辩的各位老师致以最诚挚的谢意!附录智能遥控循迹避障小车程序清单#include "Config.h"#include "Target.h"#define RX (1 << 15) / P0.15 RX 超声波接收端#define TX (1 << 14) / P0.14 TX 超声波发射端 #define LED (1 << 16) / P0.16 控制LED ,低电平点亮#define LED1 (1 << 17) / P0.17 控制LED1,低电平点亮#define LED2 (1 << 18) / P0.18 控制LED2,低电平点亮#define LED3 (1 << 19) / P0.19 控制LED3,低电平点亮#define LED4 (1 << 20) / P0.20 控制LED4,低电平点亮#define LED5 (1 << 21) / P0.21 控制LED5,低电平点亮#define LED6 (1 << 22) / P0.22 控制LED6,低电平点亮#define LED7 (1 << 23) / P0.23 控制LED7,低电平点亮#define W (1 << 17) / P0.17 红外接收#define xj1 (1 << 10) / P0.10 循迹管1 左数1#define xj2 (1 << 4) / P0.4 循迹管2 左数2#define xj3 (1 << 5) / P0.5 循迹管3 左数3#define xj4 (1 << 7) / P0.7 循迹管4 左数4uint32 K,i,j,m,n,temp,pwmdata1,pwmdata2,A,B,C,D,S,ii;uint8 WW,MM,NN,BZ;unsigned int segcode18 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0xff;/0-9 a-f 全灭 全亮 不带小数点uint8 Ir_Buf4; /用于保存解码结果 /* 函数名称 :delay()* 函数功能 :短软件延时 * 入口参数 :dly延时参数,值越大,延时越久*/void delay(uint32 dly)uint32 i;for ( ; dly>0; dly-)for (i=0; i<10; i+);/红外线/* 名称:high()* 功能:通过按键捕获高电平*/void high() while(W&K)!=W)K=IO0PIN; T0TCR =0x01;while(W&K)=W) K=IO0PIN; i=T0TC; T0TCR = 0x00; T0TC=0;/* 名称:low()* 功能:通过按键捕获低电平*/ void low() while(W&K)=W)K=IO0PIN; T0TCR = 0x01; while(W&K)!=W)K=IO0PIN; j=T0TC; T0TCR = 0x00; T0TC=0;/* 函数名称:PWM_Init()* 函数功能:初始化PWM功能模块,由PWM6输出PWM波形*/void PWM_Init(void) PWMPR=0x00; / 不分频,计数频率为Fpclk PWMMCR=0x82; / 设置PWMMR0匹配时复位PWMTC PWMMR0=221184; / 设置PWM周期69120 PWMMR2=221184; / 设置PWM周期69120 PWMPCR=0x5000; / 允许PWM6,PWM4输出,单边PWM PWMTCR=0x09; / 启动定时器,PWM使能pwmdata1=16600;pwmdata2=16600;void hongwaiyaokong()if(BZ=1) if(Ir_Buf2=0x18) /2 前进 pwmdata1=26600; pwmdata2=6600; else if(Ir_Buf2=0x52) /8 后退 pwmdata1=6600; pwmdata2=26600; else if(Ir_Buf2=0x08) /4 左转 pwmdata1=6600; pwmdata2=6600; else if(Ir_Buf2=0x5a) /6 右转 pwmdata1=26600;