基于单片机的温湿度监控报警系统设计
L1602_char(2, 16, HH+48); break; default: break; } Save_Setting(); }
/*********主函数**********/ void main()
{ U16 i, j, testnum; EA = 0;
Timer0_Init(); //定时器0初始化 Data_Init(); EA = 1;
L1602_init(); L1602_string(1,1,\ \ L1602_string(2,1,\ \
for (i=0;i<1000;i++) //延时 for (j=0;j<1000;j++) {;}
L1602_string(1,1,\ \清屏 L1602_string(2,1,\ \ L1602_string(1,1,\ C TH:\ L1602_string(2,1,\ % HH:\
Load_Setting(); //载入温度上限和湿度上限设定值 L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH+48); L1602_char(2, 15, HH/10+48); L1602_char(2, 16, HH+48); while(1) { if (FlagStartRH == 1) //温湿度转换标志检查 { TR0 = 0;
testnum = RH(); FlagStartRH = 0; TR0 = 1;
- 28 -
基于单片机的温湿度监控报警系统设计
humidity = U8RH_data_H; //读出温湿度,只取整数部分 temperature = U8T_data_H;
L1602_int(1,5,temperature); //显示温湿度 L1602_int(2,5,humidity); } //温湿度控制
if (temperature > TH) { Led_jiangwen = 0; beep=0; DELAY(500); } else
//判断超温
//二极管亮,超温报警 //蜂鸣器响,超温报警 //延时
{ Led_jiangwen = 1; beep=1; DELAY(500); }
//判断潮湿
//二极管亮,超湿报警 //蜂鸣器响,超温报警
if (humidity > HH)
{ Led_qushi = 0; beep=0; DELAY(500); } else
{ Led_qushi = 1;
beep=1;
DELAY(500); }
//键盘查询,在弹起时响应
if ((Key_TH1)&&(keyTH1==0)) {FlagKeyPress = 1; keyvalue = 1;} else if((Key_TH2)&&(keyTH2==0)){FlagKeyPress=1;keyvalue = 2;} else if((Key_HH1)&&(keyHH1==0)){FlagKeyPress =1;keyvalue=3;} else if((Key_HH2)&&(keyHH2==0)){FlagKeyPress=1;keyvalue=4;} if (FlagKeyPress == 1) { KeyProcess(keyvalue); FlagKeyPress = 0; } if (!Key_TH1) keyTH1 = 0; else keyTH1 = 1;
if (!Key_TH2) keyTH2 = 0; else keyTH2 = 1;
- 29 -
基于单片机的温湿度监控报警系统设计
if (!Key_HH1) keyHH1 = 0; else keyHH1 = 1;
if (!Key_HH2) keyHH2 = 0; else keyHH2 = 1; } }
A1.2 24C02程序
#include \
void DELAY(unsigned int t) { while(t!=0)
t--; }
void IICStart(void)
{ SCL=0; DELAY(1);
SDA=1; SCL=1; DELAY(1); SDA=0; DELAY(1); SCL=0; } void IICStop(void)
{ SDA=0;SCL=1; DELAY(1); SDA=1; DELAY(1); SCL=0; } void SEND0(void)
{ SDA=0; SCL=1; DELAY(1); SCL=0; } void SEND1(void)
{ SDA=1; DELAY(1); SCL=1; DELAY(1); SCL=0; }
bit Check_Ack(void)
{ unsigned char errtime=250; DELAY(1); SCL=1; DELAY(1); CY=SDA; while(CY)
{ errtime--; CY=SDA; if (!errtime)
- 30 -
基于单片机的温湿度监控报警系统设计
{ IICStop(); return 1; } }
DELAY(1); SCL=0; return 0; }
void Write_byte(unsigned char dat) { unsigned char i; for(i=0;i<8;i++) { if((dat<
unsigned char Read_byte(void) { unsigned char i,temp=0; for(i=0;i<8;i++) { SDA=1; SCL=1; DELAY(1); if(SDA==1) { temp=temp<<1; temp=temp|0x01; } else temp=temp<<1; SCL=0; } return temp; }
unsigned char rdeeprom(unsigned char addr) { unsigned char temp=0; bit flag=0; IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); IICStart();
- 31 -
相关推荐: