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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的CO檢測系統 物聯網在線實時監測的設計 帶源程序和原理圖

  [復制鏈接]
跳轉到指定樓層
樓主
自己做的,原理圖什么都有,
基于單片機的CO檢測系統
本設計是基于STC單片機的CO檢測系統,可以220V供電,也可以5V供電,可以檢測CO濃度,自行設置報警值,當檢測到CO濃度超過該設定值后進行聲光報警,并將此時的CO濃度值和該時刻的時間存儲,存儲后可以查詢,每次可存儲3次報警值,可以通過藍牙在手機上讀取出當前的CO濃度和時間。
該系統共有7個按鍵,從左至右依次是功能按鍵、查詢按鍵、加(上翻)按鍵、減(下翻)按鍵、清空按鍵、退出按鍵、復位按鍵
當系統供電后,顯示主界面,如圖1所示。

                       圖1 主界面
1602液晶第一行顯示時間,第二行前半部分顯示此時CO濃度,即CO:****ppm(注意當系統供電后,CO傳感器會有一個預熱時間,需要55S左右的預熱),第二行后半部分顯示設定的報警值,即H:****,當按下功能按鍵后,進入報警值調節界面,如圖2所示。此時通過加(上翻)按鍵、減(下翻)按鍵來調節報警值,當調節完成后,按下退出按鍵,返回圖1所示界面。


                             圖2 報警值設置界面
當CO濃度超過設置報警值后,蜂鳴器響,紅色LED發光,當濃度值降低到報警值以下后報警自動解除,此次的報警時間和報警值將被存儲。通過查詢按鍵,進入查看存儲報警值的界面,如圖3所示。

       圖3 查詢界面
該系統可以進行3次報警值的存儲,即連續發生3次報警后,這3次的報警值可以被存儲,通過加(上翻)按鍵、減(下翻)按鍵進行翻頁查詢。當3次存儲完成后,按下清除按鍵可以清空存儲數據,為下次存儲做準備。查詢或清除完成后,通過退出按鍵,返回圖1 所示界面。復位按鍵對單片機系統復位,出現死機后,通過該按鍵重啟。
注意事項
1.   程序下載
程序利用串口下載,首先將下載器正確連接(說明一下,板子上的下載口從左到右依次接下載器的TX、RX,下載器上標的有,+5V和GND和藍牙共用,共用的目的是下載程序時把藍牙拔掉,切記),打開STC下載器如圖。

選擇STC125A60S2,點擊“打開程序文件”選擇源程序文件夾中的Output文件夾的(源程序) .hex文件。
點擊下載,當提示上電時拔下電源再插上就可以了。
免冷切下載器不需要把電。

如果對我們的設計滿意,請把我們推薦給您身邊其他需要幫助的同學。
贈人玫瑰,手有余香



基于物聯網CO在線實時監測的設計的原理圖:


部分源碼預覽(元整的源碼請下載附件)
  1. /*
  2. *********************************************************************************************************
  3. *                                          
  4. *        模塊名稱 : ADC采集配置
  5. *        文件名稱 : adc.h
  6. *        版    本 : V1.0
  7. *        說    明 : 負責co輸出電壓采集           
  8. *        修改記錄 :
  9. *   版本號     日期       作者      說明
  10. *   v1.0     2015-4-30            
  11. *               
  12. *     
  13. *********************************************************************************************************
  14. */
  15. #include "adc.h"
  16. /******************************************************************************
  17. *函數名稱:uint adc10_start(uchar channel);
  18. *函數功能:adc采集                                                                                         
  19. *輸入參數:channel:1-7               
  20. *輸出參數:adc
  21. *返回值:adc10_start()
  22. *******************************************************************************/
  23. uint adc10_start(uchar channel)        //channel = 0~7
  24. {
  25.         uint        adc;
  26.         uchar        i;

  27.         ADC_RES = 0;
  28.         ADC_RESL = 0;

  29.         ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;

  30.         i = 250;
  31.         do{
  32.                 if(ADC_CONTR & ADC_FLAG)
  33.                 {
  34.                         ADC_CONTR &= ~ADC_FLAG;
  35.                         adc = (uint)ADC_RES;
  36.                         adc = (adc << 2) | (ADC_RESL & 3);
  37.                         return        adc;
  38.                 }
  39.         }while(--i);
  40.         return        1024;
  41. }
  42. /******************************************************************************
  43. *函數名稱:void  delay1_ms(unsigned char ms);
  44. *函數功能:延時函數                                                                                         
  45. *輸入參數:ms               
  46. *輸出參數:無
  47. *返回值:無
  48. *******************************************************************************/
  49. void  delay1_ms(unsigned char ms)
  50. {
  51.      unsigned int i;
  52.          do{
  53.               i = MAIN_Fosc / 14000;
  54.                   while(--i)        ;   //14T per loop
  55.      }while(--ms);
  56. }
  57. /******************************************************************************
  58. *函數名稱:void  INputchange(uchar date);
  59. *函數功能:選擇12C5A60AD/S2系列模擬輸入(AD)選擇                                                                                         
  60. *輸入參數:date               
  61. *輸出參數:無
  62. *返回值:無
  63. *******************************************************************************/
  64. void  INputchange(uchar date)
  65. {
  66.              P1ASF = date;//0x03;//(1 << ADC_CH0);                        //12C5A60AD/S2系列模擬輸入(AD)選擇
  67.           ADC_CONTR = ADC_360T | ADC_ON;
  68.    
  69. }
  70. /******************************************************************************
  71. *函數名稱:uint  AdHandle(uchar num);
  72. *函數功能:AD數據處理函數                                                                                         
  73. *輸入參數:num               
  74. *輸出參數:number
  75. *返回值:AdHandle
  76. *******************************************************************************/
  77. uint  AdHandle(uchar num)
  78. {           uint        count;
  79.        uint number;
  80.            delay1_ms(100);
  81.            delay1_ms(100);
  82.            count = adc10_start(num);                // P1.0 ADC
  83.            number = ((float)count*4.8828 );         //將采集的電壓放大1000倍,主要是為了提高co計算的精度
  84.            return number;
  85.      
  86. }
復制代碼


  1. /*
  2. *********************************************************************************************************
  3. *                                          
  4. *        模塊名稱 : 按鍵發送配置
  5. *        文件名稱 : key.h
  6. *        版    本 : V1.0
  7. *        說    明 : 負責按鍵的配置           
  8. *        修改記錄 :
  9. *   版本號     日期       作者      說明
  10. *   v1.0     2015-4-30            
  11. *               
  12. *      
  13. *********************************************************************************************************
  14. */
  15. #include <reg51.h>
  16. #include"key.h"
  17. #include"LCD1602.h"
  18. #include"buzzer.h"
  19. int Key_Num = 200;
  20. uchar select=3;
  21. uchar page;
  22. /******************************************************************************
  23. *函數名稱:uint Key_Alarm(void);
  24. *函數功能:報警值設置                                                                                
  25. *輸入參數:無               
  26. *輸出參數:Key_Num
  27. *返回值:Key_Alarm()
  28. *******************************************************************************/
  29. uint Key_Alarm(void)
  30. {
  31.         if(select==1)                                //在功能界面時才能對報警值經行設置
  32.         {         
  33.                 if(key_add == 0)                //判斷key_add是否按下
  34.                 {
  35.                      while(!key_add);         //保證按鍵按下一次加一次
  36.                         Key_Num+=10;                 //報警值加10   
  37.                 }
  38.                 if(key_reduce == 0)
  39.                 {
  40.                      while(!key_reduce);
  41.                         Key_Num-=10;                    
  42.                 }
  43.                 if (Key_Num<=0)
  44.                 {
  45.                         Key_Num=0;
  46.                 }
  47.         }
  48.    return Key_Num;         
  49. }
  50. /******************************************************************************
  51. *函數名稱:uchar key_Interface(void);
  52. *函數功能:查詢界面按鍵切換                                                                                
  53. *輸入參數:無               
  54. *輸出參數:page
  55. *返回值:key_Interface()
  56. *******************************************************************************/

  57. uchar key_Interface(void)
  58. {
  59.         if(select==2)                                  //判斷是否在查詢界面
  60.         {         
  61.                 if(key_add == 0)                  //判斷key_add是否按下
  62.                 {
  63.                      while(!key_add);        
  64.                         page++;                             //頁面上翻
  65.                 }
  66.                 if(key_reduce == 0)
  67.                 {
  68.                      while(!key_reduce);        //防止按鍵抖動,按鍵對應的I/0一直低電平,
  69.                         page--;                    
  70.                 }
  71.                 if (page<=1)                        //頁面范圍為1-3當小于1時按鍵再減則不起作用
  72.                 {
  73.                         page=1;
  74.                 }
  75.                 if (page>=3)                        //當大于3是按鍵再加也不起作用
  76.                 {
  77.                         page=3;
  78.                 }
  79.         }
  80.    return page;         
  81. }
  82. /******************************************************************************
  83. *函數名稱:void key_Empty(void);
  84. *函數功能:按鍵清空                                                                                
  85. *輸入參數:無               
  86. *輸出參數:無
  87. *返回值:無
  88. *******************************************************************************/
  89. void key_Empty(void)
  90. {
  91.         Empty();
  92. }
  93. /******************************************************************************
  94. *函數名稱:uchar Key_function(void);
  95. *函數功能:主界面按鍵切換                                                                                
  96. *輸入參數:無               
  97. *輸出參數:select
  98. *返回值:Key_function()
  99. *******************************************************************************/
  100. uchar Key_function(void)
  101. {
  102.            if(key_function == 0)                  //判斷功能按鍵是否按下
  103.         {
  104.              while(!key_function);        //防止按鍵抖動,按鍵對應的I/0一直低電平,
  105.                 lcd_init();                                 //液晶清屏
  106.                 select=1;                             //顯示功能界面
  107.         }
  108.         if(key_inquire == 0)                  //判斷查詢按鍵是否按下
  109.         {
  110.              while(!key_inquire);        //防止按鍵抖動,按鍵對應的I/0一直低電平,
  111.                 lcd_init();
  112.                 select=2;                              //顯示查詢界面
  113.         }
  114.          if(key_exit == 0)                         //判斷退出按鍵是否按下
  115.         {
  116.              while(!key_exit);        //防止按鍵抖動,按鍵對應的I/0一直低電平,
  117.                 lcd_init();
  118.                 select=3;                            //顯示主界面
  119.         }
  120.         return select;
  121. }
復制代碼
  1. /*
  2. *********************************************************************************************************
  3. *                                          
  4. *        模塊名稱 : ADC采集配置
  5. *        文件名稱 : adc.h
  6. *        版    本 : V1.0
  7. *        說    明 : 負責co輸出電壓采集           
  8. *        修改記錄 :
  9. *   版本號     日期       作者      說明
  10. *   v1.0     2015-4-30            
  11. *               
  12. *     
  13. *********************************************************************************************************
  14. */
  15. #include "adc.h"
  16. /******************************************************************************
  17. *函數名稱:uint adc10_start(uchar channel);
  18. *函數功能:adc采集                                                                                         
  19. *輸入參數:channel:1-7               
  20. *輸出參數:adc
  21. *返回值:adc10_start()
  22. *******************************************************************************/
  23. uint adc10_start(uchar channel)        //channel = 0~7
  24. {
  25.         uint        adc;
  26.         uchar        i;

  27.         ADC_RES = 0;
  28.         ADC_RESL = 0;

  29.         ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;

  30.         i = 250;
  31.         do{
  32.                 if(ADC_CONTR & ADC_FLAG)
  33.                 {
  34.                         ADC_CONTR &= ~ADC_FLAG;
  35.                         adc = (uint)ADC_RES;
  36.                         adc = (adc << 2) | (ADC_RESL & 3);
  37.                         return        adc;
  38.                 }
  39.         }while(--i);
  40.         return        1024;
  41. }
  42. /******************************************************************************
  43. *函數名稱:void  delay1_ms(unsigned char ms);
  44. *函數功能:延時函數                                                                                         
  45. *輸入參數:ms               
  46. *輸出參數:無
  47. *返回值:無
  48. *******************************************************************************/
  49. void  delay1_ms(unsigned char ms)
  50. {
  51.      unsigned int i;
  52.          do{
  53.               i = MAIN_Fosc / 14000;
  54.                   while(--i)        ;   //14T per loop
  55.      }while(--ms);
  56. }
  57. /******************************************************************************
  58. *函數名稱:void  INputchange(uchar date);
  59. *函數功能:選擇12C5A60AD/S2系列模擬輸入(AD)選擇                                                                                         
  60. *輸入參數:date               
  61. *輸出參數:無
  62. *返回值:無
  63. *******************************************************************************/
  64. void  INputchange(uchar date)
  65. {
  66.              P1ASF = date;//0x03;//(1 << ADC_CH0);                        //12C5A60AD/S2系列模擬輸入(AD)選擇
  67.           ADC_CONTR = ADC_360T | ADC_ON;
  68.    
  69. }
  70. /******************************************************************************
  71. *函數名稱:uint  AdHandle(uchar num);
  72. *函數功能:AD數據處理函數                                                                                         
  73. *輸入參數:num               
  74. *輸出參數:number
  75. *返回值:AdHandle
  76. *******************************************************************************/
  77. uint  AdHandle(uchar num)
  78. {           uint        count;
  79.        uint number;
  80.            delay1_ms(100);
  81.            delay1_ms(100);
  82.            count = adc10_start(num);                // P1.0 ADC
  83.            number = ((float)count*4.8828 );         //將采集的電壓放大1000倍,主要是為了提高co計算的精度
  84.            return number;
  85.      
  86. }
復制代碼



原理圖下載: PCB_Project_24.pdf (540.98 KB, 下載次數: 94)
基于物聯網CO在線實時監測的設計源碼下載: 源程序1 - 副本.zip (107.37 KB, 下載次數: 117)

評分

參與人數 3黑幣 +108 收起 理由
lxllxlcc + 5 很給力!
一世顧你 + 3 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:105624 發表于 2016-7-17 10:20 | 只看該作者
一些功能的介紹 【功能介紹】基于單片機的一氧化碳檢測與藍牙通信.doc (502.5 KB, 下載次數: 53)
回復

使用道具 舉報

板凳
ID:105624 發表于 2016-7-17 10:22 | 只看該作者
有好多設計,平常學的時候作者玩的,有需要的聯系我,有緣人直接帶走
回復

使用道具 舉報

地板
ID:110780 發表于 2016-12-1 10:47 | 只看該作者
好厲害啊
回復

使用道具 舉報

5#
ID:153626 發表于 2017-1-12 21:10 | 只看該作者
很可以。
回復

使用道具 舉報

6#
ID:147215 發表于 2017-1-13 18:29 | 只看該作者
謝謝分享!,,,,
回復

使用道具 舉報

7#
ID:185587 發表于 2017-4-2 16:27 | 只看該作者
很不錯
回復

使用道具 舉報

8#
ID:117562 發表于 2017-5-11 20:03 | 只看該作者
樓主仿真圖用什么軟件打開
回復

使用道具 舉報

9#
ID:198499 發表于 2017-5-27 10:35 | 只看該作者
為什么測出的濃度100多,這么高
回復

使用道具 舉報

10#
ID:298027 發表于 2018-3-28 12:58 | 只看該作者
求問這兩塊是什么意思?

TIM圖片20180328125718.png (3.6 KB, 下載次數: 136)

TIM圖片20180328125718.png

TIM圖片20180328125723.png (7.34 KB, 下載次數: 141)

TIM圖片20180328125723.png
回復

使用道具 舉報

11#
ID:298213 發表于 2018-3-28 13:20 | 只看該作者
大神啊,牛逼
回復

使用道具 舉報

12#
ID:242842 發表于 2018-3-28 15:21 | 只看該作者
檢測一氧化碳的是什么芯片?
回復

使用道具 舉報

13#
ID:242842 發表于 2018-3-28 15:26 | 只看該作者
qq3119564 發表于 2018-3-28 12:58
求問這兩塊是什么意思?

同問
回復

使用道具 舉報

14#
ID:435279 發表于 2018-11-28 20:58 | 只看該作者
很有用哈哈
回復

使用道具 舉報

15#
ID:453311 發表于 2019-12-4 13:08 | 只看該作者
狼牙小帥 發表于 2016-7-17 10:22
有好多設計,平常學的時候作者玩的,有需要的聯系我,有緣人直接帶走

我需要
回復

使用道具 舉報

16#
ID:517951 發表于 2020-11-15 16:18 | 只看該作者
不錯,值得學習。51hei有你更精彩!!
回復

使用道具 舉報

17#
ID:719679 發表于 2021-5-13 00:03 | 只看該作者
qq3119564 發表于 2018-3-28 12:58
求問這兩塊是什么意思?

第二個是電源模塊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区视频在线播放 | 精品福利在线视频 | 亚洲精品自在在线观看 | 欧美888| 日韩视频成人 | 亚洲欧洲精品成人久久奇米网 | 亚洲精品无 | 97超碰人人 | 久久久国产一区二区三区四区小说 | 国产精品亚洲一区 | 日韩精品一区二区三区在线播放 | 九色网址 | 久久一视频 | 亚洲国产成人精品女人久久久野战 | 特黄特色大片免费视频观看 | 超碰操| 日韩在线视频免费观看 | 国产精品爱久久久久久久 | 岛国av在线免费观看 | 亚洲国产福利视频 | 在线观看国产 | av天天看 | 国产高清精品在线 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 欧美又大粗又爽又黄大片视频 | 久久在线 | 日韩福利一区 | 国产精品亚洲综合 | 黄色网址免费在线观看 | 久青草影院 | 成人欧美一区二区三区在线播放 | 国外成人在线视频网站 | 天天操天天玩 | 日日爱视频 | 亚洲国产精品久久 | 欧美一级黄色片在线观看 | 99视频免费 | 欧美一级免费观看 | 亚洲精品一区二区网址 | 久久亚洲一区二区三 | 亚洲精品美女视频 |