?? gsm_gps1.c
字號(hào):
counter=0;
}
}
void Key_ReadSMS(void)
{
uchar ReadFlg;
uchar i;
//ES=1;
for(i=20;i<=30;i++)
{
uchar j,k;
j=0x30+(i/10);
k=0x30+(i%10);
chn_disp2("讀取第",0,6,0x80);
Char_Display2(i);
chn_disp2("條信息..",0,8,0x84);
ReadFlg=ReadMsg(j,k);
//clrram();
switch(ReadFlg)
{
case 1:
chn_disp2("無(wú)信息",0,8,0x92);
break;
case 2:
AlarmMode=1;
SetMode=1;
chn_disp2("短信報(bào)警",0,8,0x92);
break;
case 3:
AlarmMode=2;
SetMode=2;
chn_disp2("撥號(hào)報(bào)警",0,8,0x92);
break;
case 4:
AlarmMode=0;
SetMode=3;
chn_disp2("報(bào)警關(guān)閉",0,8,0x92);
break;
case 5:
Start_GSM();
chn_disp2("初始化GSM",0,9,0x92);
break;
case 6:
//Key_DeleteSMS();
chn_disp2("刪除信息",0,8,0x92);
SetMode=4;
break;
case 7:
chn_disp2("設(shè)置號(hào)碼",0,8,0x92);
SetMode=5;
break;
case 8:
chn_disp2("ERROR",0,5,0x92);
//SetMode=0;
break;
default:
chn_disp2("讀取錯(cuò)誤",0,8,0x92);
//SetMode=0;
break;
}
delay1(600);
clrram();
}
}
void Key_DeleteSMS(void)
{
uchar i;
ES=0;
for(i=21;i<=40;i++)
{
uchar j,k;
j=0x30+(i/10);
k=0x30+(i%10);
EraseMsg(j,k);
chn_disp2("刪除第",0,6,0x80);
Char_Display2(i);
chn_disp2("條信息..",0,8,0x84);
delay1(500);
}
chn_disp2("短信刪除成功",0,12,0x90);
delay1(500);
clrram();
ES=1;
}
void Start_System(void)
{
Init_lcd();
chn_disp2("GSM 智能監(jiān)控系統(tǒng)",0,16,0x80);
chn_disp2("初始化",0,6,0x92);
delay1(400);
int_disp1(0x07,0x95);
delay1(400);
int_disp2(0x07);
delay1(400);
int_disp2(0x07);
delay1(400);
clrram();
}
//..............延時(shí)子程序............................................
/*void delay (uint us) //delay((us+1)*5) us
{
while(us--);
} */
void delay1 (uint ms) //delay ms
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay2(5);
}
void delay2(uint us) //delay2us
{
while(--us);
}
//*****************GPS*******************************
//*********************************************************************************
void GPS_Handle(void)
{
//---------------------------------------------
//----------------------------------------------
uchar tmp;
if(RI)
// if(StartBitOn())
{
tmp=SBUF;
//tmp=GPS_GetChar();
switch(tmp)
{
case '$':
cmd_number=0; //命令類型清空
mode=1; //接收命令模式
byte_count=0; //接收位數(shù)清空
break;
case ',':
seg_count++; //逗號(hào)計(jì)數(shù)加1
byte_count=0;
break;
case '*':
switch(cmd_number)
{
case 1:
buf_full|=0x01;
break;
case 2:
buf_full|=0x02;
break;
case 3:
if(cmd[4]=='A')
{
cmd_number=1;
mode=2;
seg_count=0;
byte_count=0;
}
}
/* else if(cmd[3]=='S')
{
if(cmd[4]=='V')
{
cmd_number=2;
mode=2;
seg_count=0;
byte_count=0;
}
} */
}
else if(cmd[2]=='R')
{
if(cmd[3]=='M')
{
if(cmd[4]=='C')
{
cmd_number=3;
mode=2;
seg_count=0;
byte_count=0;
}
}
}
}
}
}
}
else if(mode==2)
{
//接收數(shù)據(jù)處理
switch (cmd_number)
{
case 1: //類型1數(shù)據(jù)接收。GPGGA
switch(seg_count)
{
case 2: //緯度處理
if(byte_count<9)
{
WD[byte_count]=tmp;
}
break;
if(byte_count<1)
{
JD_a=tmp;
}
break;
lock=tmp;
}
break;
case 7: //定位使用的衛(wèi)星數(shù)
if(byte_count<2)
{
use_sat[byte_count]=tmp;
}
break;
case 9: //高度處理
if(byte_count<6)
{
high[byte_count]=tmp;
}
break;
}
break;
/* case 2: //類型2數(shù)據(jù)接收。GPGSV
switch(seg_count)
{
case 3: //天空中的衛(wèi)星總數(shù)
if(byte_count<2)
{
total_sat[byte_count]=tmp;
}
break;
}
break; */
case 3: //類型3數(shù)據(jù)接收。GPRMC
switch(seg_count)
{
case 1:
if(byte_count<6)
{ //時(shí)間處理
time[byte_count]=tmp;
}
break;
case 7: //速度處理
if(byte_count<5)
{
speed[byte_count]=tmp;
}
break;
/* case 8: //方位角處理
if(byte_count<5)
{
angle[byte_count]=tmp;
}
break; */
}
break;
}
}
byte_count++; //接收數(shù)位加1
break;
}
}
RI=0;
}
//-----------------系統(tǒng)顯示界面--------------------
void Time_Disp(void)
{
static uchar m;
uchar i=0,j,t1,t2;
if(m==0)
{
delay1(300);
m=1;
}
chn_disp2("時(shí)間:",0,6,0x80);
t1=(time[0]-0x30);
t2=(time[1]-0x30);
i=(t1*10)+t2;
i+=8;
i%=24;
int_disp2(0x30+i/10); //顯示數(shù)據(jù)的ASCII值
int_disp2(0x30+i%10);
for(j=2;j<6;j++)
{
i=time[j];
if((j==2)||(j==4))
{
int_disp2(0x3a); //插入":"
}
int_disp2(i);
}
int_disp2(0x20);
int_disp2(0x20);
chn_disp2("衛(wèi)星信號(hào):",0,10,0x90);
chn_disp1(use_sat,0,2,0x95);
int_disp2(0x20); //空格符號(hào)顯示
int_disp2(0x20);
int_disp2(0x20);
int_disp2(0x20);
//delay1(100);
//clrram();
}
//-------------------------------------------------------------
void JDWD_Disp(void)
{
static uchar m;
if(m==0)
{
delay1(500);
m=1;
}
if((use_sat[1]==0x30)&&(use_sat[2]==0x30))
{
clrram();
chn_disp2("無(wú)定位信號(hào)!",0,12,0x81);
delay1(100);
}
else
{
chn_disp2("緯度:",0,6,0x80);
chn_disp1(WD,0,9,0x83);
int_disp2(0x20); //空格符號(hào)顯示
chn_disp2("經(jīng)度:",0,6,0x90);
chn_disp1(JD,0,10,0x93);
}
//delay1(500);
//clrram();
}
//************************主程序*****************************************************
void main(void)
{
Start_System();
//Init_lcd();
//-----------------------------
RELAY1=1; //繼電器........
RELAY2=1;
//Infrared=0;
Init_Serial();
TMOD=0x12;
EA=1;
ES=0;
IP=0x10; //設(shè)置串口中斷優(yōu)先級(jí)
ET0=1;
ET1=1;
TR0=0;
TH0=(256-192); //4800 就是1000000/4800=208.33微秒,執(zhí)行的時(shí)間是208.33*11.0592/12=192
TL0=TH0;
TH1=0X8a;
TL1=0Xd0;
//TR0=1; //啟動(dòng)定時(shí)器0,1
//TR1=1;
//EX0=1; //開(kāi)外部中斷0,低電平觸發(fā)
//IT0=1;
Init_GSM(1);
ES=1;
while(1)
{
static uchar WTD_Timer;
static uchar ReadSMS_Timer;
static uint Sleep_Timer;
//------------------------------
//GPS_Handle();
if(Sleep_Timer>300)
{
JDWD_Disp();
if(Sleep_Timer>400)
{
Sleep_Timer=0;
}
}
else
{
Time_Disp();
}
//-------------------------------------------------------
if(RT_SK_Flag)
{
TR1=0;
ES=0;
RT_SK_Flag=0;
keyPtr=KeyJudge(); //鍵盤(pán)掃描判斷
if(keyPtr!=0x55) //如果有鍵按下則處理
{
//Init_lcd ();
clrram();
KeyHandle(keyPtr);
delay1(1000);
}
if(NewSMS_Flag) //有新信息則自動(dòng)讀取
{
clrram();
NewSMS_Flag=0;
Key_ReadSMS();
}
//Infrared_Monitor(); //調(diào)試程序可以時(shí)暫時(shí)關(guān)閉
//---遠(yuǎn)程設(shè)置報(bào)警方式,成功則發(fā)信息提示--------
if(SetMode)
{
// uchar i,j;
switch(SetMode)
{
case 1:
Send_SMS2("AlarmMode SMS!");
break;
case 2:
Send_SMS2("AlarmMode Call!");
break;
case 3:
Send_SMS2("AlarmMode OFF!");
break;
case 4:
Key_DeleteSMS();
Send_SMS2("Delete SMS Succeed!");
break;
case 5:
AlarmPhone_Set();
Send_SMS2(Phone);
break;
default:
break;
}
SetMode=0;
}
WTD_Timer++;
ReadSMS_Timer++;
Sleep_Timer++;
TR1=1;
ES=1;
} //if
//-----------------------------------------------------
if(GPS_RF)
{
GPS_Handle();
GPS_RF=0;
}
if(WTD_Timer>100)
{
GSM_WTD();
WTD_Timer=0;
}
if(URAT_Flag)
{
NewSMS_Read();
Ring_Display();
URAT_Flag=0;
}
Sleep_Timer++;
} //while
} //main
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -