<video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

      <sub id="fj17p"></sub>

        <thead id="fj17p"><meter id="fj17p"></meter></thead>
        <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

          <th id="fj17p"></th>
          <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
          <track id="fj17p"><address id="fj17p"></address></track>

          <nobr id="fj17p"></nobr>

          <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

              單片機論壇

               找回密碼
               立即注冊

              QQ登錄

              只需一步,快速開始

              搜索
              查看: 87579|回復: 216
              收起左側

              stc51單片機做的GPS定位及軌跡記錄器!完成

                [復制鏈接]
              xiaojuan 發表于 2013-6-20 21:50 | 顯示全部樓層 |閱讀模式
              基于C3-370C的GPS定位及軌跡記錄儀!

              在51hei買了C3-370C的GPS,準備做GPS軌跡記錄,因為我一直想在旅游的照片上加上坐標信息……

              開始用M48作控制MCU,結果寫著寫著,發現Flash空間不足,想換個M8或M88的,在常州還不好買,手上正好還有兩塊STC90C52,8K的,于是就換上C52了。

              C52不帶AD,那電池檢測又成問題,于是從壞的萬用表上拆下一個2904運放,做了個簡單的電池電壓檢測。

              現在整個設備的供電都由鋰電池直接提供,配一塊880mah的手機電池,可以用6小時左右;

              我用24C64記錄軌跡信息,包括日期時間、經緯度在內的一組信息,可存儲512條,按1min/條,可存8小時。

              數據通過串口傳給上位機,上位機軟件轉換數據,也可直接輸出KML文件,在Goole earth中打開。

              按鍵0: 短按(可見衛星信息|坐標數據); 長按(運行|暫停);
              按鍵1: 短按(記錄當前坐標數據); 長按(暫停時長按刪除所有數據);
              按鍵2: 短按(背光燈); 長按(記錄模式切換H/A90s/A60s/A30s/A10s);

              025407d7b4brlcyb4n3dbm.jpg

              視圖1

              025408zy6284desrjib8sy.jpg

              背光燈開啟

              025409tws6vetw0xs0x6kt.jpg

              界面說明

              025411w2vr1k1lo21246ty.jpg

              液晶背后的主控板

              025412g23kilmm9lkkk9ix.jpg

              30S自動記錄模式

              025415ag663pctpzpe38el.jpg

              可見衛星信息

              025417emv8kvegt3eqt3zv.jpg

              連接電腦上傳數據

              025418pev6vctvx90zetzv.jpg

              PC端接收數據

              025419mu1z6zeu29mmzy49.jpg

              刪除數據

              025422j02gg12c1gg0grv2.jpg

              背面

              025424qwal4zwzpttw7i9l.jpg

              左側

              025427mqqr49gshqhqqrx9.jpg

              右側
              025429p933in0930aiului.jpg

              在GooleEarth打開
              025429trxua3zbwoa3kfa0.jpg

              運放低電壓指示電路

              GPS軌跡記錄PC端及程序: GPS軌跡記錄PC端.rar (65.97 KB, 下載次數: 1224)

              評分

              參與人數 10威望 +50 黑幣 +88 收起 理由
              6789364 + 6 很給力!
              woshidage1 + 5
              fa111111 + 1 找Q:319959759,就是找他定位我老公的位置
              WUHONE + 5 很給力!
              sanaki + 5 很給力!
              fa345 + 1 找Q:193868345,就是找他定位我老公的位置
              1130555300 + 5 很給力!
              liik7715 + 5 很給力!
              faxa1 + 5 很給力!
              admin + 50 + 50 發布作品的獎勵,大家多多上傳可賺取M幣

              查看全部評分

              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-6-20 21:53 | 顯示全部樓層
              最近想著給它加個殼,費了一些時間,找到了一個東東,感覺做外殼不錯,就是ADSL的分頻器,不過體積小了不少, 尺寸只有60X44X21! 0.png 0.png 于是想做就做吧,為了減小體積,能用貼片的元件都換成貼片的,幸好最近出了Atmega8a這個價格還算合理的AVR片子, 上位機軟件也做了調整,將照片匹配軟件與上位機軟件合成。 主程序文件:
              #include "_STC90.h"
              #include "_GPS.h"
              
              sbit C_LED = P0^4; //數據通訊指示
              sbit Key0 = P3^3;
              sbit Key1 = P1^2;
              sbit Key2 = P1^0;
              
              bit flg_gsv=0;
              bit flg_mode=0;  
              bit flg_upload=0; 
              bit flg_rx=0;
              bit flg_rxf=0;
              uchar flg_rmcgga=0;      //1rmc 2gga
              
              void get_gpsmode(void)
              {
              	if(!flg_mode){
              		if(buf_gps[3]=='M' && buf_gps[4]=='C') flg_rmcgga = 1;     //RMC
              		else{
              			if(buf_gps[3]=='G' && buf_gps[4]=='A') flg_rmcgga = 2; //GGA
              			else flg_rx = 0; 
              		}
              	}
              	else{
              		if(buf_gps[3]=='S' && buf_gps[4]=='V') flg_rmcgga = 3; //GGA
              		else flg_rx = 0;
              	}
              }
              
              void UART_RX(void) interrupt 4
              { 
              	uchar tp_rx;
              	while(!RI); 
              	tp_rx = SBUF; 
              	if(!flg_rxf){
              		if(flg_rx){                       
              			buf_gps[count_gps] = tp_rx;  
              			if(count_gps==4) get_gpsmode(); 	
              			if(tp_rx=='*'){ flg_rx = 0; flg_rxf = 1;} 
              			else count_gps++;             
              		}
              		else{                          
              			if(tp_rx=='$'){ flg_rx = 1; count_gps = 0; flg_rmcgga = 0;}
              		}
              	}
              	if(tp_rx=='#') flg_upload = 1;
              	RI = 0;
              }
              
              void UART_TX(uchar tp_tx)
              {	
              	SBUF = tp_tx;
              	while(!TI); 
              	TI = 0; _nus(100);
              }
              
              uchar var_js7=36;
              uchar var_js5=0;
              uchar var_js4=0;
              uint var_jsrec=0;
              //60ms
              void TIMER2_SEV(void) interrupt 5
              {
              	TF2 = 0;
              	if(var_js7>0) var_js7--;
              	if(var_js5>0) var_js5--;
              	if(var_js4>0) var_js4--;
              	if(var_jsrec>0) var_jsrec--;
              }
              
              void initial(void)
              {
              	C_LED  = 0;
              	GPS_EN = 0; 
              	EA = 0; 	
              	AUXR = 0x01;
              	IPH = 0x0c;	IP = 0x14;
              	SCON = 0x50;	
              	PCON = 0x00; 
              	RI = 0;	TI = 0; ES = 1;
              
              	TCON = 0x00;
              	TMOD = 0x21;
              	TH1 = 256-6; TL1 = 256-6; ET1 = 0; TR1 = 1; 
              	T2CON = 0x00; T2MOD = 0x00;
              	RCAP2H = (65536-55296)/256; RCAP2L = (65536-55296)%256;
              	ET2 = 1; TR2 = 1;
              	I2C_Init();
              	L5_init();
              	L5_wrstr_cn(24,2,0,4,4); //衛星定位
              	L5_wrstr_cn(24,4,4,4,4); //軌跡記錄
              	EA = 1;	
              	while(var_js7>0);
              	Lgps_disp_init(); 	           
              	C_LED = 1; 
              }
              
              void Key_deal(void)
              {
              	uchar jk=255;
              	C_LED = 0; EA = 0; flg_rx = 0; flg_rxf = 0;
              	if(!Key0){
              		do{ _nms(8); jk--;}while(!Key0 && jk>0);
              		if(jk>0){
              			flg_mode = !flg_mode;
              			L5_setxy(0,1); ofs = 0; line = 0x00; Lwr_icob(336);
              			if(!flg_mode) Lgps_disp_dt();				
              		}
              		else{ 
              			flg_sata = !flg_sata; L5_SATA();
              			GPS_EN = flg_sata; 
              		}
              		do{	while(!Key0); _nms(5);}while(!Key0);
              	}
              	if(!Key1){
              		do{ _nms(20); jk--;}while(!Key1 && jk>0);
              		if(jk>0){ at_onewr('H'); var_js4 = 10;} 
              		else at_format(); 			
              		do{	while(!Key1); _nms(5);}while(!Key1);
              	}
              	if(!Key2){
              		do{ _nms(8); jk--;}while(!Key2 && jk>0);
              		if(jk>0) L5_LED = !L5_LED;
              		else{
              			while(!Key2){
              				rec_add();
              				_nms(255); _nms(255); _nms(255); _nms(255);
              			}
              			var_jsrec = var_rec*50; var_jsrec/=3;
              		}
              	}
              	C_LED = 1; EA = 1;
              }
              
              
              void main(void) 
              {
              	initial();
              	while(1){
              		if(flg_rxf){
              			if(flg_sign) C_LED = 0;
              			L5_ComData(1); var_js5 = 6;				
              			get_cama();  
              			if(!flg_mode){
              				if(flg_rmcgga==1) L5_RMC();
              				else if(flg_rmcgga==2) L5_GGA();
              			}
              			else{
              				if(flg_rmcgga==3){ 
              					if(!flg_gsv){ 
              						L5_GSV();
              						if(buf_gps[8]=='3') flg_gsv = 1;
              					}
              					else{
              						if(buf_gps[8]=='2'){ L5_GSV(); flg_gsv = 0;}
              					}
              				}
              			}		
              			for(count_gps=0;count_gps<96;count_gps++) 
              				buf_gps[count_gps]=0;
              			C_LED = 1; flg_rxf = 0;
              		}
              		if(var_js5==1){ L5_ComData(0); var_js5 = 0;}
              		if(var_js7==0){	L5_BAT(); var_js7 = 16;}
              		if(!(Key0&Key1&Key2)){ _nms(5); Key_deal();}
              		if(var_js4==1){ L5_AtWr(0); var_js4 = 0;}
              		if(!flg_sata){
              			if(var_rec>0){
              				if(var_jsrec==0){
              					at_onewr('A'); var_js4 = 10; 
              					var_jsrec = var_rec*50; var_jsrec/=3;
              				}
              			}
              		}
              		if(flg_upload){
              			if(flg_sata){
              				uint k; uchar r;
              				C_LED = 0; EA = 0; flg_rx = 0; flg_rxf = 0;
              				for(k=0;k<at_id;k++){
              					AT24C64_RdPage(k*16);
              					UART_TX(k/256); UART_TX(k%256); 
              					for(r=0;r<16;r++) UART_TX(C64_buf[r]);				
              					L5_sch(1,1,k,at_id);
              				}			
              				EA = 1; L5_sch(0,0,0,0); C_LED = 1; 
              			}
              			flg_upload = 0;
              		}
              	}
              }
              

              評分

              參與人數 1黑幣 +1 收起 理由
              fa111111 + 1 找Q:319959759,就是找他定位我老公的位置.

              查看全部評分

              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-6-20 21:56 | 顯示全部樓層
              _gps.h 文件:
              #include "_STC90.h"
              #include "_LCD5110.h"
              #include "_AT24C64.h"
              
              #define Bat_full   10 //電量滿
              #define Bat_empt   11 //電量空
              #define Signal     12 //信號
              #define NoSignal   13 //信號
              #define file       14 //文件
              #define Sata_run   15 //狀態運行
              #define Sata_pause 16 //狀態暫停
              #define Ico_gps    17 //GPS
              #define Ico_com    18 //數據通訊
              #define Ico_del    19 //刪除
              #define Ico_upload 20 //上傳
              #define Ico_wait   21 //等待
              #define chr_point  22 //大'.'
              #define chr_degree 23 //度
              #define chr_min    24 //分
              #define Ico_point  25 //小度
              #define Ico_degree 26 //小度
              
              sbit Bat_Low = P1^4; //電池0低
              sbit GPS_EN = P3^5;  //GPS使能
              
              uchar buf_gps[96]={0};
              uchar count_gps=0;
              bit flg_sign=0;      
              uchar var_seg[20]={0};
              uchar ofs=0;          
              uchar line=0x00; 
              
              void get_cama(void)
              {
               	uchar tp_c=0,cj;
              	for(cj=0;cj<20;cj++) var_seg[cj] = 0;
              	for(cj=0;cj<count_gps;cj++)
              		if(buf_gps[cj]==','){ var_seg[tp_c] = cj; tp_c++;}
              }
              
              void Lwr_icob(uint nb){ for(;nb>0;nb--) L5_wrbyte(1,line);}
              
              void Lwr_ico(uchar ic)
              {
              	uchar i0,i1;
               	switch(ic){
              		case '0': case '1': case '2': case '3': case '4':
              		case '5': case '6': case '7': case '8': case '9':
              			 	  i0 = (ic-48)*4; i1 = i0+4; break; 
              		case 10: i0 = 65;  i1 = 75;  break; //電量滿
              		case 11: i0 = 75;  i1 = 85;  break; //電量空
              		case 12: i0 = 40;  i1 = 50;  break; //信號有
              		case 13: i0 = 50;  i1 = 60;  break; //信號無
              		case 14: i0 = 60;  i1 = 65;  break; //文件
              		case 15: i0 = 137; i1 = 143; break; //運行圖標
              		case 16: i0 = 143; i1 = 149; break; //暫停圖標				
              		case 17: i0 = 85;  i1 = 105; break; //GPS
              		case 18: i0 = 164; i1 = 173; break; //數據傳輸
              		case 19: i0 = 173; i1 = 180; break; //刪除×
              		case 20: i0 = 180; i1 = 187; break; //上傳
              		case 21: i0 = 187; i1 = 194; break; //等待
              		case 'D': i0 = 131; i1 = 137; break; //'D'
              		case ':': i0 = 115; i1 = 117; break; //':'
              		case '/': i0 = 105; i1 = 109; break; //'/'
              		case '.': i0 = 109; i1 = 111; break; //'.'
              		case '-': i0 = 111; i1 = 115; break; //'-'
              		case '%': i0 = 194; i1 = 202; break; //'%'
              		case 'k': i0 = 117; i1 = 131; break; //'kmh'
              		case 'm': i0 = 121; i1 = 127; break; //'m'
              		case 's': i0 = 159; i1 = 164; break; //'s'
              		case 'A': i0 = 202; i1 = 207; break; //'A'
              		case 'H': i0 = 207; i1 = 212; break; //'H'
              		case 'N': i0 = 212; i1 = 217; break; //'N'
              		case 'S': i0 = 217; i1 = 222; break; //'S'
              		case 'E': i0 = 222; i1 = 227; break; //'E'
              		case 'W': i0 = 227; i1 = 232; break; //'N'		
              		case 22: i0 = 149; i1 = 152; break; //大'.'
              		case 23: i0 = 152; i1 = 156; break; // °
              		case 24: i0 = 156; i1 = 159; break; //'
              		case 25: i0 = 232; i1 = 235; break; //中點
              		case 26: i0 = 235; i1 = 238; break; //小度
              		default: i0 = ic*4; i1 = i0+4; break; //數字
              	}
              	for(;i0<i1;i0++) L5_wrbyte(1,(dip_ico[i0]<<ofs)|line);
              }
              
              void Lwr_icos(uchar cs,uchar cl)
              {
               	uchar k;
              	for(k=0;k<cl;k++) Lwr_ico(buf_gps[cs+k]);
              }
              
              void Lwr_icoh(uchar *hs){ while(*hs){ Lwr_ico(*hs); hs++;}}
              
              void L5_wr_chr(uchar nc)
              {
              	uchar l,n;
              	switch(nc){
              		case 'N': n = 19; break;
              		case 'S': n = 22; break;
              		case 'E': n = 16; break;
              		case 'W': n = 24; break;
              		case 'H': n = 18; break;
              		case 'A': n = 14; break;
              		case 'G': n = 17; break;
              		case 'P': n = 20; break;
              		case 'R': n = 21; break;
              		case 'M': n = 18; break;
              		case 'C': n = 15; break;
              		case ',': n = 11; break;
              		case '.': n = 13; break;
              		case '-': n = 12; break;
              		case '*': n = 10; break;		
              		case 'V': n = 23; break;		
              		default: n = nc-48; break;
              	}
              	for(l=0;l<6;l++) L5_wrbyte(1,ASCII326[n][l]);
              }
              
              void L5_wr_chrs(uchar ch,uchar lc)
              {
               	uchar k;
              	for(k=0;k<lc;k++) L5_wr_chr(buf_gps[ch+k]);
              }
              
              void L5_wr_chrh(uchar *hr){	while(*hr){ L5_wr_chr(*hr); hr++;}}
              
              uchar chrtodec(uchar cd){return buf_gps[cd]-48;}
              uchar chr_dec(uchar cf){ return chrtodec(cf)*10+chrtodec(cf+1);}
              /void Lwr_dec(uchar dec){ Lwr_ico(dec/10); Lwr_ico(dec%10);}
              
              void L5_RMC(void)
              {	
              	uchar tp_h,tp_y,tp_m,tp_d; 
              	bit flg_d=0;              
               	L5_setxy(56,5);	ofs = 3; line = 0x02;
              	tp_h = chr_dec(6)+8;
              	if(tp_h>23){ tp_h%=24; flg_d = 1;}   
              	Lwr_dec(tp_h); Lwr_ico(':');              
              	Lwr_icos(8,2); Lwr_ico(':'); Lwr_icos(10,2);
              	L5_CE = 1;
              	C64_buf[3] = tp_h;
              	C64_buf[4] = chr_dec(8); C64_buf[5] = chr_dec(10); 
              
              	L5_setxy(32,5);
              	tp_m = chr_dec(var_seg[8]+3);          
              	tp_d = chr_dec(var_seg[8]+1); 
              	if(flg_d){
              		switch(tp_m){
              			case 4: case 6: case 9: case 11:
              					tp_h = 30; break;
              			case 2: tp_y = chr_dec(var_seg[8]+5);
              			 		if(tp_y%4==0) tp_h = 29;
              					else tp_h = 28;
              					break;
              			default: tp_h = 31; break;         
              		}		
              		if(tp_d<tp_h) tp_d++;
              		else{
              			tp_d = 1;
              			if(tp_m<12) tp_m++;
              			else tp_m = 1;
              		}
              		Lwr_dec(tp_m); Lwr_ico('-'); Lwr_dec(tp_d); 		
              	}
              	else{
              		Lwr_icos(var_seg[8]+3,2); Lwr_ico('-');   
              		Lwr_icos(var_seg[8]+1,2);                   
              	}
              	L5_CE = 1;
              	C64_buf[1] = tp_m; C64_buf[2] = tp_d;	
              	
              	L5_setxy(0,0); ofs = 0; line = 0x40;
              	if(buf_gps[17]=='A'){ Lwr_ico(Signal); flg_sign = 1;} 
              	else{ Lwr_ico(NoSignal); flg_sign = 0;}               
              	L5_CE = 1;
              
              	if((var_seg[4]-var_seg[2])==12){
              		L5_setxy(0,3); ofs = 0; line = 0x00; 
              		L5_wr_chr(buf_gps[29]);	
              		L5_setxy(12,3);						  
              		L5_wr_chrs(19,2); Lwr_ico(chr_degree);
              		L5_wr_chrs(21,2); Lwr_ico(chr_point);
              		L5_wr_chrs(24,4);                     
              		L5_CE = 1;
              		if(buf_gps[29]=='N') C64_buf[6] = 0x00; //N78 S83
              		else C64_buf[6] = 0x10;
              		C64_buf[7] = chr_dec(19); C64_buf[8] = chr_dec(21);
              		C64_buf[9] = chr_dec(24); C64_buf[10] = chr_dec(26);
              	}
              	if(var_seg[6]>41){ 
              		L5_setxy(0,4); 
              		tp_y = buf_gps[var_seg[5]+1]; L5_wr_chr(tp_y); //E/W	  	
              		tp_h = chr_dec(31);
              		if(var_seg[5]>40){	      
              			L5_wr_chrs(31,3);
              			tp_h = tp_h*10+chrtodec(33);
              		}
              		else{ Lwr_icob(6); L5_wr_chrs(31,2);} 
              		Lwr_ico(chr_degree);                           
              		L5_wr_chrs(var_seg[5]-7,2); Lwr_ico(chr_point); 
              		L5_wr_chrs(var_seg[5]-4,4);	 
              		L5_CE = 1;
              		if(tp_y=='E') C64_buf[6]&=0xf0;     //E69 W87
              		else C64_buf[6]|=0x01;
              		C64_buf[11] = tp_h; C64_buf[12] = chr_dec(var_seg[5]-7);
              		C64_buf[13] = chr_dec(var_seg[5]-4); C64_buf[14] = chr_dec(var_seg[5]-2);		
              	}
              
              	L5_setxy(52,2); 
              	tp_h = var_seg[7]-var_seg[6];    
              	if(tp_h>4){		
              		uint tp_v=0;
              		if(tp_h==7) tp_y = 6;        
              		else tp_y = tp_h;
              		for(tp_m=1;tp_m<tp_y;tp_m++){
              			if(tp_m==3) tp_m++;
              			tp_v = tp_v+chrtodec(var_seg[7]-tp_m)*185;
              			if(tp_m<5){
              				if(tp_v%10>4) tp_v = tp_v/10+1;
              				else tp_v/=10;
              			}
              		}
              		if(tp_h==7) tp_v = tp_v+chrtodec(var_seg[6]+1)*1850;
              		if(tp_v<100) Lwr_icob(8);    
              		else{
              			if(tp_v<1000) Lwr_icob(4);
              			else{ Lwr_ico(tp_v/1000); tp_v%=1000;}
              			Lwr_ico(tp_v/100); tp_v%=100;
              		}
              		Lwr_ico(tp_v/10); Lwr_ico('.'); Lwr_ico(tp_v%10);
              	}
              	else Lwr_icoh("---.-"); //Lwr_ico('k'); -.-kmh
              	L5_CE = 1;
              
              	L5_setxy(24,2); 
              	tp_h = var_seg[8]-var_seg[7];   
              	if(tp_h>4){
              		uint tp_dg=0;
              		tp_h-=4;
              		for(tp_y=0;tp_y<tp_h;tp_y++)
              			tp_dg = tp_dg*10+buf_gps[var_seg[7]+1+tp_y]-48;
              		if(tp_dg>90 && tp_dg<270){
              			Lwr_ico('S'); Lwr_ico(Ico_point);
              			if(tp_dg<180){ Lwr_ico('E'); tp_dg = 180-tp_dg;}
              			else{ Lwr_ico('W'); tp_dg = tp_dg-180;} 
              		}
              		else{
              			Lwr_ico('N'); Lwr_ico(Ico_point); 
              			if(tp_dg<180) Lwr_ico('E');
              			else{ Lwr_ico('W'); tp_dg = 360-tp_dg;} 
              		}
              		Lwr_dec(tp_dg);	Lwr_ico(Ico_degree); 
              	}
              	else Lwr_icob(24);
              	L5_CE = 1;		
              }
              
              
              void L5_GGA(void)
              {
              	uchar tp_h;	
              	L5_setxy(10,0); ofs = 0; line = 0x40;
              	Lwr_icos(var_seg[6]+1,2);	
              	L5_CE = 1;
              
               	L5_setxy(74,4); ofs = 0; line = 0x00;
              	Lwr_ico(buf_gps[var_seg[5]+1]); 
              	L5_CE = 1;
              
              	L5_setxy(74,3);
              	if((var_seg[8]-var_seg[7])==4){
              		Lwr_icos(var_seg[7]+1,3);
              		tp_h = chrtodec(var_seg[7]+1)*10 +chrtodec(var_seg[7]+3);
              	}
              	else{ Lwr_icoh("-.-"); tp_h = 0;}   
              	L5_CE = 1;
              	C64_buf[15] = tp_h;
              
              	L5_setxy(56,1);
              	tp_h = var_seg[9]-var_seg[8]; 
              	if(tp_h>3){
              		Lwr_icob(28-tp_h*4);        
              		Lwr_icos(var_seg[8]+1,tp_h-1); 
              	}
              	else Lwr_icoh("----.-"); 	
              	L5_CE = 1;
              }
              
              bit flg_lowbat=0;
              void L5_BAT(void)
              {
              	L5_setxy(74,0); ofs = 0; line = 0x40;
              	if(!Bat_Low){
              		if(flg_lowbat) Lwr_icob(10);
              		else Lwr_ico(Bat_empt);
              		flg_lowbat = !flg_lowbat;
              	}
              	else Lwr_ico(Bat_full); 
              	L5_CE = 1;
              }
              
              bit flg_sata=0;
              void L5_SATA(void)
              {
              	L5_setxy(22,5); ofs = 0; line = 0x02;
              	if(!flg_sata) Lwr_ico(Sata_run);         
              	else{ Lwr_ico(Sata_pause); flg_sign = 0;} 
              	L5_CE = 1;	
              }
              
              void L5_ComData(bit tp_cd)
              {
              	L5_setxy(20,0); ofs = 0; line = 0x40;
              	if(tp_cd) Lwr_ico(Ico_com); 
              	else Lwr_icob(10);
              	L5_CE = 1;				
              }
              
              void L5_sch(bit sen,uchar stype,uint s0,uint s1)
              {
              	L5_setxy(0,1); ofs = 0; line = 0x00;
              	if(sen){
              		Lwr_ico(file);
              		if(stype==0) Lwr_ico(Ico_wait);
              		else{
              			if(stype==1) Lwr_ico(Ico_upload);
              			else Lwr_ico(Ico_del);
              		}
              		s0 = s0*100/s1; s1 = s0/5; //20份'%'
              		if(s0<10) Lwr_icob(8); 
              		else{
              			if(s0<100){Lwr_icob(4); Lwr_ico(s0/10);}
              			else Lwr_dec(s0/10);
              		}
              		Lwr_ico(s0%10); Lwr_ico('%');		
              		line = 0x1f; Lwr_icob(1+s1); line = 0x11;
              		Lwr_icob(20-s1); line = 0x1f; Lwr_icob(1);
              	}
              	else{ _nms(255); _nms(255); _nms(255); Lwr_icob(54);}
              	L5_CE = 1;
              }
              
              uint at_id=0; 
              void L5_FileN(void)
              {
              	L5_setxy(42,0); ofs = 0; line = 0x40;
              	Lwr_dec(at_id/10); Lwr_ico(at_id%10); 
              	L5_CE = 1;
              }
              
              void at_getid(void)
              {
              	uchar tp_r;
              	at_id = 0;
              	do{
              		tp_r = AT24C64_RD(at_id*16);
              		if(tp_r==0xff) break;
              		at_id++;
              		L5_sch(1,0,at_id,512);  
              	}while(at_id<512);
              	L5_FileN();	L5_sch(0,0,0,0);
              }
              
              void at_format(void)
              {
              	uint tp_f;
              	if(flg_sata){                          
              		if(at_id>0){
              			for(tp_f=0;tp_f<at_id;tp_f++){
              				AT24C64_WR(tp_f*16,0xff);	
              				L5_sch(1,2,tp_f,at_id); 
              			}
              			at_id = 0; L5_FileN(); L5_sch(0,0,0,0);
              		}
              	}
              }
              
              void L5_AtWr(uchar wen)
              {
              	L5_setxy(30,0); ofs = 0; line = 0x40;
              	if(wen==1) Lwr_ico(Ico_wait);
              	else{
              		if(wen==2) Lwr_ico(Ico_del);
              		else Lwr_icob(7);
              	} 
              	L5_CE = 1;
              }
              
              void at_onewr(uchar hdat)
              {
              	if(flg_sign && at_id<512){	
              		L5_AtWr(1);
              		C64_buf[0] = hdat;  
              		AT24C64_WrPage(at_id*16); 
              		at_id++; L5_FileN();
              	}
              	else L5_AtWr(2);
              }
              
              uchar var_rec=0;
              void L5_recty(void)
              {
              	L5_setxy(0,2); ofs = 0; 
              	if(var_rec==0){ line = 0x00; Lwr_icob(6); Lwr_ico('H'); Lwr_icob(7);}
              	else{ line = 0x20; Lwr_ico('A'); Lwr_dec(var_rec); Lwr_ico('s');}
              	L5_CE = 1; 
              }
              
              void rec_add(void)
              {
              	switch(var_rec){
              		case 0: var_rec = 90; break;
              		case 90: var_rec = 60; break;
              		case 60: var_rec = 30; break;
              		case 30: var_rec = 10; break;
              		default: var_rec = 0; break;
              	}
              	L5_recty(); 
              }
              
              
              void Lgps_disp_dt(void)
              {
              	//第1行	
              	L5_setxy(56,1); ofs = 0; line = 0x00; Lwr_icoh("----.-m"); L5_CE = 1;	
              	//第2行
              	L5_setxy(52,2); Lwr_icoh("---.-k");  L5_CE = 1;
              	//第3行
              	L5_setxy(0,3); L5_wr_chr('N');
              	L5_setxy(12,3); L5_wr_chrh("--"); Lwr_ico(chr_degree); L5_wr_chrh("--"); 
              	Lwr_ico(chr_point); L5_wr_chrh("----"); Lwr_ico(chr_min); L5_CE = 1;
              	L5_setxy(74,3); Lwr_icoh("-.-"); L5_CE = 1;
              	//第4行
              	L5_setxy(0,4); L5_wr_chrh("E---"); Lwr_ico(chr_degree); L5_wr_chrh("--");
              	Lwr_ico(chr_point);	L5_wr_chrh("----"); Lwr_ico(chr_min); L5_CE = 1;
              	L5_setxy(74,4); Lwr_icoh("0D");	L5_CE = 1;
              	//第2行
              	L5_recty();
              }
              
              void Lgps_disp_init(void)
              {
              	L5_clear();
              	L5_setxy(0,0); ofs = 0; line = 0x40;
              	Lwr_ico(NoSignal); Lwr_icoh("00"); Lwr_icob(19);
              	Lwr_ico(file); Lwr_icoh("000/512"); Lwr_icob(4);
              	Lwr_ico(Bat_empt); L5_CE = 1;
              	Lgps_disp_dt();
              	L5_setxy(0,5); ofs = 0; line = 0x02; Lwr_ico(Ico_gps); 
              	Lwr_icob(2); Lwr_ico(Sata_run);	Lwr_icob(4); ofs = 3;
              	Lwr_icoh("00-00"); Lwr_icob(4); Lwr_icoh("--:--:--");
              	L5_CE = 1;
              	at_getid();
              }
              
              unsigned char code g_sign[] = {0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
              void L5_GSV(void)
              {				  	
              	uchar tp_j,tp_jk,tp_g,tp_n;
              	tp_n = buf_gps[8]-48; 
              	ofs = 2; line = 0x01; 
              	for(tp_j=0;tp_j<4;tp_j++){
              		if(tp_n==1) L5_setxy(tp_j*14,2);
              		else{
              			if(tp_n==2){
              				if(tp_j<2) L5_setxy((tp_j+4)*14,2);
              				else L5_setxy((tp_j-2)*14,4);
              			}
              			else L5_setxy((tp_j+2)*14,4);
              		}
              		Lwr_icob(2);
              		tp_jk = tp_j*4+3;
              		if(var_seg[tp_jk+1]>(var_seg[tp_jk]+1)) Lwr_icos(var_seg[tp_jk]+1,2);
              		else Lwr_icoh("--");
              		Lwr_icob(4);
              	}
              	for(tp_j=0;tp_j<4;tp_j++){
              		tp_jk = tp_j*4+6;
              		if(var_seg[tp_jk+1]>(var_seg[tp_jk]+1)) tp_g = chr_dec(var_seg[tp_jk]+1);
              		else tp_g = 0;
              		if(tp_n==1) L5_setxy(tp_j*14,1);
              		else{
              			if(tp_n==2){
              				if(tp_j<2) L5_setxy((tp_j+4)*14,1);
              				else L5_setxy((tp_j-2)*14,3);
              			}
              			else L5_setxy((tp_j+2)*14,3);
              		}		
              		line = g_sign[tp_g/12]; Lwr_icob(4);
              		line = 0x00; Lwr_dec(tp_g);
              	}
              	L5_CE = 1;
              }
              
              回復

              使用道具 舉報

              13583076505 發表于 2013-7-5 13:23 | 顯示全部樓層
              為什么你的GPS軌跡記錄PC端及程序不能運行?51hei有你更精彩!!
              回復

              使用道具 舉報

              h333 發表于 2013-7-7 02:29 | 顯示全部樓層
              我這可以運行啊 可能是你的電腦缺少某些庫文件
              回復

              使用道具 舉報

              heicad 發表于 2013-7-8 16:26 | 顯示全部樓層
              液晶屏上刮掉的是什么?
              回復

              使用道具 舉報

              jiaren 發表于 2013-7-8 16:30 | 顯示全部樓層
              heicad 發表于 2013-7-8 16:26
              液晶屏上刮掉的是什么?

              刮掉的是樓主家的坐標位置。。知道這個。。基本誤差不超過10米就可以找到樓主了。他怕怕呀。。
              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-7-8 17:35 | 顯示全部樓層
              jiaren 發表于 2013-7-8 16:30
              刮掉的是樓主家的坐標位置。。知道這個。。基本誤差不超過10米就可以找到樓主了。他怕怕呀。。

              是啊,特別是靜止一段時間,坐標非常準。
              我在一個公園的廣場上做過靜止實驗,廣場上是用大塊的不同顏色的石板鋪設的,
              我把GPS放在其中一塊石板的一角,放在那10分鐘,記下一個坐標,后來在Google Earth上看,幾乎就在那個角上,誤差肯定在1m內!!!
              回復

              使用道具 舉報

              a110 發表于 2013-7-8 18:38 | 顯示全部樓層
              樓主,電池可以續航多久啊?
              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-7-8 19:40 | 顯示全部樓層
              a110 發表于 2013-7-8 18:38
              樓主,電池可以續航多久啊?

              880mah的手機電池連續用了6小時,還有3.5V,不過已經到了我設置的下限(停止)值了,
              2600mah的鋰電池,充了一次電后,斷斷續續用了12個小時以上了,電量還很足,電壓3.75左右。
              回復

              使用道具 舉報

              a110 發表于 2013-7-8 19:42 | 顯示全部樓層
              個人覺得VENUS634L模塊還不錯,樓主的上位機軟件不錯,能否說下在GOOGLE里怎么樣打開數據圖。
              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-7-8 19:53 | 顯示全部樓層
              a110 發表于 2013-7-8 19:42
              個人覺得VENUS634L模塊還不錯,樓主的上位機軟件不錯,能否說下在GOOGLE里怎么樣打開數據圖。

              個人覺得venus634l模塊還不錯,樓主的上位機軟件不錯,能否說下在google里怎么樣打開數據圖。
              -----------------------------------------------------------------------
              上位機軟件生成kml文件,在google earth的文件菜單里就有打開kml文件的選項。
              kml的格式在google map上有說明!百度一下就出來了
              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-7-8 20:06 | 顯示全部樓層
              原理圖忘記了上傳了: 1.JPG
              回復

              使用道具 舉報

              ccd 發表于 2013-7-8 20:13 | 顯示全部樓層
              ---------------
              請教,我做出來的接收器有個問題。

              電路都完全按照上面的來做的,

              存儲也是用AT24C64  保存數據沒問題 ( 重啟后數據讀出還在證明OK)

              但是連接上位機PC端讀取軟件(用樓主的),怎么讀都讀不出數據來,哎,郁悶了。。。

              手動發送‘#’也沒有讀取動作,,,,,,,,


              求教 指導指導~!!!
              回復

              使用道具 舉報

               樓主| xiaojuan 發表于 2013-7-8 21:14 | 顯示全部樓層
              ccd 發表于 2013-7-8 20:13
              ---------------
              請教,我做出來的接收器有個問題。

              你按暫停沒有?上傳數據是在暫停狀態下的!還有手動發送'#'時,是以字符格式發送!
              回復

              使用道具 舉報

              ccd 發表于 2013-7-8 21:17 | 顯示全部樓層
              哈哈,在沒看回復前搞定了,確實是要按暫停才能上傳,犯了低級錯誤~!!!
              回復

              使用道具 舉報

              nanguoguangzi 發表于 2013-7-9 05:46 | 顯示全部樓層
              我本來也打算做一個類似的東西呢,不錯
              回復

              使用道具 舉報

              18#
              無效樓層,該帖已經被刪除
              盟主最好 發表于 2013-7-13 20:17 | 顯示全部樓層
              厲害的緊
              回復

              使用道具 舉報

              1156615097 發表于 2013-7-23 22:35 | 顯示全部樓層
              有套件賣嗎?我要
              回復

              使用道具 舉報

              xueyikuan712 發表于 2013-8-11 20:15 | 顯示全部樓層
              新手求指導
              回復

              使用道具 舉報

              zjh 發表于 2013-8-12 15:44 | 顯示全部樓層
              很酷
              回復

              使用道具 舉報

              tan0327 發表于 2013-8-21 18:33 | 顯示全部樓層
              ccd 發表于 2013-7-8 21:17
              哈哈,在沒看回復前搞定了,確實是要按暫停才能上傳,犯了低級錯誤~!!!

              你好,你是完全按照樓主的那個做的么?程序是不是也是他上面上傳的程序?硬件部分也是一樣的么?
              回復

              使用道具 舉報

              老虎不吃人 發表于 2013-8-22 13:40 | 顯示全部樓層
              樓主好{:soso_e113:},我最近也是想做一個類似的東西,但是我是希望能夠將經緯度直接通過谷歌地球轉化成具體地名,然后通過MG323發送到手機上,僅通過單片機肯定不行,所以我這兩天正在學習VB,  但是對到時候怎么完成跟谷歌地球的接口還是很迷茫,不知道樓主能不能指點一下,多謝了
              回復

              使用道具 舉報

              老虎不吃人 發表于 2013-8-23 10:13 | 顯示全部樓層
              {:soso_e154:}樓主大大,求VB源碼~~
              回復

              使用道具 舉報

              26#
              無效樓層,該帖已經被刪除
              Unknowc 發表于 2013-9-23 18:44 | 顯示全部樓層
              好強悍啊!
              回復

              使用道具 舉報

              zb247558826 發表于 2013-10-8 18:50 | 顯示全部樓層
              感謝樓主~正在學習單片機,作為實例很好
              回復

              使用道具 舉報

              hyhstephen 發表于 2013-10-10 18:16 | 顯示全部樓層
              大神啊
              回復

              使用道具 舉報

              xiaoafei 發表于 2013-10-12 10:02 | 顯示全部樓層
              好好學習,天天向上
              回復

              使用道具 舉報

              bglhf 發表于 2013-10-27 15:28 | 顯示全部樓層
              嗯,很實用
              回復

              使用道具 舉報

              lin0308 發表于 2013-10-28 20:38 | 顯示全部樓層
              下載來看看
              回復

              使用道具 舉報

              jldqc 發表于 2013-11-1 11:15 | 顯示全部樓層
              下載來看看
              回復

              使用道具 舉報

              ilymaf 發表于 2013-11-28 17:20 | 顯示全部樓層
              不錯,
              回復

              使用道具 舉報

              epwdh 發表于 2013-12-5 14:07 | 顯示全部樓層
              厲害,強大
              回復

              使用道具 舉報

              光輝歲月 發表于 2013-12-11 18:45 | 顯示全部樓層
              真不錯!!   
              回復

              使用道具 舉報

              xindaodan 發表于 2013-12-31 20:10 | 顯示全部樓層
              厲害~~~~~~~
              回復

              使用道具 舉報

              T9U8KNNE 發表于 2014-2-28 18:36 | 顯示全部樓層
              請問成品可以直接購買嗎?
              回復

              使用道具 舉報

              鬼谷子 發表于 2014-3-14 13:02 | 顯示全部樓層
              好東西 謝謝分享
              回復

              使用道具 舉報

              a651738901 發表于 2014-4-28 22:20 | 顯示全部樓層
              謝謝樓主慷慨,謝謝了
              回復

              使用道具 舉報

              您需要登錄后才可以回帖 登錄 | 立即注冊

              本版積分規則

              手機版|小黑屋|單片機論壇 |51黑電子論壇技術交流 QQ 管理員QQ:125739409;技術交流QQ群636986012

              Powered by 單片機教程網

              快速回復 返回頂部 返回列表
              幸运飞艇群二维码2018

              <video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

                  <sub id="fj17p"></sub>

                    <thead id="fj17p"><meter id="fj17p"></meter></thead>
                    <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

                      <th id="fj17p"></th>
                      <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
                      <track id="fj17p"><address id="fj17p"></address></track>

                      <nobr id="fj17p"></nobr>

                      <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

                          <video id="fj17p"><progress id="fj17p"><nobr id="fj17p"></nobr></progress></video>

                              <sub id="fj17p"></sub>

                                <thead id="fj17p"><meter id="fj17p"></meter></thead>
                                <address id="fj17p"><meter id="fj17p"><cite id="fj17p"></cite></meter></address>

                                  <th id="fj17p"></th>
                                  <th id="fj17p"><meter id="fj17p"><dfn id="fj17p"></dfn></meter></th>
                                  <track id="fj17p"><address id="fj17p"></address></track>

                                  <nobr id="fj17p"></nobr>

                                  <th id="fj17p"><progress id="fj17p"><listing id="fj17p"></listing></progress></th>

                                      网上棋牌平台哪个好 特区彩票群 成都按摩会所那里有00后小妹 福建体育彩票36选7走势图 新疆时时彩三星基本走势图 甘肃天水麻将下载 日本女优个人简历 翼盟彩票首页 54111抓码王高手图 重庆幸运农场开奖图 极速时时彩是官方的么 重庆时时采彩走势图 特区彩票苹果 加拿大快乐8有没有预测 足球比分直播500万 斗鱼抽奖如何设置主播才能赚钱