版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.⑦程序中的错误和警告总数包括在文件的结尾处。3.2GPS定位系统硬件设计3.2.1IAP15W4K58S4单片机IAP15W4K58S4是一种集上电复位、看门狗、电压监控和EEPROM四种功能于一身的可编程控制电路,有助于简化应用系统的设计。〔1上电复位当电力被加入时,内部上电复位电路被激活,使得复位销是有效的。可避免在系统中的微处理器在欠压或不稳定振荡器的情况下的情况下的信号。如果VCC超过设备的极限VTRIP,电路会释放复位后200ms的延迟,让系统开始工作。〔2低电压检测当工作时,IAP15W4K58S4上VCC电压监控,如果电源电压下降到预先设定的最小电压时,系统将执行重置,这样可以有效地解决上述微处理器断电或断开。后的RESET被确认,直到电压下降到低于1VRESET信号将保持有效。而当VCC返回并超过VTRIP为200ms,系统再次开始工作[17]。〔3看门狗定时器看门狗定时器由WDI输入监视来监视微处理器的激活。由于微处理器必须定时触发CS/WDI引脚用于有效避免复位信号被激活和复位电路,使引脚CS/WDI必须在看门狗超时的终止是由高向低信号触发。3.2.2按键模块设计键盘是人机对话的纽带,操作人员可以通过键盘输入数据和命令。键盘可分为非编码键盘和编码键盘两种,前者用软件来识别输入键和产生代码,后者则用硬件来识别输入键和产生代码,按键模块电路图如图3.1所示。3.2.3按键液晶显示模块51系列单片机与液晶模块的接口方式有两种,一种为直接访问方式,一种为间接控制方式。直接访问方式就是将液晶显示模块作为存储器或I/O设备对待,直接挂在单片机总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块。间接控制是单片机通过软件模拟液晶工作时序的方法实现与液晶显示模块的连接。本设计采用直接访问方式,硬件连接图如图3.2所示:图3.1按键模块电路图图3.21602LCD连接电路图3.2.4GPS模块根据总体设计方案,基于单片机的GPS硬件设计主要由GPS信号接收部分〔SERFNEO-6GPS信号接收模块、控制芯片IAP15W4K58S4单片机、显示部分1602LCD液晶显示模块、电平转换电路这几部分构成。GPS应用结构框图如图3.3所示。图3.3GPS应用结构框图3.2.5SERFNEO-6GPS信号接收模块该设计中GPS信号接收模块所选用的是SERFNEO-6GPS接收模块,该模块是由XX市瑟孚电子所生产。模块具有12通道并行接收能力,所接收的GPS信号属于民用频段的L1信号〔1575.42MHz,在没有SA干扰的情况下平均定位误差为8米,动态速度误差为0.1米/秒,信号灵敏度更是高达-150dBm,冷启动定位时间为52秒,热启动时间为34秒,重新定位时间仅仅需要10秒。单片机串口TXD、RXD分别与NEO-6的RXA、TXA进行连接,用于对NEO-6进行设置后,采集NEO-6的GPS定位和时间信息。EN引脚为校准器使能端,接单片机的P3.6,通过其选用校准器〔上电或低电压时启用,在2.0V到VCC之间禁用。BOOT引脚为模块启动端口,与单片机的P3.7相连,VCC复位时模块启动进入特殊调试模式。硬件连接图如图3.4所示。图3.4NEO-6GPS信号接收电路图3.2.6稳压电路模块稳压电源电路如图3.5所示。采用集成稳压器LM7805,C1、C2分别为输入端和输出端滤波电容;输入电压Vin引脚可直接接入电源,稳压器2脚接地,输出电压Vout引脚即可为整个系统提供稳定的5V电压。图3.5LM7805稳压电源电路4基于单片机的GPS定位系统的实现4.1硬件部分的实现在电路焊接中,各个子模块焊接完成的程度会直接影响整个电路的运行效果,电路焊接中,焊接的顺序和方法都是极为重要的,所以在要注意以下几点。1、呈圆焊接顺序:元器件装焊顺序依次为:电阻器、电容器、二极管、三极管、集成电路、大功率管,其他元器件为先小后大。2、焊接时,要使焊点的周围都有锡,将其牢牢焊住,防止虚焊。3、在焊接圆形的极性电容时〔一般容值较大,其电容器的引脚分长短长脚应对应"+"号所在的孔。4、芯片在安装前最好先两边的针脚稍稍弯曲,使其有利于插入底座对应的插口中。调试的过程如下。〔1离线检查使用万用表,根据电子元件的电路图是否连接正确,检查数据总线,地址总线和控制总线是短路故障。需要特别保护芯片,先与潜在〔或电源插座进行了检查确定正确的插入测试芯片。检查硬件电路是否正常,微控制器的时钟电路,通过检测ALE信号,以确定是否所说的晶体的正常操作。〔2电源检查加入电力之后,检查每个插头销的电势,并且通常检查GND和VCC之间的电位,如果5V-4.7V是正常的。如果有一个高的压力,在线仿真器的调试,会损坏模拟器,有时集成块热损伤的应用系统。在线仿真必须由仿真,示波器装置有所发展,等等。这些工具对于单片微机开发的最基本的工具。信号线是IAP15W4K58S4和外部装置之间的链路,如果信号链路错误或失时,那么将导致外围电路的读写错误。信号线IAP15W4K58S4单片机划分为读写信号线,芯片选择信号线,行时钟信号,外部程序存储器读选通信号〔PSEN,地址锁存信号〔ALE,复位信号和几大类。大多数这些信号是脉冲信号,用于与示波器〔这里指的是一般示波器与传统方法的脉冲信号是难以观察到,必须采取一些措施观察。应该利用软件编程的方法来实现。在焊接好电路板后就开始对电路部分进行测试,首先在IAP15W4K58S4上写了一个可让液晶屏显示数字的小程序,可是通电后发现液晶屏除了背光点亮〔通电后就会亮,根本没有显示。在检查电路的过程中首先怀疑有可能电路连接有问题,使得单片机没有工作,后用万用表测量晶振两脚,发现起振电压正常,说明单片机正常工作。后又怀疑单片机P0口数据电缆和液晶屏没有连接好,又用万用表测试,结果都连接良好。经过分析后觉得这个问题不应该出在液晶屏和单片机上,而有可能是在一些辅助器件上发生了问题,果然经过检查后发现液晶模块对比度调节电阻〔5K有问题,电阻始终很大且无法调小〔始终在1K以上,后更换一个同型号可变电阻,问题解决。4.2软件的烧录与调试当电路板经过电子工艺加工完成之后并排除基本的硬件故障以后,便进入了系统软件调试阶段,调试大体可以分为以下几步。<1>对各个模块的程序进行编译、调试,逐个排除错误。<2>整体调试,结合程序流程图与系统资源的分配,修改程序直到实现系统总体功能。
在调试软件的时候用到了串口调试软件辅助软件的调试,并且通过电脑的串口成功的向单片机发送了模拟的GPS数据,单片机也成功接收并且液晶屏也有了显示,后为了进一步的调试软硬件便使用了GPS信号接收模块向单片机发送地理数据,结果这时液晶屏却没有了显示,开始以为是使用串口调试软件模拟GPS输出数据格式有误,所以造成了使用真正的GPS模块接收数据时程序不能匹配。分析后觉得开始的判断不对,就算模拟时格式不对也起码应该有显示。之前在换用GPS模块时对硬件有过一次改动,就是原先使用电脑串口模拟GPS向单片机发送数据,单片机串口接口使用的是9针的母头,其数据线接具体连接是串口的5号针脚连接MAX232芯片15脚〔接地,串口的3号针脚连接MAX232芯片8脚〔串口数据接收,串口的2号针脚连接MAX232芯片7脚〔串口数据发送。由于要使用GPS接收模块[18],以为模块的串口接口为母头故需要将单片机接收串口接口改为公头,在改的时候也按照了上述的连接方法,由于串口在更换公头后接线方式应该按照母头接线方式镜像连接,在实际连接时忽略了这点结果造成了不能接收串口数据的问题。经重新连接后问题解决。4.3最终实现的功能<1>GPS模块实现定位;<2>单片机通过串口控制GPS模块,获得定位数据;<3>根据需要把定位数据存储在EEPROM或在液晶显示模块进行显示;<4>键盘实现功能选择;<5>看门狗电路确保系统的可靠性。结论经历过这次设计后,我不仅把所学的知识都复习了一遍,而且融会贯通,更加深了印象。在本系统是设计和论证选题中,查阅了大量的资料和文献,也了解到了许多的与本专业相关的信息,开拓了视野,对本专业的发展历史和发展前景也有了一个大概的了解。在本设计过程中,遇到了许许多多奇葩的问题,更重要的是体会到了什么叫做眼高手低。思路很清晰,想的也很好,在具体实际操作时却不知从何下手,这也就是知识匮乏的表现吧。由此我明白了,以前学的知识太过理论化了,缺少实际操作的锻炼,没有遇到真实的问题,缺少解决问题的思路。有些知识是积累的过程,只有遇到后才会懂得,在以后的工作和学习中都应该虚心求教,认真学习,以此来提高自己各方面的能力和综合素质。总之,不管历经了多少的困难,最终还是完成了,成功的喜悦不予言表。此次的毕业设计是一个综合性的课程设计,通过设计考查了我们对单片机课程的认识和学习程度,从中认识到自己学习中的不足,总结自己在学习中的缺陷,从而改进以后的学习方法。而本次的毕业设计摆脱了这种传统教育的束缚,不再是死板的学习课本知识,而是理论和实践相结合的方式,用新的方式磨砺我们的动手能力。在设计过程中,充分发挥我的主观能动性,提高分析问题和解决问题的能力。知识的学习过程,需要积累,然而厚积更需要薄发,能把所学的知识应用到实际中,能够创造现实价值,这才是真正的学以致用,这次经历的最大收获莫过于此。致谢本次设计完结后,首先我要感谢耐心细致、知识丰富,给我们很大帮助的李老师!在毕业设计期间,从设计题目的选择,到资料的查找、原理的讲解,再到后来毕业论文的结构布局和报告内容的修改都给予我们耐心的辅导。在这里我要向老师表示最衷心最诚挚地感谢!我们有很多基础理论知识掌握不牢,一面帮我们查漏补缺,一面发挥我们的特长,让我们的课题能够顺利有序地进行到满足要求。
其次,我还要感谢我们课题组一起奋斗的同学,在共同的学习中,我们互帮互助,愉快地完成了毕业设计!
在整个毕业设计过程中李老师给我很多的引导和帮助,为我准备学习资料,指导设计方案,讲解相关知识。李老师严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,李老师始终给予我细心的指导和大力的支持。四年来,李老师不仅在学业上为我授业解惑,同时还在生活中给我以无微不至的关怀,在此谨向李老师致以诚挚的谢意和崇高的敬意!最后,向在这三年期间帮助过、关心过我的老师和同学致以衷心地感谢,愿大家身体健康、工作愉快轻松、生活幸福XX!参考文献[1]邱志和,王万义.GPS原理与应用[M].北京:电子工业出版社,2003,3.[2]刘基余.GPS卫星导航定位与方法[M].北京:科学出版社,2003.[3]刘基余,李征航.全球定位系统原理及其应用[M].北京:北京测绘出版社,1998.[4]张守信.GPS卫星测量定位理论与应用[M].北京:国防科技大学出版社,1996.[5]张小红等.GPS定位技术在不同领域的应用[J].XX:测绘信息与工程,2001:50-60.[6]洪大永.GPS全球定位系统技术及应用[M].XX:XX大学出版社,1998.[7]邹久朋.89C51单片机实用技术[M].北京:北京航空航天大学出版社,2008,4.[8]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2000.[9]赵建玲.51系列单片机开发宝典[M].北京:电子工业出版社,2007.[10]Xicor.X5043/X5045CPUSupervisorwith4KSPIEEPROM[M].XicorInc,2001.[11]楼然苗,李光飞.51系列单片机设计实例[M].北京:北京航天大学出版社,2003.[12]李军.51系列单片机高级实例开发指南[M].北京:北京航天大学出版社.2004,06.[13]黄凌.基于单片机的GPS信息处理系统[J].现代电子技术,2007,<21>:60—61.[14]GSNEO-6Seriers
Operational
manual.Verison1.0.Serf
Company.2004.11.[15]
刘基余.GPS卫星导航定位原理与方法[M].北京:科学出版社,2003.[16]
刘基余,李征航.全球定位系统原理及其应用[M].北京:测绘出版社,1993.[17]王惠南,GPS导航原理与应用[M].北京:科学出版社,2003.[18]Elliott
D.Kaplan.Understanding
GPS
Principles[M].北京:电子工业出版社,2002.[19]李宏,张家田等编著,液晶显示器件应用技术[M].上海:机械工业出版社,2004.[20]万福君,潘松峰,单片微机原理系统设计与应用[M].XX:中国科技大学出版社,2004.附录一:总体电路原理图附录二:实物图附录三:源程序GPS_MAIN.C#include"LCD1602.h"#include"intrins.h"#include"instruct_init.H"sbitLED=P1^4;unsignedcharEx0_flag;unsignedcharEx1_flag;unsignedcharrcvbuf[600];//gps数据均为ASCII字符形式//ST_FIFO_BUFGPS_data={ 600, rcvbuf, 0, 0};voidmain<>{ unsignedcharcrval;//currentvalue unsignedcharidentifier;//验证深度 unsignedcharWEI,XSD;//位小数点小数点深度 floatXSDSD;//小数点深度 floatDW_message[15];//定位信息1的存储量 P0M0=0;P0M1=0; P1M0=0;P1M1=0; P2M0=0;P2M1=0; P3M0=0;P3M1=0; P4M0=0;P4M1=0; P5M0=0;P5M1=0;LCD1602_Init<>; //初始化LCD1602 LCD1602_PutStr<0,0,"ZZISTZYQGPS-D">; LCD1602_PutStr<1,1,"XH201151067">; for<DW_message[0]=0;DW_message[0]<200;DW_message[0]++>Delay10ms<>;//延时两秒显示信息 INT0_Init<>; INT1_Init<>; UART1_Init<>; UART2_Init<>; Delay<>; // LCD1602_PutChar<3,1,':'>;// LCD1602_PutChar<7,1,':'>; while<1> { while<GPS_data.Value_Data> { crval=FIFO_BUF_Read<&GPS_data>; uart1_send<crval>; if<crval=='$'> {identifier=1;continue;} if<identifier==1> if<crval=='G'> {identifier=2;continue;} else{identifier=0;continue;} if<identifier==2> if<crval=='P'> {identifier=3;continue;} else{identifier=0;continue;} if<identifier==3> if<crval=='G'> {identifier=4;continue;} else{identifier=0;continue;} if<identifier==4> if<crval=='G'> {identifier=5;continue;} else{identifier=0;continue;} if<identifier==5> if<crval=='A'> {identifier=6;LED=~LED;continue;} else{identifier=0;continue;} if<identifier==6> {if<crval==','>{WEI++;XSD=0;XSDSD=1;DW_message[WEI]=0.0;continue;} if<crval=='.'>{XSD=1;continue;} if<crval=='*'>{WEI=0;identifier=0;continue;}//结束本次数据解析 if<XSD==1>XSDSD/=10; if<XSDSD==1> DW_message[WEI]=DW_message[WEI]*10+crval; else{DW_message[WEI]+=crval/XSDSD;} } }//数据解析程序结尾 if<DW_message[6]==0>{LCD1602_Clear<>;LCD1602_PutStr<0,0,"NoP-M">;}//未定位显示,没有位置信息 else{LCD1602_PutStr<0,0,"JD-">;LCD1602_PutNum<4,0,DW_message[4]>; LCD1602_PutStr<0,0,"WD-">;LCD1602_PutNum<4,0,DW_message[2]>;} //if<Ex0_flag>LED=0; //elseLED=1; }}FIFO-BUF.H#ifndef fifo_buf_h_#define fifo_buf_h_typedef struct{ unsigned int Max_Date; //缓冲区长度 unsigned char *P_buf; //缓冲区首地址 unsigned int Value_Date;//有效数据长度 unsigned int Buf_Start; //起始数据距首地址距离}ST_FIFO_BUF;extern unsignedchar FIFO_BUF_Read<ST_FIFO_BUF*buf>;extern void FIFO_BUF_Write<ST_FIFO_BUF*buf,unsignedchartemp>;#endifFIFO-BUF.C/******************************************************环形FIFO缓冲区,定义一个数组作为缓冲区用以下函数来实现环形存储*****************************************************/#include "fifo_buf.h"//#include"instruct_init.H"unsignedchar FIFO_BUF_Read<ST_FIFO_BUF*buf>{ unsignedchar *addr; addr=buf->P_buf+buf->Buf_Start; if<buf->Value_Date>0> { buf->Value_Date--; buf->Buf_Start++; if<buf->Buf_Start>=buf->Max_Date> buf->Buf_Start=0; } return *addr;}void FIFO_BUF_Write<ST_FIFO_BUF*buf,unsignedchartemp>{ unsignedchar*addr; if<buf->Value_Date<buf->Max_Date> { if<<buf->Value_Date+buf->Buf_Start>>=buf->Max_Date> addr=buf->P_buf+buf->Value_Date+buf->Buf_Start-buf->Max_Date; else addr=buf->P_buf+buf->Value_Date+buf->Buf_Start; *<addr>=temp; buf->Value_Date++; }}LCD1602.H#ifndef _LCD1602__H#define _LCD1602__H#include"stc\stc15f2k60s2.h"voidLCD1602_WriteCMD<unsignedcharcommand>; //写命令指令voidLCD1602_WriteData<unsignedchardat>; //写数据指令voidLCD1602_SetCursor<unsignedcharx,unsignedchary>; //设置显示地址voidLCD1602_PutChar<unsignedx,unsignedchary,unsignedchardat>; //写一个字符voidLCD1602_PutStr<unsignedcharx,unsignedchary,unsignedchar*s>; //写一个字符串voidLCD1602_PutNum<unsignedcharx,unsignedchary,unsignedintintdat>; //写无字符型整形数voidLCD1602_Init<void>; //初始化voidLCD1602_CheckBusy<void>; //LCD读忙信号voidLCD1602_Clear<void>; //清屏voidDelay<void>; //18.432MHzsbitLCD1602_BLK=P1^2;//LCD背光,低电平使能#endifLCD1602.C#include"intrins.h"#include"LCD1602.h"//#include"stcKU\debug\debug.h"#define MSB 0x80 //读忙位#define LCDIO P0 //LCD1602的高四位接在P2口的高四位sbitLCD1602_RS=P1^7;//RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。sbitLCD1602_RW=P1^6;//RW为读写信号线,高电平时进行读操作,低电平时进行写操作。sbitLCD1602_EN=P1^5;//E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。#defineCMD_CLEAR 0x01voidDelay<void> //11.0592MHz{ unsignedchari,j; i=8;//i=8; j=40;//j=35; do { while<--j>; }while<--i>;}//LCD的初始化函数voidLCD1602_Init<void>{ LCD1602_WriteCMD<0x38>; //28设置四位数据线模式0c设置八位数据线模式 LCD1602_WriteCMD<0x0c>; //开显示命原0c// LCD1602_WriteCMD<0x0f>; //设置首地址 LCD1602_WriteCMD<0x80>; LCD1602_Clear<>; //清屏 LCD1602_BLK=0;}//清屏函数voidLCD1602_Clear<void>{ LCD1602_WriteCMD<CMD_CLEAR>; //清屏命令}//检测忙信号voidLCD1602_CheckBusy<void>{LCD1602_RS=0;LCD1602_RW=1;LCD1602_EN=1;_nop_<>;while<LCDIO&MSB>{LCD1602_EN=0;_nop_<>;LCD1602_EN=1;_nop_<>;} }//开始写voidLCD1602_WriteStart<void>//EN端产生一个高电平脉冲,写LCD{ LCD1602_EN=1; Delay<>; LCD1602_EN=0; }//写命令voidLCD1602_WriteCMD<unsignedcharcommand>{ LCD1602_CheckBusy<>; LCDIO=command; LCD1602_RS=0; //RS0 写命令 LCD1602_RW=0; //RW0 Delay<>; LCD1602_WriteStart<>;}//写数据voidLCD1602_WriteData<unsignedchardat>{ LCD1602_CheckBusy<>; LCDIO=dat; LCD1602_RS=1; //RS1 写数据 LCD1602_RW=0; //RW0 Delay<>; LCD1602_WriteStart<>;}//设置显示地址:X为横轴<0-15>,Y为纵轴<0-1>voidLCD1602_SetCursor<unsignedcharx,unsignedchary>{ unsignedcharaddress; x&=0x0f; if<!y> address=0x80+x; else address=0xc0+x; LCD1602_WriteCMD<address>;}//写一个字符:X为横轴<0-15>,Y为纵轴<0-1>voidLCD1602_PutChar<unsignedx,unsignedchary,unsignedchardat>{ LCD1602_SetCursor<x,y>; LCD1602_WriteData<dat>;}//写一个字符串:X为横轴<0-15>,Y为纵轴<0-1>voidLCD1602_PutStr<unsignedcharx,unsignedchary,constunsignedchar*s>{ LCD1602_SetCursor<x,y>; while<*s> { LCD1602_WriteData<*s>; s++; }}//写一个无字符整数:X为横轴<0-15>,Y为纵轴<0-1>voidLCD1602_PutNum<unsignedcharx,unsignedchary,unsignedintnum>{ unsignedchari=0,temp[5]; while<num/10||num%10> { temp[i]=num%10; num/=10; i++; } LCD1602_SetCursor<x,y>; while<i> { i--; LCD1602_WriteData<temp[i]+0x30>; }}INSTRUCT_INIT.H#ifndef _instruct_init__H#define _instruct_init__H#include"stc\stc15f2k60s2.h"#include"fifo12_buf.h"externunsignedcharEx0_flag;externunsignedcharEx1_flag;unsignedcharzjval;//中间值externST_FIFO_BUFGPS_data;externunsignedcharrcvbuf[600];voidDelay10ms<>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年版卫生院防疫工作聘用合同书3篇
- 2024版设备维修与技术支持合同3篇
- 2025年度文化产业担保合同会计处理及文化创意产业扶持3篇
- 年度汽车电子竞争策略分析报告
- 二零二五版集装箱运输保险代理服务合同范本3篇
- 2025年度互联网医疗信息服务合同纠纷解决书模板4篇
- 贪吃蛇课程设计论文c
- 2025年酒店住宿服务销售合同修订与客户满意度提升3篇
- 二零二五年都市白领租房代理服务合同样本3篇
- 2025年水电站经营权承包与电力销售收入分成合同2篇
- 企业会计准则、应用指南及附录2023年8月
- 谅解书(标准样本)
- 2022年浙江省事业编制招聘考试《计算机专业基础知识》真题试卷【1000题】
- 认养一头牛IPO上市招股书
- GB/T 3767-2016声学声压法测定噪声源声功率级和声能量级反射面上方近似自由场的工程法
- GB/T 23574-2009金属切削机床油雾浓度的测量方法
- 西班牙语构词.前后缀
- 动物生理学-全套课件(上)
- 河北省衡水市各县区乡镇行政村村庄村名居民村民委员会明细
- DB32-T 2665-2014机动车维修费用结算规范-(高清现行)
- 智能消防设备公司市场营销方案
评论
0/150
提交评论