历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2020年08月17日 | 单片机浴室报警器程序

2020-08-17 来源:51hei

1、氧气浓度采集:本设计采用ZE03-O2(工作电压3.7V-9V DC 温度0-50度 湿度20%-90%RH)氧气浓度传感器,适用于浴室氧气浓度检测,虽内置温度传感器进行温度补偿,但程序算法上需将采集数据和输出氧气浓度建立线性关系。

2、信息储存:采用AT24C02(掉电记忆,电可擦除)作为外置EEPROM存储用户设置信息(主要用于存储用户设置时间,报警温度和氧气浓度)。

3、报警部分:当任何一项指标超标时都需要声音报警,不同的指标超标光报警要给用户明确的某项指标超标。

4、浴室模型:本课题是基于浴室,采用CAD对模型进行设计与绘制,模型确定为底面面积为0.64平方米高1米的长方体,长方体内部布满泡沫以此来构建封闭、透气性差和保温性强的环境条件。

5、硬件电路:单片机最小系统板、显示电路、电源与复位电路、报警电路、风机驱动板和氧气传感器和温度传感器电路设计与调试。
51hei.png?imageView2/2/w/550 51hei1.png?imageView2/2/w/550

单片机程序如下:

#include

#include

#include

#include

#include

#include

#include "24c02.h"

#include "iic.h"

//#include


#define uchar unsigned char

#define uint  unsigned 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)

                                {

                                        modes++;

                                        switch(modes)

                                        {

                                                case 1:

推荐阅读

史海拾趣

Gennum ( Semtech )公司的发展小趣事
确保所有元件都已正确安装,没有损坏或接错。
AMS公司的发展小趣事
对于高频电路或可能产生辐射的元件(如射频模块),需要采取适当的屏蔽措施来减少辐射对人体的影响。
APC (APC by Schneider Electric)公司的发展小趣事

随着计算机技术的飞速发展,单一的UPS产品已无法满足市场的多样化需求。为此,APC在1989年推出了突破性的电源管理软件(PowerChute®)。这款软件能够智能地管理UPS设备,提供更为精细的电力保护。紧接着,APC又推出了Smart-UPS®系列UPS产品,该产品以其卓越的性能和稳定性,迅速成为评估所有其它网络UPS产品的标准。

Herrmann Kg公司的发展小趣事

Herrmann Kg自成立以来,始终致力于超声波焊接技术的创新。在1960年代初,由Walter Herrmann创立的这家公司,通过引入基于发电机原理的机器发生器,成功替代了当时不稳定的超声波管发生器,这一技术创新极大地提升了超声波焊接的稳定性和效率。随着技术的不断迭代,Herrmann Kg开发出了包括ULTRAPLAST、ULTRAPACK和ULTRABOND在内的多条产品线,这些产品不仅满足了市场对高效、可靠焊接技术的需求,还推动了超声波焊接技术在电子制造领域的广泛应用。

Deltron公司的发展小趣事

随着国内市场的不断饱和,Deltron公司开始积极拓展国际市场。通过参加国际展览、与国外企业建立合作关系、设立海外分支机构等方式,Deltron逐渐打开了国际市场的大门。其优质的产品和服务得到了国际客户的认可,为公司的发展注入了新的活力。

Atlantic Microwave Ltd公司的发展小趣事

Atlantic Microwave Ltd公司成立于电子科技蓬勃发展的年代,初期只有几名志同道合的工程师,他们怀揣着对微波技术的热情,在狭小的办公室中开始了他们的创业之旅。资金短缺、技术难题、市场认可度低等问题接踵而至。然而,团队凭借着对技术的执着追求和对市场的敏锐洞察,不断攻克技术难关,优化产品设计,逐渐在市场上站稳了脚跟。

问答坊 | AI 解惑

低频数字式相位测量仪

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 低频数字式相位测量仪  …

查看全部问答>

看到一个好玩的:屁强度探测器

探测的依据是    声音  温度  浓度 …

查看全部问答>

有人熟悉NTFS格式么?

最近做一个项目,需要支持移动硬盘,移动硬盘大部分都是NTFS的格式,但是目前维护的FAT文件系统不支持, 有没人熟悉NTFS的,可以请教下…

查看全部问答>

wince中分割窗体

用vs2005开发wince sdi程序,发现没有CSplitterWnd这个类,应该如何实现分割窗体呢?…

查看全部问答>

windows xp 与 windows ce 嵌入式系统的usb通信

现有一个条形码识别掌机, 掌机系统为 windows ce.net 6.0, 有usb接口。 将掌机usb接口直接与windows vista电脑相接,不需要任何操作就可以实现通信。 但将掌机与windows xp相接,用了很多方法都不行,比如安装一个activesync 4.5,在连接 ...…

查看全部问答>

USB接口主,从控制器有什么不同?

可用于主控制的接口有CH375,SL811,还有吗?用于从控制的就多了,如PDIUSBD12,还有MCU内置,如C8051F340就内置USB控制器. 这写USB从控制器能用作主控制器吗?谢谢!…

查看全部问答>

不知道为什么uart无法使用

库文件完全一样,示例代码能运行,但是即使把示例代码完全复制到自己的工程中都不能输出正确的结果。复制到自己的项目中后,完全相同的代码但是编译后的大小要比demo工程直接编译的大一点点。一直到不到哪里出了问题。有人遇到过吗?或者给点查错的 ...…

查看全部问答>

武林学习LM3S811(五)中断按键

参考周立功的实例,实现按键中断翻转LED的功能。为的下次触摸芯片驱动做准备。 工程:…

查看全部问答>

新一代FPGA设计学习工具:Robei

美国Robei公司开发了一套全新的FPGA设计仿真工具,现在在教育界和工业界引起巨大的反响。 下面是这个软件的简单介绍: Robei FPGA仿真软件是一款世界上最小的FPGA仿真工具。该软件具备先进的图形化设计工具,代码修改,Verilog编译仿真和波形分析 ...…

查看全部问答>

2013本科

本帖最后由 paulhyde 于 2014-9-15 03:01 编辑 题目    …

查看全部问答>