开源门户网站源码,给微商做网站,景区建设网站的不足,网站设计与制作说明书基于51单片机的GPS定位系统 #xff08;仿真#xff0b;程序#xff0b;PCB原理图#xff0b;设计报告#xff09; 功能介绍 具体功能#xff1a;
1.UBLOX-NEO-6M GPS模块采集信息#xff1b;
2.LED作指示灯#xff1b;
3.LCD12864显示数据信息#xff0c;时间、经…基于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]; //yearpyear; 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]; ET00; 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); } } } ET01; } void GPS_DisplayTwo(void) { clr_screen();//Lcd_WriteCmd(0x01); //清屏 ET00; 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); ET01; }硬件设计使用元器件单片机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原理图、设计报告、任务书、流程图、结构图、元件清单、仿真视频等。具体内容如下全网最全! 资料获取请观看前面演示视频点赞分享一起学习成长。