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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3948|回復: 1
收起左側(cè)

單片機火災報警源程序與Proteus仿真圖 ADC0832+電位器模擬煙霧溫度控制電機

  [復制鏈接]
ID:814966 發(fā)表于 2022-1-18 10:34 | 顯示全部樓層 |閱讀模式
此次設計是火災報警系統(tǒng),主要功能是實現(xiàn)當出現(xiàn)火災的時候,通過煙霧報警器和溫度報警器進行報警,并帶動電機運轉(zhuǎn)進行排煙或者灑水。本單片機系統(tǒng)采用AT89C51單片機控制,整個硬件系統(tǒng)由A/D轉(zhuǎn)換、LCD顯示、按鍵鍵盤、溫度傳感器、煙霧傳感器、LED燈、電機、繼電器等模塊組成。系統(tǒng)中設置了4個按鍵,其中1個是復位鍵,其余的3個鍵,其中一個是設置鍵,另外兩個是加減鍵,用來設置溫度、煙霧閾值,用程序來控制實現(xiàn)不同的功能:
(1)LCD液晶顯示屏實時顯示當前的煙霧值和溫度值;
(2)溫度和煙霧的報警值可以通過按鍵設定
(3)當前溫度值超過上限時,藍燈亮,蜂鳴器響;
(4)當前煙霧值超過上線時,黃燈亮,蜂鳴器響,電機運轉(zhuǎn);
(5)四個按鍵功能:設置鍵、加鍵、減鍵、復位按鍵;
(6)通過繼電器驅(qū)動模塊,當煙霧或可燃氣體濃度超過報警值時啟動繼電器,繼電器帶動風扇轉(zhuǎn)動模擬排煙。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif Snipaste_2022-01-18_10-38-09.jpg

單片機源程序如下:
  1. void main (void)
  2. {
  3.         u8 key;        
  4. //  uint ppm;
  5.         uchar adc = 0;
  6.         float voltage = 0;
  7.         wendu=check_wendu();                                          //初始化時調(diào)用溫度讀取函數(shù) 防止開機85°C
  8.         Init1602();                                                                                  //調(diào)用初始化顯示函數(shù)
  9.         LCD_Write_String(0,0,"SET T:00 Y:0.00%");  //開機界面
  10.         LCD_Write_String(1,0,"NOW T:00 Y:0.00%");  
  11.         delay_ms(1000);
  12.         wendu=check_wendu();        //初始化時調(diào)用溫度讀取函數(shù) 防止開機85°C
  13.         
  14.         while (1)                                                                        //主循環(huán)
  15.         {        
  16.                 key=Key_Scan();                                                                        //按鍵掃描
  17.                 adc = Adc0832(0);                                                                //讀取adc值
  18.                 voltage = adc * 5/255;                                        //將adc值換算成電壓
  19. yanwu=(39*adc+100)/100;                          //0-255轉(zhuǎn)化為1-100的線性關(guān)系顯示,由于顯示問題,ppm100-10000除100,顯示1-100        
  20. wendu=check_wendu();                          //讀取溫度值
  21.         
  22.                
  23. //========================================================================
  24. //循環(huán)的主程序,進行數(shù)據(jù)讀取,switch循環(huán)選擇對應的模式進行按鍵設置
  25. //LED、蜂鳴器、風扇均為低電平有效
  26. //========================================================================
  27.          
  28.                 if(key==KEY_SET)
  29.                         {
  30.                                 Mode++;
  31.                         }                                
  32.                                 switch(Mode)                                //判斷模式的值
  33.                                 {
  34.                                  case 0:                                                                                                //監(jiān)控模式
  35.                                         {
  36.                                                 Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu);  //顯示預設溫度,預設煙霧,溫度值,煙霧值
  37.                                                 if(yanwu>=yushe_yanwu)                                                                                                                  //煙霧值大于等于預設值時
  38.                                                         {
  39.                                                                 if(flag)
  40.                                                                          {
  41.                                                                                         Led_Blue=1;                                //煙霧指示燈滅
  42.                                                                                         Fan=1;                                                //風扇停止
  43.                                                                                         Buzzer=1;                                        //蜂鳴器不響
  44.                                                                         }
  45.                                                                 else
  46.                                                                          {
  47.                                                                                         Buzzer=0;                                                                  //蜂鳴器報警
  48.                                                                                         delay_ms(100);
  49.                                                                                         Buzzer=1;
  50.                                                                                         Led_Blue=0;                                                          //煙霧指示燈亮
  51.                                                                                         Fan=0;                                                                                //風扇運行
  52.                                                                          }
  53.                                                         }
  54.                                                 else                                                                                                  //煙霧值小于預設值時
  55.                                                         {
  56.                                                                 Led_Blue=1;                                                          //關(guān)掉報警燈
  57.                                                                 Fan=1;
  58.                                                                 Buzzer=1;
  59.                                                         }
  60.                                                 if(wendu>=(yushe_wendu*10))                  //溫度大于等于預設溫度值時(為什么是大于預設值*10:因為我們要顯示的溫度是有小數(shù)點后一位,是一個3位數(shù),25.9°C時實際讀的數(shù)是259,所以判斷預設值時將預設值*10)
  61.                                                         {
  62.                                                                 if(flag)
  63.                                                                          {
  64.                                                                                         Led_Yellow=1;        //煙霧指示燈
  65.                                                                                         Buzzer=1;
  66.                                                                          }
  67.                                                          else
  68.                                                                          {
  69.                                                                                         Buzzer=0;                                //打開蜂鳴器報警
  70.                                                                                         delay_ms(100);
  71.                       Buzzer=1;                                                                                 
  72.                                                                                         Led_Yellow=0;                //打開溫度報警燈
  73.                                                                          }
  74.                                                         }                                                                        
  75.                                                 else                                                                                        //溫度值小于預設值時
  76.                                                                 {
  77.                                                                          Led_Yellow=1;                        //關(guān)閉報警燈
  78.                                                                          Buzzer=1;          //關(guān)閉蜂鳴器
  79.                                                                 }                                                        
  80.                                                 if((yanwu<yushe_yanwu)&&(wendu<(yushe_wendu*10)))        //當煙霧小于預設值并且溫度也小于預設值時
  81.                                                                 {
  82.                                                                          Buzzer=1;                                        //停止報警
  83.                                                                 }
  84.                                                                 break;
  85.                                                         }
  86.                         case 1:                                                                                                        //預設溫度模式
  87.                         {
  88.                                 SelectPosition(0,5) ;                                        //指定位置
  89.                                 write_com(0x0d);                                                        //陰影閃爍
  90.                                 if(key==KEY_ADD)                                                        //加鍵按下
  91.                                         {
  92.                                                 yushe_wendu++;                                            //預設溫度值(閥值)加1
  93.                                                 if(yushe_wendu>=99)                                         //當閥值加到大于等于99時
  94.                                                 yushe_wendu=99;                                                         //閥值固定為99
  95.                                                 LCD_Write_Char(0,6,yushe_wendu,2) ;//顯示預設溫度
  96.                                         }
  97.                                 if(key==KEY_MINUS)                                                 //減鍵按下
  98.                                         {
  99.                                                 if(yushe_wendu<=1)                                        //當溫度上限值減小到1時
  100.                                                 yushe_wendu=1;                          //固定為1
  101.                                                 yushe_wendu--;                                                        //預設溫度值減一,最小為0
  102.                                                 LCD_Write_Char(0,6,yushe_wendu,2) ;//顯示預設溫度
  103.                                         }
  104.                                                 break;                                                                                          //執(zhí)行后跳出switch
  105.                         }
  106.                         case 2:                                                                                                        //預設煙霧模式
  107.                         {
  108.                                 SelectPosition(0,10) ;                                //指定位置        
  109.                                 write_com(0x0d);                                                        //打開顯示 無光標 光標閃爍
  110.                                 if(key==KEY_ADD)                                                        //加鍵按下
  111.                                         {
  112.                                                 if(yushe_yanwu>=100)        //當閥值加到大于等于99時
  113.                                                 yushe_yanwu=99;            //閥值固定為98
  114.                                                 yushe_yanwu++;                                            //預設煙霧值(閥值)加1,最大為99
  115.                                                 LCD_Write_Char(0,13,yushe_yanwu,2) ;//顯示預設煙霧
  116.                                         }
  117.                                 if(key==KEY_MINUS)                                                //減鍵按下
  118.                                         {        
  119.                                                 if(yushe_yanwu<=1)                                        //當煙霧上限值減小到1時
  120.                                                 yushe_yanwu=1;                  //固定為1
  121.                                                 yushe_yanwu--;                                                        //預設溫度值減一,最小為0         
  122.                                                 LCD_Write_Char(0,13,yushe_yanwu,2) ;//顯示預設煙霧
  123.                                         }
  124.                                                 break;
  125.                         }
  126.                                 default        :        
  127.                                         {
  128.                                                 write_com(0x38);                                                //屏幕初始化
  129.                                                 write_com(0x0c);                                                //打開顯示 無光標 無光標閃爍
  130.                                                 Mode=0;                                                                            //恢復正常模式
  131.                                                 break;
  132.                                         }        
  133.                         }                        
  134.         }                                                         
  135. }        
復制代碼

Keil代碼與Proteus仿真下載:
火災報警仿真代碼.7z (99.27 KB, 下載次數(shù): 218)

評分

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

查看全部評分

回復

使用道具 舉報

ID:964009 發(fā)表于 2022-4-7 11:16 | 顯示全部樓層
下載的仿真原理圖是.pdsprj格式的文件,需要用Proteus8.8這個版本來打開
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 18gay男同69亚洲网站 | 小草久久久久久久久爱六 | 免费黄色大片 | 九九亚洲精品 | 欧美久久一区 | 亚洲免费在线观看 | 国产精品一区二 | 国产精品久久久久久中文字 | 成人免费小视频 | 精品国产一区二区三区在线观看 | 国产精品久久久久久久久久久新郎 | 亚洲午夜av久久乱码 | 免费能直接在线观看黄的视频 | 操皮视频 | 国产高清视频在线播放 | 一区二区三区四区在线视频 | a级毛片免费高清视频 | 亚洲人成网站777色婷婷 | 亚洲情综合五月天 | 久草新在线 | 一区| 久久久精品久久 | 色av一区 | 国产日韩91 | 免费艹逼视频 | 精品国产乱码一区二区三区 | 精品国产乱码久久久久久88av | 久久大陆 | 国产成人精品一区二区三区在线 | 亚洲高清视频在线观看 | 欧美在线一区二区三区 | 精品免费 | 国产精品国产a | 国产精品99一区二区 | 亚洲91| 精品国产乱码久久久久久丨区2区 | 日韩视频中文字幕 | 日日人人| 久久久久久久国产精品 | 精品一级 | 欧美精品1区2区 |