单片机 智能环境监测系统程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档