C52控制GPS程序

时间:2026-01-20

#include <reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit E=P2^7; //1602使能端
sbit RW=P2^6; //1602读写选择
sbit RS=P2^5; //

bit ReceivingF = 0; //开始接收标志
bit EndF = 0; //结束标志
bit RMCF = 0; //$GPRMC
bit GGAF = 0; //$GPGGA
bit VTGF = 0; //$GPVTG
bit GSAF = 0; //$GPGSA
bit NewByteF;

uchar GPS_time[9]; //UTC时间
uchar GPS_wd[12]; //纬度
uchar GPS_jd[13]; //经度
uchar GPS_warn; //定位警告
uchar GPS_quality; //定位质量
uchar GPS_status; //定位状态
uchar GPS_alt[8]; //海拔
uchar GPS_sv[3]; //使用卫星
uchar GPS_speed[10]; //速度
uchar GPS_date[9]; //UTC日期

uchar Segment; //逗号计数
uchar Bytes_counter;
uchar Command;
uchar num = 10; //1602重复次数

void GPRMC(uchar);
void GPGGA(uchar);
void GPVTG(uchar);
void GPGSA(uchar);
void GPS(uchar);

void delay_10ms(uint del) //延时10ms*del
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)
;
}

void delay()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++)
;
}

void enable(uchar del)
{
P0 = del;
RS = 0;
RW = 0;
E = 0;
delay();
E = 1;
delay();
}

void write(uchar del)
{
P0 = del;
RS = 1;
RW = 0;
E = 0;
delay();
E = 1;
delay();
}

void L1602_init(void)
{
enable(0x01);
enable(0x38);
enable(0x0c);
enable(0x06);
enable(0xd0);
}

void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
enable(a);
while(1)
{
if(*p == '\0') break;
write(*p);
p++;
}
}

void Com_init(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率9600
TL1 = 0xFd;
TR1 = 1;//启动定时器1
ES = 1;//开串口中断
EA = 1;//开总中断
}

void GPS_interrupt() interrupt 4
{
if(RI == 1)
{
EA = 0;
GPS(SBUF);
}
RI = 0;
EA = 1;
}

void GPS(uchar tmp)
{
if(tmp == '$')//起始标志
{
Command = 0;
ReceivingF = 1;
Bytes_counter = 0;
Segment = 0; //清空语句段计数器
return;
}
if(ReceivingF)
{
if(tmp == ',')
{
++Segment;
Bytes_counter = 0; //清空段字节计数器
return;
}
if(tmp == '*')//收到结束标志
{
ReceivingF = 0;
EndF = 1;
return;
}
if(Segment == 0)
{
if(Bytes_counter == 3) //段0,语句类型判断
switch(tmp)
{
case 'G':Command = 1;//语句类型 $GPGGA
GGAF = 1;
break;
cas

C52控制GPS程序.doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219