历史上的今天
今天是:2024年09月29日(星期日)
2021年09月29日 | 基于51的单片机GPS定位系统设计
2021-09-29 来源:eefocus
一.硬件方案
本设计主要是制作出一款基于51单片机的GPS定位器,根据设计需求,硬件部分主要由51单片机+GPS定位模块+LCD12864液晶+LED指示灯+3.3V稳压电路+天线设计而成;如图:

二.设计功能
(1)单片机选用:51单片机(STC89C51/52、AT89C51/52、AT90C51/52均可兼容),GPS定位模块(带天线)。
(2)采用LCD12864液晶显示当前的时间、日期、经度、速度、航向、高度、海拔等信息。
(3)采用了3颗LED指示灯,红灯为GPS接收数据指示灯,黄灯为GPRNC数据有效指示灯,绿灯为GPGGA数据有效指示灯。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)PCB图如下:

四.软件设计
主程序源码
/****************************************
主函数
/****************************************/
void main(void)
{
uchar error_num = 0;
Uart_Init(); //初始化串口
Lcd_Init(); //初始化LCD
GPS_Init(); //初始化GPS
rev_stop=0;
REV_NO;
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;
led1 = 1;
}
else
{
error_num++;
if (error_num >= 20) //如果数据无效超过20次
{
RMC_NO;
error_num = 20;
GPS_Init(); //返回初始化
}
gps_flag = 0;
rev_stop = 0;
REV_NO;
}
}
}
}
}
————————————————
版权声明:本文为CSDN博主「单片机实例设计」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eletronicfish/article/details/120240891
上一篇:基于51单片机的蓝牙计步器设计
下一篇:基于51单片机的自行车里程表
史海拾趣
|
我想写一个CE程序,上面有拨号和挂断两个按钮,用来操作gprs连接,而且cmwap还要用代理,请问在C#中如何实现。最好能详细一点,我是个初学者。先谢谢各位前辈了!… 查看全部问答> |
|
1、什麽是变频器? 变频器是利用电力半导体器件的通断作用将工频电源变换为另一频率的电能控制装置。2、PWM和PAM的不同点是什麽? PWM是英文Pulse Width Modulation(脉冲宽度调制)缩写,按一定规律改变脉冲列的脉冲宽度,以调 ...… 查看全部问答> |
|
之前使用配送的UART程序,用的是TKS的串口调试工具可以接受PC发来的字符,也可以向PC发送字符;在使用SecureCRT_CN之后,只能接受PC发送的字符,而不能向PC发送字符了,这是什么原因?望高手指导,不胜感激… 查看全部问答> |
|
原文:TI信号链精品博文集锦——看一个TI老工程师如何驯服精密放大器---第一讲 看了好几遍,还是没看明白 第1讲 将运算放大器用作比较器 ——此举可行吗? 答案:不尽然,看 ...… 查看全部问答> |




