基于STM32开发板的GPS定位模块设计

上传人:woxinch****an2018 文档编号:38969061 上传时间:2018-05-10 格式:DOC 页数:13 大小:157.50KB
返回 下载 相关 举报
基于STM32开发板的GPS定位模块设计_第1页
第1页 / 共13页
基于STM32开发板的GPS定位模块设计_第2页
第2页 / 共13页
基于STM32开发板的GPS定位模块设计_第3页
第3页 / 共13页
基于STM32开发板的GPS定位模块设计_第4页
第4页 / 共13页
基于STM32开发板的GPS定位模块设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于STM32开发板的GPS定位模块设计》由会员分享,可在线阅读,更多相关《基于STM32开发板的GPS定位模块设计(13页珍藏版)》请在金锄头文库上搜索。

1、生产实习设计报告生产实习设计报告设计题目:设计题目:基于 GPS 模块的定位装置生产组长:生产组长:王海昕 设计组长:设计组长:孙振邦小组成员:小组成员:王洪振、唐政亮、帖小龙、宋劲草、宋晓林苏刚、孙晓龙、史俊、赵若曦 实习日期:实习日期:2012 年 8 月 27 日-9 月 15 日一、概述本设计基于 STM32F107 开发板,结合 iTrax03-02 型 GPS 接收机,实现 GPS 模块与 STM32 的通信;通过 GPS 模块实现定位,STM32对 GPS 模块传入的数据进行读取和处理,将得到定位信息在 OLED 显示。该定位装置还有如下附加功能:SD 卡数据存储功能,定位状态显

2、示(卫星颗数等) ;可通过 RS232 串口传输坐标和时间至 PC 机,并通过上位机软件实现路径计算和网络地图定位。二、总体设计1总体系统结构GPS 模块模块MCUMCUOLEDPCMCU2功能实现经纬度测定,海拔高度测定速度计算与方向指示SD卡定时存储信息上位机制作及路径计算3人员分工孙振邦、王海昕完成源程序的编写,以及代码的修改、编译、下载、调试等工作;宋劲草、宋晓林、苏刚负责 GPS 数据编码转换编程;王洪振、帖小龙、唐政亮负责串口数据传输、SD 卡定时存储设置;史俊、赵若曦、孙晓龙负责上位机界面设计和各项功能的验证。三、关键模块设计GPS模块iTrax03-02 型 GPS 接收机是根

3、据芬兰 FASTRAX 公司的 GPS 模块进行了电平转换、通信接口等电路设计后生产的一款 GPS(OEM)接收机产品。该产品通过底板上 9pin 排线与计算机串口直接通信,定位后即可输出载体的经纬度信息、时间信息、速度信息等。(2)GPS 定位数据格式解析数据形式: $GPGGA,hhmmss.dd,xxmm.dddd,yyymm.dddd,v,ss,d.d,h.h,M,g.g, M,a.a,xxxx*hh名称说明$GPGGAGGA 消息协议头hhmmss.ddUTC 时间xxmm.dddd纬度信息,度、分格式纬度半球 N(北半球)或 S(南半球)yyymm.dddd经度信息,度、分格式纬度

4、半球 E(东经)或 E(西经)V判断是否已定位,定位为 1,未定位为 0ss使用的解算卫星的数量一般 0-12 颗d.dHDOP 水平精度因子h.h海拔高度M单位米g.gWGS-84 地表面与水平面的差值M单位米a.a空xxxx空hh校验及固定包尾OLED显示模块OLED 使用的控制器为 SSD1305,可通过写入不同的命令字来设置对比度、显示开关、电荷泵、页地址等。OLED被配置为使用I2C的方式。I2C的地址二进制位为0111100X,16进制为0x78(写地址),0x79(读地址)。OLED的Reset平时应该拉高,在初始化的时候,应该有一个从低电平到高电平的跳变。使用的MCU端口为PB

5、6 CLK I2CPB7 SDA I2C PE6 RESET (低有效)(3)距离计算功能公式、原理什么的(4) 串行通信模块RS232的电平转换芯片为MAX232CE。外部接口为DB9。有两个LED指示灯,TXD用来显示接受到数据,RXD用来显示正在发送数据。对外接口为DB9接口,定义为:2RXD,3TXD,5GND。因此,基板可以通过串口线直接连接到PC机,和PC机进行通信。使用的MCU端口为:PD5 UART2_TX(Remap) PD6 UART2_RX(remap)四、测试结果1开机上电后在数据有效的情况下进入定位信息显示模式;2进入定位信息显示模式后,OLED 显示出当前位置经度、

6、纬度、海拔高度、移动速度、移动方向、卫星显示颗数3设定中断时间后,数据会自动存储至SD卡;4.通过RS232串口与PC通讯后可以通过上位机软件打开该位置的谷歌地图显示,并且计算路径长度。附录一定位测试数据保存数据如下:$GPGSV,3,1,10,01,35,047,32,04,30,244,24,08,12,207,27,09,06,318,12*71$GPGSV,3,2,10,11,20,063,36,17,54,320,39,20,54,099,23,27,10,309,26*7F$GPGSV,3,3,10,28,78,225,29,32,34,062,26*75$GPRMC,071738

7、.50,A,3609.4075,N,12029.3426,E,0.00,302.3,090912,5.8,W,A*15$GPGGA,071738.50,3609.4075,N,12029.3426,E,1,05,2.0,115.0,M,5.5,M,*50$PFST,FOM,6*63$GPGSA,A,3,01,08,11,17,28,2.9,2.0,2.1*3D$GPGSV,3,1,10,01,35,047,32,04,30,244,24,08,12,207,27,09,06,318,12*71$GPGSV,3,2,10,11,20,063,36,17,54,320,39,20,54,099,2

8、3,27,10,309,26*7F$GPGSV,3,3,10,28,78,225,29,32,34,062,26*75$GPRMC,071739.50,A,3609.4075,N,12029.3428,E,0.00,302.3,090912,5.8,W,A*1A$GPGGA,071739.50,3609.4075,N,12029.3428,E,1,07,2.0,115.0,M,5.5,M,*5D$PFST,FOM,24*53$GPGSA,A,3,01,04,08,11,17,27,28,2.9,2.0,2.1*3C$GPGSV,3,1,10,01,35,047,31,04,30,244,24,

9、08,12,207,27,09,06,318,12*72$GPGSV,3,2,10,11,20,063,36,17,54,320,38,20,54,099,23,27,10,309,25*7D$GPGSV,3,3,10,28,78,225,27,32,34,062,26*7B$GPRMC,071740.50,A,3609.4074,N,12029.3429,E,0.00,302.3,090912,5.8,W,A*14$GPGGA,071740.50,3609.4074,N,12029.3429,E,1,07,1.8,115.0,M,5.5,M,*58$PFST,FOM,20*57$GPGSA,

10、A,3,01,04,08,11,17,27,28,2.7,1.8,2.0*38$GPGSV,3,1,10,01,35,047,31,04,30,244,24,08,12,207,27,09,06,318,12*72$GPGSV,3,2,10,11,20,063,36,17,54,320,38,20,54,099,23,27,10,308,25*7C$GPGSV,3,3,10,28,78,225,27,32,34,062,26*7B$GPRMC,071741.50,A,3609.4074,N,12029.3431,E,0.00,302.3,090912,5.8,W,A*1C附录二关键程序代码Ma

11、in.c:Main.c:#include “includes.h“ #include “led.h“ #include GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; void USART1_Init(void) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);/ 定义UART1 TX (PA.09)脚为复用推挽输

12、出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /IO口的第九脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /IO口复用推挽输出GPIO_Init(GPIOA, /初始化串口1输出IO口/ 定义 USART1 Rx (PA.10)为悬空输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /IO口的第十脚GPIO_InitStructure.GPIO_Mode

13、 = GPIO_Mode_IN_FLOATING;/IO口悬空输入GPIO_Init(GPIOA, /初始化串口1输入IO口/串口参数配置USART_InitStructure.USART_BaudRate = 4800; /设置波特率为115200USART_InitStructure.USART_WordLength = USART_WordLength_8b; /设置数据位为 8位USART_InitStructure.USART_StopBits = USART_StopBits_1; /设置停止位为 1位USART_InitStructure.USART_Parity = USART

14、_Parity_No; /无奇偶校验USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /没有硬件流控USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /发送 与接收/完成串口COM1的时钟配置、GPIO配置,根据上述参数初始化并使能USART_Init(USART1, USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); /使能串口1接收中断USART_Cmd(USAR

15、T1, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init( int main(void) delay_init(72); GUI_Init(); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); USART1_Init(); while(1) gps_display(); GPS.c:GPS.c:#include “includes.h“ /GPS数据存储数组/ unsigned char JD11;/经度 unsigned char JD_a; /经度方向 unsigned char WD10;/纬度 unsigned char WD_a; /纬度方向 unsigned char time10; /时间 unsigned char speed6 = 0; /速度 unsigned char speed26 = 0;/速度

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号