用μPSD3234A获取Motorola Oncore的GPS信息
4程序设计
MotorolaOncore接收器的主串口提供两种数据格式:摩托罗拉二进制格式和NMEA0183格式。摩托罗拉二进制格式应用于接收器主串口的输入输出,波特率应为9600,无奇偶校验位,1位起始位和1位停止位。所要获取的GPS参数是以@@Ea开头的位置/状态/数据响应信息,以回车换行<CR><LF>结束。其格式为:
@@Eamdyyhmsffffaaaaoooohhhhmmmmvvhhddtntimsdimsdimsdi
msdimsdimsdimsdimsdsC<CR><LF>。
其含义为:
日期:m月1~12
d日1~31
yy年1980~2079
时间:h小时0~23
m分0~59
s秒0~60
位置:aaaa纬度(mas)
-324000000~324000000(-90°~90°)
oooo经度(m
as)
-648000000~648000000(-180°~180°)
hhhh椭球高度(cm)
-100000~1800000(-1000.00~18000.00m)
在所有信息终止的<CR><LF>前的一个字节为校验和,是所有信息字节的“异或”。
程序是在KeiluVision2的环境下设计的。
(1)系统初始化
TMOD=0x20;
PCON=0x80;
SCON=0x50;
//计算定时初值
value=65536-(36000*125L/(24L*9600));
TH1=value;
TL1=value;
TR1=1;//定时器1为波特率发生器
P3SFS=0x03;
//设置LCD的I/O口模式
PSD8xx_reg.VM|=0x80;
//定时器0初始化
timer0_init();
//LCD初始化为8位,2行,5×7点阵,
//不闪烁,光标关闭
lcd_init();
(2)读取MotorolaOncore接收器信息
先识别判断是否为@@Ea开头,若是,将其后的所有字符信息放入org_data[]数组中,以便后面从中提取所需数据。
while(1){
while(!RI);
ch=SBUF;
if((RI)&&(ch==0x40))//识别’a’
{RI=0;head[0]=ch;
while(!RI);
ch 《用μPSD3234A获取Motorola Oncore的GPS信息(第2页)》