日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于51单片机和GPS的经纬度时间速度航向系统设计定位电子罗盘原理图程序设计

發(fā)布時(shí)間:2023/12/14 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于51单片机和GPS的经纬度时间速度航向系统设计定位电子罗盘原理图程序设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

(末尾附文件)

通常的導(dǎo)航儀器主要有兩種:陀螺羅經(jīng)和磁羅盤。對地磁場測量方向的儀器叫做磁羅盤。我國發(fā)明指南針就是一個(gè)簡易的磁羅盤,對整個(gè)人類社會發(fā)展做出巨大貢獻(xiàn)。在公元 50 年左右,磁石已經(jīng)被運(yùn)用到導(dǎo)航航啦,并且研制出了司南。在公元 960-1127 年時(shí)候,支撐是的指南針——指南龜被研制出來。到 20 世紀(jì)初,隨著工業(yè)的發(fā)展,羅盤制造工藝也得到了飛速的發(fā)展,材料的選擇和機(jī)械制造使得羅盤的性能有了顯著地提高。尤其是是機(jī)械式磁羅盤,現(xiàn)在某些情況下依然使用機(jī)械式磁羅盤 。到了20世紀(jì)出,陀螺羅盤的問世,對羅盤又是一場革命。羅盤感應(yīng)這地球的自轉(zhuǎn),磁性物質(zhì)對其沒有影響。使得陀螺羅盤的標(biāo)度盤非常穩(wěn)定,讀取數(shù)據(jù)更加精確。當(dāng)代GPS雖然有廣泛的應(yīng)用,但是信號經(jīng)常被物體所遮擋,使其精度大打折扣。有效性也大大降低。數(shù)字電子羅盤系統(tǒng)則將填補(bǔ)這一個(gè)不足,采用地磁場的工作原理,無論何時(shí)何地磁場的水平分量永遠(yuǎn)指向地磁北極,對GPS信號進(jìn)行有效補(bǔ)償。
隨著科技發(fā)展和道路建設(shè)完善,汽車會給人們生活極大方便,汽車將會普及在我們生活中。電子羅盤定向系統(tǒng)將會出現(xiàn)每一輛汽車?yán)?#xff1b;屆時(shí)很多人會開自己的車旅游,回家,談生意等等,當(dāng)置于一個(gè)陌生的環(huán)境中,導(dǎo)航定向?qū)τ谛熊嚢踩浅V匾K?#xff0c;迫切需要研究出一種低功耗,便于攜帶,內(nèi)置磁場感應(yīng)器,系統(tǒng)穩(wěn)定,并且能完成精確定向的微系統(tǒng),而本課題設(shè)計(jì)就是研究出一個(gè)數(shù)字電子羅盤,專門解決這個(gè)問題而產(chǎn)生的。

硬件設(shè)計(jì)

原理圖設(shè)計(jì) (此次設(shè)計(jì)采用 Beitian BN-880 雙模GPS模塊,帶HMC5883L電子羅盤。)

程序設(shè)計(jì)

#include <reg52.h> #include <string.h> #include "gps.h" #include "lcd12864.h" #include "delay.h"uchar code init1[] = {" GPS "}; uchar code init2[] = {" 顯示項(xiàng)目 "}; uchar code init3[] = {"GPS 初始化......"}; uchar code init4[] = {"搜索定位衛(wèi)星...."}; u8 code beiwei[] = "北緯"; u8 code nanwei[] = "南緯"; u8 code dongjing[] = "東經(jīng)"; u8 code xijing[] = "西經(jīng)"; u8 code date[] = " 年 月 日 "; u8 code speed[] = "速度: "; u8 code jie[] = "節(jié)"; u8 xdata rev_buf[80]; //接收緩存 u8 xdata num = 0; u8 error_num = 0; bit rev_start = 0; //接收開始標(biāo)志 bit rev_stop = 0; //接收停止標(biāo)志 bit gps_flag = 0; //GPS處理標(biāo)志static u8 GetComma(u8 num,s8 *str) {u8 i,j = 0;u16 len=strlen(str);for(i = 0;i < len;i ++){if(str[i] == ',')j++;if(j == num)return i + 1; }return 0; } void displaytime(void)//顯示GPS時(shí)間函數(shù) {u8 tmp; u8 hour;tmp = GetComma(9,rev_buf);Lcd_DispLine(0,0,date); //年月日Lcd_DispLine(0,0,"20"); Lcd_SetPos(0,1);Lcd_WriteDat(rev_buf[tmp+4]); Lcd_WriteDat(rev_buf[tmp+5]); Lcd_SetPos(0,3); Lcd_WriteDat(rev_buf[tmp+2]); Lcd_WriteDat(rev_buf[tmp+3]);Lcd_SetPos(0,5);Lcd_WriteDat(rev_buf[tmp+0]); Lcd_WriteDat(rev_buf[tmp+1]); Lcd_SetPos(1,1);hour=((rev_buf[7]-0x30)*10+(rev_buf[8]-0x30)+8)%24;//時(shí)分秒Lcd_WriteDat(hour/10+0x30);Lcd_WriteDat(hour%10+0x30);Lcd_DispLine(1,2," :");Lcd_SetPos(1,3);Lcd_WriteDat(rev_buf[9]);Lcd_WriteDat(rev_buf[10]);Lcd_DispLine(1,4," :");Lcd_SetPos(1,5);Lcd_WriteDat(rev_buf[11]);Lcd_WriteDat(rev_buf[12]); } void displaywd(void) //顯示GPS緯度函數(shù) {u16 weidunum;Lcd_SetPos(2, 0);if(rev_buf[30]=='N') Lcd_DispLine(2, 0, beiwei);else if(rev_buf[30]=='S') Lcd_DispLine(2, 0, nanwei);Lcd_SetPos(2, 2);Lcd_WriteDat(rev_buf[19]);Lcd_WriteDat(rev_buf[20]);Lcd_DispLine(2,3," ");Lcd_WriteDat(0xA1);Lcd_WriteDat(0xE3); Lcd_WriteDat(rev_buf[21]);Lcd_WriteDat(rev_buf[22]);Lcd_WriteDat(0xA1);Lcd_WriteDat(0xE4);weidunum=(((rev_buf[24]-48)*10)+((rev_buf[25]-48)))*6; if(weidunum>=100){ if(weidunum%100%10>=5){ Lcd_WriteDat(weidunum/100+0x30);Lcd_WriteDat(weidunum%100/10+1+0x30);}else{Lcd_WriteDat(weidunum/100+0x30);Lcd_WriteDat(weidunum%100/10+0x30);}}if(weidunum<100&&weidunum>=10){ if(weidunum%10>=5){ Lcd_WriteDat('0');Lcd_WriteDat(weidunum/10+1+0x30);}else{Lcd_WriteDat('0');Lcd_WriteDat(weidunum/10+0x30);}}if(weidunum<10){ if(weidunum>=5){ Lcd_WriteDat('0');Lcd_WriteDat('1');}else{Lcd_WriteDat('0');Lcd_WriteDat('0');}} } void displayjd(void) //顯示GPS精度函數(shù) {u8 i;u16 jingdunum;if(rev_buf[44]=='E') Lcd_DispLine(3,0,dongjing);else if(rev_buf[44]=='W') Lcd_DispLine(3,0,xijing);Lcd_SetPos(3, 2);for(i=32;i<35;i++)Lcd_WriteDat(rev_buf[i]);Lcd_WriteDat(' ');Lcd_WriteDat(0xA1);Lcd_WriteDat(0xE3);Lcd_WriteDat(rev_buf[35]);Lcd_WriteDat(rev_buf[36]);Lcd_WriteDat(0xA1);Lcd_WriteDat(0xE4);jingdunum=(((rev_buf[38]-48)*10)+((rev_buf[39]-48)))*6; if(jingdunum>=100){ if(jingdunum%100%10>=5){ Lcd_WriteDat(jingdunum/100+0x30);Lcd_WriteDat(jingdunum%100/10+1+0x30);}else{Lcd_WriteDat(jingdunum/100+0x30);Lcd_WriteDat(jingdunum%100/10+0x30);}}if(jingdunum<100&&jingdunum>=10){ if(jingdunum%10>=5){ Lcd_WriteDat('0');Lcd_WriteDat(jingdunum/10+1+0x30);}else{Lcd_WriteDat('0');Lcd_WriteDat(jingdunum/10+0x30);}}if(jingdunum<10){ if(jingdunum>=5){ Lcd_WriteDat('0');Lcd_WriteDat('1');}else{Lcd_WriteDat('0');Lcd_WriteDat('0');}} } void displayspeed(void) //顯示GPS速度函數(shù) {u8 aa,bb,i;Lcd_DispLine(3,0,speed); //速度Lcd_DispLine(3,6,jie);if (rev_stop)//GPS搜索到衛(wèi)星{if(rev_buf[0]=='$'&&rev_buf[1]=='G'&&rev_buf[2]=='N'&&rev_buf[3]=='R'&&rev_buf[4]=='M'&&rev_buf[5]=='C'&&rev_buf[17]=='A'){if(RI==0){aa=GetComma(7,rev_buf);bb=GetComma(8,rev_buf)-3;if((bb-aa)==3){Lcd_DispLine(3,3,"00");Lcd_SetPos(3,4);}else if((bb-aa)==4){Lcd_SetPos(3,3);Lcd_WriteDat('0');} else if((bb-aa)==5){Lcd_SetPos(3,3);} for(i=aa;i<bb;i++){Lcd_WriteDat(rev_buf[i]); }} }rev_stop = 0;gps_flag = 0;} } void GPS_Init(void) //GPS初始化函數(shù) {Lcd_DispLine(0, 0, init1);Lcd_DispLine(1, 0, init2);Lcd_DispLine(2, 0, init3);Lcd_DispLine(3, 0, init4); } void GPS_DisplayOne(void) //第一屏顯示函數(shù) {if (rev_stop)//GPS搜索到衛(wèi)星{if(rev_buf[0]=='$'&&rev_buf[1]=='G'&&rev_buf[2]=='N'&&rev_buf[3]=='R'&&rev_buf[4]=='M'&&rev_buf[5]=='C'&&rev_buf[17]=='A'){if(RI==0){displaytime();displaywd();displayjd();error_num=0;} }rev_stop = 0;gps_flag = 0;}else//GPS衛(wèi)星通訊斷開{error_num++;DelayMS(50);} if(error_num==20){GPS_Init(); error_num=0;} }

.

文件僅供參考:
鏈接:https://pan.baidu.com/s/1JAGteF7odF1i1nV3uoCIhQ
提取碼:rkou

.

總結(jié)

以上是生活随笔為你收集整理的基于51单片机和GPS的经纬度时间速度航向系统设计定位电子罗盘原理图程序设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。