234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    单片机论坛

     找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    搜索
    查看: 94389|回复: 221
    收起左侧

    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, 下载次数: 1253)

    评分

    参与人数 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 | 显示全部楼层
    我本来也打算︻做一个类似的一东西呢,不 错
    回复

    使用道具 举报

    盟主最好 发表于 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源码~~
    回复

    使用道具 举报

    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 | 显示全部楼层
    谢谢楼主慷慨,谢谢了
    回复

    使用道具 举报

    kingwin 发表于 2014-5-15 14:25 | 显示全部楼层
    回复

    使用道具 举报

    稻草人hi 发表于 2014-5-23 09:02 | 显示全部楼层
    谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 管理员QQ:125739409;技术交流QQ群636986012

    Powered by 单片机教程网

    快速回复 返回顶部 返回列表