《基于单片机控制的智能小车-自动化专业毕业设计-毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机控制的智能小车-自动化专业毕业设计-毕业论文.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号 本科生毕业设计基于单片机控制的智能小车Based on microprocessor controlled intelligent car学 生 姓 名专 业自 动 化学 号指 导 教 师分 院电子工程分院2012年 6 月摘 要随着人们生活水平的提高,一些琐碎的家务,以及一些高危工作,人们考虑用机器去替代,这样智能的电动小车就成为最为普遍的实现各种功能的载体。智能小车是一种能够通过编程手段完成特定任务的小型化机器人,它具有制作成本低廉,电路结构简单,程序调试方便等优点。采用89C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,
2、并可以自动记录时间、里程和速度,自动寻迹和寻光功能。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。 关键词:单片机 传感器 电动小车 ABSTRACTWith the improvement of peoples living standard, people consider the use of machines to replace to do some trivial domestic as well as high-risk work. Smart cars can be programmed to perform a s
3、pecific task means the miniaturization of robot, it has to make cost low, circuit structure is simple, convenient program test. Adopting 89C51 for controlling core, super sonic sensor for test the hinder. It can run in a high and a low speed or stop automatically. It also can record the time, distan
4、ce and the speed or searching light and mark automatically the electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyze.Keyword: Single chip comp
5、uter Sensor Electricity motive small car目 录绪 论1第一章 系统结构及组成21.1系统结构21.2系统组成2第二章 硬件设计42.1控制器模块42.2测速模块92.3报警模块112.4 控速模块112.5 显示模块122.6 循迹模块14第三章 软件设计163.1 PWM控制163.2 总体软件流程图163.3小车循迹流程图173.4中断程序流程图18第四章 仿真与调试2041 Proteus简介204.2 硬件调试214.3 软件调试23结 论25致 谢26参 考 文 献27附 录28绪 论本设计采用MCS-51系列中的89C51单片机。以89C51
6、为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。80C51是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表。第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,以89C51为核心推出的大量各具特色与89C51兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等
7、。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机89C51系列8C592单片机引入了具有较强功能的设备间网络系统总线-CAN(Controller Area Network BUS).新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。 本设计就采用了比较先进的89C51为控制核心,89C51采用CHOMS工艺,功耗很低。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也应用到了超声波传感器进行
8、检测。所以本设计与实际相结合,现实意义很强。第一章 系统结构及组成 1.1系统结构确定如下方案:在现有玩具电动车的基础上,加装光电检测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。系统机构框图如图1-1所示。 图1-1系统结构框图1.2系统组成1) 霍尔测速模块采用型号为A3144的霍尔片作为霍尔测速模块的核心,该霍尔片体积小,安装灵活,价格合理,可用于测速,可与普通的磁钢片配合工作。2) 单片机模块采用型号为AT89C51的单片机作为主控制器,使用霍尔传感器进行测量的直流电机转速测量系统。AT89C
9、51是带4K字节闪烁可编程擦除只读存储器的低电压、高性能CMOS8位微处理器。它将多功能8位CPU和闪烁存储器组合在单个芯片中,为许多控制提供了灵活性高且价格低廉的方案。3)显示模块采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,并且连接很方便 ,所以在此设计中采用了LCD液晶显示屏。4)报警模块采用蜂鸣器与发光二极管作为声光报警主要器件。该方案不论在硬件焊接方面还是在编写软件方面都简单方便,而且成本低廉。5)电源模块采用交流220V/50Hz电源转换为直流5V电源作为电源模块。该方案实施简单,电路搭建方便,可作为单片机开发常备电源使用。第二章 硬件设
10、计2.1控制器模块单片机(Single-Chip-Microcomputer)又称为单片微控制器,其基本结构是将微型计算机的基本功能部件:中央处理器(CPU)、存储器、输入口、输出口、定时器/计数器、中断系统等全部集中在一个半导体芯片上。单片机结构上的设计,在硬件、指令系统及I/O能力等方面都有独到之处,具有较强而有效的控制功能。虽然单片机只是一个芯片,但无论从组成还是从其逻辑功能上来看,都具有微机系统的含义。另一方面,单片机毕竟是一个芯片,只有外加所需的输入、输出设备,才可以构成实用的单片机应用系统。2.1.1 AT89c51单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(F
11、PEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价格低廉的方案。主要功能特性:1.与MCS-51 兼容 2.4K字节可编程FLASH存储器 3.寿命:1000写/擦循环 4.数据保留时间:10年 5.全静态工作:0Hz-24MHz 6.三级程序存储器锁
12、定 7.1288位内部RAM 8.32可编程I/O线 9.两个16位定时器/计数器 10.5个中断源 11.可编程串行通道 12.低功耗的闲置和掉电模式 13.片内振荡器和时钟电路2.1.2 AT89C51各引脚功能介绍:VCC:AT89C51电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,
13、当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读图2-1 AT89C51引脚入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内
14、部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设
15、成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),
16、P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提
17、升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输
18、入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的
19、输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。X
20、TAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.3 定时器与外部中断8951单片机内部有两个16位可编程定时器/计数器,记为T0和T1。它的工作方式可以通过指令对相应的特殊功能寄存器编程来设定,或作定时器用,或作外部事件计时器用。定时器/计数器在硬件上由双字节加法计数器TH和TL组成。作定时器使用时,计数脉冲由单片机内部振荡器提供,计数频率为f /12,每个机器周期加1。8051单片机定时器/计数器的工作方式由特殊功能寄存器TMOD编程决定,定时器/计数器的启动运行由特殊功能寄存器TCON编程控制。不论用作定时器还是计数器,每当产生溢出时,都会
21、向CPU发出中断请求。单片机的定时器的工作原理是利用了寄存器的溢出来触发中断的,所以在写定时器的时候就要去算计数的增量,再根据单片机的晶振的频率就可以算出确定的时间了。定时器主要用到了2个寄存器,一个为TCON,另一个为TMOD。TCON是用来控制定时器的启动与停止的。TMOD是用来设置定时器的模式的。8051单片机的定时器/计数器是可编程的,在进行定时或计数操作之前要进行初始化编程。通常8051单片机定时器/计数器的初始化编程包括如下几个步骤:1.确定工作方式,即给方式控制寄存器TMOD写入控制字。2.计算定时器/计数器初值,并将初值写入TH和TL。3.根据需要对中断控制寄存器IE置初值,决
22、定是否开放定时器中断。4.使运行控制寄存器TCON中的TR0或TR1置“1”,启动定时器/计数器。外部中断:对某个中央处理机而言,它的外部非通道式装置所引起的中断称为外部中断。51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。应用时需要特别注意的几点:1电平触发方式时,中断标志寄存器不锁存中断请求信号。要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线
23、的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。2边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果不希望
24、这样,必须在中断退出之前,手工清除外部中断标志。3中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。2.1.4最小系统图该系统主要用到的是单片机,要使单片机工作起来最基本的电路构成是最小系统图,其中包括电源电路、时钟电路、以及复位电路该最小系统图如2-2所示:图2-2 单片机最小系统2.2测速模块 2.2.1 霍尔元件根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。它具有对磁场敏感、结构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用。霍尔传感器是对磁敏感的
25、传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。如图2-3所示是CS3020的外形图,将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。 图2-3 CS3020外形图测量电机转速的第一步就是要将电机的转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。霍尔器件作为一种转速测量系统的传感器,它有结构牢固、体积小、重量轻、寿命长、安装方便等优点,因此选用霍尔传感器检测脉冲信号,其基本的测量原理如图2-6所示,当电机转动时,带动传感器运动,
26、产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量。2.2.2 测速电路原理图测速的方法决定了测速信号的硬件连接,测速实际上就是测频,因此,频率测量的一些原则同样适用于测速。通常可以用计数法、测脉宽法和等精度法来进行测试。所谓计数法,就是给定一个闸门时间,在闸门时间内计数输入的脉冲个数;测脉宽法是利用待测信号的脉宽来控制计数门,对一个高精度的高频计数信号进行计数。由于闸门与被测信号不能同步,因此,这两种方法都存在1误差的问题,第一种方法适用于信号频率高时使用,第二种方法则在信号频率低时使用。等精度法则对高、低频信号都有很好的适应性。图2-4是测速电路的信号获
27、取部分,在电源输入端并联电容C2用来滤去电源尖啸,使霍尔元件稳定工作。HG表示霍尔元件,采用CS3020,在霍尔元件输出端(引脚3)与地并联电容C3滤去波形尖峰,再接一个上拉电阻R2,然后将其接入LM324的引脚3。用LM324构成一个电压比较器,将霍尔元件输出电压与电位器RP1比较得出高低电平信号给单片机读取。C4用于波形整形,以保证获得良好数字信号。LED便于观察,当比较器输出高电平时不亮,低电平时亮。微型电机M可采用 型,通过电位器RP1分压,实现提高或降低电机转速的目的。C1电容使电机的速度不会产生突变,因为电容能存储电荷。电压比较器的功能:比较两个电压的大小(用输出电压的高或低电平,
28、表示两个输入电压的大小关系): 当“”输入端电压高于“”输入端时,电压比较器输出为高电平; 当“”输入端电压低于“”输入端时,电压比较器输出为低电平;比较器还有整形的作用,利用这一特点可使单片机获得良好稳定的输出信号,不至于丢失信号,能提高测速的精确性和稳定性。图2-4 测速电路原理图2.3报警模块 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。报警器的种类很多,比如:扬声器、蜂鸣器等,本设计中选用电磁式蜂鸣器作为报警器。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接
29、通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。2.4 控速模块采用专用芯片L298 作为电机驱动芯片。L298N驱动直流电机,它靠四个引脚控制两个个电机的运动。小车采用左右轮控制前进和转向,后面一个轮子为万向轮,使小车能够转到任何方向。用6V电源为电机供电,并且还在单片机和L298N之间加入光电耦合器对控制电路电源与电动机电源隔离,避免了由单电源供电时电机起停产生的大电流对单片机和其他模块的影响。 图2-5 驱动电路L298 是一个具有高电压大电流的全桥驱动芯片,一片L298 可以控制两个直流电机,而且还带有控制使能
30、端。分别独立控制左右两个电机的起停和转向,保证两路电机参数的对称,有利于保持小车行驶的稳定性和精确性,用该芯片作为电机驱动,操作方便,稳定性好,性能优良。2.5 显示模块1.1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。2.1602的基本参数及引脚功能1)16
31、02LCD类型1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图2-6所示。图2-6 1602带背光与不带背光差别图 2)LCD1602主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm3)1602LCD引脚1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最
32、弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。4)其与单片机的连接如图2-7所示。 图2-7 LCD连接图 2.6
33、循迹模块采用两个光电传感器组成检测电路。探测路面黑线的大致原理是:光线照射到路面并反射,由于黑线和白纸的反射系数不同,根据接收到的反射光强弱判断是否沿黑线前进10。在车底中部安装了三组光电传感器,将他们置于运行轨迹中间,其间距调整为大于黑线的宽度。光电传感器接受到不同的颜色后会有不同的电平输出。本电路中当光电传感器检测到黑色,三脚输出为高电平;检测到白色,三脚输出为低电平。实际行驶时,只有当两个色标传感器同时检测为高电平,中间光电传感器检测到低电平小车才直线运行,否则运用差步原理,调整方向。检测电路如图2-8。 图2-8 循迹电路图第三章 软件设计3.1 PWM控制本系统采用PWM来调节直流电
34、机的速度。PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。本系统中通过控制51单片机的定时器T0的初值,从而可以实现P0.
35、4和P0.5输出口输出不同占空比的脉冲波形。定时计数器若干时间(比如0.1ms)中断一次, 就使P0.4或P0.5产生一个高电平或低电平。 将直流电机的速度分为100个等级, 因此一个周期就有个100脉冲, 周期为100个脉冲的时间。速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大, 加在电机两端的电压越大, 电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时, 就可以得到不同的电机平均速度, 从而达到调速的目的。精确地讲, 平均速度与占空比并不是严
36、格的线性关系, 在一般的应用中, 可以将其近似地看成线性关系。3.2 总体软件流程图小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片I/O 口,一旦检测到某个I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。软件的主程序流程图如图3-1所示 图3-1 主程序流程图3.3小车循迹流程图小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是
37、右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。循迹流程图如图3-2所示图3-2循迹流程图由于第二级方向控制为第一级的后备,则两个等级间的转向力度必须相互配合。第二级通常是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,所以它必须要保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级,即Turn_left2 Turn_left1,Turn_right2 Turn_right1 (其中Turn_left2,Turn_left1, Turn_right2
38、 , Turn_right1为小车转向力度,其大小通过改变单片机输出的占空比的大小来改变),具体数值在实地实验中得到。3.4中断程序流程图这里利用的是51单片机的T0定时计数器,从而让单片机P0口的P0.4和P0.5引脚输出占空比不同的方波, 然后经驱动芯片放大后控制直流电机。定时计数器若干时间(比如0.1ms)比如中断一次, 就使P0.4或P0.5产生一个高电平或低电平。中断程序流程图如图3-3所示 图3-3中断程序流程图第四章 仿真与调试41 Proteus简介Proteus是基于SPICE3F5仿真引擎的混合电路仿真软件,不仅能够仿真模拟、数字电路以及模数混合电路,更具特色的是它能够仿真
39、基于单片机的电子系统。Proteus不但完全支持MCS-51及其派生系列单片机的设计系统,另外也能仿真基于AVR和PIC系列的单片机系统。Proteus的仿真资源Proteus软件可提供的模拟、数字、交(直)流等元器件达30多个元件库,共计数千种。此外,对于元件库中没有的器件,使用者也可依照需要自己创建。软件调试方面,其自身只带汇编编译器,不支持C语言。但可以将它与KeilC51集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序。当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择
40、,可是对于单片机爱好者,或者简单的开发应该是比较好的选择。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。连接后的部分硬件电路如图4-1所示: 图4-1 硬件连接图4.2 硬件调试按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。按电路图的位置将各元件安
41、置好,首先放置核心元件,然后再放其他元件,特别注意顺序不能颠倒。在保证电路元器件完好及各元器件放置无误合理的情况下,开始对电路连接布线,由于本设计用面包板搭件,所以布线要无跨线并且工整。当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段。4.2.1 硬件静态调试1排除逻辑故障显示器部分调试为了使调试顺利进行,首先将89C51与LCD显示分离,这样就可以用静态方法先测试LCD显示,用规定的电平加至位显示的引脚,看显示是否与理论上一致。不一致,一般为LCD显示器接触不良所致,必须找出故障,检测89C51电路工作是否正常。对89C51进行编程调试时,分为两个步骤:第一,对其进行初始化。第二,
42、将89C51与LCD结合起来,借助开发机,通过编制程序进行调试。若调试通过后,就可以编制应用程序了。对于一些逻辑故障来说,这类故障往往是由于设计和焊接过程中的失误所造成的。主要包括错线、开路、短路。排除的方法是首先将焊接好的电路板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。2排除元器件失效造成这类错误的原因有两个:一个是元器件买来时就已坏了另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误
43、后,用替换方法排除错误。3排除电源故障在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V48V之间属正常。若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。4.2.2 虚拟仿真调试原理图绘制完成之后,给单片机添加应用程序,就可以进行虚拟仿真调试。先用鼠标右键选中AT89C51单片机,再单击左键,弹出如图4-2所示器件编辑窗口。 图4-2 器件编辑窗口在器件编辑窗口中“Program File”栏单击文件夹浏览按钮 ,找到需要仿真的Hex文件,单击“确定”按钮完成添加文件,在
44、“Clock Frequency”文本框中把频率改为12MHz,单击“确定”按钮退出。这时单击仿真工具栏中全速运行按钮 即可开始进行虚拟仿真。4.3 软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序运行后编辑,查看程序是否有逻辑的错误。本系统的软件程序完全由C51编写,C语言效率高,但同时也存在一些缺点,比如严格定时比较困难。在调试过程中采取的是自上至下的调试方法,单独调试好每一个模块,然后再连接成一个完整的系统调试。3.4 软硬件联调使用Keil、Proteus软件进行单步调试仿真模拟,直到满足技术指标后,将程序烧到89C51片
45、中进行软硬件联调。调试的过程及步骤如下:1.检测5v电源是否正常,并且是否加到单片机的电源引脚端。2.检测单片机的晶振电路是否正常工作,用万用表检测89C51片的18、19脚的电压分别为3v、1.5v左右。3.检测复位信号输入端RST,高电平有效。在单片机正常工作时,此脚应为0.5V低电平。4.测试外部脉冲计数电路通过给CPU 施加固定脉冲,测试外部计数软件的正确与否。5.测试定时器中断系统6.检测液晶显示模式通过软件编程,给LCD输出指定数字,如“2501”,观察LCD上显示的也是“2501”,表明显示电路正确。如图3-4所示。 图4-3 液晶显示模式测试电路结 论历时三个月的设计过程中,我首先边查资料,边在实验室焊接小车的线路板。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错。在焊接显示电路时,我就错将680欧的电阻焊成了6.8千欧。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊接线路板,还可以上机编程,使我软件调试知识也提高了。 本设计采用的是80C51单片机,这主要是因为该单片机的稳定性比较好。还可以采用其它系列的单片机。比如采用陵阳单片机,就可以简化编程,但其稳定性不是很好。