/*第一次发为5s后 第二、三次发在10s后*/
#include<reg52.h>
#include<ds18b20.h>
#include "intrins.h"
#define unchar unsigned char
#define unint unsigned int
unchar AT [] = {"AT\r\n"};
unchar PHONE [] = {"AT+CMGS=\"15651833903\"\r\n"};
unchar text[]={"Temperature: . "};//\r"};
unchar code MODE [] = {"AT+CMGF=1\r\n"};
unchar code center[]={"AT+CSCA=\"+8613800250500\"\r\n"};
unsigned char code net[] = {"Temperature"};
void main(void);//主函数
void Ini_UART(void);//函数初始化
void Delay(void);//延时函数
void CSCA(void);//短信中心
void CMGF(void);//设置发送为TEXT格式
void CMGS(void);//设置发送号码
void SEND(void);//设置发送内容
void END(void);//设置结束
void CC(void);
//void send_mes1(void);
//void send_mes2(void);
//void delayms(unint m);
void Sendcmd(unchar *cmd); //发送AT命令
void Sendchar(unchar c); //发送一个字符
void Delayll(void);
unchar ReadDataLCM(void);
void LCMInit(void);
void DisplayOneChar(unchar hX, unchar Y, unchar DData);
void DisplayListChar(unchar X, unchar Y, unchar *DData);
void Delay5Ms(void);
void Delay400Ms(void);
extern unsigned char idata temp_buff[9];
sbit led=P1^0;
sbit sound=P1^1;
sbit adc=P1^2;
sbit sub=P1^3;
sbit led1=P1^4;
void main()
{
int o=0,p=0,q=0,set=300,x=0,y=0,z=0,time=0,s=0;
Delay400Ms();
LCMInit();
Delay5Ms();
ReadDataLCM();
while(1)
{
led1=0;
ReadTemp();
o=temp_value*10%1000/100+48;
p=temp_value*10%100/10+48;
q=dotvalue+48;
if((q>57)|(q<48))
{
q=48;
}
DisplayOneChar(0, 1, o);
DisplayOneChar(1, 1, p);
DisplayOneChar(2, 1,46);
DisplayOneChar(3, 1, q);
DisplayOneChar(4, 1, 223);
DisplayOneChar(5, 1, 67);
DisplayListChar(0, 0, net);
text[12]=o;
text[13]=p;
text[15]=q;
if(adc==0)
{
Delay5Ms();
if(adc==0)
{
set++;
}
}
if(sub==0)
{
Delay5Ms();
if(sub==0)
{
set--;
}
}
x=set%1000/100+48;
y=set%100/10+48;
z=set%10+48;
DisplayOneChar(10, 1, x);
DisplayOneChar(11, 1, y);
DisplayOneChar(12, 1,46);
DisplayOneChar(13, 1, z);
DisplayOneChar(14, 1, 223);
DisplayOneChar(15, 1, 67);
if((set-((o-48)*100+(p-48)*10+(q-48))>35)|(((o-48)*100+(p-48)*10+(q-48)-set)>35))
{
sound=0;
}
else
{
sound=1;
}
if(sound==0)
{
time++;
Delay5Ms();
if(s>1)
{
Delay5Ms();
}
if(time==201)
{
time=0;
}
}
if((sound==0)&(time==200))
{
led1=1;
Delayll();
led=0;
Delayll();
/* send_mes1();
delayms(230);
send_mes2();
delayms(230);*/
Ini_UART();
Delay();
Sendcmd("AT\r\n"); // Sendchar(0x0D);
// Sendchar(0x0A);
// CC();
Delay();
CMGF();
Delay();
CSCA();
/*Sendcmd("AT+CSCA=");
Sendchar('"');
Sendcmd("+8613800250500");
Sendchar('"');
Sendcmd("/r");
led=1;*/
Delay();
CMGS();
/*Sendcmd("AT+CMGS=");
Sendchar('"');
Sendcmd("15189840622");
Sendchar('"');
Sendcmd("/r");*/
led=0;
Delay();
SEND();
Delayll();
END();
Delayll();
led=1;
time=0;
s++;
}
}
}
void Delayll(void)
{
int i,j,k;
for(j=0;j<5;j++)
for(i=0;i<100;i++)
for(k=0;k<250;k++)
;
}
void Delay(void)
{
int i,j,k;
for(j=0;j<40;j++)
for(i=0;i<100;i++)
for(k=0;k<250;k++)
;
}
void Ini_UART(void)
{
SCON=0x40;
TMOD=0x20;
PCON=0x00;
TH1= 0xfa;
TL1= 0xfa;
TR1=1;
led=1;
}
void CC(void)
{
int i=0;
while ( AT[i]!='\0')
{
SBUF=AT[i++];
while(TI==0); //当TI为1的时候结束
TI = 0;
}
//led=0;
}
void CMGF(void)
{
int i=0;
while ( MODE[i]!='\0')
{
SBUF=MODE[i++];
while(TI==0); //当TI为1的时候结束
TI = 0;
}
led=0;
}
void CSCA(void)
{
int i=0;
while (center[i]!='\0')
{
SBUF=center[i++];
while (TI==0);
TI=0;
}
led=1;
}
void CMGS(void)
{
int i=0;
while(PHONE[i] != '\0' )
{
SBUF=PHONE[i++];
while(TI==0);//当TI为1的时候结束
TI=0;
}
led=0;
}
void SEND(void)
{
int i=0;
while(text[i]!= '\0')
{
SBUF=text[i++];
while(TI==0); //当TI为1的时候跳出
TI=0;
}
led=1;
}
void END(void)
{
int i=0;
SBUF=0x1A;
while ( TI==0 ) ;
TI=0;
led=0;
}
/*void Sendchar(unchar c) //发送一个字符
{
TI=0;
SBUF=c;
while(TI==0);
TI=0;
}*/
void Sendcmd(unchar *p) //发送字符串
{
while(*p)
{
SBUF=*(p++);
while(TI==0);
TI=0;
}
}