GPS接收程序:GS-87数据解析与显示

4星 · 超过85%的资源 需积分: 9 7 下载量 39 浏览量 更新于2024-09-11 收藏 4KB TXT 举报
"该资源是关于使用51单片机接收并处理GS-87 GPS信号的程序,目的是在1602液晶显示屏上显示接收到的数据。" 在这个程序中,开发者编写了一个简单的51单片机应用,用于接收来自GS-87 GPS模块的数据,并在1602 LCD(液晶显示器)上进行显示。以下是一些关键知识点: 1. **STC12C5A系列单片机**:这是51系列单片机的一个变种,具备更多的内存和功能,适用于小型嵌入式系统。 2. **UART通信**:初始化UART(通用异步收发传输器)是程序的核心部分,通过`InitUART()`函数配置串行通信参数。TMOD寄存器设置波特率模式,SCON设置串口工作模式,TH1和TL1设定波特率,最后开启中断(EA和ES)并启动定时器1(TR1)以实现串口通信。 3. **数据接收与解析**:`GET_DATA()`函数负责接收GPS数据。程序通过检查接收到的字符序列来确认是否接收到有效的 `$GPRMC` NMEA(北美电子导航协会)报文。NMEA报文是GPS设备的标准输出格式,包含时间、日期、经纬度等信息。 4. **存储接收到的数据**:使用数组`receive[]`存储原始接收到的GPS数据,然后将特定位置的数据提取到其他数组如`time[]`, `WD[]`, `JD[]`, `date[]`, `time[]`中,以便进一步处理。 5. **经纬度处理**:纬度和经度分别存储在`WD[]`和`JD[]`数组中,包括度、分和小数部分。它们从原始数据中提取,并在需要的地方插入小数点。 6. **状态变量**:`lock`变量用于存储接收到的报文类型,`flag`用于标记数据是否已成功解析,`JD_a`和`WD_a`则用于存储纬度和经度的小数部分。 7. **中断处理**:程序利用了中断(ES位)来处理串口接收事件,一旦有新的数据到来,中断服务例程会被触发。 8. **LCD1602接口**:程序还包含了对1602 LCD的驱动,虽然没有具体显示代码,但可以推断出解析后的GPS数据最终会通过LCD1602库函数显示在屏幕上。 这个程序的目的是实现一个简单的GPS接收器,能够从GS-87模块接收定位信息,并在1602 LCD上直观地呈现出来。开发者通过串行通信、数据解析和中断处理等技术实现了这一功能。