标题:
51单片机实现GPS定位12864显示的源程序
[打印本页]
作者:
yangjianwei
时间:
2017-12-2 09:31
标题:
51单片机实现GPS定位12864显示的源程序
单片机源程序如下:
//======================================================================
//【版权】(C) COPYRIGHT 2009 天祥电子TXMCU ALL RIGHTS RESERVED
//【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
//======================================================================
//======================================================================
// 工程名称: GPS模块测试程序
// 文件名称: main.c
// 功能描述: GPS模块接收定位信息,在LCD上显示
// 组成文件: main.c LCD.c GPS.c display.c
// 头文件: LCD.h GPS.h display.h
// 程序分析: GPS模块通过串口向单片机发送固定格式的数据
// 单片机的串口接收到数据后,进行解析,在LCD上显示
// 定位信息包括:日期时间,经纬度,速度,角度,高度
// 硬件连接: 将GPS模块插在51STAR实验箱的MP3模块插座上,或使用TTL电平
// 接口和51单片机连接
// 维护记录: 2009-8-23 v1.0 by xgc
// 2010-1-30 v1.1 by xgc 加入了可视卫星数量
//
// 代码作者: 相广超
//======================================================================
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include "GPS.h"
#include "LCD.h"
#include "display.h"
sbit led1 = P1^0; //接收数据指示灯
sbit led2 = P1^1; //GPRMC数据有效指示灯
sbit led3 = P1^2; //GPGGA数据有效指示灯
uchar code init1[] = {"GPS 模块测试程序"};
uchar code init2[] = {" WWW*TXMCU*COM "};
uchar code init3[] = {"GPS 初始化......"};
uchar code init4[] = {"搜索定位卫星...."};
#define REV_YES led1 = 0
#define REV_NO led1 = 1
#define RMC_YES led2 = 0
#define RMC_NO led2 = 1
#define GGA_YES led3 = 0
#define GGA_NO led3 = 1
char xdata rev_buf[80]; //接收缓存
uchar xdata rev_start = 0; //接收开始标志
uchar xdata rev_stop = 0; //接收停止标志
uchar xdata gps_flag = 0; //GPS处理标志
uchar xdata change_page = 0; //换页显示标志
uchar xdata num = 0; //
extern GPS_INFO GPS; //在display.c中定义,使用时要加extern
//====================================================================//
// 语法格式: void GPS_Init(void)
// 实现功能: GPS初始化,在LCD上显示初始化信息
// 参数: 无
// 返回值: 无
//====================================================================//
void GPS_Init(void)
{
Lcd_DispLine(0, 0, init1);
Lcd_DispLine(1, 0, init2);
Lcd_DispLine(2, 0, init3);
Lcd_DispLine(3, 0, init4);
if (GPS_GSV_Parse(rev_buf, &GPS))
{
GPS_DispSatellite(); //显示可视卫星数量
}
}
/****************************************
串口初始化
/****************************************/
void Uart_Init(void)
{
TMOD = 0x21;
TH0=0x3c;
TL0=0xb0;
TH1=0xfd;
TL1=0xfd;
TR1=1; //开启定时器1
REN=1; //允许接收数据
SM0=0;
SM1=1;
TI=0;
RI=0;
EA=1; //开总中断
ES=1; //串口1中断允许
ET0 = 1; //定时器1中断允许
}
/****************************************
主函数
/****************************************/
void main(void)
{
uchar error_num = 0;
dula = 0;
wela = 0;
Uart_Init(); //初始化串口
Lcd_Init(); //初始化LCD
GPS_Init(); //初始化GPS
while(1)
{
if (rev_stop) //如果接收完一行
{
TR0 = 1; //开启定时器
REV_YES;
if (change_page % 2 == 1) //换页
{
if (GPS_GGA_Parse(rev_buf, &GPS)) //解析GPGGA
{
GGA_YES;
GPS_DisplayTwo(); //显示第二页信息
error_num = 0;
gps_flag = 0;
rev_stop = 0;
REV_NO;
}
else
{
error_num++;
if (error_num >= 20) //如果数据无效超过20次
{
GGA_NO;
error_num = 20;
GPS_Init(); //返回初始化
}
gps_flag = 0;
rev_stop = 0;
REV_NO;
}
}
else
{
if (GPS_RMC_Parse(rev_buf, &GPS)) //解析GPRMC
{
RMC_YES;
GPS_DisplayOne(); //显示GPS第一页信息
error_num = 0;
gps_flag = 0;
rev_stop = 0;
REV_NO;
}
else
{
error_num++;
if (error_num >= 20) //如果数据无效超过20次
{
RMC_NO;
error_num = 20;
GPS_Init(); //返回初始化
}
gps_flag = 0;
rev_stop = 0;
REV_NO;
}
}
}
}
}
/****************************************
定时器中断
/****************************************/
void timer0(void) interrupt 1
{
static uchar count = 0;
TH0 = 0x3c;
TL0 = 0xb0;
count++;
if (count == 100) //5秒钟
{
count = 0;
change_page++; //换页
if (change_page == 10)
change_page = 0;
}
}
/****************************************
串口接收中断
/****************************************/
void Uart_Receive(void) interrupt 4
{
uchar ch;
ES = 0;
if (RI)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
GPS模块测试程序(51).rar
(77.06 KB, 下载次数: 148)
2017-12-2 09:31 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xiaoyuxinke
时间:
2018-1-8 20:57
不明白那个WEILA和DULA是什么意思
作者:
Tap9
时间:
2018-1-8 22:54
可以看下
LCD12864例程.rar
2018-1-8 22:53 上传
点击文件名下载附件
下载积分: 黑币 -5
8.56 MB, 下载次数: 37, 下载积分: 黑币 -5
作者:
159
时间:
2018-4-14 09:36
诶有,不错哦
作者:
clearlove7
时间:
2018-4-25 14:59
有原理图吗?我在做单片机定位报警器
作者:
阿维拉
时间:
2019-4-10 10:07
好好感谢好人呢
作者:
繁星艾尔
时间:
2019-4-12 13:56
感谢分享
作者:
359901492
时间:
2019-5-10 12:54
没有原理图,容易误导人。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1