我是靠谱客的博主 贤惠柠檬,最近开发中收集的这篇文章主要介绍基于51的单片机GPS定位系统设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

硬件方案

        本设计主要是制作出一款基于51单片机的GPS定位器,根据设计需求,硬件部分主要由51单片机最小系统,GPS定位模块,LCD12864液晶,LED指示灯,3.3V稳压电路,天线设计而成;原理图如图:

 

PCB图如下:

 

功能

  • 采用LCD12864液晶显示当前的时间、日期、经度、速度、航向、高度、海拔等信息。
  • 采用了3颗LED指示灯,红灯为GPS接收数据指示灯,黄灯为GPRNC数据有效指示灯,绿灯为GPGGA数据有效指示灯。

软件设计

主程序源码

/****************************************
主函数    
/****************************************/
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;
                }
            }
        }
    }
}

资料链接:https://pan.baidu.com/s/166fyv2oDTUXP12hvIh1cgQ?pwd=za05 
提取码:za05

最后

以上就是贤惠柠檬为你收集整理的基于51的单片机GPS定位系统设计的全部内容,希望文章能够帮你解决基于51的单片机GPS定位系统设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部