基于单片机的智能避障小车设计.doc

上传人:仙*** 文档编号:33886853 上传时间:2021-10-19 格式:DOC 页数:26 大小:822KB
返回 下载 相关 举报
基于单片机的智能避障小车设计.doc_第1页
第1页 / 共26页
基于单片机的智能避障小车设计.doc_第2页
第2页 / 共26页
基于单片机的智能避障小车设计.doc_第3页
第3页 / 共26页
点击查看更多>>
资源描述
浙江商业职业技术学院2012届毕业论文目 录摘 要1Abstract2引 言3第一章 总体设计方案41.1设计要求41.2系统设计方案41.3总体设计51.4功能说明5第二章 硬件的选择与组成62.1单片机的选择62.2避障模块的选择72.3驱动模块的选择82.4电源方案10第三章 软件程序流程图113.1主流程图113.2 模块程序设计说明113.3 超声波避障程序124.2驱动模块程序13第四章 电路调试144.1硬件调试144.2软件调试154.3系统联调154.4 实现功能15第五章 总结与展望16参考文献17附 录18基于单片机的智能避障小车设计摘 要当今世界,随着汽车工业的快速发展,关于汽车的研究也越来越受到人们的关注。从20世纪70年代,美欧等发达国家开始进行无人驾驶汽车的研究,我国从上世纪80年代开始着手无人驾驶汽车的研制开发,虽与国外相比还有一些距离,但目前也取得了阶段性成果。智能汽车概念的提出给汽车产业带来机遇也带了挑战。汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于单片机的智能小车的避障研究。我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的结果,在这种情况下研究智能避障小车的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。该设计利用单片机STC89C52RC作为主控芯片,该芯片是一种高速、低功耗、抗干扰能力强的芯片,其最高时钟工作频率为48MHz,用户应用程序空间为8K。能够满足程序空间需要。驱动采用L298N驱动芯片,它是一种双全桥步进电机专用芯片,通过对其输入端的控制可以实现小车的启动、转向、停止等动作。为节省成本,小车由两个直流减速电机加一个万向轮构成,并采用后轮驱动。本文首先介绍了智能车的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计实物图,及完整的C语言程序。关键词:单片机,超声波,直流减速电机,避障小车Design of intelligence obstacle avoidance car based on MCUAbstractIn todays world, with the rapid development of industry, research about the car is also more and more attention by people. From the 1970 s, the developed countries such as the us and Europe began the driverless cars research, our country from the 1980 s began the research and development of driverless cars, although compared with foreign countries and some distance, but now also made some progress. Smart cars to the concept of the auto industry has brought with it a chance challenge. The car will be the future of the auto industry intelligent development tendency, in this context, we carried out based on MCU intelligence obstacle avoidance of the car. China as a world power, in the high-tech fields must also hold position, the future of the auto industry is the intelligent an inevitable result, in this case study intelligence obstacle avoidance of car application has far-reaching significance, this will to Chinas future in the world of intelligent vehicle research high-tech fields took the lead has an important role.This design using single chip computer chip STC89C52RC as the master, the chip is a high speed, low power consumption, strong anti-interference ability chip, the maximum clock frequency of the work 48 MHz, user application space for 8 K. Can meet the program space needs. The driver L298N drive chip, it is a kind of stepping motor and proper bridge the special chip, through its control can be realized at the input of the car to start, stop, such action. To save costs, the car slow down by two dc motor and a universal wheel structure, and the rear wheel drive.This paper first introduced the smart car prospect, then introduces the design idea of the subject, each module circuit and its circuit principle of choice, and finally to this topic design process are summarized and prospect with each module of the circuit principle diagram, and this design real figure, and complete C language programKey words: MCU, ultrasonic wave, dc motor and obstacle avoidance car引 言随着汽车避障技术的广泛应用, 智能车的发展已成为未来汽车发展的一个方向,开发一种无需驾驶员的智能型汽车的任务,已经被社会所关注。利用避障技术,汽车在行驶中能够自动转向刹车和换档,因此车上无需驾驶员,乘车人可以随心所欲地谈话、读书、工作、娱乐,车内成为一个充满乐趣的生活空间。所以没有驾照的人也可以拥有自己的车。智能小车是一个集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统,随着计算机科学的发展,可以通过单片机控制来实现对其行驶方向、启动、停止以及速度的控制,无需人工干涉,操作人员可以通过修改智能小车的控制程序来改变它的行驶方式。因此智能避障车可以解决一些特殊环境下人力无法完成的任务。该课题所设计利的用单片机控制的壁障小车,体积不大,方便携带。但由于知识水平及时间有限,本课题研究智能小车的一个方面即避障。系统采用单片机为控制核心,利用自制小车或玩具小车进行小车的模拟,采用超声波避障模块进行障碍物的检测。单片机控制避障模块发射和接收,通过相应的程序处理,判断障碍物的位置。根据检测情况单片机控制电机驱动模块,控制小车电机的正反转实现小车的转向,启动等相应动作,来实现避开障碍物,为了降低了成本,小车是自己组装的。软件采用所学的C语言来实现,实用性大。第一章 总体设计方案1.1设计要求1在小车行驶过程中,50ms启动一次超波模块,对前方路况进行检测2当障碍物小于15cm时,小车自动左转90度3当小车转过90度后,对前方道路再次检测,若无障碍,向前行驶。如果存在障碍物且小于15cm,小车右转180度,并再次检测前方路况,若无障碍物,向前行驶,有障碍物且距离小于15cm,小车向右转90度并向前行驶。1.2系统设计方案根据设计要求,为了便于调试和改进,采用模块化设计。系统可分为:微控制器、避障模块、驱动模块、电源模块、小车模块。其基本框图如下:图1.1 系统框图1.3总体设计基于单片机STC89C52RC设计的智能避障小车,本设计需提供+12V和+5V电源,DC+12V由市电直接转化,DC+5CV由直流+12V经7805转换得到。为单片机及其他电路提供工作电压,直流12V主要为电机提供驱动电压。超声波避障模块,采用购买的现成的超生波发射接收模块,通过单片机控制超声波模块去小车行驶道路上的障碍物进行检测,然后单片机通过处理反馈的信息,判断障碍物的距离,进而发出指令控制驱动模块,控制小车实现转向,达到避障的目的。制作该产品用到的元器件都是以前学习或实训中用到过的元器件,对元器件性能及使用方法有一定的了解,可以熟悉运用,而且有效节省了硬件成本,又能实现预定目标。该设计有很大的实用价值。系统整体框图如下图所示:图1.2整体设计框图1.4功能说明本设计主控芯片采用51芯片,负责传感器的状态,并向电机驱动模块发出动作指令。复位采用手动复位。电源模块有市电转出+12V,再将+12V转换成+5V提供给单片机及其他模块,+12V主要为驱动电机提供电源。避障模块采用购买的成品,该模块在单片机的控制下对小车前方的路况进行检查,并将检测信息反馈给单片机,单片机经过处理反馈回来的信息,发出相应的指令控制驱动模块,从而控制小车做出相应的动作,达到避障的目的。第二章 硬件的选择与组成2.1单片机的选择方案一: 采用凌阳16位单片机作为核心,内置2K字静态内存,32K字闪存(FLASH),2个16位可编程定时器/计数器,32个通用I/O口,14个中断源。该芯片具有体积小、集成度高、可靠性好且易于扩展,具有较强的中断处理能力,低功耗、低电压。完全能够满足设计要求,但该芯片价格昂贵,制作成本高。方案二:采用单片机STC89C52RC为核心,8K的内部程序存储器(ROM),512个内部数据存储器(RAM),4个寄存器区,32个通用I/O端口,2个16位的定时、计数器,有ISP功能,能用于下载线进行的在线编程,设有4个中断源,能够完成设计要求,且该芯片价格便宜,采用该芯片能够达到设计要求,且平时实训中一直采用该芯片,对其比较熟悉,控制起来相对简单。 比较以上两种单片机,综合考虑设计要求及成本,该设计选用STC89C52作为主控芯片。单片机用的是STC89C52RC,该芯片存储容量大,体积小。单片机最小系统:电源部分、晶振部分、复位电路和31号脚接高电平。单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几个大单元及数据总线地址总线和控制总线等三大总线。9号复位信号脚,时钟电器开始工作,复位端会出现24个时钟周期以上的高电平,系统即初始复位。其复位方式一般为手动复位,VCC断电期间,此引脚可接上备用电源,以保证单片机内部RAM的数据不丢失。31脚程序存储器的内外部选通线,内置有8kb的程序存储器,当EA为高电平并且程序地址小于8kb时,读取内部程序存储器指令数据。所以该设计31脚应该接高电平。51单片机内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,18、19脚就接电容和晶振电路。单片机40脚接VCC,可以提供电源,20脚接地。2.1 最小系统电路为方便端口的选择,单片机的P0口外界有上拉电阻,且32个通用I/O端口都接有排针,以方便使用及更换控制端口。引脚功能表/EA访问程序储存控制信号RST复位信号XTAL1和XTAL2外接晶振引脚VCC+5V电源Vss底线P0.0P0.3接驱动控制端P2.2超声波模块的ECHO引脚P2.3超声波模块的TRIG引脚2.2避障模块的选择方案一:采用红外避障,红外避障的基本原理是发光管发出红外光,光敏接收管接收前方物体反射光,据此判断前方是否有障碍物。根据反射光的强弱可以判断物体的距离,原理是接收管接收的光强随反射物体的距离而变化,距离近则反射光强,距离远则反射光弱。目前使用较多是一种传感器红外开关,它的发射频率一般为38KHz左右,探测距离比较短,且易受外界干扰。 方案二:超声波避障,基本原理是通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道障碍物的距离。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2)优点:超声波检测障碍物的精度高,反映灵敏,受外界干扰小,计算简单、易于做到实时控制。综合各方面考虑,本设计采用超声波避障。该部分采用购买HC-SR04超声波测距模块,该模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达到3cm,模块包括超生波发射器,接收器与控制电路。工作原理:1)采用IO口TRIG触发测距,给至少给10us的高电平2)模块自动发送8个40khz的方波,自动检测是否有信号返回;3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340m/s)/2; 如图所示,TRIG是触发控制信号输入端,接单片机的P2.3引脚,ECHO回响信号输出端接P2.2引脚。图2.2 超声波模块接线图2.3驱动模块的选择方案一: 采用单片机的I/O口直接驱动电机,这样可以节省制作成本,但单片机驱动能力有限。方案二:驱动采用L298N驱动芯片,该芯片是双全桥步进电机专用驱动芯片,内涵4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥驱动器,接收标准TTL逻辑信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,驱动能力强,故采用该芯片设计驱动电路。综合考虑,本设计采用L289N来设计驱动电路。驱动采用L298N驱动芯片,该芯片是双全桥步进电机专用驱动芯片,内涵4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥驱动器,接收标准TTL逻辑信号,可驱动46V、2A以下的步进电机,且可以直接透图2.3 L298N硬件结构图过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信,第1脚和第15脚可与电流侦测用电阻连接来控制负载的电路。OUTPUT1、OUTPUT2和OUTPUT3、OUTPUT4 之间分别接2个直流电机;INPUT1INPUT4输入控制电位来控制电机的正反转;Enable则控制电机停转。图2.4 驱动电路驱动电路中,EN1、EN2直接接高电平,1A1、1A2接单片机的P1.0和P1.1口控制电机M1,2A1、2A2接P1.2和P1.3口控制电机M2,1Y1和1Y2接电机M1, 2Y1和2Y2接电机M2。有续流二极管构成的“H桥”,作为L298N的辅助电路来实现直流减速电机的控制。在这里面,二极管起到了续流的作用,迅速释放电机在停止过程中产生的反电动势,对电机进行保护。2.4电源方案 图2.5 电源电路电源供电部分,我使用了实训时自制的直流可调稳压电源,提供直流+12V电压,运用三线稳压器件7805,输出+5V电源。由于7805简单易用、价格低廉,在大多电路中充分采用。通过电解电容的隔离滤波作用,电源部分可输出+5V的直流电源。电路图如上所示。第三章 软件程序流程图3.1主流程图图3.1 主流程图如上图所示,在程序设计中,为了便于调试,方便找到程序问题的所在,程序采用在主函数中调用各个子函数的形式。当启动一次超声波测距程序时,单片机会根据检测反馈回来的信息进行相应的处理,进而判断是否有障碍物,当障碍物的距离小于设定的安全距离时,单片机会发出相应的指令,控制驱动电路,对小车的行驶方向进行调整。当小车前方无障碍物时,主程序会在一定的时间内自动启动一次超生波测距程序,若无障碍继续按原来的方向行驶。如此循环,达到避障的目的。3.2 模块程序设计说明运用C语言编写程序,因为C语言是我所学专业的一门课程,并且在平时的制作中多次使用该语言,因此采用该语言编程相对容易一些。在程序中我采用了两个计数器溢出中断,其中一个是T0计数器溢出中断,是用来计算障碍物的距离,如果障碍物的距离超出测距范围,利用该中断设置标志位。另一个是T1计数器溢出中断,我利用该中断控制超声波发射的时间间隔,即对路面障碍物检测的时间间隔,来适时判断路面情况,改变小车的行驶方向,达到小车躲避行驶过程中遇到的障碍物。3.3 超声波避障程序3.2 超声波时序图以上时序图表明,只需提供一个10us以上的脉冲信号,该模块内部将发出8个40KHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到接收到回响信号的时间间隔可以计算得到距离。具体程序如下:StartModule() /发射一次超声波 TRIG=1; /DelayUs2x(8); /延时20usTRIG=0;while(!RX);/当RX为零时等待TR0=1;/开启计数while(RX);/当RX为1计数并等待TR0=0; /关闭计数T0Count();/计算图3.3 超声波检测流程图4.2驱动模块程序L298N正反转对应输入控制端一览表电机旋转方式控制端IN1控制端IN2控制端IN3控制端IN4输入PWM脉冲信号,改变脉宽可调速ENAENBM1正转高低高反转低高高停止低低高M2正转高低高反转低高高停止低低高图3.4 驱动程序流程图如图3.3所示,当在主程序中当计数器T1溢出中断响应时,会首先判断障碍物的距离是否小于设定的安全距离(被设计中为15cm),若大于安全距离,小车继续按原来的方向行驶,若小于安全距离,小车首先左转90度,停下并启动超声波避障程序再次对前方的路况进行障碍有无的检测,若无障碍物或有障碍但大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时,小车向右旋转180度,停止并再次启动超生波避障程序,对前方的路况进行检测,若无障碍物或有障碍物但距离大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时。小车向右转90度,沿该方向行驶。如此循环实现避障。第四章 电路调试4.1硬件调试在每个元件在没焊上去时,先用万用表检测,它们是不是都正常的,像LED灯,有些可能是有损坏的。其中,L298N在焊接时要特别的注意,由于元件有15个脚,且分成两排,管脚相互交错,给焊接造成一定的难度,因此在焊接前要对管脚进行一些处理,以方便焊接。由于L298N管脚排列的特殊性,给PCB布图也带了一定的难度,自己水平有限未能布成单面板,有些遗憾。该芯片价格昂贵,焊接时要特别注意管脚的连线一定要正确,否则会造成经济损失。焊接完成后,我首先用万用表对线路,进行了检测,发现有漏焊的地方,改正后再次按原理图进行检测,直到一切正常,我对该模块进行了通电测试,经测试各功能正常,至此该模块电路制作完成。单片机最小系统的焊接相对于驱动电路的焊接比较容易,以为在实训中多次焊接过该电路,但我还是很细心的按电路设计流程,画原理图、PCB版图、焊接电路、检测电路到通电测试。完成了该最小系统的设计。该设计过程中,要注意谐振电容的选择,焊接前一定要对该电容进行检测,确保谐振电容完好,否则将导致晶振不起振,单片机无法正常工作,振荡器输入分别由引脚18和引脚19来完成振荡部分。51单片机的一个机器周期含有6个状态周期,而每个状态周期为2个振荡器周期,因此一个机器周期共有12个振荡周期,12MHz的振荡频率,一个振荡器周期为1/12微秒,一个机器周期为1微秒。在硬件检测在遇到的问题有:1、 驱动板焊接走线有遗漏,用万用表的蜂鸣档,对电路进行全面检测,发现有2出走线没有连接,连接后,检测正常。2、 二极管记性接反了,驱动板中的二极管有8个,由于自己粗心,二极管有一个焊接反了,经目测发现该问题,改正后检测正常。3、 发光二极管损坏。再给最小系统版通电检测时发现,电源指示二极管不亮,检测发现该发光二极管已损坏,更换后正常。4、 谐振电容有一个损坏,在排除发光二极管故障后,再次通电检测,发现最小系统不能正常工作,检测发现晶振两脚无电压,晶振未启振。怀疑谐振电容有问题,卸下后检测发现,其中一个电容是坏的,更换该电容后,再次通电测试发现,晶振管脚有电压,烧入测试程序,工作正常,至此最小系统制作完成。4.2软件调试软件调试是制作该课题一个难点,在调试采用分模块调试,首先调试超声波避障模块,该部分的那点是控制超声波的发射有接受,并要计算出障碍物的距离,起初我知识按超声波工作时序图进行编写,但总由于自己理解存在一定的错误,程序始终无法达到预期的目标,后来通过翻阅有关资料,在程序中加入了计数器溢出中断,经过多次调试,最终成功控制住了该模块。其次开始调试驱动模块,该模块是该课题的核心,起初采用switch语句进行编写,但实际测试效果不能达到控制小车转向的效果。多次尝试失败后,改用了if-else语句进行驱动程序的编写,由于是调试只写了实现左转的程序,烧入单片机后,实现了预想中的效果,接下来又加入右转的程序,再次调试发现,转向时间过长,本来要转90的,实际旋转了120度,不过让我高兴的是它能够转向了。出现的问题只是延时的地方过长,反复修改延时的时间,最终达到了预想中的效果。4.3系统联调将硬件调试和软件调试相结合,在电路原理图上先检测电路有没有短接,断路现象,可以用万用表检测电路中的电流、电压是否符合。上电后,观察各个电源指示灯是否正常,用万用表检测各个主要测试点,看各个测试点电压是否正常。正常后,将所编写的程序烧入单片机最小系统中,进行系统联调将,看是否能够达到预期效果。在调试中发现,避障程序能够检测到障碍物的距离,但不能有效避开障碍物,仔细查看程序发现,避障程序再出里小车转向部分存在问题,进行修改后,再次进行系统联调,发现小车能避开障碍物,但仍不能达到预想的效果。再次修改,再次系统联调,如此往复直至达到预期的效果。4.4 实现功能本设计,以单片机STC89C52RC为核心实现小车避障。小车在行驶过程中自动检测障碍物,当障碍物的距离小于小车的安全行驶距离时,小车会首先向左转向90度,停止并再次启动超声波检测前方是否有障碍物,如果没有障碍物,小车沿该方向前进,若有障碍且障碍物距离小于安全距离,小车向右旋转180度,停止并再次检测前方是否有障碍物,若无则沿该方向前进,若有障碍物且障碍物距离小于小车行驶的安全距离是,小车向右旋转90度,实现后退,如此往复,达到避开障碍物的目的。由于自身能力有限,部分功能效果不是很好,但基本实现了避障的目的,有许多地方有待改进,我会在以后的学习中不断完善该设计。第五章 总结与展望这次毕业设计我运用了典型的单片机STC89C52RC,对于单片机的工作原理和功能有了深刻的了解,对单片机的C语言程序的应用有了新的认识。通过平时的学习,及查阅相关的知识,对设计本产品起了很大的帮助。该设计电路简单,为节省成本,超声波避障模块外,完全自己设计,PCB布图,焊接。由于焊接水平不高,电路焊接的不够美观,不过这也让我意识到自己的不足之处,我会在以后的学习中加强相关的训练,来提高自己的焊接技能。经过不断的改进,在老师和同学的帮助下,我完成了该课题,实现了预期目标。在制作过程中,难免碰到一些困难,还好现在网络发达,很多东西都可以在网上查的到,还有通过书本上找到一些相关联的知识。同时同学之间也互相帮助,一起探讨和研究问题,一起分享排除问题和困难后的喜悦,发扬我们慷慨激昂的精神,一起取长补短共同进步。经过这次的毕业设计,我认为很多知识还是要深入了解,没有合理的安排好时间,作品在一些方面还是存在不足。单片机系统的知识还有许多不懂的地方,眼高手低,学的时候都明白,就是不怎么会运用,造成大量的时间去查阅资料和程序,重新学习。在硬件调试过程中,发现很多自身的不足之处,粗心大意,把损坏的发光二级管焊接到电路中,造成了不必要的时间浪费。所以在焊接前对元器件好坏的检测,是十分必要的,这样可以减少不必要的错误,也会给调试带来方便。更重要的是将书本知识和实际电路联系起来,不要眼高手低,平时应该对实践,对自己感兴趣的业余小制作,是帮助我们学习好电子专业最好的一种方法。他可以检测我们的动手能力,同时让我们更好地理解所学的知识,达到学以致用的目的。对于软件部分,我们应该有自己的学习开发板,可以自己制作也可以购买,只有把自己编写的程序投入到实践中,才能让我们发现问题,进而思考问题,解决问题,与此同时提高自身的技能。通过此次毕业设计,我发现思考了很多,也收获了很多,我会在今后的人生中加强学习,不断的提升自身价值,争取在竞争激烈的电子世界中有所收获。参考文献1 鲍小南.单片机基础. 浙江大学出版社, 2002.92 徐丽香.模拟电子技术. 电子工业出版社,2007.123 徐丽香.黎旺星.数字电子技术. 电子工业出版社,2006.94 谭浩强.C语言程序设计.2版.北京:清华大学出版社,2008.115 王静霞.单片机应用技术(C语言版) 北京:电子工业出版社,2009.56 冯柏群,祁和义.检测与传感技术.北京:人民邮电出版社,2008.4. 7 王东锋,王会良,董冠强单片机C语言应用100例M 北京:电子工业出版社,2009.8 顾滨,赵伟军PROTEL99SE实用教程北京:人民邮电出版社,2008.6附 录附录A 电路原理图附录B PCB图附录C 作品实物图附录D 程序/*=/超声波避障小车程序=超声波模块接线: - |TRIG接 P2.3 ECH0 接P2.2| -L298N接线: - |1A1-P1.0 |1A2-P1.1| |2A1-P1.2 |2A2-P1.3| -注:STC89C52,实测使用11.0592M=*/#include /器件配置文件#include sbit RX=P22; /接受端口sbit TX=P23; /发射端口/驱动引脚定义sbit IN1=P10;/M2sbit IN2=P11;sbit IN3=P12;/M1sbit IN4=P13; unsigned int time=0; unsigned long S=0,num=0; bit flag =0;/*- uS延时函数大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); void delay(void)/ DelayMs(200);DelayMs(200); DelayMs(200);DelayMs(200); DelayMs(200);DelayMs(200);/*驱动模块*/forword()/前进 IN1=1; IN2=0; IN3=1; IN4=0;turn_left()/左拐 IN1=1; IN2=0; IN3=0; IN4=0;turn_right()/右拐 IN1=0; IN2=0; IN3=1; IN4=0;stop()/停止 IN1=0; IN2=0; IN3=0; IN4=0; /*T0中断用来计数器溢出,超过测距范围*/void zd0() interrupt 1 flag=1;/中断溢出标志 /*启动超生波模块*/void StartModule() TX=1; /启动一次模块 DelayUs2x(8); /延时大概20us TX=0; while(!RX); /当RX为零时等待 TR0=1; /开启计数 while(RX); /当RX为1计数并等待 TR0=0; /关闭计数unsigned int count() time=TH0*256+TL0; TH0=0; TL0=0;S=(time*1.7)/100; /算出来是CM if(S=700)|flag=1) /超出测量范围 flag=0;S=700; DelayMs(80);/80MS return S;/定时器T1溢出中断一定时间启动一次测距模块void time1() interrupt 3 ET1=0;TR1=0; TH1=(65536-15536)/256; TL1=(65536-15536)%256; StartModule(); num=count(); if(num15) turn_left(); delay(); /延时1.2s完成转向 stop(); StartModule(); /启动一次模块 num=count(); /计算障碍物距离 if(num15) turn_right(); delay(); /延时2.4s完成转向 delay(); stop(); StartModule(); /启动一次模块 num=count(); /计算障碍物距离 if(num15) turn_right(); delay(); /延时1.2s完成转向 forword(); else forword(); else forword(); else forword(); ET1=1; TR1=1;/*主函数*/void main() unsigned int i=0; TMOD=0x11; /设T0为方式1,GATE=1; TH0=0; TL0=0; ET0=1; /允许T0中断 TH1=(65536-15536)/256; TL1=(65536-15536)%256; ET1=1; /允许T1中断 TR1=1; EA=1; /开启总中 while(1) forword(); 第25页,共25页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!