91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 40KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-29
  • 語言: 其他
  • 標簽: GPS數據??LCD1602??

資源簡介

利用Keil C編寫的程序,實現解析GPS采集到的數據,包括10位經度、9位緯度、4位速度、6位北京時間、6位日期,用LCD1602顯示出來,并顯示相應的提示語言。本程序經過本人的測試,將GPS通過串口連接到單片機,再將單片機連接上LCD1602,在空曠的地方可以完全實現GPS數據采集和解析。

資源截圖

代碼片段和文件信息

/*-------------------主函數---------------------*/
#include?“LCD1602.h“

typedef?unsigned?char?uchar;

//GPS數據存儲數組
uchar?Time[6]; //時間——hhmmss
uchar?WD[9]; //緯度
uchar?JD[10]; //經度
uchar?Speed[4]; //速度
uchar?Date[6]; //日期——ddmmyy

//串口中斷需要的變量
uchar?seg_count; //逗號計數器
uchar?byte_count; //位數計數器
uchar?cmd_number;? //命令類型
uchar?mode; //0:結束模式,1:命令模式,2:數據模式
uchar?buf_full; //0:緩存數據無效;1:整句接收完成,相應數據有效
uchar?cmd[5]; //命令類型存儲數組

//需要顯示的變量
unsigned?int?dsp_count; //刷新次數計數器

void?SYS_Init(); //系統初始化

void?main()?
{
uchar?iTime0Time1;
SYS_Init(); //系統初始化
while(1)
{
if(buf_full==0) //緩沖數據無效,無GPS信號
{
dsp_count++; //刷新次數計數器值自增
if(dsp_count>=65000)
{
LCD_Write_String(00“No?GPS?Data...?“); //從第1行首顯示
while(buf_full==0); //當有GPS信號時退出循環,否則阻塞
dsp_count=0;
}
}
else?if(buf_full) //有GPS信號
{
LCD_Write_String(00“GPS?System!????“);
//顯示經度
LCD_Write_String(01“JD:???????????E“);
for(i=0;i<10;i++)
LCD_Write_Char(3+i1JD[i]);
DelayMs(10000);
//顯示緯度
LCD_Write_String(01“WD:???????????N“);
for(i=0;i<9;i++)
LCD_Write_Char(3+i1JD[i]);
DelayMs(10000);
//顯示時間
LCD_Write_String(01“BJT:???:??:????“);
//將格林尼治時間轉換為北京時間
if(((Time[1]-0x30)+(Time[0]-0x30)*10)<16)
{
Time0=((Time[1]-0x30)+8)/10+(Time[0]-0x30); //獲得小時的十位數
Time1=((Time[1]-0x30)+8)%10; //獲得小時的個位數
}
else?if(((Time[1]-0x30)+(Time[0]-0x30)*10)>15)
{
Time0=0;
Time1=((Time[1]-0x30)+(Time[0]-0x30)*10)-16;
}
Time0=Time0+0x30; //將數字轉換為字符
Time1=Time1+0x30;
LCD_Write_Char(51Time0);
LCD_Write_Char(61Time1);
LCD_Write_Char(81Time[2]);
LCD_Write_Char(91Time[3]);
LCD_Write_Char(111Time[4]);
LCD_Write_Char(121Time[5]);
DelayMs(10000);
//顯示速度
LCD_Write_String(01“Speed:????????“);
for(i=0;i<4;i++)
LCD_Write_Char(7+i1Speed[i]);
DelayMs(10000);
//顯示日期
LCD_Write_String(01“Date:20??-??-??“);
LCD_Write_Char(71Date[4]); //顯示年份
LCD_Write_Char(81Date[5]);
LCD_Write_Char(101Date[2]); //顯示月份
LCD_Write_Char(111Date[3]);
LCD_Write_Char(131Date[0]); //顯示天數
LCD_Write_Char(141Date[1]);
DelayMs(10000);

dsp_count=0; //刷新次數計數器值清0
buf_full&=~0x01;
}
}
}

void?SYS_Init()
{
SCON=0x50; //串口工作方式1,10位異步通信,允許接收
TMOD=0x20; //T1工作方式28位初值自動重裝
TH1=0xFD; //波特率9600bps,晶振11.0592MHz
TL1=TH1;
TR1=1; //啟動定時器1
LCD_Init(); //初始化LCD1602
LCD_Clear(); //清屏
LCD_Write_String(00“GPS?System!“);
IE=0x90; //EA=1開總中斷,ES=1開串行口中斷
}

//串口接收中斷
void?Serial()?interrupt?4
{
uchar?temp;
if(RI)
{
temp=SBUF;
switch(temp)
{
case?‘$‘:
cmd_number=0;
mode=1; //接收命令模式
byte_count=0; //位數計數器清零
break;
case?‘‘:
seg_count++; //逗號計數加1
byte_count=0; //位數計數器清零
break;
case?‘*‘:
mode=0; //結束模式
buf_full=1; //整句接收完成
break;
default:
if(mode==1) //命令模

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-03-20?14:26??解析GPS數據并顯示\
?????文件???????18244??2012-03-20?14:16??解析GPS數據并顯示\GPSData
?????文件????????4370??2012-03-20?14:16??解析GPS數據并顯示\GPSData.c
?????文件????????3781??2012-03-20?14:16??解析GPS數據并顯示\GPSData.hex
?????文件??????????62??2012-03-20?14:16??解析GPS數據并顯示\GPSData.lnp
?????文件???????12298??2012-03-20?14:16??解析GPS數據并顯示\GPSData.LST
?????文件???????18132??2012-03-20?14:16??解析GPS數據并顯示\GPSData.M51
?????文件???????11983??2012-03-20?14:16??解析GPS數據并顯示\GPSData.OBJ
?????文件????????5380??2012-03-20?14:26??解析GPS數據并顯示\GPSData.plg
?????文件???????55655??2012-03-20?14:26??解析GPS數據并顯示\GPSData.uvopt
?????文件???????13403??2012-03-19?18:54??解析GPS數據并顯示\GPSData.uvproj
?????文件???????55659??2012-03-20?14:26??解析GPS數據并顯示\GPSData_uvopt.bak
?????文件???????13235??2012-03-19?18:52??解析GPS數據并顯示\GPSData_uvproj.bak
?????文件????????3145??2012-03-20?10:37??解析GPS數據并顯示\LCD1602.c
?????文件?????????658??2012-03-20?10:37??解析GPS數據并顯示\LCD1602.h
?????文件????????6933??2012-03-20?14:16??解析GPS數據并顯示\LCD1602.LST
?????文件????????8797??2012-03-20?14:16??解析GPS數據并顯示\LCD1602.OBJ

評論

共有 條評論