⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maintest5.c

📁 车载监控程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -