欢迎来到天天文库
浏览记录
ID:209518
大小:3.08 MB
页数:43页
时间:2017-07-03
《智能公交小车系统的设计与实现毕业论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
智能公交小车系统的设计与实现毕业论文目录绪论11.方案设计与论证21.1系统原理系统21.2硬方案比较和选择22.硬件设计42.189C52RC单片机控制模块42.1.189C52RC主要性能42.1.2最小应用系统设计42.1.3时钟电路52.1.4复位电路62.2直流调速系统72.3驱动82.4比较器102.5信息采集系统102.5.1循迹电路原理分析112.6显示电路设计133.软件设计143.1主程序设计153.2宏定义函数163.3初始化子程序设计163.4延时子程序设计183.5定时子程序设计193.6扫描子程序设计213.6.1小车结构设计213.6.2光电扫描状态233.7报警子程序设计26 3.8电机控制子程序设计274.测试数据、测试结果分析30结论及致谢31参考文献34附录A智能小车公交系统总程序清单35附录B硬件原理图、以及实物图片41 绪论伴随着科学技术的发展,智能系统在社会各领域的作用越来越大,对智能机器人、智能小车系统的研究已成为热门课题。现如今世界上已有许多国家都积极地在智能系统的制造领域投入大量物力和精力,很多专业组织和人士纷纷想建造一个平台,互相交流各国智能系统技术和发展方向和水平,其中亚广联组织的智能小车电视大赛就迎合了大多数人对智能系统的热爱。对于竞赛中使用的智能系统,其控制器是整个智能控制系统的核心,直接关系到系统工作的效率和性能。对于控制器的选型要遵循以下原则:控制器必须具有有较强的抗干扰能力,具有较快的运算速度和具备很强的数据处理能力;小型化功能强大;内置不小于32kB的程序存储空间;内置不小于2kB的数据存储空间;具备足够的I/O端口;具备至少3个定时器/计数器;灵活方便的编程调试方式;另外要具有常见的封装形式。基于以上这些原则和分析了设计任务和要求,确定了该设计基于单片机设计而来。根据导师的指示,充分研究分析智能公交小车循迹系统,结合设计要求和任务进行设计开发。该项目可完成小车寻迹、停车、小车速度控制等。根据设计要求,确定了如下的设计方案:通过改装购买来的小车,在小车底盘的基础上加装寻迹模块(光电传感器)、PWM调制模块(控制电机转速)、电源模块、单片机、蜂鸣器。这样便能实现小车寻迹、报站、停止等一系列动作。该方案通对电机进行实时控制,以达到精准控制的目的。在本设计中采用89C52RC单片机作为运算和控制核心,使用光电传感器对黑线进行寻迹,将采集的信号处理后作为PID的入口参数,通过PID运算产生控制信号,再将控制信号传送给L298N从而实现对电机控制,使用五个光电传感器采集信号,通过分析采集到的信号,产生控制信号,控制电机实现左大转、左小转、右大转、右小转、刹车、惰行、反转。另外,通过PWM模块实现对速度的调制;本设计就是采用的是通用89C52RC单片机作为智能小车公交系统的控制和运算中枢,89C52RC单片机是一款通用的8位CMOS微控制器,功耗小性能好,易于编程。 1.方案设计与论证设计任务要求:设计并制作一智能公交小车系统。要求该智能小车系统能按设定的速度稳定地在引导线上行驶。在设定的位置停止设置的时间,到达引导线末端自动停止前进。引导线黑色宽度2.5cm,每站停留时间5秒并鸣笛。1.1系统原理分析设计任务要求该智能小车公交系统应该包括这些模块:控制模块、驱动模块、比较器模块、信息采集模块、LED显示模块、电机。通过红外光电传感器采集小车行驶时路面状况(循迹),然后将采集到的信号通过单片机分析处理后产生控制信号,控制小车调速、转弯、报站、刹车等;由于单片机输出电流不能驱动电机,所以需要外加驱动电路模块来驱动电机。另外通过LED显示小车状态。系统框图如图1.1所示控制处理器89C52RC驱动电路比较器信息采集模块LED显示电机图1.1系统框图1.2方案比较和选择根据设计要就,智能小车公交系统的控制模块可以采用如下方案:方案一:采用89C52RC单片机,它是一款通用性的低功耗、高性能CMOS,8位微控制器。使用了STC公司的高密度非易失性存储器制造技术。89C52RC具有以下标准功能:8k字节程序存储器Flash(闪存),256字节数据存储器RAM,三个16位定时器/计数器,四个八位可编程并行输入输出口,看门狗定时器,2两个数据指针,八个两级(0和1)中断源,全双工串行口,片内晶振以及时钟电路。另外,89C52RC可降至0Hz静态逻辑操作,支持两种模式。在空闲模式下,CPU工作停止,允许RAM、定时器/计数器、串口、中断继续工作。掉电模式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。使得89C52RC单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 方案二:选用AVR单片机Atmega128L,Atmega128L是一款高性能、低功耗的单片机,运算速度快,Atmega128L是八位微处理器,管脚数为64。采用的是先进的精简指令集结构,其指令系统133条指令,大多数单条指令为单周期指令。Atmega128L有两个相互独立的预分频器和比较器,Atmega128L具有八位定时器/计数器和两个预分频器、16位定时器/计数器具有比较功能和捕捉功能,Atmega128L具有实时时钟计数器。Atmega128L内部带有模拟电压比较器。具有上电自动复位以及可编程的掉电检测功能。Atmega128L片内资源丰富,具有:六个外部二级中断源,4个八位定时计数器,53个(I/O)输入输出口,I/O口多。Atmega128L的引脚大多数都有具有第二功能,可实现更多功能,功能非常的强大。.方案三:采用FPGA(现场可编辑门列阵)作为智能小车公交系统的控制器。使用FPGA器件来设计电路,其设计不仅过程简单,可采用至上而下的设计方法,而且设计出来的系统的体积小。采用FPGA设计的系统功能异常强大,而且不像传统制造集成电路那样需要花费大量时间和精力来设计开发。采用FPGA设计灵活强、器件的密集度高、产品的可靠性强、缩短了产品的开发周期、工作速度快、系统的保密性能强。采用FPGA可以实现复杂的逻辑功能要求,可实现大规模设计要求、高集成度、小体积、很好的稳定性,采用的是至上而下的设计思路。另外FPGA采用的是并行工作方式,流水线处理技术,四级流水线操作。每条指令周期完成四个操作,提高了系统的处理速度,通常应用于大规模和实时性处理系统。方案比较:由三种方案可以看出,以Atmega128L核心可以方便地实现对各个部分的控制和外接,但相对于89C52RC价格贵,内部资源没有得到充分利用,而且Atmega128L指令系统采用的是精简指令结构,程序开发编写相对比较难,不通用。FPGA的高速处理能力得不到充分发挥且价格较贵,而89C52RC通用性强,价格便宜并且能满足设计需要,所以我们选择方案一。 2.硬件设计2.189C52RC单片机控制模块2.1.189C52RC主要性能:与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz~33Hz三级加密程序存储器四个八位可编程I/O口三个16位定时器/计数器六个二级中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符2.1.2最小应用系统设计该系统中用89C52RC芯片作为控制和运算中心构成的单片机最小系统,其系统特点是:简单﹑可靠。其构成部分包括:电源接口和地、晶振、时钟电路、复位电路、蜂鸣器、排针构成。单片机最小系统如图2.1所示。其应用特点:(1)可方便供用户任意的使用各口的每一位。(2)其内部存储器容量有限。(3)应用系统的蜂鸣器可做报警使用。(4)复位电路采用上电复位和按键复位。 图2.189C52RC单片机最小系统2.1.3时钟电路该设计中时钟信号用来提供给单片机内各种指令操作的时间基准,该时钟电路用于89C52RC工作所需要的时钟信号。单片机的时钟信号通常有两种方式得到:1内部振荡方式2外部振荡方式。该设计采用内部时钟方式,利用89C52RC单片机内的反向放大器,单片机的XTAL1和XTAL2端用于外接石英晶体振荡器和微调电容(c1和c2),这样便构成了一个稳定的自激振荡器,将其产生的脉冲输入给单片机。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。C1、C2可在20pF到100pF之间取值,但在20pF到40pF时振荡器有较高的频率稳定性。所以本设计中,未涉及单片机得串行口通信,所以振荡晶体选择12MHZ,电容选择30pF,若需要进行串行口通信,则一般采用振荡频率为11.0592MHZ晶振。2.1.4复位电路 复位是用作单片机的初始化操作,当单片机复位时程序计数器PC的值变为0000H,使单片机的程序指针指在0000H单元,即从0000H单元开始执行程序。除了系统的正常初始化外,另外当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可以通过持续按下复位键,使单片机工作从0000H单元重新工作。其中单片机复位的条件是:当按下复位键时,必须使RST复位信号引脚持续2个机器周期以上的高电平。复位电路通常采用上电自动复位和按钮复位两种方式,如图2.2所示。(a)上电自动复位(b)按键电平复位(c)按键脉冲复位图2.2单片机常见的复位电路该设计采用上电自动复位和手动复位两种方式,其中上电自动复位电路,其原理是当系统上电时,电容充电到高电平并持续一段时间(两个机器周期以上)来实现单片机复位。时钟频率用12MHZ时所以C取22uF,R取1KΩ。按键复位其原理是,当按键按下时,R1接入电路,R1和R2分压,由于R1<Ur时,即负向输入端大于正向输入端,输出端U0输出一低电平。若Ui0;x--)for(y=110;y>0;y--);}开始设置两变量x,y并给x初始化x<=0初始化yN返回Yy—1y<=0NYx—1图3.4智能公交小车系统软件延时流程图3.5定时子程序设计智能小车公交系统定时程序用于当小车到站时,蜂鸣器鸣笛10次后,停止五秒后再启动小车,继续行驶。该定时子程序设计采用定时中断方式,每次中断间隔时间为5万微秒(晶振频率为12MHZ,而定时器0计数50000次就会将TF0置为1,提出中断请求,而在初始化子程序中总中断和定时器0中断都已被打开,所以一有中断就会被响应,然后跳到中断服务子程序执行相应要实现的功能。),要求定时5秒,所以应该产生100次定时器0中断。voiddelay1()//延时五秒子程序{ /*给定时器0寄存器送初值*/TH0=(65536-50000)/256;//分离计数初试值高位值给寄存器高位TL0=(65536-50000)%256;///分离计数初试值低值位给寄存器低位TR0=1;//启动定时器0while(!flag1);//等待时间到五秒flag1=0;//重新将定时五秒标识复位}/*定时器0中断程序*/voidtime0()interrupt1{a++;//计数产生多少次定时器0中断/*充新为定时0器寄存器送初值*/TH0=(65536-50000)/256;//分离计数初试值高位值给寄存器高位TL0=(65536-50000)%256;///分离计数初试值低值位给寄存器低位if(a==100)//判断是否到定时到五秒{a=0;//将计数产生多少次定时器0中断次数清为0flag1=1;//将定时五秒标识置位}} 开始开始重装定时器0寄存器初值初始化定时器0寄存器累加器a+1A==100定时器0开始计数NY到五秒将五秒定时标识、a清零NY返回中断返回图3.5定时五秒子程序图3.6定时器0中断中断服务子程序流程序图3.6扫描子程序设计。3.6.1小车的结构设计小车的结构图如图3.7所示:图3.7小车结构图 电机的控制和小车的控制方法表3-1、3-2表3-1电机控制方法左电机右电机P3.0P3.1电机状态P3.2P3.3电机状态A1A2B1B200不转00不转01前转01前转10后转10后转11不转11不转表3-2小车运行控制方法P3.0P3.1P3.2P3.3小车运动状态0101前进1010后退1101左转0111右转小车的和轨道的几种常见状态如图3.8所示: 到终点站到站点图3.8小车和轨道常见的几种状态3.6.2光电扫描状态采用五个光电感应器对轨道(引导黑线)进行循迹,其中P1.3对应右边第二个光电感应器经比较 开始器倒向后输入信号。P1.4对应右边第一个光电感应给P1口送高电平器信息;P1.5对应中间光电感器信息;P1.6对应左边第一个光电感器信息;P1.7对应左边第二个光电感器信息。(由于硬件电路设计中中间光电感应器读读取状态信号回来的信号经LM324搭建的比较器后0表示未循迹到黑线,1表示循迹到黑线;其他的0表示循迹到,查状态真值表1表示未循迹到黑线)。小车循迹流程图如图3.9所示。返回标志值图3.9小车循迹子程序流程图五个光电感应器真值表0x00L1、L2、R1、R2都循迹到黑线CC未循迹到0x08L1、L2、R1都循迹到黑线R2、CC未循迹到0x10L1、L2、R2都循迹到黑线R1、CC未循迹到0x18L1、L2、CC都循迹到黑线R1、R2未循迹到0x20L1、L2、R1、R2、CC都循迹到黑线0x28L1、L2、R1、CC都循迹到黑线R2未循迹到0x30L1、L2、CC、R2都循迹到黑线R1未循迹到0x38L1、L2、CC都循迹到黑线R1、R2未循迹到0x40L1、R1、R2都循迹到黑线L2、CC未循迹到0x48L1、R1都循迹到黑线L2、CC、R2未循迹到0x50L1、R2都循迹到黑线L2、R1、CC未循迹到0x58L1循迹到黑线L2、R1、R2、CC都未循迹到0x60L1、CC、R1、R2都循迹到黑线L2未循迹到0x68L1、CC、R1都循迹到黑线L2、R2未循迹到0x70L1、CC、R2都循迹到黑线L2、R1未循迹到0x78L1、CC都循迹到黑线L2、R1、R2未循迹到0x80L2、R1、R2都循迹到黑线L1、CC未循迹到0x88L2、R1都循迹到黑线L1、CC、R2未循迹到0x90L2、R2都循迹到黑线L1、R1、CC未循迹到0x98L2循迹到黑线L1、CC、R1、R2都未循迹到0xa0L2、CC都循迹到黑线L1、R1、R2未循迹到0xa8L2、R1、CC都循迹到黑线L1、R2未循迹到 0xb0L2、CC、R2都循迹到黑线L1、R1未循迹到0xb8L2、CC都循迹到黑线L1、R1、R2未循迹到0xc0R1、R2都循迹到黑线L1、L2、CC未循迹到0xc8R1循迹到黑线L1、L2、CC、R2都未循迹到0xd0R2循迹到黑线L1、L2、CC、R1都未循迹到0xd8L1、L2、R1、CC、R2都未循迹到黑线0xe0R1、R2、CC都循迹到黑线L1、L2未循迹到0xe8CC、R1都循迹到黑线L1、L2、R2未循迹到0xf0CC、R2都循迹到黑线L1、L2、R1未循迹到0xf8:CC循迹到黑线L1、L2、R1、R2都未循迹到循迹子程序uchardscan()//循迹状态{ucharnum,hh;P1=0xff;//准备从P1口接收数据hh=P1;//读取P1口数据hh=hh&0xf8;//取P1口的高五位switch(hh){case0x00:break;case0x08:break;case0x10:break;case0x18:num=0;break;case0x20:num=3;break;case0x28:num=3;break;case0x30:break;case0x38:num=4;break;//pcase0x40:break;case0x48:break;case0x50:break;case0x58:num=0;break;case0x60:break;case0x68:break;case0x70:break;case0x78:num=0;break; case0x80:break;case0x88:break;case0x90:break;case0x98:num=0;break;case0xa0:num=3;break;case0xa8:num=4;break;case0xb0:break;case0xb8:num=0;break;case0xc0:num=1;break;case0xc8:num=1;break;case0xd0:num=1;break;case0xd8:num=5;break;case0xe0:num=4;break;//pcase0xe8:num=1;break;case0xf0:num=1;break;case0xf8:num=2;break;default:break;}returnnum;}num=0左转标志;num=1右转标志;num=2前行标志;num=3停止标志;num=4到站标志;num=5跑飞标志。3.7报警子程序设计报警器采用蜂鸣器实现,由于单片机几个口输出的电流都很小,所以不能驱动蜂鸣器,因此需要外加一驱动电路来驱动蜂鸣器。该设计中蜂鸣器的驱动使用了一个PNP管,蜂鸣器的控制口是P1.0位。如图3.10所示。蜂鸣器的作用:当小车到到站点时,使蜂鸣器滴答滴答鸣笛十声,再停留五秒后继续行驶。图3.10报警器电路 报警子程序流程图如图3.11所示开始设置一变量i并初始化为10让蜂鸣器叫或不叫i<10NY延时返回i—1图3.11报警子程序流程图报警子程序voidbeeper()//蜂鸣器叫十次{uchari;for(i=0;i<10;i++){beep=~beep;delay(5000);//延时让蜂鸣器叫或不叫持续一段时间}beep=1;//关蜂鸣器}3.8电机控制子程序设计 该设计中使用的是两个电机对小车状态进行实时改变,由于单片口输出电流低不能直接驱动电机转动,所以本设计采用L298N芯片来驱动电机转动。驱动芯片的IN1使用的是P3.0;IN2使用的是P3.1;IN3使用的是P3.2;IN4使用的是P3.3.改变小车子程序流程图如图3.12所示:开始读取当前装态标志判断当前状态标志gggggg==5ggg==0ggg==1ggg==4ggg==3ggg==2到终点站前进右转左转到站点后退返回图3.12改变小车状态子程序程序流程图 下面为改变小车状态子程序:voidvrun(ucharggg){if(ggg==0)//左拐{A1=1;A2=1;B1=0;B2=1;}if(ggg==1)//右拐{A1=0;A2=1;B1=1;B2=1;}if(ggg==2)//前进{A1=0;A2=1;B1=0;B2=1;}if(ggg==3)//到终点{flag2=0;//A1=1;//电机反转减速//A2=0;//B1=1;//B2=0;//delay(50);A1=1; A2=1;B1=1;B2=1;}if(ggg==4)//到站{flag2=0;//A1=1;//电机反转减速//A2=0;//B1=1;//B2=0;//delay(50);A1=1;A2=1;B1=1;B2=1;beeper();delay1();flag2=1;}if(ggg==5)//跑飞后后退{A1=1;A2=0;B1=1;B2=0;}} 4.测试数据、测试结果分析测试仪器:测试仪器包括秒表、万用表、黑色胶布、白纸、直尺、示波器、直流稳压电源等。测试方法:万用表主要用来测试分立元器件的电阻、压降、电流、截止/导通状态等参数;直流稳压电源在测试期间为各待测系统供电。示波器用于测试光电感应器采集后的信号的波形,要求在调试过程中光电感应器采集的信号经过反向模块后(可以通过调节运放正向输入端的电压,即通过调节可变电阻的阻值来实现)输出的波形应该为方波。秒表用于产品测试,按照任务书的基本要求对制成的电动车进行产品测试。黑色胶布主要用于搭建一条圆弧型的小车轨道,作为小车测试时循迹使用。白纸便于将小车轨迹铺在上面,另外在光电感应器发射光,当光线射到白色纸上时会达到很好的反射效果。直尺主要用于在测试时,测量小车到站或到终点站需要多长的缓冲区,另外测量光电感应器之间的距离,以便设置黑线的宽度。测试数据及测试结果分析:(1)计时精度分析当小车到站时,小车会停下来鸣笛,停止五秒后,再启动小车继续行驶,所以需要测试是否精确停五秒。(2)循迹分析本设计采用实时改变小车装态来达到准确循迹的目的,所以在测试时可观察小车行驶是否偏离轨道偏离多少,若向左边,则说明在程序中小车向右转速度不够,需要修改程序,来达到准确循迹效果。(3)准确停站或站台点分析小车到站或站台点时需要停测试时,若未停说明光用于停止的电感应器并未全部循迹到,需要修改程序循迹的准确和平缓程度;若停站长度超过时,则需要修改程序在停止时设置减速功能,并测试需要减速多长时间方能达到准确停站。 结论历时四个多月的设计过程中,我首先重新温习了单片机得教材和C语言教材,在仔细的阅读和分析了本设计的要求和要实现的功能后,与合作的同学商讨本次设计的思路和方案,在确定了需要用什么器件后我们去城隍庙购买了器件,然后根据购买的器件到网上下载相关的资料,用游标卡此测量了器件的大小后,便开始电路图的设计,在辅助合作者完成电路图设计后,然后在实验室完成了电路版的制作和焊接元器件。在完成了焊接后,用在上电情况下检测元器件是否工作,是否存在虚焊,元器件的参数是否正确,在确定一切都正确后,我开始了小车程序的设计,在完成了程序设计后,及需要对小车进行测试,在测试过程小车的循迹并未向我设计的行驶,小车的总是跑偏;小车在转弯时,并未实现平滑行驶。在调试小车和修改程序的过程中使我深深感受到理论与实际间的差距。通过这次毕业设计,提高了我的动手能力,并且在查阅芯片器件质料分析时序后,我熟悉的掌握了很多器件功能和控制方法。 参考文献[1]何立民.单片机应用系统设计.北京:北京航天航空大学出版社,2005:46~50[2]李广弟.单片机基础.北京:北京航空航天大学出版社,2001:56~64[3]赵刚.EDA技术简明教程.四川:四川大学出版社,2004:192~210[4]何希才.新型实用电子电路400例.北京:电子工业出版社,2000:60~65[5]赵负图.传感器集成电路手册.北京:化学工业出版社,2004:590~591[6]李金平、沈明山、姜余祥.电子系统设计.北京:电子工业出版社,2007:128~219[7]陈伯时.电力拖动自动控制系统.北京:机械工业出版社,2000年6月,127~130[8]张毅刚、彭喜元.新编MCS-51单片机应用设计.黑龙江:哈尔滨工业大学出版社,2003,25~27,411~417[9]郭兰英、赵祥模.微机原理与接口技术.北京:清华大学出版社,2006:316~326 附录A智能小车公交系统总程序:#include#defineuintunsignedint#defineucharunsignedcharsbitL1=P1^7;sbitL2=P1^6;sbitCC=P1^5;sbitR1=P1^4;sbitR2=P1^3;sbitbeep=P1^0;sbitA1=P3^0;sbitA2=P3^1;sbitB1=P3^2;sbitB2=P3^3;ucharflag1,flag2,a,mm;uchardscan();//循迹状态voiddelay(ucharz);//软件延时voiddelay1();//定时5秒voidinit();//初始化子程序voidbeeper();//报警子程序voidvrun(ucharggg);//控制小车子程序voidmain(){init();//初始化while(1){if(flag2==1)//小车动态改变标识位是否为1{mm=dscan();//调用扫描小车循迹状态信息vrun(mm);//实时控制小车状态}}} voidinit()//初始化{flag1=0;P3=0xff;a=0;TMOD=0x01;EA=1;ET0=1;vrun(2);//启动时让小车向前进flag2=1;//小车动态变化标识}uchardscan()//循迹状态{ucharnum,hh;P1=0xff;hh=P1;hh=hh&0xf8;switch(hh){case0x00:break;case0x08:break;case0x10:break;case0x18:num=0;break;case0x20:num=3;break;case0x28:num=3;break;case0x30:break;case0x38:num=4;break;//pcase0x40:break;case0x48:break;case0x50:break;case0x58:num=0;break;case0x60:break;case0x68:break;case0x70:break; case0x78:num=0;break;case0x80:break;case0x88:break;case0x90:break;case0x98:num=0;break;case0xa0:num=3;break;case0xa8:num=4;break;case0xb0:break;case0xb8:num=0;break;case0xc0:num=1;break;case0xc8:num=1;break;case0xd0:num=1;break;case0xd8:num=5;break;case0xe0:num=4;break;//pcase0xe8:num=1;break;case0xf0:num=1;break;case0xf8:num=2;break;default:break;}returnnum;}voidvrun(ucharggg){if(ggg==0)//左拐{A1=1;A2=1;B1=0;B2=1;}if(ggg==1)//右拐{A1=0;A2=1; B1=1;B2=1;}if(ggg==2)//前进{A1=0;A2=1;B1=0;B2=1;}if(ggg==3)//到终点{flag2=0;//A1=1;//电机反转减速//A2=0;//B1=1;//B2=0;//delay(50);A1=1;A2=1;B1=1;B2=1;}if(ggg==4)//到站{flag2=0;//A1=1;//电机反转减速//A2=0;//B1=1;//B2=0;//delay(50);A1=1;A2=1;B1=1; B2=1;beeper();delay1();flag2=1;}if(ggg==5)//跑飞后倒着走{A1=1;A2=0;B1=1;B2=0;}}voidbeeper()//蜂鸣器叫十次{uchari;for(i=0;i<10;i++){beep=~beep;delay(5000);}beep=1;//关蜂鸣器}voiddelay(ucharz)//延时{ucharx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay1()//延时五秒{TH0=(65536-50000)/256; TL0=(65536-50000)%256;TR0=1;while(!flag1);//时间到五秒flag1=0;//重新将定时五秒标识复位}voidtime0()interrupt1//定时器0中断{a++;//中断计数器累加TH0=(65536-50000)/256;//给定时器0中断寄存器重新赋值TL0=(65536-50000)%256;if(a==100){a=0;//将中断计数器清零flag1=1;//将定时五秒标识置位}} 附录B系统原理图如下:智能小车系统总原理图 光电感应模块 单片机最小系统电机驱动模块(L298N) 智能小车外围连线小车行驶图片 致谢四个多月的毕业设计终于告一段落。能顺利完成我的毕业论文的设计,在此我得感谢我的导师,感谢她对我的指导,谢谢她在我听完我开题报告后,对我毕业设计中的不足之处给予及时的提点,并给与我宝贵意见,正在她的耐心指导下我最终顺利完成了毕业论文的设计。通过独立完成这次毕业论文设计,使我深刻地认识到专业知识的重要性,也理解了理论联系实际的含义,同时让我意识到英语的学习的重要性,因为在搜寻芯片质料时,我发现所有的芯片质料都是英文的,所以要想成功的编写好程序,实现预期目的就要求能够准确的看懂芯片的功能或时序图。另外,我得感谢和我的合作的同学,在本次设计的工程中我充分的感受到团队合作的优势。首先,我一起完成论文设计思想路线,确定了方案。然后一起购买器件、制造电路版和安装元器件。最后,在我完成了程序编写后,一起对小车进行调试,并讨论、分析测试结果,然后我对程序进行修改以便达到设计要求。这四个多月的设计是对过去所学知识的系统提高和扩充的过程,为今后的进一步学习打下了基础。在对本次智能小车公交系统的软件设计时,我充分了解到单片机C语言编写工程程序的优越性,其可移植性大大缩短了本次设计的开发周期,让我在短时期内实现程序的开发、达到设计要求。由于我平时做的项目少,积累的经验少,因此在本次设计中一定存在很多不足之处,敬请各位老师批评指正。
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处