1、氧气浓度采集:本设计采用ZE03-O2(工作电压3.7V-9V DC 温度0-50度 湿度20%-90%RH)氧气浓度传感器,适用于浴室氧气浓度检测,虽内置温度传感器进行温度补偿,但程序算法上需将采集数据和输出氧气浓度建立线性关系。
2、信息储存:采用AT24C02(掉电记忆,电可擦除)作为外置EEPROM存储用户设置信息(主要用于存储用户设置时间,报警温度和氧气浓度)。
3、报警部分:当任何一项指标超标时都需要声音报警,不同的指标超标光报警要给用户明确的某项指标超标。
4、浴室模型:本课题是基于浴室,采用CAD对模型进行设计与绘制,模型确定为底面面积为0.64平方米高1米的长方体,长方体内部布满泡沫以此来构建封闭、透气性差和保温性强的环境条件。
5、硬件电路:单片机最小系统板、显示电路、电源与复位电路、报警电路、风机驱动板和氧气传感器和温度传感器电路设计与调试。
单片机程序如下:
#include
#include
#include
#include
#include
#include
#include "24c02.h"
#include "iic.h"
//#include
#define uchar unsigned char
#define uintunsigned int
sbit LED = P2^5;
sbit LED1 = P2^6;
sbit LED2 = P2^7;
sbit bell = P1^3;
sbit relay = P1^0;
sbit relay1 = P1^1;
uchar tt[3], pp[3], flag = 0, flag1 = 0, K = 0, modes = 0,bai = 0, shi = 0,ge = 0,yqnd = 0;
uchar wendu,wdbj = 38, yqbj = 18, sjbj = 20, wd[3], yq[3], sj[3], kt = 0;
uint num = 0;
void cherh(void);
void time(void);
void bj_cronl(void);
void main(void)
{
P1M1 = 0x00;
P1M0 = 0xff;
relay = 0;
relay1 = 0;
bell = 0;
CH11 = 0;
delay(1);
lcdinit();
delay(10);
UartInit();
ES = 1;
EA = 1;
while(1)
{
time();
wendu = DS18b20_Convert();
write_com(0x93);
sprintf(tt,"%d",(uint)wendu);
hzkdis(tt);
write_com(0x90);
hzkdis("温度:");
write_com(0x94);
hzkdis("度");
write_com(0x88);
hzkdis("氧气浓度:");
write_com(0x98);
hzkdis("设定时间:");
if(Uart_RxFlag)
{
write_com(0x8d);
sprintf(pp,"%d",(uint)UartRxTab[3]);
hzkdis(pp);
write_com(0x8e);
hzkdis("%");
Uart_RxFlag = 0;
}
K = Key();
if (K == 5)
{
K = 0;
lcdinit();
flag = 1;
modes = 0;
K = 0;
wdbj = Eeprom_Read(0x01);
delay(10);
yqbj = Eeprom_Read(0x02);
delay(10);
sjbj = Eeprom_Read(0x03);
delay(10);
while (flag == 1)
{
write_com(0x80);
hzkdis("用户:A");
write_com(0x90);
hzkdis("报警温度: 度");
write_com(0x94);
sprintf(wd,"%d",(uint)wdbj);
hzkdis(wd);
write_com(0x88);
hzkdis("报警氧气: %");
write_com(0x8c);
sprintf(yq,"%d",(uint)yqbj);
hzkdis(yq);
write_com(0x98);
hzkdis("报警时间:min");
write_com(0x9c);
sprintf(sj,"%d",(uint)sjbj);
hzkdis(sj);
K = 0;
K = Key();
if (K == 3)
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』