×
单片机 > 单片机程序设计 > 详情

单片机浴室报警器程序

发布时间:2024-06-29 发布时间:
|

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)

[1] [2] [3] [4] [5] [6] [7] [8]
单片机浴室报警器AT24C02

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32 TIMER2的使用