//////////////////////////////// 注意:///////////////////////////////
//板子LED1系统初始化指示灯,一上电点亮,系统初始化结束,准备OK后自动熄灭
//open 指令,且在正常范围内,才允许手机开启继电器,在超限情况下,该命令无效,不于处理
//close 指令,且在正常范围内,才允许手机关闭继电器,在超限情况下,该命令无效,不于处理
//允许通过短信修改上下限
//超限情况下,系统自动开启或关闭继电器。
//移动和联通的短信服务中心号码,及编码顺序有一定区别
//此程序在移动手机之间测试OK,若是联通手机,则发送和读取的数据缓冲区会有一定改变
//指令格式:
//打开继电器1和LED1:open1
//打开继电器2和LED2:open2
//关闭继电器1和LED1:close1
//关闭继电器2和LED2:close2
//读取上下限值和当前温度值:GT
//设定上下限:STHHHLLL 注意:HHH为上限温度,LLL为下限温度 各自必须写足3位
//开/关继电器成功 返回短信:"Successfully!"
//开/关继电器失败 返回短信:"failed,try again!"
//读取或设定成功 返回短信:上下限和当前温度值
//格式:H:HHH
// L:LLL
// NOWTEMP:MM.M
//读取或设定失败: 返回短信:"failed,try again!"
//温度超限返回短信:跟读取或设定成功时的内容一样
//////////////////////////////////////////////////////////////////////
///////////////基于GSM网络的智能温度检控系统//////////////////////////
//////////////////////////////////////////////////////////////////////
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
#define RxIn 90 //定义接收数组长度为90
//#define H_temp 900 //温度上限 最后位为小数位
//#define L_temp 100 //温度下限
unsigned int H_temp,L_temp;
unsigned char last_temp=0; //历史温度
unsigned char temp=0; //当前温度
uchar temp_z,temp_x; //温度值的整数部分、小数部分
uchar code dis1[] = {"0123456789.:HLNOWTEMP"};
//TC35i定义
uchar code AT[]={"AT"}; //握手信号
uchar code ATE[]={"ATE"}; //关回显
uchar code AT_CNMI[]={"AT+CNMI=2,1"}; //设置这组参数来了新信息直接显示到串口,不做存储
uchar code AT_CSCA[]={"AT+CSCA=\"+8613800571500\""}; //设置服务中心号码,根据自己所在地区运营商提供的号码填写 浙江移动 +8613800575500 联通+8613010360500
uchar code AT_CMGF[]={"AT+CMGF=1"}; //设置短信格式为text格式
uchar code AT_CMGR[]={"AT+CMGR="}; //读取短信指令
uchar code AT_CMGS[]={"AT+CMGS="}; //发送短信指令
uchar code AT_CMGD[]={"AT+CMGD="}; //删除短信指令
uchar code successfully[]={"Successfully!"}; //发送操作成功信息到目标号码
uchar code fail[]={"failed,try again!"}; //发送操作失败信息到目标号码
uchar code H[]={"H:"};//上限表示
uchar code L[]={"L:"};//下限表示
uchar code NOW[]={"NOWTEMP:"};//上限表示
uchar code DIP[]={"."};//小数点
uchar idata send_num[11]={1,5,8,5,8,2,6,9,8,1,3}; //将*替换成你报警时用的目标手机号码 1,8,7,3,9,7,9,6,6,4,9 1,5,6,0,3,9,4,4,0,5,6 1,3,4,5,4,5,1,6,4,8,2 1,5,8,5,8,2,6,9,8,1,3
uchar idata AT_delete[12];
uchar idata AT_Read[12];//用来存储发送读取短信指令
uchar idata AT_SendNumber[25];//用来存储发送短信号码指令
uchar idata numberbuf[3]; //用来保存短信条数
uchar idata SystemBuf[RxIn];//存储出口接收数据
uchar idata CommandBuf[6];//用来存储指令
uchar Rx=0;
bit alam_flag=0; //报警标志,1有效
bit last_alam_flag;//历史报警标志,1有效
bit gt_flag=0; //读取当前温度标志,1有效
bit check=0; // 查询标志位
bit receiveready=0; //接收短信标志位
bit sendready=0; //发送短信准备标志位
bit send=0; // 发送短信标志位
bit flag=0; // 指令标志位
sbit IGT=P1^0; //启动GSM的启动线IGT,连接TC35I的IGT引脚
sbit led1=P0^0; //LED1
sbit led2=P0^1; //LED2
sbit realy1=P0^6; //继电器1
sbit realy2=P0^7; //继电器2
sbit beep=P0^4; //蜂鸣器,0有效
sbit key= P0^2; //接触报警按钮
sbit rs = P3^7; //1602引脚定义
sbit rw = P3^6;
sbit ep = P3^5;
sbit TSOR = P0^5; //温度通讯接口
/************温度传感器驱动**************/
void Delay15(); //延时15us
void Delay60(); //延时60us
void Delay100ms(); //延时100ms
void Write0TS(); //写 bit 0
void Write1TS(); //写 bit 1
bit ReadTS(); //读取数据位
void ResetTS(); //复位
void WriteByteTS(uchar byte); //写一个字节(byte)
uchar ReadByteTS(); //读一个字节(byte)
void InitTS(); //初始化温度转换
void GetTempTS(); //获取温度
void Delay_ms(uint i);
void Start_GSM(void);
void UART_init(void);
void sendchar(uchar ch);
void sendstring(uchar *p);
void GSM_INIT(void);
void receive_ready(void);
void message_read(void);
void read_message(void);
void sendmessage(void);
//***********************************************
// void Delay_ms(uint i);
// 进行ms延时
//***********************************************
void Delay_ms(uint i)
{
unsigned int j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
//------------------------------------
delay(uchar ms)
{
uchar i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
//--------------------------------------
lcd_wcmd(uchar cmd)
{ // 写入指令数据到LCD
delay(1);
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P2 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
//------------------------------------
lcd_pos(uchar pos)
{ //pos=0x40; //设定显示位置
lcd_wcmd(pos|0x80);
//lcd_wcmd(pos);
}
//-----------------------------------
lcd_wdat(uchar dat)
{ //写入字符显示数据到LCD
delay(1);
rs = 1;
rw = 0;
ep = 0;
_nop_();
_nop_();
P2 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
//----------------------------------------
lcd_init()
{
delay(1); //LCD初始化设定
lcd_wcmd(0x38); //显示模式设置:单行,8字符,5x7点阵
delay(1);
delay(1);
lcd_wcmd(0x06); //开显示,关光标,不闪烁
delay(1);
delay(1);
lcd_wcmd(0x0c); //设置输入模式:光标增量移动,显示不移位
delay(1);
delay(1);
lcd_wcmd(0x01); //清除LCD显示的内容
delay(1);
}
/**************温度传感器子程序**************/
/***************延时100ms***************/
void Delay100ms()
{
uchar i,j,k;
for(i=0;i<8;i++)
for(j=0;j<25;j++)
for(k=0;k<250;k++);
}
/***************延时15us***************/
void Delay15()
{
uchar i;
for(i=0;i<8;i++);
}
/***************延时60us***************/
void Delay60()
{
uchar i;
for(i=0;i<30;i++);
}
/***************写bit 0***************/
void Write0TS()
{
TSOR=1;
TSOR=0;
Delay15();
Delay15();
Delay15();
Delay15();
TSOR=1;
_nop_();_nop_();
}
/***************写bit 1***************/
void Write1TS()
{
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Delay15();
Delay15();
Delay15();
}
/***************读取数据位***************/
bit ReadTS()
{
bit b;
TSOR=1;
TSOR=0;
_nop_();_nop_();_nop_();_nop_();
TSOR=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
b=TSOR;
Delay15();
Delay15();
Delay15();
_nop_();
_nop_();
return b;
}
/**************复位****************/
void ResetTS()
{
uchar i;
unsigned int y;
y=50000;
TSOR=1;
TSOR=0;
for(i=0;i<8;i++)
Delay60();
TSOR=1;
while(TSOR==1);///传感器自动产生的
for(i=0;i<8;i++)
Delay60();
}
/**************写一个字节(byte)**************/
void WriteByteTS(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
if(byte&0x01) //最低bit为1否?
Write1TS();
else
Write0TS();
byte=byte>>1; //字节右移1位
}
}
/**************读一个字节(byte)**************/
uchar ReadByteTS()
{
uchar i,j=0;
bit
temp_ok.zip_gsm监测_温度监测
版权申诉
138 浏览量
2022-09-14
22:26:34
上传
评论
收藏 6KB ZIP 举报
JonSco
- 粉丝: 74
- 资源: 1万+
最新资源
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
- 88-520告白(520气球).zip
- HTML+CSS+JS精品网页模板H126.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈