:介绍以51 单片机为处理器的应用系统在编程时的内存使用区划分和GPS 定位信息流的数据格式。说明 GPS15L 型接收模块的数据线应用情况。针对51 单片机的内存较小和GPS 导航数据流较大的矛盾,提出使用51 单片机接 收GPS 数据的一种压缩算法,并给出软件设计流程图,最后以51 汇编语言为例给出实际接收GPS 数据的部分程序的具体 实现方法。 ### GPS接受数据算法研究 #### 一、小内存单片机的内存管理 51系列单片机由于其内部RAM仅有128字节(B),因此如何有效地管理和利用这有限的内存空间变得尤为重要。51系列单片机的128B RAM可以分为以下三个区域: 1. **寄存器区**:地址范围为`00H`至`1FH`,共32个字节。这部分区域主要用于存放临时变量以及作为通用寄存器使用。 2. **位寻址区**:地址范围为`20H`至`2FH`,共16个字节。这一区域中的每个字节都可以进行位操作,常用于定义标志位或者控制位。 3. **数据缓冲区**:地址范围为`30H`至`7FH`,共80个字节。这是单片机中最大的连续可寻址空间,通常用于存储数据、中间结果等。 在实际应用中,合理分配这三个区域对于提高程序效率至关重要。例如,可以将频繁访问的数据放在寄存器区,减少对数据缓冲区的访问次数;而位寻址区则适合存储各种标志位,便于进行位操作。 #### 二、GPS定位信息流的数据格式 GPS接收机持续不断地向单片机发送定位信息,这些信息通常以ASCII字符的形式出现,形成了一串字节流。为了正确解析这些数据,需要了解其特定的帧结构。 以Garmin GPS接收机为例,其发送的数据主要包含帧头、帧内数据和帧尾。常见的帧头包括: - `#$GPGGA`:包含了GPS的时间、位置、精度等信息。 - `$GPGSA`:表示卫星选择状态。 - `$GPRMC`:提供了最关心的定位数据,如时间、纬度、经度、速度等。 以`$GPRMC`为例,其数据格式如下: - `<1>`:UTC时间,格式为`hhmmss`(小时分钟秒)。 - `<2>`:定位状态,`A`表示有效定位,`V`表示无效定位。 - `<3>`:纬度,格式为`ddmm.mmmm`(度分)。 - `<4>`:纬度半球,`N`表示北半球,`S`表示南半球。 - `<5>`:经度,格式为`dddmm.mmmm`(度分)。 - `<6>`:经度半球,`E`表示东经,`W`表示西经。 - `<7>`:地面速度,单位为节(knots)。 - `<8>`:地面航向,范围为`000.0`至`359.9`度,以真北为基准。 - `<9>`:UTC日期,格式为`ddmmyy`(日月年)。 - `<10>`:磁偏角,范围为`000.0`至`180.0`度,`E`表示东偏,`W`表示西偏。 - `<11>`:校验和。 - `<12>`:结束标志。 #### 三、51单片机接收GPS数据的压缩算法 面对51单片机内存较小与GPS数据量大的矛盾,本研究提出了一种基于51单片机接收GPS数据的压缩算法。该算法的主要思想在于通过对GPS数据流进行分析,识别出关键信息,并采用适当的压缩技术来减少所需存储空间。 1. **关键信息提取**:通过分析`$GPRMC`帧内的数据,提取出时间、纬度、经度、速度、航向等关键信息。 2. **数据压缩**:对于提取出的关键信息,采用简单的差值编码或游程编码等压缩方法进行压缩,从而减少所需存储空间。 3. **软件设计流程**:整个软件设计流程包括初始化、数据接收、数据处理(包括提取关键信息和压缩)、数据存储等步骤。 #### 四、51汇编语言实现 以51汇编语言为例给出了实际接收GPS数据的部分程序的具体实现方法。这部分主要包括: - 初始化串口通信。 - 接收GPS数据帧。 - 解析帧头,判断是否为所需的`$GPRMC`帧。 - 提取关键信息并进行压缩。 - 存储压缩后的数据。 通过以上方法,可以在51单片机上实现对GPS数据的有效接收与处理,解决了内存容量限制的问题。这种基于51单片机的GPS数据接收和处理方法,在低功耗、低成本的应用场合具有广泛的应用前景。
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助