编辑: bingyan8 2013-04-23

1 0 >

地磁变化.从000.0到

1 8

0 . 0度地 磁 变化 方向.为E或Wf1【2v'

ANTVCC

5 11 R X D P

2 0 『 R E S E T T X A P

2 1

1 0 GND RAX

1 2 TXD P

2 .

2 l

1 3

1 9 GND TI M EM AR } I NTO S ER R CK S CK 图1GPS模块 与单片机接 口电路 至于其他几种帧格式 , 除 了特殊用途外 , 平时并不常 用, 虽 然接收机也在源 源不断地 向 主机 发送各种数 据帧 ,但 在处 理 时一般先通过 对帧头的判断 而只对 $ G P R M C 帧进行 数据 的 提取处理 .如 果情况特殊 , 需要从 其他 帧获取数据 , 处 理方法 与之也 是完全类似 的.由于帧内各 数据段 由逗号分割 , 因此在 处理数据时一般是通过搜寻ASCII码 $t.来 判断是否是帧头,在对帧头 的类 别进行识 别后 再通 过对所经历 逗号个 数的计 数 来判断 出当前 正在处理 的是 哪一种定 位导航 参数 ,并作出相 应的处理 下 面就是对单 片机 串口输 入 的数 据进行解 帧处 理 的部分代码 , 本文在此 只关心时 间( 日期和时 间) .( 仅供 参考 ) H R MC 的信 息如: $ G P R MC , <

1 >

, <

2 >

, <

3 >

, <

4 >

, <

5 >

, <

6 >

, <

7 >

, <

8 >

, <

9 >

, <

1 0 >

, 半hh//例如:$GP RMC,

1 4

2 8

2 4 .

2 7 5, A,

2 7

5 9 .

4 41 6, N,

1 1

6 2

0 .

71 2 9, E,

0 .

0 0, ,

2 6

0 8

0 4, , }

1 B,

0 D,

0 A i f ( c == $

1 / / 查看是不是信息 头{s:ute―time ;

/ / u t c ― t i me为一数 组首 址,用于存放 U T C 时间s=receiv(5);

/ / 接收

5 个字符 , 看是否为 R MC帧信息 f o r ( j =

0 ;

j <

5 ;

j + + )u t c ― t i me [ j ] = ( s + j ) ;

i f ( ! s t r n c m p ( u t c ― t i m e , q ,

5 ) ) / /

1 :

1 ~ 较是否为 G P R M C, q 一(q+4)中存放的是字符GPRMC { w h i l e ( c !=

0 x

0 a ) / / 有没有到帧尾 { w h i l e ( ! 一testbit一(RI));

//等待接收 中断 c = S B U F ;

/ / 从SBUF中 接 收一 个字节信息if(c=: , ) f c o u n t _ c o mm a + + ;

, / 逗 号计 数器switch(count_comma ) f c a s e

1 : / / 是第1个逗号就取得6个字节的UTC时间s-ut e ― t i me ;

s = r e c e i v (

6 ) ;

f o r ( j = O ;

j <

6 ;

j + + )u t c _ t i m e [ j ] = ( s + j ) ;

b r e a k ;

c a s e

9 : / / 是第9个逗 号就 取得6个 字节 的DATE时间s=date―time ;

s = r e c e i v (

6 ) ;

f o r ( j =

0 ;

j <

6 ;

j + + ) d a t e ― t i m e [ j ] = ( s + j ) ;

b r e a k ;

c a s e

2 : / / 是第二个逗 号就查看该帧信息是否有效 s = r e c e i v (

1 ) ;

i f ( s =: A

1 F

0 -

0 ;

e l s e F

0 = I ;

b r e a k ;

d e f a u l t : b r e a k ;

l

1 } co unt _ c o mma =0;

} 现在已将 所需 信息 提取到内存.在实 际应用中往 往要 根据需要对其做进一步 的运算处理 , 比如从 G P s接收机 中获得的时 间信 息为格林 尼治时间,因此 需要在获取 时间上加8小时才为我国标准时间.这种变换运算必须通过数值运算完成 ,因此需 要将前面获取的字符型 变量转化为数值型 变量.要 注意的是 在 时间加上 8个小 时以后 , 还要看是否 已经超过

2 4点(0:00),即时间是否已经到了第 二天.如到了第 二天还要 进行日期 的 调整 . 这既需要考虑月大月小 的问 题 ,又需 考虑二月这一个 特殊的月份――平年有28天 ,闰年有29天 . 如 有必 要还要进行年 份的调整.对从GPs模块获得的格 林尼治时间进 行调整的过程 如程序框图(图2)所示(其中未 包括年份调整).图2时间调 整程序流程 图4倒计 时 间的计 算 关于倒计 时间计算 的原理就是 用 目标时 间减 去当前时间, 只是计算的方法 可能不尽 相同.在这里介 绍一种 易于理解且 计算 比较简单的方法供参考 . 例如当前 时间是2004年 9月11日

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题