




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学本科生毕业论文1哈尔滨工程大学本科生毕业论文摘要根据题目要求,本设计采用2片AT89C52单片机构成主从式的控制系统,双机采用串行口进行通信。红外遥控部分采用遥控车模专用编、解码芯片TX2/RX2,提高控制的可靠性;同时,在遥控发射端加入了用凌阳61板做的语音识别系统,能够完成语音遥控功能。采用红外传感器进行里程检测;超声波传感器进行障碍识别;感光电阻辅以步进电机控制的转动机构进行光源方向的检测,并能用软件控制小车行驶到光源附近。采用步进电机对小车的转向进行精确的控制,同时用红外传感器对转向的角度进行校正。此外,采用四位LED数码管和若干LED发光二极管显示时间、行进的里程以及小车的各种状态;采用AT24C08串行EEPROM记录小车的行驶轨迹,并能按照所记录的轨迹自动行驶。本次设计基于完备的软硬件系统,很好的实现了小车语音遥控、任意曲线行驶、路线记录与重放、自动查找光源、自动避障,里程统计并发出指哈尔滨工程大学本科生毕业论文目录第1章绪论111概述112设计要求及主要功能介绍1121手动控制功能2122自动寻找光源功能2123超声避障功能2124记录路线与重放路线功能2125声控功能3126其他功能313MCS51系列单片机简介314凌阳SPCE061A精简开发板简介5第2章系统总体设计621系统功能模块的划分622单片机数目的选定623系统原理框图724系统软件主要特色7241软件分层结构8242多任务结构8243消息驱动结构1325本章小结15第3章各模块的详细设计1631红外遥控模块的设计16311遥控模块的功能需求16312编解码芯片的选型16313遥控模块原理图16314遥控电路与语音识别模块的连接18哈尔滨工程大学本科生毕业论文32数码管、发光二极管显示模块的设计18321多位数码管扫描显示原理18322工作状态指示灯及转向灯的设计19323显示模块电原理图19324显示任务的软件设计2033声音提示功能的设计2034前轮转向模块的设计21341前轮转向的机械结构设计21342前轮转向中点校准功能的设计22343步进电机驱动芯片22344前轮转向任务的软件设计2235后轮驱动模块的设计24351直流电机驱动芯片L298N24352后轮驱动任务的软件设计2536里程检测模块的设计25361探头的选型与安装25362软件消抖与硬件消抖的比较26363里程检测任务的软件设计2637超声测距模块的设计27371超声测距的理论依据27372超声发射电路27373超声接收电路28374超声测距任务的软件设计2938光源方向探测模块的设计30381旋转机构设计30382亮度检测电路的选型与设计31383寻找光源方向任务的软件设计32哈尔滨工程大学本科生毕业论文39行驶路线的记录与重放模块的设计33391该模块的功能概述33392AT24C08串行EEPROM介绍33393存储记录的格式33394手动模式下记录行驶路线功能的软件设计33395重放行驶路线功能的软件设计34310双机串行通信模块的软件设计353101通信方式的选型353102双机串行通信的软件设计35311语音识别功能的设计363111凌阳语音压缩算法373112语音识别模块的软件设计37312本章小结37第4章系统软件的设计3941单片机的C语言程序设计简介3942系统的三种工作模式3943手动模式的设计4044自动寻找光源模式的设计40441功能分析40442寻找光源的策略41443自动寻找光源的软件设计41445该功能模块存在的一些问题4145走数字及路线重放模式的设计4446本章小结44第5章系统的组装、调试和测试4551系统的组装、调试4552遥控距离的测试45哈尔滨工程大学本科生毕业论文53时间显示功能的测试4554里程显示功能的测试4655超声测障碍功能的测试4656走数字功能的测试4657行驶路线记录与重放功能的测试4758自动寻找光源功能的测试4759语音识别功能的测试47510本章小结48结论49致谢50参考文献51附录52哈尔滨工程大学本科生毕业论文1第1章绪论11概述单片机以其强大的控制能力已经被广泛应用于诸多领域,配以各种接口传感器可以实现系统的智能化。无论是在工业控制领域、医疗卫生领域、还是在国防军事领域、航天航空领域,微控制器都起着举足轻重的作用。从最初的8位控制器到现在的16位、32位控制器都还有很大的发展和应用空间。目前市场上已有很多种用超声波传感器制作的产品,在汽车电子领域,用超声波传感器做的倒车雷达可以提高汽车行驶的安全性。对汽车驾驶员来说车身后方是一个视线的“死区”,倒车时得非常小心,倒车雷达的出现就解决了这一问题,当车身后方有障碍时能及时发出警告。语音识别技术也日趋完善,在机器人领域,要想用语言和机器人“交谈”,首先就要解决语音的识别问题。可以用语音识别技术做成电话声控拨号、声控家电、儿童玩具等。语音识别技术还有待于进一步的发展。本设计中采用凌阳61板做的声控系统可以用语音控制小车的前进、后退、左转、右转、停止。12设计要求及主要功能介绍根据题目要求,本设计需要完成的以下几项功能(1)红外遥控功能,启停、自动或手动;(2)前或后直线行进;(3)任意曲线行进;(4)测距避障功能;(5)显示行进距离;(6)精确查找光源。另外,在设计过程中又扩展了一些功能,比如声控功能、记录与重哈尔滨工程大学本科生毕业论文2放行驶路线功能等。121手动控制功能在手动控制模式下,可以控制小车的前进、后退、左转、右转、停止、漏粉、显示时间、显示里程,若在行驶过程中遇到障碍小车将自动停止,并发出声光警告信号。同时,在转弯或后退时相应的转向灯和倒车灯会闪烁发光,小车接收到一个按键命令后除了执行相应的动作外蜂鸣器还会响一声,以告知操作者已收到了命令。在手动控制模式下,还设置了一个记录行驶路线的开关。操作者按下这个开关后,先选择这一次记录的路线的名称,此后对小车的控制命令将被存入EEPROM中,直至操作者再按下一次这个开关结束这次路线的记录。记录的路线可在重放路线模式下重放。122自动寻找光源功能在自动寻找光源模式下,小车可以自动查找光源的方向,然后自动行驶到光源的附近。在自动行驶过程中若遇到障碍,小车将自动采取一些避障措施避开障碍。此外在寻找过程中操作者若按下“显示模式切换键”数码管显示的内容将在时间和里程之间切换,若按下“停止”键,小车将立即停止寻找光源,然后等待切换到其他模式。123超声避障功能在手动模式、自动寻找光源模式、重放路线模式下超声测障模块始终工作。在前进时发现前方有障碍,或在后退时发现后方有障碍小车都将立即停车,并发出声光报警信号告知操作者。障碍检测的距离调整在20厘米内,即只有在20厘米之内有障碍时小车才会做出避让动作,在这个范围之外的障碍小车不予处理。124记录路线与重放路线功能在手动模式下打开记录路线开关,开始记录路线;在重放路线模式下选择重放的路线,开始重放指定的路线。在重放过程中遇到障碍或操作者按下“停止”键将结束本条路线的重放,等待选择下一条需要重放哈尔滨工程大学本科生毕业论文3的路线或选择另外一种模式。125声控功能本设计采用凌阳61板做了声控系统。打开遥控器电源后开始训练语音命令,由于受到单片机内的SRAM容量的限制只能录制5条语音命令,分别是前进、后退、左转、右转、停止。当识别出某条语音命令时和直接按下相应的按键等价,红外发射电路都会给小车发出相应的命令。操作者在使用声控功能时有语音提示音,所以操作很简便、快捷。126其他功能小车还具有走数字功能,即小车可按照事先由程序设置好的路线行走,并洒下粉末,显示出一个数字。除此之外,小车上还有左、右转向灯,倒车灯,障碍指示灯,模式指示灯,蜂鸣器报警电路,小车状态一目了然。13MCS51系列单片机简介MCS51单片机的基本结构如图11所示,其基本结构包括8位CPU;片内震荡器及时钟电路;32根I/O口线;外部存储器ROM和RAM寻址范围各为64KB;2个16位定时器/计数器;5个中断源,2个中断优先级;哈尔滨工程大学本科生毕业论文4全双工串行口;布尔处理器。8051单片机的存储器结构特点之一是程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式。这种结构的单片机称为哈佛结构单片机。8051单片机在物理上有四个存储空间片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。8051单片机有4个8位的并行接口,记作P0,P1,P2和P3,共32根口线,实际上它们就是SFR中的4个。这4个接口特性上主要差别是P0,P2和P3都还有第二功能,而P1口只能用做I/O口。4个口的驱动能力也是不相同。P1,P2和P3都能驱动3个LSTTL门,并且不需外加上拉电阻就能驱动MOS电路。P0能驱动8个LSTTL门,但驱动MOS电路时,若作为地址/数据总线,则可以直接驱动;而作为I/O口时,需外接上拉电阻才能驱动MOS电路。时钟电路ROMRAM定时器/计数器CPU并行接口串行接口中断系统TXDRXDINT0INT1P0P3T0T1图118051单片机的基本结构哈尔滨工程大学本科生毕业论文514凌阳SPCE061A精简开发板简介凌阳61板是采用凌阳16位单片机为核心的开发系统,具有DSP处理功能和语音处理功能。利用该开发板可方便的实现语音的录、放、识别等功能。SPCE061A凌阳16位单片机的结构框图如图12所示哈尔滨工程大学本科生毕业论文6SPECE061A的CPU工作速率为032MHZ49152MHZ;SRAM容量为2K字;程序存储器容量为32K字FLASH,使用凌阳音频压缩算法SACM_240方式(24KBPS),能容纳240秒语音数据;有两个16位的并行I/O接口;还具有ADC、DAC、麦克风放大器和AGC电路等。由于IDE自带了很多有关语音录放、语音识别的API函数,所以采用61板来做声控系统比较方便。第2章系统总体设计21系统功能模块的划分按照设计要求,系统可以分为以下几个基本功能模块遥控模块、显示模块、前轮转向模块、后轮驱动模块、超声测距避障模块、寻找光源模块、记录与重放路线模块、里程检测模块等。有些模块的功能是由硬件完成,有些模块的功能由软、硬件配合完成,有些模块则是由软件、硬件、机械三部分共同完成。将系统拆分成以上的这些基本功能模块后,再根据各个模块所要完成的功能分别去设计,也就是按照“逐步求精”的思想去设计本系统,这将使设计工作细化,也有助于制定进度安排。22单片机数目的选定由于系统需要完成的功能较多,CPU的负荷也较重,再加之单片机内的定时器/计数器、中断、I/O口等资源有限,如果选用一片单片机必图12SPCE061A结构框图哈尔滨工程大学本科生毕业论文7将会给系统的设计带来一些困难。所以可以考虑采用两个单片机构成主从式的结构,各分担一部分控制与运算功能,这样两个单片机可同时工作。所谓主从式结构是指从单片机片机根据主单片机发出的命令来完成某项功能,并且把结果报告给主单片机,这样的结构在某种程度上可以简化系统。主单片机负责红外遥控接收、显示、小车的运动以及处理遥控命令等功能;从单片机则主要负责超声测距、检测光源方位这两项比较费时的功能,在探测到障碍或探测到光源时将有关信息报告给主单片机进行处理,并由主单片机来采取相应的措施。本设计中采用了两片AT89C52单片机,通过串行接口通信。因为两个单片机之间的距离很近,所以串行口可以工作在较高的波特率上,可以让串行口工作在方式2,其特点是其波特率高,并且波特率可以直接从晶振32分频、或64分频而得到,不需要占用定时器资源。23系统原理框图系统原理框图如图21所示主控单片机从单片机遥控接收显示模块里程检测路线记录漏粉控制前轮转向超声探测障碍光源方向探测后轮驱动串行通信遥控发射语音识别按键哈尔滨工程大学本科生毕业论文824系统软件主要特色软件在一个智能系统中扮演着举足轻重的作用,软件设计的好坏直接关系着整个系统的性能。目前已经有很多种嵌入式实时多任务操作系统,如LINUX、RTX51及UC/OS等,可以更有效的利用系统的各种资源,简化编程,缩短开发周期。签于本系统采用AT89C52单片机为控制器,本身的各种资源都很有限,引入一个操作系统代价太大,所以考虑直接来优化系统的软件结构,同样可以达到“多任务”、“实时”等要求。241软件分层结构为了便于编程,将逻辑控制层和具体的硬件相分离开是很有必要的。硬件驱动层的软件负责直接操作硬件,并且给上层的软件提供一定的接口,这样有助于上层的软件实现更复杂的功能,并且系统的硬件有所改动时也只需改动相应的驱动模块即可。本系统中的LED显示模块、前轮转向模块、后轮驱动模块、AT24C08存取模块、寻光源转动机构都做成了一些独立的模块,并且给外部提供了一些接口函数,来实现对这些硬件或机械部件的高级操作。分层结构如图22所示软件的分层结构是很多系统中普遍采用的一种软件结构,比如TCP/IP协议就是一种典型的图21系统原理框图逻辑控制层硬件驱动层硬件设备置、取全局变量图22软件分层结构示意图操作硬件哈尔滨工程大学本科生毕业论文9分层结构。WINDOWS、LINUX等系统中也几乎把所有的系统硬件进行了抽象,这样上层的软件就不必关心硬件的细节,可以调用相应的模块提供的服务即可,这样可把更多的精力放在高级功能的实现上。242多任务结构哈尔滨工程大学本科生毕业论文11为了充分利用单片机的CPU,内存等资源,本系统中引入了多任务的软件结构,即从宏观上来看单片机同时在做多件事情。分析一般的多任务系统的软件结构,系统的核心是任务调度器,在适当的时候任务调度器将保存当前任务的现场,并且恢复将要运行的任务的现场,并让其投入运行。简单的说,一般的多任务系统是任务调度器循环的调用各个需要执行的任务,进而可以更有效的利用系统的各种资源。从这里得到启发,可以用定时器每隔一定的时间中断一次,在中断处理函数中依次调用一次各个任务所对应的函数,并且各个函数都能在一个较短的时间内返回,这样在某段时间内,各个任务所对应的函数都能够被执行到,就好像多个任务同时运行了。还有一点需要说明,就是各个任务是由一些函数和一些静态变量组成。函数由定时器中断处理函数定期的调用一次,并且有个前提就是这个函数能够在较短的时间内返回,否则其他任务将不能及时的被调用到,也就达不到“实时”这一要求。静态变量保存该任务的各种状态,并且其他模块和该任务进行通信也是通过置系统复位初始化主任务设计成无限循环结构定时器0中断处理函数任务1任务2任务3任务N图23多任务结构示意图哈尔滨工程大学本科生毕业论文12取这些静态变量来实现的。本系统中软件的多任务结构如图23所示可以说定时器中断处理函数就是本设计中多任务的核心,即任务调度器。以下是定时器0中断处理函数的程序清单/定时器0中断处理函数/每4毫秒中断一次/产生时钟节拍/负责维护一个系统时间变量和任务调度/DEFINETIME_OVERLOAD3960/定时器计数初值/记录时间的结构的定义TYPEDEFSTRUCTUCHART_MS/毫秒数099UCHART_100MS/100毫秒数09UCHART_SEC/秒数059UCHART_MIN/分钟数,0255TIMETIMETIME/记录系统时间的全局变量VOIDTIMER0VOIDINTERRUPT1/重装定时器0的计数初值TH065536TIME_OVERLOAD/256TL065536TIME_OVERLOAD256/维护系统时间TIMET_MS4哈尔滨工程大学本科生毕业论文13IFTIMET_MS99TIMET_MS0IFTIMET_100MS9TIMET_100MS0IFTIMET_SEC59TIMET_SEC0TIMET_MIN/大约每50毫秒调用一次蜂鸣器任务/并且只有在需要发声时才调用/N_BEEP全局变量表示需要发出几声IFN_BEEP/每4毫秒调用一次显示任务LED_DISP/每16毫秒调用一次后轮直流电机驱动程序IFTIMET_MS/每32毫秒调用一次里程检测任务IFTIMET_MS/每16MS调用一次前轮转向电机驱动函数IFTIMET_MS以上的这段程序代码就是实现了任务的调度,和一般的多任务系统哈尔滨工程大学本科生毕业论文14相比较有几点不同1任务之间的切换是通过函数的调用与返回实现的,当以上的这几个任务全调用一次之后将进入主任务执行,主任务即MAIN函数所对应的任务。2相应的任务上、下文的保存与恢复也不是由任务调度器实现的,而是由C语言编译器在函数调用时自动保存与恢复了主任务的上、下文;其他的任务不用保存上、下文,每次进入执行都是从相应函数的第一行开始,寄存器值也不用保存。总之,采用以上这种软件结构,也可以实现多个任务并发运行,在TIMER0函数中可以加进更多的任务,只要各个任务都能在一个较段的时间内执行一次并返回到TIMER0函数中就可以。此外,关于RAM的分配是在编译的时候完成的,各个任务一般要用一些全局的静态变量来标识自身状态。在主控单片机上有以下几个任务1主任务MAIN开始的任务,很多功能都要在该任务中完成;2蜂鸣器发声任务BEEP2,全局变量N_BEEP表示需要发出几个“嘀”声;3LED显示任务LED_DISP,LED数码管和LED发光二极管显示任务;4后轮电机驱动任务DIANJI,目前只实现了电机的正、反转和停止功能,以后可以在该任务中加入PWM调速功能;5前轮转向任务GW_DIANJI,控制步进电机让前轮转到指定的角度;6里程检测任务LICHENG,检测小车的行驶里程。在从单片机上有四个任务1寻找光源方向任务该任务作为从单片机的背景任务,由MAIN函数调用,然后一直循环的执行;哈尔滨工程大学本科生毕业论文152前超声测障任务CHAOSHENG_QIAN,由从单片机的定时器中断处理函数TIMER0每隔64毫秒调用一次;3后超声测障任务CHAOSHENG_HOU,每64毫秒调用一次,和CHAOSHENG_QIAN的调用相差32毫秒;4旋转机构转动任务DRIVER_DIANJI,将寻找光源方向的转动机构旋转到指定的角度。243消息驱动结构考虑到系统中无论是操作者按下一个按键,还是遇到障碍或是寻找到光源,这些事件都有一个共同点,就是系统要对这些事件做出相应的处理或采取相应的措施。所以为了简化编程,让这些事件在主任务中能得到统一的处理,可以给这些事件编上号,然后由一个消息搜集模块去等待各种消息。一旦某个事件发生,该模块马上给主任务返回该事件的编号,即消息值,让主任务按照消息值分类去处理消息。在消息搜集模块的头文件中定义了如下若干个消息/消息的结构为高三位,消息分类码,可以加快消息处理的速/度;低五位,消息值。DEFINENULL0/按键消息的定义DEFINEMSG_K_QIAN0X01/“前进”按键消息DEFINEMSG_K_HOU0X02/“后退”按键消息DEFINEMSG_K_ZUO0X03/“左转”按键消息DEFINEMSG_K_YOU0X04/“右转”按键消息DEFINEMSG_K_TING0X05/“停止”按键消息DEFINEMSG_K_MODE0X06/“模式选择”按键消息DEFINEMSG_K_FEN0X07/“漏粉”按键消息DEFINEMSG_K_REC0X08/“记录路线”按键消息DEFINEMSG_K_DISPMODE0X09/“显示切换”按键消息哈尔滨工程大学本科生毕业论文16/超声避障消息DEFINEMSG_QIANZHANG0X14/前方出现障碍消息DEFINEMSG_HOUZHANG0X15/后方出现障碍消息DEFINEMSG_NOQIANZHANG0X16/前方障碍消失消息DEFINEMSG_NOHOUZHANG0X17/后方障碍消失消息/光源消息DEFINEMSG_NOTFOUND0X28/没有发现光源消息DEFINEMSG_FOUND0X29/发现光源消息/主从机之间的控制消息DEFINEMSG_BEGINFIND0X31/开始寻找光源命令消息DEFINEMSG_ENDFIND0X32/停止寻找光源消息EXTERNUCHARGETMSGVOIDEXTERNUCHARIMGETCHVOID消息搜集模块对外提供了两个接口函数GETMSG函数一直等待到有消息时返回消息值;IMGETCH函数立即返回按键值,这是为了某些地方使用上的灵活而设置的。有了这个消息搜集模块后,主任务执行的大部分时间就会停留在GETMSG函数内等待消息,当有按键命令或遇到障碍时返回消息值,主任务对其进行相应的处理。主任务处理消息可以设计成如下结构WHILE1/消息循环SWITCHGETMSG/消息分类处理CASEMSG_K_QIAN/“前进”按键消息处理哈尔滨工程大学本科生毕业论文17BREAKCASEMSG_K_HOU/“后退”按键消息处理BREAKCASE25本章小结本章将系统拆分成了若干个功能模块,并且采用两个AT89C52单片机来各分担一部分功能。在软件方面通过对结构的特殊设计,基本上实现了多任务并发运行,并且通过软件的分层结构将功能实现和具体的硬件分离开,再加上消息驱动的结构,这将给后续的各模块软件的设计带来方便。哈尔滨工程大学本科生毕业论文18第3章各模块的详细设计31红外遥控模块的设计311遥控模块的功能需求遥控模块采用红外遥控方式,因为采用红外遥控抗干扰能力强,且不会对周围的无线电设备产生干扰电波,接口简单;但是红外方式遥控的距离比较有限,一般在几米之内。鉴于本设计不需要远距离遥控,所以综合考虑之下采用红外遥控较为合适。本设计中要求能用遥控器控制小车的前进、后退、左转、右转、停止、记录路线、寻找光源等很多种功能;遥控距离在几米之内即可;并且要在遥控发射模块加入语音识别模块,能够实现声控功能。312编解码芯片的选型由于在遥控端的按键数目有多个,而红外通道传输的只能是由0、1组成的串行代码,所以需要在发射端对按键进行“并串”编码,在接收端相应的要进行“串并”解码。码的波特率在收、发两端应该是一致的。方案一,使用MC145026、MC145027编解码芯片,其特殊的编码方式保证了信息的可靠传输,但是外围器件参数的选定较为烦琐,并且不能利用到其所提供的地址功能,也就是说传输的信息当中地址码部分是多余的,这就降低了信道的利用率。方案二,采用台湾瑞昱公司生产的专用于遥控车模的CMOS大规模集成电路TX2/RX2,该编解码芯片具有5种控制功能,使用方便,所以本设计中采用了该方案。313遥控模块原理图遥控模块发送部分原理如图31所示。TX2的11脚和12脚之间接的电阻决定振荡频率;3脚接地;10脚接35V电源;14脚、1脚、4脚、5脚、6脚分别为5路发射控制端;9脚为发射指示端,当有按哈尔滨工程大学本科生毕业论文19键按下时LED1发光提示;7脚为带载波的编码信号输出端,即编码信号已经内调制到38KHZ的载波上,该脚的信号通过一个NPN型三极管放大后可直接驱动红外发射二极管发射信号;8脚为不带载波的编码信号输出端。313遥控发射端按键数目的扩展遥控接收电路如图32所示。RX2的4脚和5脚之间接的电阻阻值要和TX2的11脚、12脚间的电阻阻值接近,相差在20之内方可正确的解码,本设计中这两个电阻都选用150K;2脚接地;13脚接35V电源;3脚接输入信号,由一体化红外接收头1838输出的信号需图31遥控发射原理图图32遥控接收电路图哈尔滨工程大学本科生毕业论文20要加一个反向器才是正确的编码信号;6脚、7脚、10脚、11脚、12脚为5路遥控命令的输出端,分别和TX2的5路输入端的状态相对应。另外,为了方便操作,将TX2的5路功能扩展成9功能,即在遥控发射端可以接9个按键。这是通过对原先的5路输入进行组合得到的。314遥控电路与语音识别模块的连接语音识别模块采用凌阳61板,可以将SPCE061A单片机的输出引脚直接接到TX2的输入端,与按键实现“线与”功能,这样遥控发射端的按键和凌阳单片机都可以通过遥控电路给小车发送命令。32数码管、发光二极管显示模块的设计321多位数码管扫描显示原理LED数码管是常用的显示器件,数码管的结构如图33所示。每一段相当于一个发光二极管,各个发光二极管的阳极或阴极接在一起,分别称作共阳极数码管和共阴极数码管。本设计中采用的是共阴极数码管。对于多个数码管的显示,有静态方式和动态扫描方式。本设计中用了4个共阴极数码管,并采用动态扫描方式显示。扫描显示的原理是将各个数码管的段码端口分别并联在一起,由位选端口轮流选通各个数码管,并让每个数码管分别显示几毫秒,由于人眼的视觉惯性,看到的将是多个数码管同时在显示。322工作状态指示灯及转向灯的设计为了直观的显示出小车的各种状态,设计了若干发光二极管指示灯,图33LED数码管结构哈尔滨工程大学本科生毕业论文21有模式指示灯、漏粉指示灯、记录行驶路线指示灯、障碍指示灯、转向指示灯、倒车指示灯。323显示模块电原理图显示模块原理如图34所示显示任务由主单片机完成。P00和P01分别接到74LS164的串行数据输入端和移位脉冲端,产生数码管选通信号。P02接到74LS273的时钟端,锁存P2口给出的段码数据。在完成锁存后由P2口直接驱动8个LED发光二极管,作为小车的状态指示。为了在74LS273锁存数据时避免状态指示灯的闪烁,用P12控制状态指示灯的选通。在74LS273锁存数据期间P12置高电平,全部熄灭状态指示灯;在锁存结束后,P2口给出正确的电平后再置P12低电平。同样在4个数码管扫描显示的过程中也应避免数码管的闪烁。324显示任务的软件设计数码管的扫描显示和状态指示灯的显示流程如图35所示。由定时器0中断处理函数TIMER0每隔4毫秒调用一次。这样每个数码管轮流图34显示模块原理图哈尔滨工程大学本科生毕业论文22显示4毫秒,扫描一遍共需16毫秒,也就是闪烁的频率大概是60HZ,人眼看到的就是4个数码管同时在显示了。33声音提示功能的设计和状态指示灯的设计目的一样,给小车加入声音提示功能也是为了更直观地显示各种状态。在操作者通过遥控器给小车发出命令后,蜂鸣器将响一声,及时的提示操作者已经收到命令。这是挺有必要的,因为红外遥控方式并不是很可靠,有时操作者发出的遥控命令小车可能是收返回熄灭状态指示灯显示模式是显示缓冲区置成时间显示缓冲区置成里程数码管段码置成0,消除移位时的闪烁选通下一个数码管闪烁处理锁存段码显示个状态指示灯时间模式里程模式用户模式图35显示流程图哈尔滨工程大学本科生毕业论文23不到的,因此操作者几乎处于“盲操作”状态。加入了声音提示功能后,小车有没有接收到遥控命令很容易就能知道了。此外,当小车遇到障碍时也会给出声音报警信号。本设计中所采用的蜂鸣器使用很简便,只需给其正负端加上5V左右的电压就能够发出声音,在其内部已经含有一个振荡电路。工作电流大约10MA,因此可以用P0口的某一位直接驱动。声音提示功能被设计成一个单独的任务,原因是为了能让蜂鸣器响若干声,而同时单片机又能做其他的事情。其他模块通过BEEPN函数设置静态变量N_BEEP,告诉声音提示模块需要响N声,大约50毫秒响一声后自动会将N_BEEP减去1,一直减到0后不再发声。34前轮转向模块的设计341前轮转向的机械结构设计前轮的机械结构如图36所示。通过步进电机来控制前轮转到一定的角度,并且采用了一个遮挡型的红外对管来检测转向的中点,以便在开机时能自动找到转向的中点。而且在一定程度上可以校准由步进电机的失步带来的角度误差。342前轮转向中点校准功能的设计图36遮挡校准方案哈尔滨工程大学本科生毕业论文24如图37所示,在红外发射管和接收管之间无遮挡时,电压比较器输出低电平;当之间有遮挡时,电压比较器输出高电平。当前轮转到中点时,细杆正好能遮挡住红外对管,此时电压比较器输出一个高电平;当前轮偏离中点时,输出低电平。343步进电机驱动芯片本设计中前轮的转向电机是从废弃的软驱上拆卸下来的步进电机,体积小、性能好、使用方便,并且有专门的驱动芯片。驱动芯片引脚如图38所示,输入、输出信号如图39所示。当控制信号的周期为40HZ左右时,步进电机工作在最佳状态。345前轮转向任务的软件设计前轮转向设计成一个单独的任务,由定时器0中断处理函数每16毫秒调用一次。其他模块可以调用函数SETDEGREE设置需要转到的角度,然后由转向任务负责转到所指定的角度,在转向期间,单片机可以做其他的事情;其他模块还可以调用GETNOWDEGREE取得当前转到的角度。图37红外对管检测电路哈尔滨工程大学本科生毕业论文25图38步进电机驱动芯片ABBACHINBCHIN图39步进电机控制时序哈尔滨工程大学本科生毕业论文2635后轮驱动模块的设计351直流电机驱动芯片L298N后轮采用直流电机来驱动,和步进电机相比较直流电机驱动力大,电源利用率高。因为直流电机的转速很高,所以必须加入齿轮箱进行减速,减速后驱动力变大,转速降低。小车的行驶速度大概在20CM/S左右。为了控制直流电机的正反转来实现小车的前进和后退,采用了直流电机驱动芯片L298N,引脚连接如图310所示。前进时5脚输入方波占空比为100(即持续高电平),7脚为低电平;后退时5脚为低电平,7脚输入方波占空比为100。另外,改变方波的占空比可以实现对直流电机的调速,由于本设计中小车速度已调整到较低水平,所以无需再调速。100NF100NF图310直流电机驱动芯片L298N哈尔滨工程大学本科生毕业论文27352后轮驱动任务的软件设计本设计中只需控制后轮的正、反转,无需调速,所以后轮驱动模块的设计要比前轮转向模块简单很多,并且不建立后轮驱动任务也能实现,因为只需要在改变小车的行进状态的时候改变单片机和L298N相连的I/O口电平状态即可。而本设计中将后轮驱动模块也设计成一个单独的任务是考虑到以后功能扩展的方便。以后可以通过PWM方式对后轮直流电机进行调速,那就必须把后轮驱动模块设计成一个单独任务了。目前本模块对其他模块主要提供了以下几个接口函数。SETSPEEDN,N0时,小车前进;NS480S2403112语音识别模块的软件设计语音识别模块能够预先训练5条语音命令,分别是“前进”、“后退”、“左转”、“右转”和“停止”。因为在语音识别模块的使用过程中有语音提示音,所以使用很简便、明了。每次打开遥控器电源后都会提示“开始训练语音命令”,然后依次提示训练以上所列的5条语音命令。全部训练成功后,进入语音命令的识别状态。当识别出某条语音命令后,给出提示音,并且通过红外发射模块向小车发送命令,控制小车动作。语音识别模块的程序流程如图323所示312本章小结本章介绍了各模块的功能及软、硬件的设计思路和实现方法。完成一项功能往往有多种实现方式,在这种情况下就要综合考虑诸多因素,权衡利弊,力求找出一种“最优方案”。例如,遥控模块选择哪种编、解码芯片;选择哪种数码管显示方式以及选择哪种光源亮度检测电路等等,都要经过对照比较后才会发现哪种更合适些,当然有时这是很难确定的。系统的各模块是相对独立的,怎么才能将这诸多没有多大联系的模块组合成一个整体呢这就是靠下一章将要介绍的系统的软件实现的。哈尔滨工程大学本科生毕业论文40定义存储器为SRAM初始化播放训练提示音训练“前进”命令成功YN训练“后退”命令成功YN训练“左转”命令成功YN训练“右转”命令成功YN训练“停止”命令成功N辨识器初始化启动实时监控播放识别提示音获取语音数据识别出语音命令向小车发送相应命令NY图323语音识别模块程序流程图Y哈尔滨工程大学本科生毕业论文41第4章系统软件的设计41单片机的C语言程序设计简介单片机的开发语言主要有汇编语言和C语言,很多人认为汇编语言易学易用,因为没有太多的语法。但是对于一个较大规模的软件系统使用汇编语言开发将遇到很大的困难。开发周期长、代码可读性差、不易维护。而C语言就克服了汇编语言的很多缺点,和汇编语言相比具有以下几个显著的优点(1)C语言是一种结构化的编程语言,可以减轻程序员的负担,让程序员把更多的精力放在功能的实现上;(2)代码的可读性好、容易理解、结构清晰、易于维护;(3)可移植性好,因为C语言不依赖于任何一种硬件系统。鉴于以上几点,本系统的软件部分全部采用C语言来编写。并且使用KEILC51编译器可以产生高效、紧凑的代码,执行效率毫不逊色于使用汇编语言编写的程序。42系统的三种工作模式小车具有3种工作模式,分别是手动控制模式、自动寻找光源模式和重放路线模式,对应3个模式处理函数SHOUDONG、ZIDONG、ZOULUXIAN。3种模式之间可以通过“模式切换”键互相切换。在手动控制模式下,操作者可以通过遥控器上的按键和语音识别系统控制小车的前进、后退、左转、右转、停止、漏粉等动作。并且可以打开记录路线开关,让小车自动把行驶的路线记录到AT24C08存储器中。在手动控制的行驶过程中,若小车遇到障碍,将自动停止,并发出声、光报警信号。在寻找光源模式下,小车可以通过光源检测机构寻找到光源的方向,然后采取一定的方式自动行驶到光源的附近。在自动行驶的过程中,若哈尔滨工程大学本科生毕业论文42遇到障碍则小车会采取一定的避障策略,绕开障碍继续向光源驶去。在重放路线模式下,小车可以从AT24C08中读出先前记录的路线信息,并且自动按照所记录的路线行驶。在重放过程中操作者按下“停止”键或小车遇到障碍将结束本次的路线重放,等待选择下一条需要重放的路线或切换到其他模式。43手动模式的设计手动模式的程序处理流程如图41所示等待一个消息是通过调用GETMSG函数完成,该函数返回消息值,然后按照消息值对消息进行分类处理。具体的消息循环的结构请参考243节。在该模式下,若操作者按下“模式切换”键,然后选择需要切换到的模式,手动模式处理函数将返回需要切换到模式值,然后由MAIN函数调用相应的模式处理函数。44自动寻找光源模式的设计441功能分析自动寻找光源功能要求能够完成的功能是检测到光源的方向,然后用程序控制小车行驶到光源的附近。该功能模块由两个单片机配合完成,其中从单片机负责障碍的检测和光源方向的检测,然后将光源和障碍信息报告给主单片机。主单片机则根据从单片机所报告的信息根据一定规则控制小车的运动。关于从单片机探测障碍和光源方向的寻找在上一章已做介绍,本节将着重介绍主单片机怎样通过障碍信息和光源角度信息控制小车行驶到光源的附近。初始化等待一个消息消息分类处理图41手动模式处理流程哈尔滨工程大学本科生毕业论文43442寻找光源的策略总的设计思路是这样的。主单片机先给从单片机发送“开始寻找光源”消息,命令从单片机启动转动机构旋转一周检测光源的方向。若找到了光源则给主单片机发送光源的角度信息;若没有找到光源,则给主单片机发送“未找到光源”消息。若没有找到光源,主单片机控制小车行驶一段距离后再命令从单片机寻找一次光源,直到发现了光源为止。若已经找到了光源的方向,则主单片机根据前后的障碍情况和光源的角度控制小车前进、后退、左转前进、左转后退、右转前进或右转后退一段距离后,再重新命令从单片机寻找一次光源,直到前方有障碍并且光源就在正前方就认为已经行驶到了光源的附近,完成了寻找光源的任务,给出提示信息。443自动寻找光源的软件设计主单片机寻找光源的程序流程如图42所示。每次寻找一次光源后按照前后方的障碍情况分四种情况处理。其中前、后方都有障碍说明小车陷入困境,无法再自动行驶。另外3种情况下的处理流程分别如图43、图44和图45所示。在处理1、处理2和处理3中,每次小车转弯的角度是固定的,前进或后退的距离由此时光源的角度计算而得。计算的依据是让小车前进一段距离后能尽可能的正对着光源。445该功能模块存在的一些问题目前该模块的设计还不够完善。存在的主要问题是,对是否已经行驶到光源附近的判断不够准确和灵活,只有当光源在正前方(一定角度范围内),并且前方有障碍时才判定已经行驶到光源的附近。这就有可能出现这样的情况小车已经行驶到光源的附近,但却没有判定出来,从而小车将在光源的附近来回的徘徊。哈尔滨工程大学本科生毕业论文44初始化停车命令从单片机寻找一次光源等待6秒成功提示已到光源附近前后障碍情况处理1处理2处理3无路可走结束YN前有障后有障前无障后有障前有障后无障前无障后无障图42寻找光源流程图哈尔滨工程大学本科生毕业论文45左转前进发现光源光源在哪转正前进右转前进转正前进YN图43处理1流程图左侧前方右侧右转后退发现光源光源在哪找到光源左转后退左转前进YN图44处理2流程图左侧前方右侧左转前进发现光源光源在哪转正前进右转前进转正前进YN图45处理3流程图左侧前方右侧哈尔滨工程大学本科生毕业论文4645走数字及路线重放模式的设计该模式下主要完成路线的重放和自动走数字功能。其中路线重放功能在前面的章节已做介绍,本节不再赘述。下面介绍走数字功能的设计。走数字功能是要实现由程序控制小车按照一定的路线行驶并在适当的时候打开或关闭漏粉开关,最终能在地面留下一条由漏下的粉末形成的轨迹,显示出数字“2”、“3”、“5”或“8”等。这是靠在程序中按照一定的时序控制小车前进、后退、走弧线等动作实现的。46本章小结本章中介绍了系统软件部分的设计思路和程序框架。软件是一个智能系统的灵魂,软件设计的好坏直接决定着系统智能化的程度和系统功能的完善程度。有一些功能用硬件可以实现,用软件也同样可以实现,只是所花费的代价有所不同,往往用软件来实现更为灵活一点。一个系统追求的目标应该是用尽可能简单的软件和硬件实现尽可能多、尽可能完善可靠的功能。哈尔滨工程大学本科生毕业论文47第5章系统的组装、调试和测试51系统的组装、调试系统的调试过程主要分模块调试和系统统调。其中系统的模块调试在各模块的设计过程中完成,基本上按照“设计调试修改”这样的过程反复进行直到能达到设计要求。系统的统调主要是系统软件的调试。在软件的设计过程中使用了伟福仿真器,用仿真器代替单片机能够及时的看到程序的运行结果,这个软件的调试带来了很大的方便。52遥控距离的测试遥控距离的测试结果如表51所示表51遥控距离的测试结果米方向前后左右距离18512731可以看出操作者在小车的后方,遥控的距离最远,这是因为小车上的红外接收头冲着后方。想提高遥控效果可以再使用一个红外接收头冲着前方,然后两个接收头的输出信号进行与或。53时间显示功能的测试系统显示的时间和实际时间的对比如表52所示表52时间显示功能测试结果秒显示时间180180180实际时间179179180由表格中的测试数据可以看出,时间显示的比较准确,这是通过不断的调整定时器0的计数初值实现的,因为定时器的中断响应过程以及重置计数初值需要花费一定的时间。54里程显示功能的测试哈尔滨工程大学本科生毕业论文48里程显示功能的测试数据如表53所示表53里程显示测试结果厘米显示里程371467337实际里程369468334里程显示功能所显示的里程和实际里程误差在3厘米内,这个误差主要来源于里程检测传感器的机械误差。后轮每转过一圈,里程检测传感器能够检测到8个脉冲,这样传感器本身的误差应该是1/8圈,大约在2厘米左右。55超声测障碍功能的测试超声探测障碍功能分别在手动控制模式和自动寻找光源模式下进行了测试,结果如表54所示表54超声测障功能测试结果序号123456手动模式成功成功失败成功失败成功自动模式失败成功成功成功成功失败障碍探测功能失效主要原因是,有些时候小车的行驶方向不是正对着障碍,这样超声发射传感器发射的超声波束经过障碍物反射后就偏离了超声接收传感器,也就探测不到障碍的存在。经过多次测试发现,当小车的行驶方向和障碍物的反射面之间的夹角小于45度左右时就很难再探测到障碍的存在。56走数字功能的测试由于时间仓促,这一功能缺少仔细的调试,所以最终该功能完成的并不是很好。57行驶路线记录与重放功能的测试哈尔滨工程大学本科生毕业论文49路线记录和重放功能的测试结果如表55所示表55路线记录与重放功能测试结果路线存放位置第0页第1页第2页第3页结果成功成功成功成功该功能可以记录四条行驶路线,分别存放于AT24C08的四个页面当中,每条路线最多可记录127个命令。58自动寻找光源功能的测试自动寻找光源功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 德州数学新课标考试题及答案
- 天文系考试题目及答案
- 时空量子纠缠-洞察及研究
- 2025年公需科目人工智能与健康试题及答案
- 2025年公需科目考试试题集及答案
- 2025年公需科目《专业技术人员创新能力培养》题库(含答案)
- 2025年高级电工证考试试题含答案
- 系统实施与管理办法
- 人道救助管理办法无锡
- 蜀绣地标保护管理办法
- 矿山买卖居间协议书
- 2025年医师执业资格考试试题及答案
- 并购协议样本3篇
- 社区两委测试卷及答案
- 板房拆除协议书样本
- 行政事务知识培训课件
- 2025年护理文书书写规范
- 2025年中国淄博房地产行业发展现状分析与市场前景预测报告
- 钢结构工程数字化交付标准制定
- 预防出生缺陷健康知识讲座
- 机械工程图纸会审标准及流程解析
评论
0/150
提交评论