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

📄 gpsdata.c

📁 GPS_25LVS_LCD1602程序由河南科技大学创达科技 陈仲库 设计
💻 C
字号:
#include<reg51.h>
#include "GPSData.h"
//#include<Acm1602*lcd.c>
/* 延时t毫秒 */
void delay(uint t)
{
	uint i;
	while(t--)
	{
		/* 对于12MHz时钟,约延时1ms */
		for (i=0;i<125;i++)
		{}
	}
} 

/* 串口接收中断 */
serial() interrupt 4 using 1
{
	RI = 0;				// 清除中断标志位
	/* 判断是否收到GPRMC格式语句的第一个字符"$",其数值为0x24,
	收到后开始记录数据,并设置记录标志RecFlag。			    */
	if (SBUF == 0x24)
	{
		RecFlag = 1;
		i = 0;
		IGpsLgd = 0;	// 经度数据计数变量置0
		NumComa = 0;	// 逗号计数变量置0
	}

	/* 开始处理GPRMC中的数据信息 */
	if (RecFlag == 1)
	{
		if(SBUF == 0x2c)
			NumComa++;

		/* 第5个逗号之后的字符属于经度数据 */
		if (NumComa == 3)
		{
			StrGpsLgd[IGpsLgd] = SBUF;	// 存入字符串StrGps
			P2=SBUF;
			IGpsLgd++;
		}

		/* 判断是否收到GPRMC格式语句的字符"*",
		其数值为0x2a,收到则结束记录 */	
		if (SBUF == 0x2a)
		{
			StrGpsLgd[IGpsLgd] = '\0';	// 字符串的结束符
			RecFlag = 0;
			IGpsLgd = 0;				// 经度数据计数变量置0
			NumComa = 0;				// 逗号计数变量置0

			/* 延时半秒钟后重新接收新的GPS定位信息中的经度信息 */
			REN = 0;
			delay(100);					// 延时500ms
			REN = 1;
		}
	}	
}


void main()
{
	/* 初始化串口 */
	TMOD = 0x20;	
	TL1= 0xfd;
	TH1 = 0xfd;
	SCON = 0x40;		// 方式1:10位异步收发,波特率由定时器控制。REN=0。
	PCON = 0x00;		// SMOD = 0
	IE = 0x90;			// EA = 1,ES = 1
	TR1 = 1;			// 定时器1启动
	DisableAllOut();
	EnableGPRMC();
//	init();
	StrGpsLgd[9]='z';
	delay(100);		// 延时1s
	REN = 1;			// REN = 1,开始接收数据
	while(1);
//	{	wrtc(0x80);	
//		for(i=0;i<10;i++)wrtd(StrGpsLgd[i]);	
//		disp("czk",1,0);;
//	}	
}

/* 配置GPS模块禁用所有输出语句 */
void DisableAllOut()
{
	/* 发送语句:$PGRMO,,2 */
	printf("$PGRMO,,2");
}
/* 配置GPS模块使能$GPRMC输出语句 */
void EnableGPRMC()
{
	/* 发送语句:$PGRMO,GPRMC,1 */
	printf("$PGRMO,GPRMC,1");
}


⌨️ 快捷键说明

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