单片机 智能环境监测系统程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机智能环境监测系统程序
王维进
#include
#include
#include
#include
#include "0832.h"
#define uchar unsigned char
#define uint unsigned int
#include "eeprom52.h"
sbit DATA = P3^7; //温湿度
sbit E=P2^5; //1602使能引脚
sbit RS=P2^7; //1602数据/命令选择引脚
sbit RW=P2^6;
sbit K1=P1^3;//设置键
sbit K2=P1^4;//加
sbit K3=P1^5;//减
sbit K4=P1^7; //人体
sbit K5=P1^6; //布防撤防按键
sbit LED1=P3^1; //烟雾报警
sbit LED2=P3^2; //温度上限
sbit LED3=P3^3; //温度下限
sbit LED4=P3^4; //湿度上限
sbit LED5=P3^5; //湿度下限
sbit LED6=P3^6; //红外报警
sbit alarm=P3^0; //蜂鸣器
uchar
U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_d ata_H_temp,U8T_data_L_temp,U8checkdata_temp;
uchar U8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata; uchar Mode,humidity,temperature,smog;
bit BJ_LED1=1,BJ_LED2=1,BJ_LED3=1,BJ_LED4=1,BJ_LED5=1,BJ_LED6=1; bit bdata FlagStartRH;
uchar flag ;//记录当前设置状态
uint count;
//定时器0初始化
void Timer0_Init()
{
ET0 = 1; //允许定时器0中断
TMOD = 0x11; //定时器工作方式选择TL0 = 0xFF;
TH0 = 0x4B; //定时器赋予初值
TH1=0xdc;
TL1=0x00;
ET1=1;
TR0 = 1; //启动定时器
}
//定时器0中断
void Timer0_ISR (void) interrupt 1 using 0 {
uchar RHCounter;
TL0 = 0xFF;
TH0 = 0x4B; //定时器赋予初值RHCounter++;
if (RHCounter >= 15)
{
FlagStartRH = 1;
RHCounter = 0;
}
}
void Delay1(uint j)
{
uchar i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delay_10us(void)
{
uchar i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void COM(void)
{
uchar i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!DATA)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(DATA)U8temp=1;
U8FLAG=2;
while((DATA)&&U8FLAG++);
//超时则跳出for循环
if(U8FLAG==1)break;
//判断数据位是0还是1
// 如果高电平高过预定0高电平值则数据位为 1
U8comdata<<=1;
U8comdata|=U8temp; //0
}//rof
}
//--------------------------------
//-----温湿度读取子程序 ------------
//--------------------------------
//----以下变量均为全局变量--------
//----温度高8位== U8T_data_H------
//----温度低8位== U8T_data_L------
//----湿度高8位== U8RH_data_H-----
//----湿度低8位== U8RH_data_L-----
//----校验 8位 == U8checkdata-----
//----调用相关子程序如下----------
//---- Delay();, Delay_10us();,COM(); //--------------------------------uchar RH(void)
{
//主机拉低18ms
DATA=0;
Delay1(180); //原来为5
DATA=1;
//总线由上拉电阻拉高主机延时20us