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.3
12、 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是英文“Pulse
15、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为254
18、6 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=P11
30、;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) mz
31、1=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=100
32、;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 tur
33、n_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=1;EN2=
34、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=P1;/del
35、ay(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);forward();delay(20);backw
36、ard();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,2, 5,2,1,6,2,1,3,2,2
37、,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 FREQL=0x42,0xC1,0x17,0
38、xB6,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;TL0=timer0l;TR0=1;delay(t
39、ime); /* 主函数 */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) PlaySnd(13,3);j=0;/语音提示:迈