• 基于51单片机GPS定位系统设LCD12864显示(程序+原理图+PCB+论文)


    资料编号:202

    功能介绍:

    (1).定位功能

    GPS通过接收卫星信号,可以准确地定出其所在的位置,位置误差小于10米。利用GPS,在12864上面显示当前位置。

    (2).查询时间功能

    GPS还可以接收卫星发下来的时间信息,利用单片机控制12864显示出当前时间,用户可以很方便的了解时间。

    总体设计方案

    个人手持设备要求是功耗要足够低、操作简单、界面美观、方便观看。为完成相应功能,本设计提出的方案如图1.1所示。系统包括以下几个基本模块:电源模块、主控模块、显示模块、GPS定位模块。GPS模块负责接收卫星信息,单片机模块负责读取GPS模块数据并处理,显示模块主要负责将GPS模块接收到的数据显示出来供用户随时观看。

    图1.1 系统结构框图

     

    部分程序展示:

    int GPS_RMC_Parse(char *line,GPS_INFO *GPS)
    {
        uchar ch, status, tmp;
        float lati_cent_tmp, lati_second_tmp;
        float long_cent_tmp, long_second_tmp;
        float speed_tmp;
        char *buf = line;
        ch = buf[5];
        status = buf[GetComma(2, buf)];

        if (ch == 'C')  //如果第五个字符是C,($GPRMC)
        {
            if (status == 'A')  //如果数据有效,则分析
            {
                GPS -> NS       = buf[GetComma(4, buf)];
                GPS -> EW       = buf[GetComma(6, buf)];

                GPS->latitude   = Get_Double_Number(&buf[GetComma(3, buf)]);
                GPS->longitude  = Get_Double_Number(&buf[GetComma( 5, buf)]);

                   GPS->latitude_Degree  = (int)GPS->latitude / 100;       //分离纬度
                lati_cent_tmp         = (GPS->latitude - GPS->latitude_Degree * 100);
                GPS->latitude_Cent    = (int)lati_cent_tmp;
                lati_second_tmp       = (lati_cent_tmp - GPS->latitude_Cent) * 60;
                GPS->latitude_Second  = (int)lati_second_tmp;

                GPS->longitude_Degree = (int)GPS->longitude / 100;    //分离经度
                long_cent_tmp         = (GPS->longitude - GPS->longitude_Degree * 100);
                GPS->longitude_Cent   = (int)long_cent_tmp;    
                long_second_tmp       = (long_cent_tmp - GPS->longitude_Cent) * 60;
                GPS->longitude_Second = (int)long_second_tmp;

                speed_tmp      = Get_Float_Number(&buf[GetComma(7, buf)]);    //速度(单位:海里/时)
                GPS->speed     = speed_tmp * 1.85;                           //1海里=1.85公里
                GPS->direction = Get_Float_Number(&buf[GetComma(8, buf)]); //角度            

                GPS->D.hour    = (buf[7] - '0') * 10 + (buf[8] - '0');        //时间
                GPS->D.minute  = (buf[9] - '0') * 10 + (buf[10] - '0');
                GPS->D.second  = (buf[11] - '0') * 10 + (buf[12] - '0');
                tmp = GetComma(9, buf);
                GPS->D.day     = (buf[tmp + 0] - '0') * 10 + (buf[tmp + 1] - '0'); //日期
                GPS->D.month   = (buf[tmp + 2] - '0') * 10 + (buf[tmp + 3] - '0');
                GPS->D.year    = (buf[tmp + 4] - '0') * 10 + (buf[tmp + 5] - '0')+2000;

                UTC2BTC(&GPS->D);
                
                return 1;
            }        
        }
        
        return 0;
    }

     

     

    下面是该资料的分享下载链接:

    https://pan.baidu.com/s/18_l8Yn95WZUnjjyEsP0Hug?pwd=q8iu 

  • 相关阅读:
    PreScan快速入门到精通第三十讲基于PreScan进行摄像头传感器仿真
    2022年统计用区划代码表SQL 01
    Spring_AOP
    计算机操作系统:实验3 【虚拟存储器管理】
    Spring中事务的失效条件
    检测登革热NS1蛋白分子/银纳米颗粒/金纳米颗粒/铂纳米颗粒修饰二氧化硅微球
    Linux线程同步(上)
    【libnice】libnice版本及构建选项
    鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
    JDK的安装与环境变量的配置教程
  • 原文地址:https://blog.csdn.net/m0_74295839/article/details/128139872