news 2026/7/16 18:47:19

基于51单片机的GPS定位系统设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于51单片机的GPS定位系统设计

基于51单片机的GPS定位系统

(仿真+程序+PCB+原理图+设计报告)

功能介绍

具体功能:

1.UBLOX-NEO-6M GPS模块采集信息;

2.LED作指示灯;

3.LCD12864显示数据信息,时间、经纬度、方向速度、海拔;

​演示视频:

基于51单片机的GPS定位系统设计

#include "display.h" GPS_INFO GPS; //GPS信息结构体 uchar code beiwei[] = "北纬"; uchar code nanwei[] = "南纬"; uchar code dongjing[] = "东经"; uchar code xijing[] = "西经"; uchar code sudu[] = "速度: "; uchar code hangxiang[] = "航向: "; uchar code gaodu[] = "高度: "; uchar code jiaodu[] = "角度: "; uchar code haiba[] = "海拔: "; uchar code du[] = "度"; uchar code meter[] = "米"; uchar code kmperhour[] = "km/h"; uchar code date[] = " 年 月 日 "; void Show_Float(float fla, uchar x, uchar y); void GPS_DispTime(void) { uchar i = 0; uchar ch; //char * yearp; //char year[5]; //char month[3]; //char day[3]; //char hour[3]; //char minu[3]; //char seco[3]; //yearp=year; char time[5]; Lcd_DispLine(0, 0, date); //年月日 //yearp=" "; Int_To_Str(GPS.D.year,time); //将年转换成字符串,存在time中 Lcd_SetPos(0, 0); //设置显示地址 if(strlen(time)==4) //判断接收数据是否有效,有效则显示 { i = 0; while(time[i] != '\0') { ch = time[i++]; Lcd_WriteDat(ch); //显示年 } } Int_To_Str(GPS.D.month,time); Lcd_SetPos(0, 3); if(strlen(time)==2) { i = 0; while(time[i] != '\0') { ch =time[i++]; Lcd_WriteDat(ch); } } Int_To_Str(GPS.D.day,time); Lcd_SetPos(0, 5); if(strlen(time)==2) { i = 0; while(time[i] != '\0') { ch =time[i++]; Lcd_WriteDat(ch); } } Int_To_Str(GPS.D.hour,time); Lcd_SetPos(1, 1); if(strlen(time)==2) { i = 0; while(time[i] != '\0') { ch =time[i++]; Lcd_WriteDat(ch); } } Lcd_WriteDat(' '); Lcd_WriteDat(':'); Int_To_Str(GPS.D.minute,time); Lcd_SetPos(1, 3); if(strlen(time)==2) { i = 0; while(time[i] != '\0') { ch =time[i++]; Lcd_WriteDat(ch); } } Lcd_WriteDat(' '); Lcd_WriteDat(':'); Int_To_Str(GPS.D.second,time); Lcd_SetPos(1, 5); if(strlen(time)==2) { i = 0; while(time[i] != '\0') { ch =time[i++]; Lcd_WriteDat(ch); } } } void GPS_DisplayOne(void) { uchar ch, i; char info[10]; ET0=0; clr_screen();//Lcd_WriteCmd(0x01); //清屏 /* Lcd_SetPos(3, 4); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE3); Lcd_SetPos(3, 6); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE4); Lcd_SetPos(2, 4); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE3); Lcd_SetPos(2, 6); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE4); */ GPS_DispTime(); //显示日期,时间 if (GPS.NS == 'N') //判断是北纬还是南纬 Lcd_DispLine(2, 0, beiwei); else if (GPS.NS == 'S') Lcd_DispLine(2, 0, nanwei); if (GPS.EW == 'E') //判断是东经还是西经 Lcd_DispLine(3, 0, dongjing); else if (GPS.EW == 'W') Lcd_DispLine(3, 0, xijing); //Lcd_DispLine(2, 2, info); //Int_To_Str(GPS.latitude_Cent,info); //纬分 //Lcd_DispLine(2, 5, info); //Int_To_Str(GPS.latitude_Second,info); //纬秒 //Lcd_DispLine(2, 7, info); Int_To_Str(GPS.latitude_Degree,info); //纬度 Lcd_SetPos(2, 2); if(strlen(info)==2) { //只有正常显示纬度,才显示纬分 i = 0; while(info[i] != '\0') { ch = info[i++]; Lcd_WriteDat(ch); } Lcd_WriteDat(' '); Lcd_WriteDat(' '); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE3); Int_To_Str(GPS.latitude_Cent,info); //纬分 if(strlen(info)==2) { //只有正常显示纬分,才显示纬秒 i = 0; while(info[i] != '\0') { ch = info[i++]; Lcd_WriteDat(ch); } Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE4); Int_To_Str(GPS.latitude_Second,info); //纬秒 if(strlen(info)==2) { i = 0; while(info[i] != '\0') { ch = info[i++]; Lcd_WriteDat(ch); } } } } //Int_To_Str(GPS.longitude_Degree,info); //经度 //Lcd_SetPos(3, 2); //Lcd_WriteDat(' '); //Lcd_DispLine(3, 2, info); //Int_To_Str(GPS.longitude_Cent,info); //经分 //Lcd_DispLine(3, 5, info); //Int_To_Str(GPS.longitude_Second,info); //经秒 //Lcd_DispLine(3, 7, info); Int_To_Str(GPS.longitude_Degree,info); //经度 if(strlen(info)==3) { //Lcd_SetPos(3, 2); //i = 0; //while(info[i] != '\0') //{ // ch = info[i++]; // Lcd_WriteDat(ch); //} Lcd_DispLine(3, 2, info); Lcd_WriteDat(' '); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE3); Int_To_Str(GPS.longitude_Cent,info); //经分 if(strlen(info)==2) { //i = 0; //while(info[i] != '\0') //{ // ch = info[i++]; // Lcd_WriteDat(ch); //} Lcd_DispLine(3, 5, info); Lcd_WriteDat(0xA1); Lcd_WriteDat(0xE4); Int_To_Str(GPS.longitude_Second,info); //经秒 if(strlen(info)==2) { //i = 0; //while(info[i] != '\0') //{ // ch = info[i++]; // Lcd_WriteDat(ch); //} Lcd_DispLine(3, 7, info); } } } ET0=1; } void GPS_DisplayTwo(void) { clr_screen();//Lcd_WriteCmd(0x01); //清屏 ET0=0; Lcd_DispLine(0, 0, sudu); Lcd_DispLine(1, 0, hangxiang); Lcd_DispLine(2, 0, gaodu); Lcd_DispLine(3, 0, haiba); Show_Float(GPS.speed, 0, 3); Lcd_DispLine(0, 6, kmperhour); Show_Float(GPS.direction, 1, 3); Lcd_DispLine(1, 6, du); Show_Float(GPS.height_ground, 2, 3); Lcd_DispLine(2, 6, meter); Show_Float(GPS.height_sea, 3, 3); Lcd_DispLine(3, 6, meter); ET0=1; }

硬件设计

使用元器件:

单片机:STC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

12864液晶显示屏;

UBLOX-NEO-6M GPS模块;

LED灯(红、绿、黄);

1K电阻;10K滑动变阻;

30pf电容;10K电阻;

按键;AMS1117稳压器;

DC电源插口;

导线:若干;

流程图:

设计资料

01 仿真图

本设计使用proteus8.9版本设计,资料里有安装教程,无需担心!具体如图!

02 原理图

本系统原理图采用Altium Designer19设计,具体如图!

03 程序

本设计使用软件keil5版本编程设计,资料里有安装教程,无需担心!具体如图!

04 设计报告

六千字设计报告,具体如下!

05 设计资料

资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、PCB电路图、AD原理图、设计报告、任务书、流程图、结构图、元件清单、仿真视频等。具体内容如下,全网最全! !

资料获取请观看前面演示视频!

点赞分享一起学习成长。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 18:56:57

统信UOS操作系统无“网络”选项下连接wifi

如图,是我电脑的设置界面,其中没有“网络”选项,该如何连接wifi呢?方法是通过命令行的方式:1. 查看当前网络链接状态 nmcli connection show --active2. 查看可链接的无线网络 nmcli device wifi list3. 打开无线功能&…

作者头像 李华
网站建设 2026/7/14 23:25:35

springboot大学社团管理系统

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/7/14 23:25:32

自考党必看!8个降AI率工具高效避坑指南

自考党必看!8个降AI率工具高效避坑指南 AI降重工具:自考论文的高效避坑利器 在自考论文写作过程中,越来越多的学生开始关注“AIGC率”和“查重率”的问题。随着AI技术的广泛应用,许多学生在使用AI辅助写作时,发现论文中…

作者头像 李华
网站建设 2026/7/14 23:23:46

计算机毕业设计springboot“阴阳师”游戏玩家社区设计与实现 基于Spring Boot框架的“阴阳师”游戏爱好者社区开发与应用 Spring Boot驱动下的“阴阳师”游戏玩家互动社区构建与实

计算机毕业设计springboot“阴阳师”游戏玩家社区设计与实现d58pn (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的飞速发展,互联网已经成为人们生活中…

作者头像 李华
网站建设 2026/7/14 23:25:17

YOLOFuse与FastStone Capture注册码、PyCharm激活码无关声明

YOLOFuse 多模态目标检测系统深度解析 在智能安防、夜间巡检和自动驾驶等实际场景中,单一可见光摄像头常常“力不从心”——低光照、雾霾遮挡、伪装目标等问题让传统目标检测模型频频失效。而红外图像凭借其对热辐射的敏感性,在黑暗或恶劣天气下依然能捕…

作者头像 李华