单片机源程序如下:
#include "common.h"
#include "uart.h"
#include "gps.h"
#include "gsm.h"
#include "lcd.h"
#define GPS_STR_LEN 48
uchar ess_inc;
//char xdata GPS_SEND_STR[GPS_STR_LEN];
sbit key = P1^3;
sbit key1 = P1^4;
sbit GPS_EN=P3^4;
sbit led1 = P3^3;
#define RMC_YES led1 = 0
#define RMC_NO led1 = 1
GPS_INFO GPS; //GPS信息结构体
bit GPS_rx_flag = 0;
bit GPS_Have_flag = 0;
#define SEND_NUMBER "AT+CMGS="13420106297"rn"
char xdata send_data[37]="N: ',E: ',2000-00-00,00:00rn";
unsigned char send_len= 0;
bit dis_flag = 1;
bit sendflag=0;
/****************************************
显示时间
/****************************************/
void GPS_DispTime(void)
{
uchar i = 0;
uchar ch;
char time[5];
Int_To_Str(GPS.D.year,time);//年
LCD1602_Set_AC(0, 1);
i = 0;
send_len = 18;
while(time[i] != '')
{
ch = time[i++];
LCD1602_write_data(ch);
send_data[send_len++] = ch;
}
LCD1602_write_data('-');
Int_To_Str(GPS.D.month,time);//月
LCD1602_Set_AC(5, 1);
i = 0;
send_len = 23;
while(time[i] != '')
{
ch = time[i++];
LCD1602_write_data(ch);
send_data[send_len++] = ch;
}
LCD1602_write_data('-');
Int_To_Str(GPS.D.day,time);//日
LCD1602_Set_AC(8, 1);
i = 0;
send_len = 26;
while(time[i] != '')
{
ch = time[i++];
LCD1602_write_data(ch);
send_data[send_len++] = ch;
}
LCD1602_write_data(',');
Int_To_Str(GPS.D.hour,time);//时
LCD1602_Set_AC(11, 1);
i = 0;
send_len = 29;
while(time[i] != '')
{
ch = time[i++];
LCD1602_write_data(ch);
send_data[send_len++] = ch;
}
LCD1602_write_data(':');
Int_To_Str(GPS.D.minute,time);//分
LCD1602_Set_AC(14, 1);
i = 0;
send_len = 32;
while(time[i] != '')
{
ch = time[i++];
LCD1602_write_data(ch);
send_data[send_len++] = ch;
}
}
void GPS_DisplayOne(void)
{
uchar len,ch, i;
char info[10];
ess_inc = 0;
// memset(GPS_SEND_STR, 0, GPS_STR_LEN);
if (GPS.NS == 'N') //判断是北纬还是南纬
{
if(dis_flag)
LCD1602_DisplayChar(0, 0, 'N');
else
LCD1602_DisplayChar(0, 0, ' ');
// GPS_SEND_STR[ess_inc ++] = 'N';
len = 0;
Int_To_Str(GPS.latitude_Degree,info); //纬度
LCD1602_Set_AC(1, 0);
i = 0;
send_len = 2;
while(info[i] != '')
{
ch = info[i++];
if(dis_flag)
LCD1602_write_data(ch);
else
LCD1602_write_data(' ');
send_data[send_len++] = ch;
// GPS_SEND_STR[ess_inc ++] = ch;
len ++;
}
send_data[send_len++] = 'd';
if(dis_flag)
LCD1602_write_data(0xDF);
else
LCD1602_write_data(' ');
// GPS_SEND_STR[ess_inc ++] = 'd';
len ++;
Int_To_Str(GPS.latitude_Cent,info); //纬分
i = 0;
while(info[i] != '')
{
ch = info[i++];
if(dis_flag)
LCD1602_write_data(ch);
else
LCD1602_write_data(' ');
send_data[send_len++] = ch;
// GPS_SEND_STR[ess_inc ++] = ch;
len ++;
}
if(dis_flag)
LCD1602_write_data(0x27);
else
LCD1602_write_data(' ');
// GPS_SEND_STR[ess_inc ++] = 'm';
Int_To_Str(GPS.latitude_Second,info); //纬秒
i = 0;
while(info[i] != '')
{
ch = info[i++];
// GPS_SEND_STR[ess_inc ++] = ch;
}
// GPS_SEND_STR[ess_inc ++] = 's';
len ++;
while(7 - len)
{
len ++;
LCD1602_write_data(' ');
}
}
// GPS_SEND_STR[ess_inc] = ',';
ess_inc += 1;
if (GPS.EW == 'E') //判断是东经还是西经
{
if(dis_flag)
LCD1602_DisplayChar(8, 0, 'E');
else
LCD1602_write_data(' ');
// GPS_SEND_STR[ess_inc ++] = 'E';
len = 0;
Int_To_Str(GPS.longitude_Degree,info); //经度
LCD1602_Set_AC(9, 0);
i = 0;
send_len = 11;
while(info[i] != '')
{
ch = info[i++];
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』