新闻中心

EEPW首页>嵌入式系统>设计应用> 基于单片机的GPS经纬度数据接收系统

基于单片机的GPS经纬度数据接收系统

作者: 时间:2012-01-14 来源:网络 收藏

2 ATmega16与M12模块的接口程序设计
系统使用ATmega16的串行口向M12模块发出控制指令和接收定位信息。M12模块支持。Motorola二进制格式和NMEA0183格式两种数据输出模式。在Motorola二进制模式下,M12以9600bps的速率输出数据和接收指令;在NMEA0183,M12以4800bps的速率输出数据和接收指令。默认状态下,M12模块工作在Motorola二进制模式下。为了获取更高的数据传输速度,这里使用M12模块默认的工作模式,即Motorola二进制模式。在该模式下,串行数据传输格式为:8位数据位,1位停止位,无奇偶校验和硬件流控制。
ATmega16以通过向M12发送AT指令的方式对其进行控制。Motorola的AT I/O指令一共有69条,其中M12模块所支持的指令有51条。利用这些指令可以很方便的对M12模块进行日期时间设定、自定义坐标设定和定位信息读取等操作。在本系统中,只需要读取M12模块的定位信息,因此程序中只用到51条指令中的1条指令:
@@EqmCCR>LF>
该指令用于控制M12模块输出定位信息。其中“@@”是I/O指令的前缀;“Eq”是指令的关键字;“m”是M12模块输出(响应)信息模式选择,其数值可以是0~255之间的整数,当“m”为0时,响应信息只输出一次,当“m”为1时,响应信息每秒钟输出一次,当“m”为2时,响应信息每2 s输出一次,如此类推,当“m”为255时,响应信息每255 s输出一次;“C”是指令的校验和(Checksum)数据;“CR>”是回车符;“LF>”是换行符。为了便于采集定位数据,将“m”的数值设置为0,使M12模块每接收一次指令就回复一次定位数据。
M12模块在默认状态下只能接受以Motorola二进制形式输入的指令。所谓的Motorola二进制形式是指将指令的前缀、关键字和后缀(回车和换行)变换成相应的ASCII码后,加上模式“m”与校验和“C”组合成的二进制指令代码。系统中所用到的

ATmega16首先请求M12模块输出定位数据(向M12模块发出指令“@@EqmC”),然后等待M12模块回送数据。当M12模块回送数据时,ATmega16首先做出判断,确认其收到的是预期的定位信息,然后将定位信息(经纬度数据)截取下来,整理成可供显示数据信息后在LCD上显示经纬度数据,最后将串口的接收缓冲区清空,以免下次接收信息时出错。由于M12模块在1 s之内只能响应一条指令,所以接收机的数据信息最快1 s更新一次。


3 定位精度测试
为了测试M12模块的定位精度,在华南农业大学工程学院土槽实验室的GPS基准点(坐标为:东经113°20.538541',北纬23°09.581834')进行试验,用PC机连接M12开发板进行经纬度数据采集,持续运行约50 min,采集到3125组经纬度数据。通过对实测数据进行分析,M12模块的单机静态定位误差≤7.81 m,符合其用户手册上所标的无SA政策下25 m的精度范围。


4 结束语
从降低成本的角度出发,基于ATmega 16的数据系统采用单机静态定位技术进行地理定位,这种定位技术精度不高,但易于推广普及,可用于普通民用地理定位领域。该系统也通过更换精度更高的GPS模块或采用差分定位技术提高定位精度后用于专业定位导航领域。


上一页 1 2 下一页

评论


技术专区

关闭