1、目 录摘要11 引 言12 方案论证22.1 控制关键选择及其介绍22.2 小车驱动方法选择42.3 直流电机驱动模块52.4 障碍检测模块62.5 电源模块73 系统硬件设计83.1 车体结构及其驱动电路83.1.1 直流电机电路设计93.1.2 通道控制93.1.3 电机调速103.1.4 驱动模块113.2 避障模块123.3 硬件完成后小车总体图134 系统软件设计144.1 主程序设计154.2 障碍检测模块程序设计154.3 语音播放程序设计175 使用说明20总结和展望21参考文件23附录124附录227附录331基于单片机控制智能小车设计和制作摘 要: 课题关键任务是设计并制作
2、一辆智能小车,要求实现小车语音控制、直线前进和倒退、避免撞到障碍物三大功效。设计以80C51单片机为控制关键,应用光电传感器和超声波传感器,成功实现了小车三大功效。课题完成了红外线传感器、小车骨架、直流电机和电源等硬件选择、采购、各传感器接口电路设计和制作,和各传感器和电路安装位置和方法安排,并完成了整个硬件制作工作。另外,对整个控制软件进行设计和程序编制和程序调试,并最终完成软件和硬件融合,实现小车预期功效。关键词:智能小车、红外防碰撞传感器、单片机 1 引 言当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再显著分家,自动控制在工业领域中地位已经越来越关键,“智能
3、”这个词也已经成为了热门词汇。现在国外自动控制和传感器技术已经达成了很高水平,尤其是日本,比如日本本田制作机器人,其仿人双足行走已经做得十分逼真,而且含有一定学习能力,还听说其智商已达成6岁儿童水平。作为机械行业代表产品汽车,其和电子信息产业融合速度也显著提升,展现出两个显著特点:一是电子装置占汽车整车(尤其是轿车)价值量百分比逐步提升,汽车将由以机械产品为主向高级机电一体化方向发展,汽车电子产业也很有可能成为依靠整车制造业和用车提升配置而快速成为新增加点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一个代步工具、同时能含有交通、娱乐、办公和通讯等多个功效。无容置疑,机电一体化
4、人才培养不管是在国外还是中国,全部开始重视起来,关键表现在大学生多种大型创新比赛,比如:亚洲广播电视联盟亚太地域机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多关键竞赛全部能很好培养大学生对于机电一体化爱好和强化机电一体化相关知识。但很现实情况是,中国不管是在机械还是电气领域,和国外差距还是很显著,所以作为物流自动化专业学生,必需加倍努力,为逐步赶上国外优异水平并超出之而努力。我选择这个课题作为我课程设计目标在于:经过独立设计并制作一辆含有简单智能化简易小车,取得项目整体设计能力,使自己在控制方面有一定认识。所以立“基于单片机控制智能小车设计和制作”一题作为尝试。
5、此项设计是在袁斌老师指导下,采取80C51单片机作为控制关键,逐步实现蜂鸣器唱歌、躲避障碍和直线行走三大功效。完成硬件实物制作和组装,并编制相关程序,使其实现功效融合,做出含有预先要求功效实物。 2 方案论证小车总体功效描述:在小车底盘上有一个总开关,当开关闭合时,小车开始工作,唱着歌直线前行,并可实现调速。在小车前进过程中,将调用避障函数进行避障,所以一旦离障碍物距离小于安全距离时,(设安全距离为20CM),小车进入壁障模式。小车前方装有两个红外壁障传感器,当检测到左侧有障碍时,向右转,当检测到右侧有障碍物时,向左转,当检测到前方障碍物无法避开时,小车停车并倒退,此时蜂鸣器发出警报声。下面依
6、据设计要求,针对各模块需要完成功效,本着简单、实用、廉价、轻易操作、稳定标准,对各模块进行充足理论分析和方案论证。2.1 控制关键选择及其介绍 主控制器采取MCS51系列单片机AT89C52,AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes可反复擦写Flash只读程序存放器和256 bytes随机存取数据存放器(RAM),器件采取ATMEL企业高密度、非易失性存放技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存放单元3。MCS51单片机内部基础结构框图图2-1所表示,由以下部分组成4:(1) 一个8 位微处理器(CPU)。(2) 片内
7、数据存放器RAM(128B),用以存放能够读写数据,如运算中间结果、最终止果和状态标志位等。(3) 片内程序存放器ROM(4KB),用以存放已编制好程序及程序中用到常数。(4) 四个8 位并行IO 接口P0P3,每个口既能够用作输入,也能够用作输出使用。(5) 两个定时器计数器,每个定时器计数器全部能够设置成计数方法,用以对外部事件进行计数,也能够设置成定时方法,并能够依据计数或定时结果实现计算机控制。(6) 五个中止源中止控制系统,提供两个中止优先级,能实现两级中止嵌套。 (7) 一个全双工串行异步通信接口,用于实现单片机之间或单机和微机之间串行通信。(8) 片内振荡器和时钟产生电路,但需要
8、外接石英晶体和微调电容,最高许可振荡频率为12MHz。单片机内部各功效部件经过内部总线连接,传送地址信息、数据信息和控制信息,各功效部件分时使用总线,即所谓内部单总线结构。AT89C52和其它MCS51单片机不一样之处于于含有8KB可反复擦写(大于1000次)Flash ROM和3个16位可编程定时/计数器中止。可反复擦写Flash ROM使得单片机能反复写入程序,使用愈加地方便。综合我设计系统,单片机优势就显现出来了:操作简单、方便、快捷。充足发挥其资源丰富,强大地控制功效和位寻址操作功效,更可贵是其价格低廉。图2.1 51板实物图2.2 小车驱动方法选择玩具小车上两个电机均为通常玩具直流电
9、动机,前轮用一个电机控制方向,后轮电机用来驱动小车,这就是传统控制小车方向方法,缺点是转向过于灵敏;另外一个常见驱动方法为两电机四驱,差速转向,其优点是转向性能好,能实现原地360转向,且在循迹行走时候能比较稳定行驶,不过这种驱动方法硬件制作比较有难度;还有一个驱动方案是采取三轮方案,即前面或后面安装一个万向轮,然后两电机分别控制两驱动轮,这种驱动方法含有两电机四驱优点,而且硬件制作简单多了。比较上面三种方案,首先排除了第三种方案,因为一开始定位是要做四轮车。对于第二种驱动方法即使有制作经验,不过制作过于麻烦。综合以上三种方案,确定后轮采取两个直流电机传输动力,转向时控制直流电机实现一个轮子反
10、转,另一个轮子正转,达成预期转向目标;前轮用滚珠替换轮子,可实现360自由转向,灵敏度较高。 图2.2 驱动方法实物图2.3 直流电机驱动模块 L298N是ST企业生产一个高电压、大电流电机驱动芯片。该芯片能够驱动一台两相步进电机或四相步进电机,也能够驱动两台直流电机。 图2.3 L298驱动模块实物图2.4 障碍检测模块智能小车既然智能,最少要求其在行走过程中不能碰到障碍物,所以其必需含有避障功效。避障基础原理为小车不停发射某种东西(比如光或波),并不停检测这种东西反射情况来判定前面有没有障碍。通常障碍检测传感器选择有两种:A利用光电开关。这种方法简单实用,也很稳定,而且接口电路简单,甚至不
11、用单独设计接口电路。不过其体积较大,而且检测距离不够远,对障碍要求也比较高,比如碰到玻璃之类透明物体就不能有效识别了。B利用超声波。这种方法较为复杂,尤其是接口电路设计,有一定难度,但其含有体积小、灵敏度高、检测距离远、对障碍物要求不高等优点。光电开关避障比较简单,就是在一定距离内有反射就认为碰到障碍,能够合适调整接收灵敏度来小幅度调整避障距离,这种方法不需要单片机参与计算,所以能够为单片机节省资源;而超声波避障原理则相对复杂部分:超声波发射器向某一方向发射波,在发射时刻同时开始计时,超声波在空气中传输,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。超声波在空气中传输图2.
12、3 TCT40-16T/R1速度为340m/s,依据计时器统计时间t,就能够计算出发射点距离障碍物距离(s),即:s=340t/2。当计算距离小于程序中设定障碍安全距离时,则认为碰到障碍。所以这个距离能够方便在程序中调整,不过这种避障方法需要单片机参与计算,占用了资源。 图2.4E18-D80NK传感器实物图综合对比两种方案优略,最终采取超声波避障,从网络上查得一个比较适宜超声波传感器,型号为E18-D80NK,其实物图图2-4所表示。该传感器使用有效地避免了可见光干扰,检测距离可达80cm。2.5电源模块 方案一是采取有限电源经过稳压芯片供电,其优点是可提供稳定5V电压,但占用资源过大;方案
13、二是采取8个1.5V干电池供电。综合以上两种方案和已经有材料,确定用型号为YSD-12260(12V)大容量锂离子可充电电池供电。一条线路直接接驱动模块,给电机供电,另一条线路接稳压模块,降压至5V给单片机供电。 3 系统硬件设计在第2章方案论证基础上,依据设计要求,对各模块硬件进行系统设计。3.1 车体结构及其驱动电路车体驱动方法已经在前一章确定下来,硬件部分则在原有小车基础上进行,小车实物图图3.1所表示,控制板下电路板为电机驱动电路板。该小车为四轮结构,车结构示意图图3.1所表示。其中前面两个滚珠由铜柱支撑,来调整小车前进方向。在自然状态下,前轮向前滚动。后面两个车轮由后轮电机驱动,为整
14、个小车提供动力,所以又称前面轮子为方向轮,后面两个轮子为驱动轮。 图3.1 小车实物图3.1.1直流电机电路图直流电机线路在开发面板上已集成好了,接线时只需按程序设定好通道接线。 图3.2 直流电机驱动电路 3.1.2通道控制经过对电机接口电平进行控制,实现两步电机正反转,以此来实现小车前进、转向、倒退。结合对后轮状态分析,得到小车运行状态和输入对照表,如表3.1所表示: 表3.1 输入和小车运动状态对照表IOB11IOB10IOB9IOB8左电机右电机小车0000停转停转停1010正转正转前进1001正转反转右转0110反转正转左转0101反转反转后退3.1.3电机调速PWM是英文“Puls
15、e Width Modulation”缩写,简称脉宽调制。它是利用微处理器数字输出对模拟电路进行控制一个有效技术,广泛应用于测量,通信,功率控制和变换等很多领域。一个模拟控制方法,依据对应载荷改变来调制晶体管栅极或基极偏置,来实现开关稳压电源输出晶体管或晶体管导通时间改变,这种方法能使电源输出电压在工作条件下改变时保持恒定。PWM调速系统有下列优点:(1)因为PWM调速系统开关频率较高,仅靠电枢电感滤波作用就能够取得脉动很小直流电流,电枢电流轻易连续,系统低速运行平稳,调速范围较宽,可达1:10000左右。因为电流波形比V-M系统好,在相同平均电流下,电动机损耗和发烧全部比较小。(2)一样因为
16、开关频率高,若和快速响应电机相配合,系统能够取得很宽频带,所以快速响应性能好,动态抗扰能力强。(3)因为电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。依据以上综合比较,和本设计中受控电机容量和直流电机调速发展方向,本设计采取了H型单极型可逆PWM变换器进行调速。脉宽调速也可经过单片机控制继电器闭合来实现,不过驱动能力有限。为顺利实现电动小汽车前行和倒车,本设计采取了可逆PWM变换器。可逆PWM变换器主电路结构式有H型、T型等类型。我们在设计中采取了常见双极式H型变换器,它是由4个三极电力晶体管和4各续流二极管组成桥式电路。实施PWM操作之前,这种微处理器要求在软件中完成以下工作:
17、 * 设置提供调制方波片上定时器/计数器周期 * 在PWM控制寄存器中设置接通时间 * 设置PWM输出方向,这个输出是一个通用I/O管脚 * 开启定时器 * 使能PWM控制器 图3.3 PWM波图3.1.4 驱动模块L298是SGS企业产品,比较常见是15脚Multiwatt封装L298N,内部一样包含4通道逻辑驱动电路。能够方便驱动两个直流电机,或一个两相步进电机。输出电压最高可达50V,能够直接经过电源来调整输出电压;能够直接用单片机IO口提供信号;而且电路简单,使用比较方便。L298N可接收标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压范围VIH为2
18、546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管发射极分别单独引出方便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本试验装置我们选择驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机正反转。EnA,EnB接控制使能端,控制电机停转。In3,In4逻辑图和表1相同。由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。 图3.4 L298N内部功效模块 表3.2 L298N状态对应3.2避障模块光电开
19、关工作时,由内部振荡回路产生调制脉冲经反射电路后,由发射管辐射出光脉冲。当被测物体进入受光器作用范围时,被反射回来光脉冲进入光敏二极管。并在接收电路中将光脉冲解调为电脉冲信号,再经放大器放大和同时选通整形,然后用数字积分或RC积分方法排除干扰,最终经延时(或不延时)触发驱动器输出光电开关控制信号。直接反射光电开关是一个集发射器和接收器于一体传感器,当有被检测物体经过时,将光电开关发射器发射足够量光线反射到接收器,于是光电开关就产生了开关信号。当被检测物体表面光亮或其反光率极高时, 直接反射式光电开关是首选检测模式。光电式传感器(光电开关)NPN常开型号:E18-D80NK。光电开关E18技术参
20、数:1、输出电流 DC/SCR/继电器 Control output:100mA/5V供电2、消耗电流 DC/AC:DC15mA3、响应时间 DC/AC:DC2ms4、指向角:3-15,有效距离3-80CM可调5、检测物体:透明或不透明体6、工作环境温度:-25+557、标准检测物体:太阳光10000LX以下 白炽灯3000LX以下8、外壳材料:塑料9、防护等级:IP663.3硬件完成后小车总体图完成了全部硬件设计和制作(总体电路图见附录),然后进行硬件组装,组装好小车图3-5所表示。 图3.5 组装完成小车实物图 4 系统软件设计在第2章方案论证部分已经对小车总体功效有所描述了,第3章也完成
21、了小车全部硬件,本章则将以小车总体功效和硬件为基础进行系统软件设计。开关是否按下左障碍 右障碍左右障碍初 始 化高速速行驶停车检验低速行驶 左转向后退,警报右转向否是否是否碰到障碍线是是否是否是否 图4.1 主程序步骤图4.1 主程序设计主程序作用是把小车各个功效连接起来,以实现小车预期功效。图4.1为小车主程序步骤图。具体程序可参考附录1。步骤描述:打开小车电源开关时实施端口初始化程序,电动机全速运行,红外传感器开始检测,连续用IF判定,当检测道障碍时,若为左障碍,则小车向右转,若为右障碍时,则小车向左转,若左右全部有障碍无法避免时,则小车倒车,而且开启警报声。4.2 障碍检测模块程序设计障
22、碍检测模块程序是在小车实施语音命令前进、左拐、右拐时在前进、左拐、右拐子程序中调用,障碍检测其实是个测距过程,图4.2是避障程序步骤图。具体程序还可参考附录2。进入否退出是否返回没处理结果并置标志位关外部中止初始化发波开中止是否超时没进入退出记下时间值否是是延时主程序步骤图 中止程序步骤图图4.2 避障程序步骤图步骤描述:在调用避障程序时候,首优异行初始化,然后发射多个40KHz波,同时开始计时,延时一断时间再开中止,延时作用是避开余波信号干扰,在中止中统计相关数据,然后返回主程序对数据进行处理,再得出距离并和安全距离比较,假如小于安全距离,则认为碰到障碍,将障碍标志位置1,反之置0。避障程序
23、其实是个测距程序,在小车前进、左拐、右拐过程中不停调用,不停检测障碍标志位,当障碍标志位为1时就认为碰到障碍了,下面以前进程序步骤图(图4.3)为例进行说明,左拐、右拐程序很相同,在此不再作说明,这些程序可参考附录4。进入退出是否有障没前进关识别器并初始化开识别器并停车是否有障没是否超时急停否是是否是否图4-3 前进程序步骤图步骤描述:在接到前进命令时,调用小车前进命令,首先关闭识别器,预防干扰,然后初始化相关端口,然后调用避障程序,看看是否小车前面原来就有障碍,假如有,则不前进并播放碰到障碍语音提醒,没有话就开始前进,前进过程中不停调用避障程序,并检测障碍标志,当障碍标志为1时立即停车,并播
24、放碰到障碍语音提醒。假如小车一直没有碰到障碍,在前进一段设定时间后会自然停止。问题讨论:由小车避障程序和前进程序能够看出,避障程序在等候回波中止时候浪费了不少时间,所以在循线中没法实现避障,在此,提出一个处理方案:把数据处理程序全部放到中止程序里,这么就能节省大量时间而使得避障功效能在循线时实现了。因为时间问题,没有对此方案进行验证。4.3 语音播放程序设计 语音播放程序很多函数全部是有函数库提供,所以语音播放函数比较简单,其分为两部分,一是播放步骤控制(图4.4),一是中止播放服务程序(图4.6)。具体程序还可参考附录3。图4.4 播放步骤图图4.5 中止播放服务步骤图 5 使用说明智能小车
25、总体图图5.1所表示,其使用说明以下:图5.1 小车实物图小车硬件连接以下:IOP01IOP04 红外避障端口;IOP14和IOP15 右电机输出端口;IOP16和IOP17 左电机输出端口;IOP11 PWM1波,接GNAIOP13 PWM2波,接GNBA1/A2 接左直流电机B1/B2 接右直流电机电源接稳压器输入端,降压至5V,接入单片机(+5V,GND)电源接入驱动输入端,给驱动供电;直流电机接驱动输出端。红外传感器由单片机供电。全部连接全部已经连接好,使用者不要随便拆卸。小车采取12V锂离子电池供电,装在小车最前面,使用时请正确安装电池!安装电池后就能够打开小车底部电源开关了, 总结
26、展望依据此次设计要求,我系统地阅读了大量资料,并认真分析了设计课题需求,还系统学习了51单片机工作原理及其使用方法,并独自设计智能小车整个项目。即使条件艰苦,但经过不懈钻研和努力,购置到了全部所需元器件,并系统进行了多项试验,最终做出了整个小车硬件系统,然后结合课题任务和小车硬件进行了程序编制,最终顺利经过了系统软硬件联机调试,成功实现设计任务所要求直线行走调速、报警和避障三大功效。经过此次课程设计,不仅是对我所学单片机知识考查,更是对我自学能力和搜集资料能力和动手能力考验。此次课程设计使我对一个项目标整体设计有了初步认识,还认识了多个传感器,并能独立设计出其接口电路,再有对电路板制作有了一定
27、了解,并学会了使用Protel设计电路。此次毕业设计还使我意识到了试验关键性,在硬件制作和软件调试过程中,出现了很多问题,最终全部是经过试验方法来处理。还有以前对程序只是一个很模糊概念,经过这次课程设计使我对程序完全有了一个新认识,并能使用C熟练进行编程了。经过此次课程设计,极大锻炼了我思索和分析问题能力,并对机电一体化有了一个更深认识。总而言之,在课程设计过程中,不管是对于学习方法还是理论知识,我全部有了新认识,受益匪浅,这将激励我在以后再接再厉,不停完善自己理论知识,提升实践运作能力。因为时间有限,我所设计智能小车和已经有智能小车相比,还处于初级阶段。关键表现在:1. 我智能小车功效简单,
28、关键是调速和避障功效,后期还能够向语音系统、无线摄像传输、智能遥控等方向发展2. 我智能小车灵敏度较差,关键是因为在设计和制作过程中,以原有部分材料为主,比如传感器本身就是灵敏度不高。还有在制作工艺上还存在很多问题,造成灵敏度不高。3. 程序设计还不够简练完善,造成单片机在控制硬件实施指令时存在误差。参考文件1 郭天祥老师在哈工大51单片机教学视频2 吴国风C语言程序设计教程M合肥:中国科学技术出版社,3 程昱Protel DXP 电路设计白金教学M北京:科学出版社,4 侯少云基于DSP 和模糊控制寻线行走机器人设计J电子技术应用,5 赵广超基于超声波传感系统设计 6 郭长玉简易智能电动车设计
29、汇报 7 吴建平红外反射式传感器在自主式寻迹小车导航中应用8 吴斌华基于路径识别智能车系统设计电子技术应用,9 李正军计算机控制系统M机械工业出版社,附录1:主程序清单: #include #define uint unsigned int #define uchar unsigned char sbit l=P01;/定义红外避障检测端口sbit r=P04;sbit mz1=P17;/定义电机Mz1电平输出端口sbit mz2=P16;/定义电机Mz2电平输出端口sbit my1=P15;/定义电机My1电平输出端口sbit my2=P14;/定义电机My2电平输出端口sbit PWM1=
30、P11;sbit PWM2=P13;void delay_ms(uint z)/申明延时函数uint x,y;for(x=z;x250;x+)for(y=0;y100;y+);main()/主函数 PWM1=1; PWM2=1; while(1)/无限循环 if(l=0&r=1)/表示l方有障碍物 进行r转向 mz1=1; mz2=0; my1=0; my2=1; delay_ms(100);/状态保持100ms if(l=1&r=0)/表示r方有障碍物 进行l转向 mz1=0; mz2=1; my1=1; my2=0; delay_ms(100);/状态保持100ms if(l=0&r=0)
31、 mz1=0; mz2=1; my1=0; my2=1; if(l=1&r=1)/表示前方无障碍物 直线行驶 mz1=1; mz2=0; my1=1; my2=0; 附录2:L298N驱动直流电机程序#include#define sen_port P1sbit SEN1=P10;sbit SEN2=P11;sbit EN1=P22;sbit IN1=P23;sbit IN2=P24;sbit EN2=P25;sbit IN3=P26;sbit IN4=P27;void delay(int n) /延时子程序 unsigned char i,j,k; for(i=n;i0;i-) for(j=
32、100;j0;j-) for(k=200;k0;k-); unsigned char sensor_inp()unsigned char sensor;sensor = sen_port;sensor &= 0x03;P0 = sensor;return sensor;void forward()/two motos are runing forwardIN1=1;IN2=0;IN3=1;IN4=0;EN1=1;EN2=1;void backward()/two motos are runing backwardIN1=0;IN2=1;IN3=0;IN4=1;EN1=1;EN2=1;void
33、turn_left()/left moto is runing, but right moto is brakeIN1=1;IN2=0;IN3=0;IN4=0;EN1=1;EN2=1;void rotate_left()/right moto is runing forward, and left moto is running backwardIN1=1;IN2=0;IN3=0;IN4=1;EN1=1;EN2=1;void turn_right()/right moto is runing, but left moto is brakeIN1=0;IN2=0;IN3=1;IN4=0;EN1=
34、1;EN2=1;void rotate_right()/left moto is running forward, and right moto is running backwardIN1=0;IN2=1;IN3=1;IN4=0;EN1=1;EN2=1;void free()/two motos is freeIN1=0;IN2=0;IN3=0;IN4=0;EN1=0;EN2=0;void stop()/two motos stopIN1=1;IN2=1;IN3=1;IN4=1;EN1=1;EN2=1;void main(void)delay(10);P0=0x55;while(1)/P0=
35、P1;/delay(100); forward();/delay(100); stop();delay(100); backward();delay(100); stop();delay(100); turn_left();delay(100); stop();delay(100); turn_right();delay(100); stop();delay(100); rotate_left();delay(100); stop();delay(100); rotate_right();delay(100); stop();delay(100); stop();delay(20);forwa
36、rd();delay(20);backward();delay(20);/*/附录3:蜂鸣器程序音乐清单:#include #define uchar unsigned char sbit beep=P10; /定义蜂鸣器输出端口uchar timer0h,timer0l,time; /世上只有母亲好 数据表code uchar sszymmh=6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1, 6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1, 6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,
37、2, 5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1, 2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0 ; / 音阶频率表 高八位code uchar FREQH=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位code uchar F
38、REQL=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,;void delay(uchar t) / 延时函数 uchar t1;unsigned long t2;for(t1=0;t1t;t1+)for(t2=0;t28000;t2+);TR0=0;void song() / 音乐处理函数TH0=timer0h;TL
39、0=timer0l;TR0=1;delay(time); /* 主函数 */void main(void)uchar k,i;P0=0;TMOD=1; /置CT0定时工作方法1EA=1;ET0=1;/IE=0x82 /CPU开中止,CT0开中止 while(1)i=0; while(i100) /音乐数组长度 ,唱完从头再来 k=sszymmhi+7*sszymmhi+1-1;timer0h=FREQHk;timer0l=FREQLk;time=sszymmhi+2;i=i+3;song(); void t0int() interrupt 1/定时器中止函数TR0=0;beep=!beep;TH0=timer0h;TL0=timer0l;TR0=1;前进程序清单:void Car_Go(unsigned int n) /实现功效:前进 unsigned int i=0; unsigned int k=0; unsigned int j=1;BSR_StopRecognizer();/停止识别器 for(k;k4;k+) State_ult(); if(Obstacles_signs=1) /先检测是否有障碍 PlaySnd(19,3); i=60000; k=10; j=0; /语音提醒:前面有障碍 *P_Watchdog_Clear = 0x0001; while(j)