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

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

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

功能介绍

具体功能:

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

2.LED作指示灯;

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


#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原理图、设计报告、任务书、流程图、结构图、元件清单、仿真视频等。具体内容如下,全网最全! !

下面是开源51单片机设计资料

​大家共同学习进步:

链接:https://pan.baidu.com/s/1dKH-eHPWi6IR90_09u066w?pwd=qy0u

提取码:qy0u

点赞分享,一起学习进步!一起成长。

SIM800C顶配版 GSM GPRS资料包(包括技术手册+硬件参考设计+C51STM32软件工程源码 GSM+GPRS+GPS应用论文) 1.SIM800C开发板用户手册 2.SIM800C开发板原理图 3.驱动 4.调试工具 5.SIM800C相关参考资料 6.例程源码 1800双频网话务均衡与应用.pdf ARM嵌入式系统的LCD驱动设计.pdf GPRS性能分析及优化.pdf GPRS相对GSM技术在水文自动测报中的应用优势探讨.pdf GPRS网络无线数据通信设备应用研究.pdf GPRS通信模块的嵌入式驱动设计.pdf GPS RTK常见作业模式的探讨.pdf GPS与GSM系统整合应用设计(1).pdf GPS与GSM系统整合应用设计.pdf GPS卫星定位及若干问题的分析.pdf GPS技术保障交通安全.pdf GPS接收机空时抗干扰滤波技术研究.pdf GPS测量技术在像片联测中的应用.pdf GPS测量技术课程实践方案设计.pdf GPS测量的误差来源.pdf GPS软件接收机全系统仿真.pdf GPS骨架网布设与探讨.pdf GSM-R核心网网络规划优化研究.pdf GSM与3G的桥梁—GPRS.pdf GSM交换无线网络优化问题分析.pdf GSM功率控制的几种场景运用.pdf GSM干扰问题处理指导书.pdf GSM技术的WSN组网策略.pdf GSM无线接入终端的设计.pdf GSM无线网络参数对拥塞的影响.pdf GSM无线网设备故障分析及处理方法.pdf GSM无线路测系统的应用和问题分析.pdf GSM的MR数据在无线应用的优化研究.pdf GSM移动通信基站环境影响分析.pdf GSM立体网覆盖思路和解决方案.pdf GSM系统无线链路掉话分析和优化思路.pdf GSM网无线网络优化中上下行问题分析.pdf GSM网络中MR信令的采集与分析.pdf GSM网络优化案例及处理方法.pdf GSM网络寻呼成功率优化探索.pdf GSM覆盖增强技术研究.pdf SIM卡复制盗用新变种的剖析与防范.pdf 一种基于PDA+GPRS的仿ISO8583通信应用方案.pdf 一种改进的GPS动态定位滤波方法.pdf 中俄边境GSM 900MHz信号测试工作研究.pdf 关于GSM无线网络优化问题的研究.pdf 关于GSM无线通信技术的网络优化方法探讨.pdf 利用AT89S52单片机实现GSM短信的防火报警系统设计.pdf 华为GSM掉话统计机制及参数优化研究.pdf 基于ARM与GSM的智能家居控制器设计.pdf 基于ARM的GPRS远程数据传输系统的设计.pdf 基于GPRS变电站RTU监控系统设计.pdf 基于GPRS的无线传感器网络网关的设计与实现.pdf 基于GPRS的无线通信模块的原理及设计.pdf 基于GPS和GSM网络的新型汽车防盗系统.pdf 基于GPS/GIS/GSM的车辆定位监控系统.pdf 基于GSM信令监测的SIM卡克隆预警系统设计.pdf 基于GSM控制的LED显示控制系统设计.pdf 基于GSM的磁浮列车导向系统远程管理和调试系统设计.pdf 基于GSM的远程无线数传专网的构建.pdf 基于GSM网络及RFID技术的汽车防盗系统设计.pdf 基于GSM网络的远程温度监测系统设计.pdf 基于GSM通讯模块的电力变压器检测系统研究.pdf 基于nRF24E01的无线温度采集系统设计.pdf 基于RFID的包裹追踪与管理系统的设计.pdf 基于TC35i GSM模块的SMS设计和应用.pdf 基于TC35iGSM模块的功能调试系统设计.pdf 基于动态IP的远程控制.pdf 基于单片机与GSM模块的电力设施防盗报警系统设计.pdf 基于嵌入式处理器的数字化语音存储回放及GSM语音传输系统设计.pdf 基于归一化的二次曲面法转换GPS高程.pdf 基于智能网的GSM-R动态组呼业务研究.pdf 夜狼GPRS彩信报警系统.pdf 对—起直放站干扰GSM基站的排查与分析.pdf 对无线通信中3G系统关键部分的探讨.pdf 射频网络与GPRS通信的可靠性与安全性设计.pdf 嵌入式无线远程光检测系统设计.pdf 工程GSM短消息远程数据采集监控系统.pdf 手持GPS在道路线形测量中的应用.pdf 提高GPS网基线精度方法的探讨.pdf 提高GSM网络覆盖的方法.pdf 无线通讯技术在铁路车号自动识别系统中的应用原理及存在问题分析.pdf 浅议基于GSM列车行车安全监控无线数据传输.pdf 浅谈GSM网络优化存在问题及解决方法.pdf 简述GSM系统逻辑信道及SDCCH信道.pdf 论述GSM移动网络优化方案探讨.pdf 诺基亚西门子通信帮助GSM运营商突破频谱瓶颈.pdf 远程故障诊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值