用uPSD3234A获取Motorola Onco

网友投稿 263 2022-11-27

用uPSD3234A获取Motorola Onco

引 言

1 Motorola Oncore接收器的工作原理

Motorola Oncore接收器有一个TTL串行数据接口。此接口为Oncore接收器和系统控制器间提供主控及数据通道。

2 μPSD3234A介绍

3 μPSD3234A与Oncore接收器的接口

4 程序设计

Motorola Oncore接收器的主串口提供两种数据格式:摩托罗拉二进制格式和NMEA 0183格式。摩托罗拉二进制格式应用于接收器主串口的输入输出,波特率应为9600,无奇偶校验位,1位起始位和1位停止位。所要获取的GPS参数是以@@Ea开头的位置/状态/数据响应信息,以回车换行结束。其格式为:

msdimsdimsdimsdimsdsC。

其含义为:

日期: m 月 1~12

d 日 1~31

时间: h 小时 0~23

m 分 0~59

s 秒 0~60

位置: aaaa 纬度(mas)

-324 000 000~324 000 000(-90°~ 90°)

oooo 经度(mas)

-648 000 000~648 000 000(-180°~ 180°)

hhhh 椭球高度(cm)

-100 000~1 800 000(-1000.00~18 000.00m)

在所有信息终止的前的一个字节为校验和,是所有信息字节的“异或”。

(1)系统初始化

TMOD=0x20;

PCON=0x80;

SCON=0x50;

// 计算定时初值

TH1=value;

TL1=value;

P3SFS=0x03;

//设置LCD的I/O口模式

PSD8xx_reg.VM|=0x80;

//定时器0初始化

//LCD初始化为8位,2行,5×7点阵,

//不闪烁,光标关闭

lcd_init();

(2)读取Motorola Oncore接收器信息

先识别判断是否为@@Ea开头,若是,将其后的所有字符信息放入org_data[]数组中,以便后面从中提取所需数据。

while(1) {

while(!RI);

ch=SBUF;

while(!RI);

ch=SBUF;

if((RI)&&(ch==0x40)) //识别第二个’@’

{ RI=0;head[1]=ch;

while(!RI);

ch=SBUF;

if((RI)&&(ch==0x45)) //识别’E’

{ RI=0;head[2]=ch;

while(!RI);

ch=SBUF;

if((RI)&&(ch==0x61)) //识别抋?

{ RI=0;head[3]=ch;

for(k=0;k<=72;k++)

{ while(!RI);

org_data[k]=SBUF;

RI=0;

}

}

}

}

else {RI=0;continue;}

}

else {RI=0;continue;}

}

程序运行后,在液晶上显示的结果为:

TIME 爃07:m50:s10

LATITU: 牋0028?44 ?//经度为28°44′,因为表示度的小圆圈不好显示,所以用问号?表示度。

LONGIT: 牋0115?51 ?//纬度为115°51′

HIGH: 牋 0145 牋ft ?//高度为145英尺

结 语

在需要实时、准确地获取空间位置和时间信息的场合,如环境监测与保护工程、交通调度等,该设计可嵌入到此类远程移动监控系统中。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:大数据开发是干什么的?
下一篇:一篇文章彻底搞懂jdk8线程池
相关文章

 发表评论

暂时没有评论,来抢沙发吧~