⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps.c

📁 ATMEG162获得GPS定位数据的程序
💻 C
字号:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include "self_def.h"
#include "head.h"

//只输出gll,
/*
uchar onlygll[]={
				0x24,0x50,0x46,0x53,0x54,0x2C,0x4E,0x4D,0x45,0x41,0x2C,0x31,
				0x30,0x30,0x30,0x2C,0x34,0x38,0x30,0x30,0x2A,0x33,0x37,0x0D,0x0A,
				};
//$PFST,NMEA,1000,4800*37<CR><LF>
//输出GPS控制语句
*/
void SendGPSCode(uchar *command)
{
	uchar i,*p;
	p=command;
	i=0;
	while((*p)!=0x0A)				//结束符为0d,0a
	{
		UART0_TransmitByte(*p);
		p++;
	}
	UART0_TransmitByte( *p );
	_delay_ms(100);
}
uchar initaid[]={
36,80,70,83,84,44,73,78,73,84,65,73,68,
44,49,53,53,50,48,48,46,54,49,44,48,49,
48,56,48,55,44,51,52,49,53,46,49,51,50,
52,44,78,44,49,48,56,53,56,46,56,55,54,
49,44,69,44,52,48,42,53,55,13,10
};
//输出GPS初始化信息
uchar Show_Buf[40]={0};
uchar show_flag=0;
//取字码地址
uchar get_d_where(uchar c)
{
	uchar d_where;
	if(c>='0'&&c<='9')
		d_where=c-'0';
	else if(c=='E'||c=='e')
		d_where=10;
	else if(c=='S'||c=='s')
		d_where=11;
	else if(c=='W'||c=='w')
		d_where=12;
	else if(c=='N'||c=='n')
		d_where=13;
	else if(c=='R'||c=='r')
		d_where=14;
	else if(c=='O'||c=='o')
		d_where=15;
	else if(c=='A'||c=='a')
		d_where=16;
	else if(c=='V'||c=='v')
		d_where=17;
	else
		d_where=18;
	return d_where;
}

int main(void)
{
	//内部RC振荡器8分频,生成1MHz系统时钟
	CLKPR=(1<<CLKPCE)|(1<<CLKPS1)|(1<<CLKPS0);		//8 divid
	//CLKPR|=(1<<CLKPS1)|(1<<CLKPS0);
	OSCCAL=0xC7;
	//INT0
	DDRD=(1<<PD2);
	PORTD&=~(1<<PD2);
	//rising edge
	MCUCR=(1<<ISC01)|(1<<ISC00);
	GICR=(1<<INT0);				//general interrput control register
	sei();
	init_lcd();
	init_UART0();
	SendGPSCode(initaid);	//发送指令,gps只输出gll信息
	//uchar Show_Buf[40]={0};
	//uchar *p=Show_Buf;
	//uchar i,j,d;
	while(1)
	{
	/*
		//if(PIND&(1<<PD3))
		//{
			//接收数据,将数据存到flash中,并提取经度、纬度信息供液晶显示
		//	get_gps(p);
			j=0;
			for(i=0;i<10;i++)
			{
				d=get_d_where(Show_Buf[i]);
				display_word(d,j,0,8);
				j+=8;
			}
			j=0;
			for(i=0;i<11;i++)
			{
				d=get_d_where(Show_Buf[i+11]);
				display_word(d,j,1,8);
				j+=8;
			}
		//	PORTD&=~(1<<PD3);	//标志位清零
		//}
	*/
	}
}
/*
unsigned char get_show_flag(uchar i)
{
	i++;
	return i;
}
*/

SIGNAL(SIG_INTERRUPT0)
{
	uchar i,j,d;
	uchar *p=Show_Buf;
	cli();
	get_gps(p);
	clrscr();
	//display_word(10,40,0,8);
	j=0;
	//if(get_show_flag(show_flag)==1)
	//{
		for(i=0;i<9;i++)
		{
			d=get_d_where(Show_Buf[i]);
			display_word(d,j,0,8);
			j+=8;
		}
		j=0;
		for(i=0;i<10;i++)
		{
			d=get_d_where(Show_Buf[i+10]);
			display_word(d,j,1,8);
			j+=8;
		}
		d=get_d_where(Show_Buf[31]);
		display_word(d,j,1,8);
		j+=8;
		d=get_d_where(Show_Buf[32]);
		display_word(d,j,1,8);
	//}
	PORTD&=~(1<<PD2);
	sei();
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -