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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4581|回復: 6
收起左側

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

  [復制鏈接]
ID:539024 發表于 2021-7-8 10:16 | 顯示全部樓層 |閱讀模式
1. 能夠檢測煤氣的濃度;
2. 液晶LCD1602顯示煤氣的濃度;
3. 超標進行聲光報警。
由于是仿真,煙霧濃度傳感器采用仿真里面的光敏傳感器代替,用ADC0832測電壓值。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png 51hei.gif
51hei.png
單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit rs=P3^5;
  5. sbit lcden=P3^4;
  6. sbit SCL=P2^6;                //SCL定義,連接ADC0832SCL腳
  7. sbit DO=P2^5;                //DO定義,連接ADC0832DO腳
  8. sbit CS=P2^4;                //CS定義,連接ADC0832CS腳
  9. sbit baojing=P1^0;  //聲光報警
  10. uchar table[]="CO:";
  11. uint CO=0,a,nongdu;
  12. void delay(uint x)
  13. {
  14.         uint a,b;
  15.         for(a=x;a>0;a--)
  16.                 for(b=10;b>0;b--);
  17. }

  18. void write_com(uchar com)         //寫命令,RS=0
  19. {
  20.         P0=com;
  21.         rs=0;
  22.         lcden=0;
  23.         delay(10);
  24.         lcden=1;
  25.         delay(10);
  26.         lcden=0;
  27.        
  28. }

  29. void write_data(uchar dat)           //寫數據,RS=1
  30. {
  31.         P0=dat;
  32.         rs=1;
  33.         lcden=0;
  34.         delay(10);
  35.         lcden=1;
  36.         delay(10);
  37.         lcden=0;
  38.        
  39. }

  40. void init()
  41. {

  42.         write_com(0x38);   //顯示模式設置:16×2顯示,5×7點陣,8位數據接口
  43.         delay(20);
  44.         write_com(0x0c);   //顯示模式設置
  45.         delay(20);
  46.         write_com(0x06);   //顯示模式設置:光標右移,字符不移
  47.         delay(20);
  48.         write_com(0x01);   //清屏幕指令,將以前的顯示內容清除
  49.         delay(20);       
  50. }
  51. void dis(uchar k)
  52. {         
  53.         CO=k;

  54.         write_com(0x80);  //設置所要顯示字符的位置為第一行第一列
  55.         a=0;
  56.         for(a=0;a<3;a++)           //總共要顯示3個字符,故循環三次。
  57.         {                                          
  58.         write_data(table[a]);
  59.         delay(10);               
  60.         }
  61.     write_com(0x83);                 //顯示濃度百位
  62.         write_data(0x30+CO/100);
  63.         delay(10)  ;

  64.         write_com(0x84);           //顯示濃度十位
  65.         write_data(0x30+CO/10%10);
  66.         delay(10)  ;

  67.         write_com(0x85);           //顯示濃度個位
  68.         write_data(0x30+CO%10);
  69.         delay(10)  ;

  70.         write_com(0x86);
  71.         write_data('%');        //顯示“%”
  72.         delay(10)  ;
  73.        


  74. }  
  75. unsigned char ad0832read(bit SGL,bit ODD)
  76. {
  77.         unsigned char i=0,value=0,value1=0;               
  78.                 SCL=0;
  79.                 DO=1;
  80.                 CS=0;                //開始
  81.                 SCL=1;                //第一個上升沿       
  82.                 SCL=0;
  83.                 DO=SGL;
  84.                 SCL=1;          //第二個上升沿
  85.                 SCL=0;
  86.                 DO=ODD;
  87.                 SCL=1;           //第三個上升沿
  88.                 SCL=0;           //第三個下降沿
  89.                 DO=1;
  90.                 for(i=0;i<8;i++)
  91.                 {
  92.                         SCL=1;
  93.                         SCL=0; //開始從第四個下降沿接收數據
  94.                         value<<=1;
  95.                         if(DO)
  96.                                 value++;                                               
  97.                 }
  98.                 for(i=0;i<8;i++)
  99.                 {                        //接收校驗數據
  100.                         value1>>=1;
  101.                         if(DO)
  102.                                 value1+=0x80;
  103.                         SCL=1;
  104.                         SCL=0;
  105.                 }
  106.                 CS=1;
  107.                 SCL=1;       
  108.                 if(value==value1)                                //與校驗數據比較,正確就返回數據,否則返回0       
  109.                         return value;
  110.         return 0;
  111. }

  112. void main()
  113. ……………………

  114. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
煤氣泄漏檢測報警器.rar (51.17 KB, 下載次數: 106)

評分

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

查看全部評分

回復

使用道具 舉報

ID:996321 發表于 2021-12-23 21:55 | 顯示全部樓層
請問,把這個變成酒精檢測的需要怎么操作
回復

使用道具 舉報

ID:993801 發表于 2021-12-26 15:55 | 顯示全部樓層
樓主你好,我的運行之后顯示屏一直是255%沒有變化是怎么回事
回復

使用道具 舉報

ID:262 發表于 2021-12-27 04:57 | 顯示全部樓層
2262273731 發表于 2021-12-26 15:55
樓主你好,我的運行之后顯示屏一直是255%沒有變化是怎么回事

版本的問題,你用Proteus8.8打開
51hei.png
回復

使用道具 舉報

ID:908826 發表于 2021-12-27 09:39 | 顯示全部樓層
這個一氧化碳濃度傳感器是Proteus自帶的嗎????
回復

使用道具 舉報

ID:1017505 發表于 2022-4-15 00:08 | 顯示全部樓層
博主,為什么聲光報警器,當濃度超過30%的時候只有光報警,沒有聲音報警,請問是哪里出了問題嗎
回復

使用道具 舉報

ID:1018482 發表于 2022-4-15 00:43 | 顯示全部樓層
at89c52換成51可以嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人免费视频在线观看 | 91高清在线视频 | 一级片在线观看 | av天天看| 欧美一区二区在线观看 | 天天碰夜夜操 | 亚洲精品在线免费观看视频 | 欧美精品久久久 | 99re在线视频 | 全免费a级毛片免费看视频免费下 | 久草在线影 | 国产国拍亚洲精品av | 国产一区久久 | 久久99这里只有精品 | 久久综合一区二区 | 亚洲午夜精品一区二区三区他趣 | 欧美视频三区 | 日本一区二区不卡 | 欧美三区在线观看 | 伊人久久综合影院 | 国产日韩中文字幕 | 国产精品久久精品 | 精品少妇一区二区三区日产乱码 | 一区二区在线不卡 | 成人国产精品一级毛片视频毛片 | 国产精品久久久久久久久久免费看 | 成人一区二区三区视频 | 天天精品在线 | 久久久无码精品亚洲日韩按摩 | 亚洲国产精久久久久久久 | 超碰8 | 国产精品明星裸体写真集 | 91精品国产综合久久福利软件 | 精品综合久久久 | 中文字幕精品一区二区三区精品 | 免费黄色成人 | 免费看欧美一级片 | 在线观看成人 | 亚洲成人精品在线 | 日日综合 | 最新中文字幕一区 |