国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

基于51單片機的煤氣濃度檢測程序Proteus仿真 keil5 C語言編寫

[復制鏈接]
樓主
coolice 發表于 2021-7-12 00:47:03 | 只看該作者 |只看大圖 |倒序瀏覽 |閱讀模式
1. 能夠檢測煤氣的濃度;
2. 液晶LCD1602顯示煤氣的濃度;
3. 超標進行聲光報警。
由于是仿真,煙霧濃度傳感器采用仿真里面的光敏傳感器代替,用ADC0832測電壓值。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
基于51單片機的煤氣濃度檢測程序Proteus仿真 keil5 C語言編寫 3.gif

部分源碼:完整源碼見附件
  1. void init()
  2. {

  3.         write_com(0x38);   //顯示模式設置:16×2顯示,5×7點陣,8位數據接口
  4.         delay(20);
  5.         write_com(0x0c);   //顯示模式設置
  6.         delay(20);
  7.         write_com(0x06);   //顯示模式設置:光標右移,字符不移
  8.         delay(20);
  9.         write_com(0x01);   //清屏幕指令,將以前的顯示內容清除
  10.         delay(20);      
  11. }
  12. void dis(uchar k)
  13. {         
  14.         CO=k;

  15.         write_com(0x80);  //設置所要顯示字符的位置為第一行第一列
  16.         a=0;
  17.         for(a=0;a<3;a++)           //總共要顯示3個字符,故循環三次。
  18.         {                                          
  19.         write_data(table[a]);
  20.         delay(10);               
  21.         }
  22.     write_com(0x83);                 //顯示濃度百位
  23.         write_data(0x30+CO/100);
  24.         delay(10)  ;

  25.         write_com(0x84);           //顯示濃度十位
  26.         write_data(0x30+CO/10%10);
  27.         delay(10)  ;

  28.         write_com(0x85);           //顯示濃度個位
  29.         write_data(0x30+CO%10);
  30.         delay(10)  ;

  31.         write_com(0x86);
  32.         write_data('%');        //顯示“%”
  33.         delay(10)  ;
  34.       


  35. }  
  36. unsigned char ad0832read(bit SGL,bit ODD)
  37. {
  38.         unsigned char i=0,value=0,value1=0;               
  39.                 SCL=0;
  40.                 DO=1;
  41.                 CS=0;                //開始
  42.                 SCL=1;                //第一個上升沿      
  43.                 SCL=0;
  44.                 DO=SGL;
  45.                 SCL=1;          //第二個上升沿
  46.                 SCL=0;
  47.                 DO=ODD;
  48.                 SCL=1;           //第三個上升沿
  49.                 SCL=0;           //第三個下降沿
  50.                 DO=1;
  51.                 for(i=0;i<8;i++)
  52.                 {
  53.                         SCL=1;
  54.                         SCL=0; //開始從第四個下降沿接收數據
  55.                         value<<=1;
  56.                         if(DO)
  57.                                 value++;                                               
  58.                 }
  59.                 for(i=0;i<8;i++)
  60.                 {                        //接收校驗數據
  61.                         value1>>=1;
  62.                         if(DO)
  63.                                 value1+=0x80;
  64.                         SCL=1;
  65.                         SCL=0;
  66.                 }
  67.                 CS=1;
  68.                 SCL=1;      
  69.                 if(value==value1)                                //與校驗數據比較,正確就返回數據,否則返回0      
  70.                         return value;
  71.         return 0;
  72. }

  73. void main()
  74. ……………………

  75. …………限于本文篇幅 余下代碼請下載附件…………
復制代碼
完整源碼和proteus仿真文件: 煤氣泄漏檢測報警器.rar (51.17 KB, 售價: 2 E幣)

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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 06:06

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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