本设计由STC12C5A60S单片机电路+交流电压电流检测模块电路(该模块含有继电器模块电路)+蓝牙模块电路+GSM模块电路+DS18B20温度检测模块电路+电源电路组成。
1、通过交流电压电流模块检测交流电压和交流电流,通过DS18B20模块检测温度。
2、通过手机蓝牙APP,可以实时查看系统当前的交流电压、交流电流、功率和温度。
3、如果功率超过200W,则继电器模块断开,同时GSM模块向手机发送短信:guo zai!
4、如果温度超过40℃,则继电器模块也断开,同时GSM模块向手机发送短信:guo re!
#include "system.h"
#include "delay.h"
#include"18b20.h"
#include "intrins.h"
#include<stdio.h>
sbit relay = P2^0;
sbit led = P2^2;
unsigned char tab[35]; //蓝牙数据暂存
unsigned char ReadTempFlag =0;//定义读时间标志
int temp1 ; //读取温度初始值
float temperature=0; //实际温度值
unsigned char firsRead; //去除温度误读去
bit reportFlag = 0;//上报标志
bit readADflag = 0; //AD转换 标志
unsigned int powerW =0; // 功率
extern float adVolt,adCurr; // 电压 电流
extern unsigned char chADCount;//adc通道选择
unsigned char i; //中间变量
unsigned char reportTmes = 0; //发送温度过高标志
unsigned char reportPmes = 0; //发送功率过高标志
void initexit(void);
void main()
{
timer0();
init_uart0(); //初始化串口功能
init_uart1();
temp1=ReadTemperature(); //读取温度
temperature=(float)temp1*0.0625; //温度转换
led = 0; //打开 led
for(i=0;i<60;i++) //延时
{DelayMs(100);}
Uart1SendString("AT+CMGF=1\r\n",11); //设置字符
for(i=0;i<5;i++) //延时
{DelayMs(100); }
Uart1SendString("AT+CSCS=\"GSM\"\r\n",15); //设置gsm格式
DelayUs2x(10);
led = 1;
while (1)
{
if(readADflag == 1) //读取ad标志 定时器中置1
{
if(chADCount==0) //选择通道
{
InitADC(0); //读取电压
}
readADflag=0; //清除标志
}
if((reportTmes==1)||(reportPmes == 1)) //上报短信标志
{
led=0; //打开 led //发送消息置位取消
Uart1SendString("AT+CMGF=1\r\n",11); //设置字符
for(i=0;i<5;i++) //延时
{DelayMs(100);}
Uart1SendString("AT+CSCS=\"GSM\"\r\n",15); //设置gsm格式
for(i=0;i<5;i++) //延时
{DelayMs(100);}
// Uart1SendString("AT+CMGS=\"+8618105140357\"\r\n",26);//此处可修改信息接收手机的号码 第一个手机号
Uart1SendString("AT+CMGS=\"+8618252008023\"\r\n",26);//此处可修改信息接收手机的号码 第一个手机号
for(i=0;i<5;i++) //延时
{DelayMs(100);}
for(i=0;i<20;i++) //延时
{DelayMs(100);}
led=1; //关闭 led
}
}
}
资料下载地址