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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機可燃氣體報警系統設計

[復制鏈接]
跳轉到指定樓層
樓主
可燃氣體報警系統整體設計框圖如圖1所示,主控制器由不間斷電源UPS供電。當空氣中的可燃氣體濃度達到或超過設定值時,一般設定高限為20%LEL,高高限為40%LEL,檢測電路即產生與空氣中被測氣體濃度成線性關系的“氣——電”信號,再對該信號(模擬信號)進行分析處理,通過A/D轉化變為數字信號傳至控制器。最后由單片機驅動LED數碼管觸摸屏的彩色液晶顯示屏,顯示氣體濃度值,最后由蜂鳴器完成報警過程。經延時、判斷,確認為事故泄漏后,發出聲光報警,啟動應急處理程序,關閉燃氣管道電磁閥,切斷進口氣源,啟動通風換氣設備(軸流風機)進行排氣。當氣體濃度降低到安全點后,關閉通風換氣設備,停止報警,打開氣體管道電磁閥,達到安全保護目的。 并且系統具有自診斷功能,若檢測到氣敏元件損壞,系統關閉閥門,并啟動故障報警信號,黃色報警燈閃亮,提示用戶更換氣敏傳感器。并考慮了要實現現場氣體濃度顯示,超限預警及自動處理等功能。

可燃氣體報警器設計框圖如圖2所示。當環境中有可燃氣體存在時,傳感器將會產生一定的電壓變化ΔV,考慮到安裝的需要,處理器與可燃氣體傳感器會有一段距離,所以將電壓信號ΔV轉化成4~20mA電流信號,為保證檢測到的信號有較遠的傳輸距離,此電流通過采樣電阻,最后通過A/D轉化電路,將模擬信號轉化為數字信號,通過數碼顯示管顯示出來。

可燃氣體報警系統中的核心元件是傳感器。在初次使用時,對傳感器需進行調零,以便使數碼管顯示的氣體濃度為0%,當環境中存在可燃氣體時,差分放大電路將傳感器生成的電壓信號百度ΔV轉化為4~20mA電流信號,然后送至單片機采樣端口。
檢測電路由補償元件和檢測元件配對組成電橋的兩個臂,遇到可燃氣體時,檢測元件電阻升高,橋路輸出電壓變量,此變量與氣體濃度成正比增大,補償元件起參比及溫度補償作用,其特點是橋路輸出電壓呈線性,具有良好的重復性、響應速度快,元件工作穩定、可靠,本文在設計系統,采用MC102作為氣體傳感器,它對1%濃度的甲烷,其靈敏度為20-40mA。
三、程序實現
3.1程序實現時應考慮的問題
控制器設計 
1.控制器設計框圖 
主控制器是設計的難點,也是系統的最主要部分。一方面:實時的顯示濃度信息,判斷接受數據,進行聲光報警,連鎖控制閥門和排風設備的動作;另一方面:及時響應顯示終端,實現查詢、設定等功能,同時還要實現故障自診斷功能。主控制器主要包括通訊模塊、人機界面、存儲、打印、報警,電源等功能模塊。智能顯示終端通過串口通訊方式,用32KB的EEPROM存儲系統參數及歷史記錄等關機保存數據,用32KB的RAM存儲實時濃度信息。24V到5V電壓轉化通過電源電路部分實現。同時也檢測市電、備電及充電狀況等,其主控制器結構圖如圖3。
  1. #include<reg51.h>    //包含單片機寄存器的頭文件
  2. #include<intrins.h>  //包含_nop_()函數定義的頭文件
  3. unsigned char flag=0; //緊急報警標示位
  4. unsigned char flag1=0; //傳感器檢測報警標示位
  5. unsigned int after_AD_val=0;    //儲存濃度數值范圍是100-10000
  6. unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f共陰極
  7. unsigned int TIME_1;
  8. sbit CS=P1^0;       //將CS位定義為P3.4引腳0xc0,
  9. sbit CLK=P1^1;      //將CLK位定義為P1.0引腳
  10. sbit DIO=P1^2;       //將DIO位定義為P1.1引腳
  11. sbit K1=P2^4;
  12. sbit LED1=P2^0;                 //警情指示燈
  13. sbit LED2=P2^1;                 //正常指示燈
  14. sbit BEEP=P2^2;

  15. sbit wei1=P3^0;
  16. sbit wei2=P3^1;
  17. sbit wei3=P3^2;
  18. sbit wei4=P3^3;
  19. unsigned int wan,qian,bai,shi,ge;
  20. void delay1ms()
  21. {
  22.    unsigned char i,j;        
  23.          for(i=0;i<10;i++)
  24.           for(j=0;j<33;j++)
  25.            ;                 
  26. }
  27. void delay2ms()
  28. {
  29.    unsigned char i,j;        
  30.          for(i=0;i<120;i++)
  31.           for(j=0;j<33;j++)
  32.            ;                 
  33. }

  34. void delaynms(unsigned char n)
  35. {
  36.    unsigned char i;
  37.         for(i=0;i<n;i++)
  38.            delay1ms();
  39. }
  40. void key()
  41. {
  42.         if(K1==0)
  43.         {
  44.                 delaynms(5);
  45.                 if(K1==0)
  46.                 {
  47.                         while(!K1);
  48.                         flag++;
  49.                         if(flag==2)
  50.                         flag=0;
  51.                 }
  52.         }
  53. }
  54. /*****************************************************

  55. 函數功能:報警子程序

  56. *****************************************************/
  57. void baojing()
  58. {
  59.         if(flag==1||flag1==1)
  60.         {
  61.                 LED2=1;
  62.                 LED1=0;
  63.                 BEEP=0;
  64.                 delaynms(10);
  65.                 BEEP=1;
  66.                 delaynms(10);
  67.         }
  68.         if(flag==0&&flag1==0)
  69.         {
  70.                 LED2=0;
  71.                 LED1=1;
  72.                 BEEP=1;
  73.         }
  74. }
  75. void display()
  76. {
  77. //unsigned sel;
  78.         wan=after_AD_val/10000;
  79.         qian=(after_AD_val/1000)%10;
  80.         bai=(after_AD_val/100)%10;
  81.         shi=(after_AD_val/10)%10;
  82.         ge=after_AD_val%10;
  83.         //sel=0x01;
  84. //P0=table[wan];
  85.         // P3=sel;
  86.         //        delaynms(3);
  87.         //P3=0x00;
  88. //sel=sel<<1;
  89.          P0=table[qian];
  90.         wei1=1;
  91. delaynms(1);
  92.         wei1=0;
  93. //sel=sel<<1;
  94. P0=table[bai];
  95. wei2=1;
  96. delaynms(3);
  97.         wei2=0;
  98. //sel=sel<<1;
  99. P0=table[shi];
  100. wei3=1;
  101. delaynms(3);
  102. wei3=0;
  103. //sel=sel<<1;
  104. P0=table[ge];
  105. wei4=1;
  106. delaynms(3);
  107. wei4=0;
  108. //sel=sel<<1;
  109. }

  110. /*****************************************************
  111. 函數功能:將模擬信號轉換成數字信號
  112. ***************************************************/
  113. unsigned int  A_D()
  114. {
  115.   unsigned char i,dat;
  116.    CS=1;   //一個轉換周期開始
  117.    CLK=0;  //為第一個脈沖作準備
  118.    CS=0;  //CS置0,片選有效

  119.    DIO=1;    //DIO置1,規定的起始信號  
  120.    CLK=1;   //第一個脈沖
  121.    CLK=0;   //第一個脈沖的下降沿,此前DIO必須是高電平
  122.    DIO=1;   //DIO置1, 通道選擇信號  
  123.    CLK=1;   //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數據用于選擇通道,這里選通道CH0
  124.    CLK=0;   //第二個脈沖下降沿
  125.    DIO=0;   //DI置0,選擇通道0
  126.    CLK=1;    //第三個脈沖
  127.    CLK=0;    //第三個脈沖下降沿
  128.    DIO=1;    //第三個脈沖下沉之后,輸入端DIO失去作用,應置1
  129.    CLK=1;    //第四個脈沖
  130.    for(i=0;i<8;i++)  //高位在前
  131.     {
  132.       CLK=1;         //第四個脈沖
  133.       CLK=0;
  134.       dat<<=1;       //將下面儲存的低位數據向右移
  135.                 dat|=(unsigned char)DIO;          //將輸出數據DIO通過或運算儲存在dat最低位
  136.     }                                 
  137.     CS=1;          //片選無效
  138.          return dat;         //將讀書的數據返回     
  139.   }
  140. /*****************************************************

  141.   函數功能:警情檢測子程序

  142. *****************************************************/
  143. unsigned int  jq()
  144. {
  145.         unsigned int AD_val;    //儲存A/D轉換后的值
  146.         AD_val=A_D();    //進行A/D轉換
  147.         if(AD_val>=30)   
  148.         flag1=1;
  149.         else
  150.         flag1=0;
  151.         
  152.         after_AD_val=(9900/256)*AD_val+100;
  153.         
  154. return AD_val;
  155. }
  156. /*****************************************************
  157. 函數功能:主函數
  158. ***************************************************/
  159. void timer1() interrupt 3
  160. {        
  161.         
  162.   TH1=(65536-65535)/256;
  163.         TL1=(65536-65535)%256;
  164.         TIME_1++;
  165.         
  166.         if(TIME_1 > 8)
  167.         {TIME_1=0;
  168.         jq();
  169.         }
  170. }
  171.         

  172. main(void)
  173. {        
  174.         LED2=1;
  175.         LED1=1;
  176.         BEEP=1;
  177.         EA=1;
  178.         TMOD=0X10;
  179.         TH1=(65536-60000)/256;
  180.         TL1=(65536-60000)%256;
  181.         ET1=1;
  182.         TR1=1;
  183.          
  184.     while(1)
  185.       {
  186. //jq();
  187.                         display();        
  188.                   key();
  189.                   baojing();
  190.                                 
  191.                                 
  192.           }
  193. }
復制代碼
Word格式文檔51黑下載地址:
設計1.doc (718.89 KB, 下載次數: 54)


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

使用道具 舉報

沙發
ID:328014 發表于 2020-6-20 02:22 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线一区二区 | 欧美精品久久久 | 狠狠躁夜夜躁人人爽天天高潮 | 成人中文字幕在线观看 | 日韩一区二 | 女人牲交视频一级毛片 | 亚洲精品视频在线播放 | 日韩精品人成在线播放 | 国产精品国产a级 | 免费簧片视频 | h片在线观看免费 | 欧美视频中文字幕 | 一区二区视频在线观看 | h漫在线观看 | 二区高清| 99小视频| 国产99久久精品一区二区永久免费 | 操操日| 日韩成人免费视频 | 亚洲 欧美 综合 | 日韩成年人视频在线 | 黄色免费av| 在线中文字幕第一页 | 中文字幕在线观看一区 | 国产a级黄色录像 | 日韩欧美一级精品久久 | 精品国产欧美 | 国产精品视频网 | 久久久久99| 狠狠爱综合| 亚洲三区在线观看 | 亚洲一区二区在线视频 | 色综合天天综合网国产成人网 | 久久精品美女 | wwwsihu| 国产色婷婷久久99精品91 | 日日干日日射 | 一本一道久久a久久精品蜜桃 | 性做久久久久久免费观看欧美 | 喷水毛片| 久久69精品久久久久久国产越南 |