欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3404|回復: 2
打印 上一主題 下一主題
收起左側

單片機環境監測系統消防報警裝置

[復制鏈接]
跳轉到指定樓層
樓主
基于51單片機STC12C5A60S2環境監測報警裝置作者阿陽QQ:113703571

功能:
檢測并報警,溫度,煙霧報警值上下限可調,所有數據串口輸出,可用電腦或手機串口助手實時檢測。
硬件:
STC12C5A60S2單片機最小系統
12864黑白屏---------顯示
18B20-----------------溫度檢測
BH1750---------------光照度檢測
MQ-2------------------煙霧可燃氣體檢測
蜂鳴器----------------報警





#include <stc15xx.H>
#include "hj12864.h"
#include "AD.H"
#include "DS18B20.h"
#include "BH1750.H"               
#include "PWM12.H"       
#include "usart.h"
#include "EEPROM.h"
sbit jia=P3^2;
sbit jian=P3^3;
sbit shezhi=P3^4;
sbit queren=P3^5;
sbit fmq=P1^6;//蜂鳴器
sbit jdq=P1^7;//繼電器風扇輸出
int wdsx,wdxx,ywsx,ywxx;
int mod=1;
void hanzi1616x(int x,y,unsigned char *dp)
{
display_graphic_16x16(1,x,y+16*0,dp+32*0);//漢字1616
display_graphic_16x16(1,x,y+16*1,dp+32*1);//漢字1616       
display_graphic_16x16(1,x,y+16*2,dp+32*2);//漢字1616
display_graphic_16x16(1,x,y+16*3,dp+32*3);//漢字1616       
}
void shuzi168(int x,y,k)
{
        display_8x16num(1,x,y+8*0,k/100);
        display_8x16num(1,x,y+8*1,k%100/10);
        display_8x16num(1,x,y+8*2,k%100%10%10);

}
void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        i = 108;
        j = 144;
        do
        {
                while (--j);
        } while (--i);
}

void Delay200ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        i = 9;
        j = 104;
        k = 139;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void Delay20000ms()                //@11.0592MHz
{
        unsigned char i, j, k;
        i = 73;
        j = 117;
        k = 62;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void dismod()
{
        if(mod==0)
        {
                hanzi1616x(3,5,chanshu+32*16);//空白
          hanzi1616x(3,5+16*4,chanshu+32*16);//空白
        }
        if(mod==1)
        {
                hanzi1616x(3,5,chanshu);//溫度上限
                shuzi168(3,5+16*4+8,wdsx);
        }
        if(mod==2)
        {
                hanzi1616x(3,5,chanshu+32*4);//溫度下限
                shuzi168(3,5+16*4+8,wdxx);
        }
        if(mod==3)
        {
                hanzi1616x(3,5,chanshu+32*8);//煙霧上限
                shuzi168(3,5+16*4+8,ywsx);
        }
        if(mod==4)
        {
                hanzi1616x(3,5,chanshu+32*12);//煙霧下限
                shuzi168(3,5+16*4+8,ywxx);
        }
}
void keyscan()
{
        if(shezhi==0)
        {
                Delay10ms();
                if(shezhi==0)
                {
                        mod++;
                        if(mod==5)
                        mod=1;
                        while(shezhi==0);
                }       
        }
        if(jia==0&&mod==1)
        {
                Delay10ms();
                if(jia==0&&mod==1)
                {
                        if(wdsx!=800)
                        wdsx+=10;
                        xieru();
                        while(jia==0&&mod==1);  
                }       
        }
        if(jian==0&&mod==1)
        {
                Delay10ms();
                if(jian==0&&mod==1)
                {
                        if(wdsx>0)
                        wdsx-=10;
                        xieru();
                        while(jian==0&&mod==1);  
                }       
        }       
        ///////////////////////溫度上限
                if(jia==0&&mod==2)
        {
                Delay10ms();
                if(jia==0&&mod==2)
                {
                        if(wdxx!=800)
                        wdxx+=10;
                        xieru();
                        while(jia==0&&mod==2);  
                }       
        }
        if(jian==0&&mod==2)
        {
                Delay10ms();
                if(jian==0&&mod==2)
                {
                        if(wdxx!=0)
                        wdxx-=10;
                        xieru();
                        while(jian==0&&mod==2);  
                }       
        }       
        ///////////////////////溫度下限
                if(jia==0&&mod==3)
        {
                Delay10ms();
                if(jia==0&&mod==3)
                {
                        if(ywsx!=255)
                        ywsx++;
                        xieru();
                        while(jia==0&&mod==3);  
                }       
        }
        if(jian==0&&mod==3)
        {
                Delay10ms();
                if(jian==0&&mod==3)
                {
                        if(ywsx!=0)
                        ywsx--;
                        xieru();
                        while(jian==0&&mod==3);  
                }       
        }       
        ///////////////////////煙霧上限
                        if(jia==0&&mod==4)
        {
                Delay10ms();
                if(jia==0&&mod==4)
                {
                        if(ywxx!=255)
                        ywxx++;
                        xieru();
                        while(jia==0&&mod==4);  
                }       
        }
        if(jian==0&&mod==4)
        {
                Delay10ms();
                if(jian==0&&mod==4)
                {
                        if(ywxx!=0)
                        ywxx--;
                        xieru();
                        while(jian==0&&mod==4);  
                }       
        }       
        ///////////////////////煙霧下限
}

void yanwu(int x,y,k)
{
          display_graphic_16x16(1,x,y,yanw+32*0);
          display_graphic_16x16(1,x,y+16,yanw+32*1);
          display_graphic_16x16(1,x,y+32,yanw+32*2);
          display_8x16num(1,x,y+32+8,k/1000);
          display_8x16num(1,x,y+32+16,k%1000/100);
          display_8x16num(1,x,y+32+24,k%1000%100/10);
          display_8x16num(1,x,y+32+32,k%1000%100%10);
}
void wendu(int x,y,k)
{
          display_graphic_16x16(1,x,y,wend+32*0);
          display_graphic_16x16(1,x,y+16,wend+32*1);
          display_graphic_16x16(1,x,y+32,wend+32*2);
          display_8x16num(1,x,y+32+8,k/100);
          display_8x16num(1,x,y+32+16,k%100/10);
          display_string_8x16(1,x,y+32+24,".");
          display_8x16num(1,x,y+32+32,k%100%10);
          display_graphic_16x16(1,x,y+32+42,ssd);
}
void guangzhao(int x,y,k)
{
          display_graphic_16x16(1,x,y,gzs+32*0);
          display_graphic_16x16(1,x,y+16,gzs+32*1);
          display_graphic_16x16(1,x,y+32,gzs+32*2);
          display_8x16num(1,x,y+32+8,k/10000);
          display_8x16num(1,x,y+32+16,k%10000/1000);
          display_8x16num(1,x,y+32+24,k%10000%1000/100);
          display_8x16num(1,x,y+32+32,k%10000%1000%100/10);
          display_8x16num(1,x,y+32+40,k%10000%1000%100/10);
          display_string_8x16(1,x,y+32+50,"lx");
}
uint MQx,tem,gzz;
void usartwendu()
{
                        UART_Send_Str("溫度");//溫度
                UART_Send_Byte(tem/100+0x30);
                UART_Send_Byte(tem%100/10+0x30);
                UART_Send_Str(".");
                UART_Send_Byte(tem%100%10+0x30);
                UART_Send_Str("  ");//換行符
}
void usartyanwu()
{
                UART_Send_Str("煙霧");//煙霧
                UART_Send_Byte(MQx/1000+0x30);
                UART_Send_Byte(MQx%1000/100+0x30);
                UART_Send_Byte(MQx%1000%100/10+0x30);
                UART_Send_Byte(MQx%1000%100%10+0x30);
                UART_Send_Str("  ");//換行符
}
void usartguangzhao()
{
                UART_Send_Str("光照");//溫度
                UART_Send_Byte(gzz/10000+0x30);
                UART_Send_Byte(gzz%10000%1000+0x30);
                UART_Send_Byte(gzz%10000%1000/100+0x30);
                UART_Send_Byte(gzz%10000%1000%100/10+0x30);
          UART_Send_Byte(gzz%10000%1000%100%10+0x30);
                UART_Send_Str("\n");//換行符
}

void main(void)
{usart_init();
        initADC(0x01);//初始化8通道
        initial_lcd();//lcd初始化
        PWM_init(1,0);//初始值
                        ds_init();
                ds_xie_byte(0xcc);
          ds_xie_byte(0x44);
        Delay200ms();Delay200ms();Delay200ms();Delay200ms();
        Init_BH1750();//初始化BH1750
        clear_screen();//清屏
  if(IapReadByte(0x300)!=0x55)
        {
          IapEraseSector(0x300);
          IapProgramByte(0x300,0x55);
                chushihua();
        }
        duqu();
        while(1)
        {        keyscan();
                dismod();
                ds_init();
                ds_xie_byte(0xcc);
          ds_xie_byte(0x44);
                tem=read_temperature();//溫度讀取
                wendu(5,4,tem);//溫度顯示
                usartwendu();//串口輸出
                if(tem>wdsx)//溫度超高
                {
                fmq=0;//報警
                jdq=0;
                }
                if(tem<wdxx)//溫度降低到下限
                {
                        fmq=1;//報警停止
                        jdq=1;
                }
               
                MQx=readADC(0);//煙霧讀取
                yanwu(7,4,MQx);//煙霧顯示       
                usartyanwu();
                if(ywsx>MQx && MQx>ywxx)//煙霧比較
                {
                //        fmq=1;//報警關閉
                }               
                else
                {
                //        fmq=0;//報警
                }
                //gzz=duguangzhao();//光照值讀取
                guangzhao(1,4,gzz);
                usartguangzhao();
                CCAP0H=CCAP0L=gzz;//設置PWM1 p1.3腳               
        }
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:914953 發表于 2021-5-3 22:58 | 只看該作者
你好,想問問你設計的原理圖有嗎?
回復

使用道具 舉報

板凳
ID:1074288 發表于 2023-4-27 07:29 | 只看該作者
請問有做相關仿真嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表