📄 maintest5.c
字号:
int_disp3(0xa1,0xe6,0x87);
//---------------------------
flag=RST_1820();
if(!flag)
{
chn_disp2("连接成功",0,8,0x92);
teData=Read_Temp();
while((teData==0x7f5e)|(teData==0x5500))
{
teData=Read_Temp();
}
tempxs=teData&0x00ff;
teData>>=8;
tempzs=teData&0x00ff;
Char_Display(tempzs,0x83);
int_disp2(0x2e);
Char_Display2(tempxs);
if(tempzs>=TemperH)
{
chn_disp2("高温报警",0,8,0x92);
if(AlarmSF==0)
{
uchar i;
for(i=0;i<3;i++)
{
RELAY2=0;
delay1(50);
RELAY2=1;
delay1(50);
}
//---------------报警方式判断-------------------------------
if(AlarmMode==0)
{
//Send_SMS2(tab2);
}
else
{
Call();
}
//-----------------------------------------------
AlarmSF=1;
}
}
else
{AlarmSF=0;}
}
else
{
chn_disp2("连接失败",0,8,0x92);
}
delay1(100);
}
//-----------------GSM---------------
//---------发送一个ASCII码-------------------------
void SendASC(uchar ASC)
{
bit es;
es=ES;
ES=0; //关闭中断
TI=0;
SBUF=ASC;
while(!TI);
TI=0;
ES=es;
}
//------------发送AT命令到TC35I--------------------------
void SendCmdToTc35i(uchar *p)
{
uchar len;
len=strlen(p);
while(len--)
{
SendASC(*p++);
}
}
void Start_GSM(void) //由单片机控制GSM启动
{
StartGSM=0;
delay1(150);
StartGSM=1;
delay1(500);
}
void Init_GSM(uchar mode) //初始化TC35I:mode=0,PDU模式;mode=1,TEXT模式
{ //ipr=9600
//bit AtFlag;
Start_GSM();
//delay1(1000);
SendCmdToTc35i("AT+IPR=9600\r");
delay1(500);
switch(mode)
{
case 0:
SendCmdToTc35i("AT+CMGF=0\r");
break;
case 1:
SendCmdToTc35i("AT+CMGF=1\r");
break;
default:
chn_disp2("TC35初始化失败",0,14,0x90);
break;
}
}
//-------------Call and Cancel-------------------------------------
void Call(void)
{
SendCmdToTc35i("ATD");
SendCmdToTc35i(Phone);
chn_disp2("拨号15859284830",0,15,0x80);
delay1(1000);
clrram();
}
void Cancel(void)
{
SendCmdToTc35i("ATH\r");
chn_disp2("ESC",0,3,0x93);
delay1(500);
clrram();
}
//-------------删除sim卡内短信息------------------------
void EraseMsg(uchar index)
{
SendCmdToTc35i("AT+CMGD=");
SendASC(index);//指出第几个
SendASC(0x0d);
//ES=1;
}
//---------------发送英文短信息------------------
void Send_SMS2(uchar *p)
{
//bit SmsFlag=0;
//uchar temp=0;
SendCmdToTc35i("AT+CMGF=1\r");
delay1(500);
SendCmdToTc35i("AT+CMGS=15859284830\r");
delay1(2000);
/*timer=0;
TR1=1;
while(1)
{
temp=SBUF;
RI=0;
if(temp==0x3e) //收到">"标志
{
SmsFlag=1;
break;
}
if(timer>40)
{
timer=0;
TR1=0;
break;
}
}
if(SmsFlag) //连接成功,则发送信息
{ */
SendCmdToTc35i(p);
delay1(100);
SendASC(0x1a);
//SendCmdToTc35i("\r");
chn_disp2("发送报警信息....",0,16,0x80);
delay1(1000);
clrram();
// }
}
//---------------发送中文短消息------------------
void Send_SMS(uchar *p)
{
uchar tmp=0;
ES=0;
SendCmdToTc35i("AT+CMGF=0\r");
delay1(500);
SendCmdToTc35i("AT+CMGS=38\r"); //??
delay1(1000);
timer=0;
TR0=1;
while(1)
{
tmp=SBUF;
RI=0;
if(tmp==0x3e||tmp==0x41)
break;
if(timer>40)
{
timer=0;
TR0=0;
break;
}
}
SendCmdToTc35i("089168");
SendCmdToTc35i(smsCenter_pdu);
SendCmdToTc35i("11000B81");
SendCmdToTc35i(Phone_pdu);
SendCmdToTc35i("0008A7188BF76CE8610FFF1A");
SendCmdToTc35i(p);
SendASC(0X1A);
}
/*-----------------ds18b20---------------------------------------*/
bit RST_1820(void)
{
uchar us=30;
bit Rly=1;
//DQ=1;
//delay2(1);
DQ=0;
delay2(250);
DQ=1;
delay2(10);
while(--us)
{
if(DQ==0)
{
Rly=DQ;
delay2(100);
break;
}
}
DQ=1;
return(Rly);
}
uchar Read_Byte(void)
{
uchar i,temp;
uchar teData=0;
for(i=0;i<8;i++)
{
teData>>=1;
DQ=0;
delay2(1);
DQ=1;
temp=P1&0x04;
if(temp)
{
teData|=0x80;
}
delay2(22);
DQ=1;
}
return(teData);
}
void Write_Byte(uchar tecode)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
delay2(2);
DQ=tecode&0x01;
delay2(22);
DQ=1;
tecode>>=1;
}
DQ=1;
}
uint Read_Temp(void)
{
uchar temph=0;
uchar templ=0;
uchar tempxs=0;
uchar tempzs=0;
uint teData=0;
//bit Rst_Flg=1;
//Rst_Flg=RST_1820();
//if(Rst_Flg==0)
//{
// Rst_Flg=1;
Write_Byte(0xcc);
delay2(1);
Write_Byte(0x44);
delay2(40);
RST_1820();
Write_Byte(0xcc);
delay2(2);
Write_Byte(0xbe);
templ=Read_Byte(); //低8位数据
temph=Read_Byte(); //高8位数据
tempxs=templ&0x0f; //小数
templ>>=4;
temph<<=4;
temph&=0x7f;
tempzs=temph|templ; //整数
switch(tempxs) //小数处理
{
case(0):
tempxs=0;
break;
case(1):
tempxs=6;
break;
case(2):
tempxs=13;
break;
case(3):
tempxs=19;
break;
case(4):
tempxs=25;
break;
case(5):
tempxs=31;
break;
case(6):
tempxs=38;
break;
case(7):
tempxs=44;
break;
case(8):
tempxs=50;
break;
case(9):
tempxs=56;
break;
case(10):
tempxs=63;
break;
case(11):
tempxs=69;
break;
case(12):
tempxs=75;
break;
case(13):
tempxs=81;
break;
case(14):
tempxs=88;
break;
case(15):
tempxs=94;
break;
default: break;
}
teData=tempzs; //数据合并
teData<<=8;
teData|=tempxs;
return teData;
//}
}
//--------------Key Function----------------------------------------
void Key_IncHT(void)
{
chn_disp2("报警温度:",0,9,0x90);
TemperH++;
Char_Display2(TemperH);
//clrram ();
}
void Key_DecHT(void)
{
chn_disp2("报警温度:",0,9,0x90);
TemperH--;
Char_Display2(TemperH);
//clrram ();
}
void Key_SetHT(void) //Set the highest temperature
{
uchar i;
uchar temph[2];
TR0=0;
chn_disp2("报警温度:",0,9,0x90);
Char_Display2(TemperH);
/* while(1)
{
keyPtr=KeyJudge();
if(keyPtr==0x55)
{
break;
}
}
/*
for(i=0;i<2;i++)
{
do
{
temph[i]=keyJudge();
}while(keyPtr==0x55);
//chn_disp2("报警温度:",0,10,0x80);
int_disp2(tab1[temph[i]]);
}
TemperH=(temph[0]*10+temph[1]);
Char_Display(TemperH,0x85);
delay1(500);
/* while(keyPtr!=12)
{
//delay1(500);
while(keyFlag==0)
{
keyPtr=KeyJudge();
//if(keyPtr=12)
//{
//KeyHandle(keyPtr);
// }
}
TemperH=keyPtr;
int_disp1(tab1[TemperH],0X85);
//keyPtr=KeyJudge();
while(keyPtr==0x55)
{
keyPtr=KeyJudge();
//if(keyPtr=12)
//{
//KeyHandle(keyPtr);
// }
}
TemperH=(TemperH*10+keyPtr);
Char_Display(TemperH,0x85);
}
*/
TR0=1;
}
void Key_SendSMS(void)
{
uchar *p;
bit SmsFlag;
Send_SMS2(tab2);
timer=0;
TR0=1;
while(1)
{
uchar i;
for(i=0;i<10;i++)
{
rsBuf[i]=SBUF;
}
RI=0;
p=strstr(rsBuf,"OK"); //查找是否收到发送成功标志
if(p!=NULL)
{
SmsFlag=1;
break;
}
if(timer>100)
{
SmsFlag=0;
timer=0;
TR0=0;
break;
}
}
if(SmsFlag)
{
chn_disp2("发送成功",0,8,0x92);
delay1(1000);
}
}
void Key_SetAlarmMode(void)
{
static counter=0;
counter++;
if(counter%2)
{
AlarmMode=1;
chn_disp2("电话报警",0,8,0x92);
//delay1(500);
}
else
{
AlarmMode=0;
chn_disp2("报警关闭",0,8,0x92);
//delay1(500);
}
}
void Key_ReadSMS(void)
{
}
void Key_DeleteSMS(void)
{
}
void Key_Esc(void) //Esc
{
//main();
}
void Start_System(void)
{
Init_lcd();
chn_disp2("GSM 自动监控系统",0,16,0x80);
chn_disp2("初始化....",0,10,0x92);
delay1(1000);
clrram();
}
//..............延时子程序............................................
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -