久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2011|回復(fù): 0
收起左側(cè)

基于51單片機(jī)的煙霧—溫度報(bào)警系統(tǒng)程序

[復(fù)制鏈接]
ID:956506 發(fā)表于 2021-10-10 14:07 | 顯示全部樓層 |閱讀模式
看了很多煙霧報(bào)警系統(tǒng),要么就是要錢的,源代碼還特別貴,要么就是代碼error特別多,于是自己就寫了煙霧報(bào)警系統(tǒng),主要功能是測(cè)量溫度后并在LCD1602上顯示溫度,測(cè)量煙霧濃度,當(dāng)煙霧濃度低于閥值時(shí)蜂鳴器報(bào)警,并且亮紅燈,(正常時(shí)亮藍(lán)燈,煙霧濃度是反著來(lái)的,煙霧濃度越大,顯示的值越小,我也不知道咋回事,如果有會(huì)的大佬還請(qǐng)一起研究指教),并且有六個(gè)按鍵可以控制濃度的閥值。以及溫度的上下限,當(dāng)溫度的值在上下限值中時(shí),亮藍(lán)燈,如果大于上限或低于下限亮紅燈,蜂鳴器不響,第一次發(fā)帖,不知道怎么做,還是想要大佬提點(diǎn)
制作出來(lái)的實(shí)物圖如下:
IMG_20211010_135603.jpg

電路原理圖如下:
51hei截圖20211010135716.png
部分代碼如下:
     #include <REGX52.H>
#include <intrins.h>
#include "LCD1602.h"
#include "DS18B20.h"
#include "key.h"

//宏定義int and char
#define uint unsigned int
#define uchar unsigned char

signed char  up=30;     //上限值
signed char  lay=10;     //下限

//#define BEEP P3_4       //定義蜂鳴器

sbit BEEP=P3^4;          //蜂鳴器


sbit led_h=P2^4;         //藍(lán)燈
sbit led_l=P2^1;         //紅燈

sbit ADCS   =  P1^2;
sbit ADCLK  =  P1^4;
sbit ADDI   =  P1^6;
sbit ADDO   =  P1^6;

bit beep_st;             //蜂鳴器間隔標(biāo)志
uint abc ;               //定義的煙霧濃度顯示變量
uchar x=8;               //計(jì)數(shù)器
uchar  m;                //溫度值全局變量
uchar n;                 //溫度值全局變量

uchar data disdata[5];
uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};     //攝氏溫度符號(hào)  12,18,18,12,0,0,0,0



//讀取溫度值
void check_wendu(void)
{
     uint a,b,c;
         c=ReadTem()-5;      //獲取溫度值并減去DS18B20的溫漂誤差
         a=c/100;            //計(jì)算得到十位數(shù)字
         b=c/10-a*10;         //計(jì)算得到個(gè)位數(shù)字
         m=c/10;              //計(jì)算得到整數(shù)位
         n=c-a*100-b*10;      //計(jì)算得到小數(shù)位
        if(m<0){m=0;n=0;}       //設(shè)置溫度顯示夏限
        if(m>99){m=99,n=9;}      //設(shè)置溫度顯示上值
}
//延時(shí)程序   延時(shí)一毫秒
void delayms(uint ms)
{
      uint i,j;
          for(i=0;i<ms;i++)
            for(j=0;j<100;j++);
}




//報(bào)警程序
void Alarm()
{
//     if((m<=up)||(m>=lay)) BEEP=0;        //如果溫度大于上限或小于下限,蜂鳴器響
//         else if((m>up)||m<lay) BEEP=1;
     if(abc>=nongdu) BEEP=1;     //&&beep_st==1
     else BEEP=0;
     if(m>top||m<lim)
         {
             led_h=1;
                 led_l=0;
                 BEEP=1;
               
         }
     else
                 if(abc>=nongdu)
         {
             led_h=0;
                 led_l=1;
               
         }                 
         else {led_h=1;led_l=0;}

}
uchar ADC0832(bit mode,bit channel)        //AD裝換,返回結(jié)果
{
         uchar i,dat,ndat;
         
         ADCS = 0;                            //拉低CS端口
         _nop_();
         _nop_();
         
         ADDI = 1;                           //第一個(gè)下降沿為高電平
         ADCLK= 1;                           //拉高時(shí)鐘端口,即CLK
         _nop_();
         _nop_();
         ADCLK= 0;                           //拉低CLK端口,形成下降沿1;
         _nop_();
         _nop_();
        
         ADDI= mode;                        //低電平為差分模式,高電平為單通道模式
         ADCLK =1;                          //拉高CLK;
         _nop_();
         _nop_();
         ADCLK =0;                            //拉低CLK,形成下降沿2
         _nop_();
         _nop_();
         
         ADDI = channel;                     //低電平為CH0,高電平為CH1
         ADCLK = 1;                          //拉高CLK端口
         _nop_();
         _nop_();
         ADCLK = 0;                          //拉低CLK端,形成下降沿3
         
         ADDI =1;                             //控制命令結(jié)束
         dat=0;
         
        //下面開始讀取轉(zhuǎn)換后的數(shù)據(jù),從最高位開始依次輸出(D7~D0);
        
        for(i=0;i<8;i++)
        {
           dat<<= 1;
                ADCLK=1;                        //拉高時(shí)鐘
                _nop_();
                _nop_();
                ADCLK=0;                        //拉低時(shí)鐘端形成一次時(shí)鐘脈沖
                _nop_();
                _nop_();
                dat |= ADDO;
               
        }
        ndat =0;                         //記錄D0
        if(ADDO == 1)
        ndat |= 0x80;
        
        //下面開始繼續(xù)讀取反序的數(shù)據(jù)(D1~D7)
        
        for(i=0;i<7;i++)
        {
            ndat >>=1;
                ADCLK =1;            //拉高時(shí)鐘端
                _nop_();
                _nop_();
                ADCLK=0;            //拉低時(shí)鐘端形成一次時(shí)鐘脈沖
                _nop_();
                _nop_();
                if(ADDO==1)
                ndat |= 0x80;
        }
        
           ADCS =1;            //拉高CS端,結(jié)束轉(zhuǎn)換
           ADCLK=0;            //拉高CLK端
           ADDI=1;              //拉高數(shù)據(jù)端,回到初始狀態(tài)
           if(dat==ndat)
                   return(dat);
           else
              return 0;
        
}
void display()          //初始化后的顯示
{
        LCD_ShowString(1,1,"Smoke:");
        LCD_ShowString(1,10,"T:  . C");
        LCD_ShowString(2,1,"Alarm:");
        LCD_ShowString(2,10,"  -  ");
        LCD_ShowNum(2,7,nongdu,1);
        LCD_ShowNum(2,13,top,2);
        LCD_ShowNum(2,10,lim,2);
        
}

void main()
{

        check_wendu();
        check_wendu();
        LCD_Init();
        delayms(100);
        LCD_Init();
        delayms(100);
        display();
        
        
    while(1)
        {
               checkkey();             //按鍵檢測(cè)

                  
                  
                   abc= ADC0832(1,0);       //差分模式,CH0—CH1;
                   abc=abc*19.607843;        //轉(zhuǎn)換為實(shí)際電壓便于顯示
                   abc=abc/1000%10;
                   LCD_ShowNum(1,7,abc,2);
                   LCD_ShowNum(1,12,m,2);
               LCD_ShowNum(1,15,n,1);
                   LCD_ShowNum(2,7,nongdu,1);
               LCD_ShowNum(2,13,top,2);
               LCD_ShowNum(2,10,lim,2);
                   check_wendu();
               
                   Alarm();                   //報(bào)警檢測(cè)
               
               

               
        }
}

IMG_20211010_135623.jpg

煙霧溫度報(bào)警.zip

161.94 KB, 下載次數(shù): 27

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产福利在线看 | 四虎永久免费影院 | 精品国产视频 | 福利视频一二区 | 一区二区在线观看免费视频 | 国产免费观看一区 | 亚洲一区二区在线视频 | 精品九九 | 欧美国产中文 | 国产精品永久免费 | 精品国产1区2区3区 一区二区手机在线 | 91精品国产综合久久久久 | 91色在线视频| 亚洲精品久久久一区二区三区 | h视频亚洲| 六月成人网 | 欧美视频在线一区 | 中国一级特黄真人毛片免费观看 | 毛片免费观看视频 | 久久久久久久久久一区二区 | 欧美一区二区三区 | 精品欧美一区二区三区久久久 | 国产精品久久久亚洲 | 国产精品日产欧美久久久久 | 国产精品久久久乱弄 | 亚洲精品久 | 99精品免费在线观看 | 性做久久久久久免费观看欧美 | 韩国主播午夜大尺度福利 | 欧美精品一区二区三区在线 | 中文字幕成人av | 青青草av在线播放 | 羞羞网站免费观看 | 91精品久久久久久综合五月天 | 久久久久免费观看 | 中文字幕 在线观看 | 欧美一区二区三区视频 | 香蕉一区二区 | 久久999| 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 污片在线免费观看 |