基于单片机控制的智能小车设计与制作.docx

上传人:牧羊曲112 文档编号:1648985 上传时间:2022-12-12 格式:DOCX 页数:34 大小:2.06MB
返回 下载 相关 举报
基于单片机控制的智能小车设计与制作.docx_第1页
第1页 / 共34页
基于单片机控制的智能小车设计与制作.docx_第2页
第2页 / 共34页
基于单片机控制的智能小车设计与制作.docx_第3页
第3页 / 共34页
基于单片机控制的智能小车设计与制作.docx_第4页
第4页 / 共34页
基于单片机控制的智能小车设计与制作.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《基于单片机控制的智能小车设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的智能小车设计与制作.docx(34页珍藏版)》请在三一办公上搜索。

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指令系统,片内置通用

7、8位中央处理器和Flash存储单元3。MCS51单片机的内部基本结构框图如图2-1所示,由以下部分组成4:(1) 一个8 位的微处理器(CPU)。(2) 片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及状态标志位等。(3) 片内程序存储器ROM(4KB),用以存放已编制好的程序及程序中用到的常数。(4) 四个8 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出使用。(5) 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。(6) 五个中断源的中断控

8、制系统,提供两个中断优先级,能实现两级中断嵌套。 (7) 一个全双工串行异步通信接口,用于实现单片机之间或单机与微机之间的串行通信。(8) 片内振荡器和时钟产生电路,但需要外接石英晶体和微调电容,最高允许振荡频率为12MHz。单片机内部各功能部件通过内部总线连接,传送地址信息、数据信息和控制信息,各功能部件分时使用总线,即所谓的内部单总线结构。AT89C52与其他MCS51单片机的不同之处在于具有8KB可反复擦写(大于1000次)Flash ROM以及3个16位可编程定时/计数器中断。可反复擦写的Flash ROM使得单片机能反复写入程序,使用更加地方便。综合我设计的系统,单片机的优势就显现出

9、来了:操作简单、方便、快捷。充分发挥其资源丰富,强大地控制功能和位寻址操作功能,更可贵的是其价格低廉。图2.1 51板实物图2.2 小车驱动方式的选择玩具小车上的两个电机均为一般的玩具直流电动机,前轮用一个电机控制方向,后轮的电机用来驱动小车,这就是传统的控制小车方向的方式,缺点是转向过于灵敏;另外一种常见驱动方式为两电机四驱,差速转向,其优点是转向性能好,能实现原地360转向,且在循迹行走的时候能比较稳定的行驶,但是这种驱动方式的硬件制作比较有难度;还有一种驱动方案是采用三轮方案,即前面或后面安装一个万向轮,然后两电机分别控制两驱动轮,这种驱动方式具有两电机四驱的优点,而且硬件制作简单多了。

10、比较上面三种方案,首先排除了第三种方案,因为一开始的定位是要做四轮车。对于第二种驱动方式虽然有制作的经验,但是制作过于麻烦。综合以上三种方案,拟定后轮采用两个直流电机传递动力,转向时控制直流电机实现一个轮子反转,另一个轮子正转,达到预期转向的目的;前轮用滚珠代替轮子,可实现360自由转向,灵敏度较高。 图2.2 驱动方式实物图2.3 直流电机驱动模块 L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 图2.3 L298驱动模块实物图2.4 障碍检测模块智能小车既然智能,至少要求其在行走的过程中不能碰到障碍物,所以其

11、必须具有避障的功能。避障的基本原理为小车不断发射某种东西(比如光或波),并不断检测这种东西的反射情况来判断前面有无障碍。一般障碍检测传感器的选择有两种:A利用光电开关。这种方法简单实用,也很稳定,而且接口电路简单,甚至不用单独设计接口电路。但是其体积较大,而且检测距离不够远,对障碍的要求也比较高,比如遇到玻璃之类的透明物体就不能有效识别了。B利用超声波。这种方法较为复杂,特别是接口电路的设计,有一定的难度,但其具有体积小、灵敏度高、检测距离远、对障碍物要求不高等优点。光电开关避障比较简单,就是在一定距离内有反射就认为遇到障碍,可以适当调节接收灵敏度来小幅度调节避障距离,这种方式不需要单片机参与

12、计算,所以可以为单片机节省资源;而超声波的避障原理则相对复杂一些:超声波发射器向某一方向发射波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。超声波在空气中的传播图2.3 TCT40-16T/R1速度为340m/s,根据计时器记录时间t,就可以计算出发射点距离障碍物的距离(s),即:s=340t/2。当计算的距离小于程序中设定的障碍安全距离时,则认为遇到障碍。所以这个距离可以方便的在程序中调节,但是这种避障方式需要单片机参与计算,占用了资源。 图2.4E18-D80NK传感器实物图综合对比两种方案的优略,最终采用超声波避障,从网

13、络上查得一种比较合适的超声波传感器,型号为E18-D80NK,其实物图如图2-4所示。该传感器的使用有效地避免了可见光的干扰,检测距离可达80cm。2.5电源模块 方案一是采用有限电源通过稳压芯片供电,其优点是可提供稳定的5V电压,但占用资源过大;方案二是采用8个1.5V的干电池供电。综合以上两种方案和已有的材料,拟定用型号为YSD-12260(12V)大容量锂离子可充电电池供电。一条线路直接接驱动模块,给电机供电,另一条线路接稳压模块,降压至5V给单片机供电。 3 系统硬件设计在第2章方案论证的基础上,根据设计要求,对各模块的硬件进行系统设计。3.1 车体结构及其驱动电路车体驱动方式已经在前

14、一章确定下来,硬件部分则在原有小车基础上进行,小车的实物图如图3.1所示,控制板下的电路板为电机驱动电路板。该小车为四轮结构,车的结构示意图如图3.1所示。其中前面两个滚珠由铜柱支撑,来调节小车的前进方向。在自然状态下,前轮向前滚动。后面两个车轮由后轮电机驱动,为整个小车提供动力,所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮。 图3.1 小车实物图3.1.1直流电机电路图直流电机的线路在开发面板上已集成好了,接线时只需按程序设定好的通道接线。 图3.2 直流电机驱动电路 3.1.2通道控制通过对电机接口电平进行控制,实现两步电机的正反转,以此来实现小车前进、转向、倒退。结合对后轮的状态分

15、析,得到小车的运行状态与输入的对照表,如表3.1所示: 表3.1 输入与小车运动状态对照表IOB11IOB10IOB9IOB8左电机右电机小车0000停转停转停1010正转正转前进1001正转反转右转0110反转正转左转0101反转反转后退3.1.3电机调速PWM是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理器的数字输出对模拟电路进行控制的一种有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。一种模拟控制方式,根据相应载荷的变化来调制晶体管栅极或基极偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条

16、件下变化时保持恒定。PWM调速系统有下列优点:(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了H型单极型可逆PWM变换器进行调速。脉宽调速也

17、可通过单片机控制继电器的闭合来实现,但是驱动能力有限。为顺利实现电动小汽车的前行与倒车,本设计采用了可逆PWM变换器。可逆PWM变换器主电路的结构式有H型、T型等类型。我们在设计中采用了常用的双极式H型变换器,它是由4个三极电力晶体管和4各续流二极管组成的桥式电路。执行PWM操作之前,这种微处理器要求在软件中完成以下工作: * 设置提供调制方波的片上定时器/计数器的周期 * 在PWM控制寄存器中设置接通时间 * 设置PWM输出的方向,这个输出是一个通用I/O管脚 * 启动定时器 * 使能PWM控制器 图3.3 PWM波图3.1.4 驱动模块L298是SGS公司的产品,比较常见的是15脚Mult

18、iwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压范围VIH为2546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,

19、12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。In3,In4的逻辑图与表1相同。由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。 图3.4 L298N内部功能模块 表3.2 L298N的状态对应3.2避障模块光电开关工作时,由内部振荡回路产生的调制脉冲经反射电路后,由发射管辐射出光脉冲。当被测物体进入受光器作用范围时,被反射回来的光脉冲进入光敏二极管。并在接收电路中将光脉冲解调为电脉冲信号,再经放大器放大和同步选通整形,然后用数字积分或RC积分方式排除干扰,最

20、后经延时(或不延时)触发驱动器输出光电开关控制信号。直接反射光电开关是一种集发射器和接收器于一体的传感器,当有被检测物体经过时,将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号。当被检测物体的表面光亮或其反光率极高时, 直接反射式的光电开关是首选的检测模式。光电式传感器(光电开关)NPN常开型号:E18-D80NK。光电开关E18的技术参数:1、输出电流 DC/SCR/继电器 Control output:100mA/5V供电2、消耗电流 DC/AC:DC15mA3、响应时间 DC/AC:DC2ms4、指向角:3-15,有效距离3-80CM可调5、检测物体:透明或不

21、透明体6、工作环境温度:-25+557、标准检测物体:太阳光10000LX以下 白炽灯3000LX以下8、外壳材料:塑料9、防护等级:IP663.3硬件完成后的小车总体图完成了所有硬件的设计和制作(总体电路图见附录),然后进行硬件的组装,组装好的小车如图3-5所示。 图3.5 组装完成的小车实物图 4 系统软件设计在第2章的方案论证部分已经对小车的总体功能有所描述了,第3章也完成了小车所有的硬件,本章则将以小车总体功能和硬件为基础进行系统的软件设计。开关是否按下左障碍 右障碍左右障碍初 始 化高速速行驶停车检查低速行驶 左转向后退,警报右转向否是否是否遇到障碍线是是否是否是否 图4.1 主程序

22、流程图4.1 主程序设计主程序的作用是把小车的各个功能连接起来,以实现小车预期的功能。图4.1为小车主程序的流程图。具体程序可参考附录1。流程描述:打开小车的电源开关时执行端口初始化程序,电动机全速运行,红外传感器开始检测,连续用IF判断,当检测道障碍时,若为左障碍,则小车向右转,若为右障碍时,则小车向左转,若左右都有障碍无法避免时,则小车倒车,并且开启警报声。4.2 障碍检测模块程序设计障碍检测模块的程序是在小车执行语音命令前进、左拐、右拐时在前进、左拐、右拐的子程序中调用的,障碍检测其实是个测距的过程,图4.2是避障程序的流程图。具体程序还可参考附录2。进入否退出是否返回没处理结果并置标志

23、位关外部中断初始化发波开中断是否超时没进入退出记下时间值否是是延时主程序流程图 中断程序流程图图4.2 避障程序流程图流程描述:在调用避障程序的时候,首先进行初始化,然后发射几个40KHz的波,同时开始计时,延时一断时间再开中断,延时的作用是避开余波信号的干扰,在中断中记录相关数据,然后返回主程序对数据进行处理,再得出距离并与安全距离比较,如果小于安全距离,则认为遇到障碍,将障碍标志位置1,反之置0。避障程序其实是个测距的程序,在小车前进、左拐、右拐的过程中不断的调用,不断检测障碍标志位,当障碍标志位为1时就认为遇到障碍了,下面以前进程序的流程图(图4.3)为例进行说明,左拐、右拐的程序很相似

24、,在此不再作说明,这些程序可参考附录4。进入退出是否有障没前进关识别器并初始化开识别器并停车是否有障没是否超时急停否是是否是否图4-3 前进程序流程图流程描述:在接到前进命令时,调用小车的前进命令,首先关闭识别器,防止干扰,然后初始化相关端口,然后调用避障程序,看看是否小车前面本来就有障碍,如果有,则不前进并播放遇到障碍语音提示,没有的话就开始前进,前进的过程中不断的调用避障程序,并检测障碍标志,当障碍标志为1时立即停车,并播放遇到障碍的语音提示。如果小车一直没有遇到障碍,在前进一段设定的时间后会自然停止。问题讨论:由小车的避障程序和前进程序可以看出,避障程序在等待回波中断的时候浪费了不少时间

25、,所以在循线中没法实现避障,在此,提出一个解决方案:把数据处理程序都放到中断程序里,这样就能节省大量的时间而使得避障功能能在循线时实现了。由于时间问题,没有对此方案进行验证。4.3 语音播放程序设计 语音播放程序很多函数都是有函数库提供,所以语音播放函数比较简单,其分为两部分,一是播放流程控制(如图4.4),一是中断播放服务程序(如图4.6)。具体的程序还可参考附录3。图4.4 播放流程图图4.5 中断播放服务流程图 5 使用说明智能小车总体图如图5.1所示,其使用说明如下:图5.1 小车实物图小车的硬件连接如下:IOP01IOP04 红外避障端口;IOP14和IOP15 右电机输出端口;IO

26、P16和IOP17 左电机输出端口;IOP11 PWM1波,接GNAIOP13 PWM2波,接GNBA1/A2 接左直流电机B1/B2 接右直流电机电源接稳压器输入端,降压至5V,接入单片机(+5V,GND)电源接入驱动输入端,给驱动供电;直流电机接驱动输出端。红外传感器由单片机供电。所有连接都已经连接好,使用者不要随便拆卸。小车采用12V锂离子电池供电,装在小车最前面,使用时请正确安装电池!安装电池后就可以打开小车底部的电源开关了, 总结展望根据本次设计要求,我系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。虽然

27、条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,最终顺利的通过了系统软硬件的联机调试,成功实现设计任务所要求的直线行走调速、报警和避障三大功能。通过本次课程设计,不仅是对我所学单片机知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次课程设计使我对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Protel设计电路。本次毕业设计还使我意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问

28、题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课程设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次课程设计,极大的锻炼了我思考和分析问题的能力,并对机电一体化有了一个更深的认识。总之,在课程设计的过程中,无论是对于学习方法还是理论知识,我都有了新的认识,受益匪浅,这将激励我在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。由于时间有限,我所设计的智能小车和已有的智能的小车相比,还处于初级阶段。主要体现在:1. 我的智能小车功能简单,主要是调速和避障功能,后期还可以向语音系统、无线摄像传输、智能遥控等方向发展2. 我的智能小车灵

29、敏度较差,主要是因为在设计和制作过程中,以原有的一些材料为主,比如传感器本身就是灵敏度不高。还有在制作工艺上还存在很多问题,导致灵敏度不高。3. 程序的设计还不够简洁完善,导致单片机在控制硬件执行指令时存在误差。参考文献1 郭天祥老师07年在哈工大51单片机的教学视频2 吴国风C语言程序设计教程M合肥:中国科学技术出版社,20053 程昱Protel DXP 电路设计白金教学M北京:科学出版社,20044 侯少云基于DSP 和模糊控制的寻线行走机器人设计J电子技术应用,20065 赵广超基于超声波传感的系统设计 6 郭长玉简易智能电动车设计报告 7 吴建平红外反射式传感器在自主式寻迹小车导航中

30、的应用8 吴斌华基于路径识别的智能车系统设计电子技术应用,20079 李正军计算机控制系统M机械工业出版社,2005附录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;sbit PWM2=P13

31、;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) mz1=0; mz2=1; my

32、1=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;j0;j-) for(k=

33、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 turn_left()/left

34、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=1;void rota

35、te_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;/delay(100); f

36、orward();/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);ba

37、ckward();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,

38、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 FREQL=0x42,0xC1,0x

39、17,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;TL0=timer0l;TR0=1;d

40、elay(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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号