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

標題: 單片機MQ-2煙霧檢測+ADC0809 AD轉換+lcd1602顯示程序 [打印本頁]

作者: zxcvvb    時間: 2019-11-10 17:43
標題: 單片機MQ-2煙霧檢測+ADC0809 AD轉換+lcd1602顯示程序

單片機源程序如下:
  1. /*============================================================
  2. //
  3. //程序編寫:劉先生

  4. 接線:D0--D7接P0.0-P0.7
  5.       ST---P2.3
  6.           EOC--P2.2
  7.           OE---P2.1
  8.           CLK--P2.0

  9. 本程序源碼只供學習參考,不得應用于商業(yè)用途,如有需要請聯(lián)系作者。

  10. [注:使用12M或11.0592M晶振,實測使用11.0592M]
  11. =============================================================*/
  12. #include <reg52.H>                //器件配置文件
  13. #include <intrins.h>
  14. #include "lcd.h"

  15. #define adc0809_data  P0  //單片機P0接模塊D0~D7引腳

  16. sbit STR = P2^3; //單片機P2.3接模塊STR引腳, 啟動轉換信號
  17. sbit EOC = P2^2; //單片機P2.2接模塊EOC, 轉換結束信號,高電平有效
  18. sbit OE  = P2^1; //單片機P2.1接模塊OE,輸出允許信號,高電平有效
  19. sbit CLK = P2^0; //單片機P2.0接CLK ,ADC0809時鐘,輸入50-800KHZ的頻率
  20.                  //一般選用500K

  21.                                  //將短接片去掉開啟位選功能,否則默認IN0為輸入引腳
  22. sbit AA = P2^6;         //單片機P2.6接模塊A引腳
  23. sbit BB = P2^5;         //單片機P2.6接模塊B引腳
  24. sbit CC = P2^4;         //單片機P2.6接模塊C引腳

  25. unsigned char AD_DATA[1]; //保存IN0通道轉換后的數(shù)據(jù)
  26. unsigned char disbuff[4] = { 0,0,0,0,};
  27. unsigned char Disp[]="0123456789";         //使用字符串保存數(shù)字0~9所對應的ASCLL碼
  28. unsigned char I_Disp[]="Smoke_C : ";           //初始顯示值
  29. unsigned char i;



  30. /***********************************
  31. 函數(shù)名:  AD()
  32. 功能:    啟動AD轉換將值儲存于 AD_DATA[0]

  33. ***********************************/
  34. void AD(void )
  35. {
  36.    STR=0;

  37.    STR=1; //啟動AD轉換

  38.    STR=0;  
  39.    while(0==EOC);//等待轉換結束
  40.    OE=1;  
  41.    AD_DATA[0]=adc0809_data; //讀取AD數(shù)據(jù),數(shù)據(jù)范圍為0-255
  42.    OE=0;  
  43. }
  44. /***********************************
  45. 函數(shù)名:  t0()
  46. 功能:    產(chǎn)生ADC0809CLK所需要的時鐘

  47. ***********************************/
  48. void t0(void) interrupt 1 using 0
  49. {  
  50.    CLK=~CLK;
  51. }
  52. /***********************************
  53. 函數(shù)名:  Conut()
  54. 功能:    將AD_DATA[0]的各位拆分以方便lcd顯示

  55. ***********************************/
  56. void Conut(void)
  57. {
  58.          disbuff[0]=AD_DATA[0]/100;
  59.          disbuff[1]=AD_DATA[0]/10%10;
  60.          disbuff[2]=AD_DATA[0]%10;
  61. }
  62. /***********************************
  63. 函數(shù)名:  delayms()
  64. 功能:    延時 ms 毫秒

  65. ***********************************/
  66. void delayms(unsigned int ms)
  67. {
  68.         unsigned char j;
  69.         i=100;
  70.         for(;ms;ms--)
  71.         {
  72.                 while(--i)
  73.                 {
  74.                         j=10;
  75.                         while(--j);
  76.                 }
  77.         }
  78. }
  79. /***********************************
  80. 函數(shù)名:  LcdDisplay()
  81. 功能:    用lcd顯示數(shù)組disbuff[]中的值

  82. ***********************************/

  83. void LcdDisplay(void)
  84. {
  85.         LcdWriteCom(0x0b+0x80);
  86.         for(i=0;i<3;i++)
  87.         {
  88.                 LcdWriteData(Disp[disbuff[i]]);        
  89.         }                                
  90. }
  91. /***********************************
  92. 函數(shù)名:  Analog_IO_Sel()
  93. 參數(shù)說明: m 的值對應ADC0809芯片上模擬輸入的IO
  94. 功能:    確定模擬輸入位選

  95. ***********************************/

  96. void Analog_IO_Sel(unsigned char m)
  97. {
  98.         switch(m)
  99.         {
  100.                 case 0 : CC = 0; BB = 0; AA = 0; break;
  101.                 case 1 : CC = 0; BB = 0; AA = 1; break;
  102.                 case 2 : CC = 0; BB = 1; AA = 0; break;
  103.                 case 3 : CC = 0; BB = 1; AA = 1; break;
  104.                 case 4 : CC = 1; BB = 0; AA = 0; break;
  105.                 case 5 : CC = 1; BB = 0; AA = 1; break;
  106.                 case 6 : CC = 1; BB = 1; AA = 0; break;
  107.                 case 7 : CC = 1; BB = 1; AA = 1; break;
  108.         }
  109. }

  110. void main()
  111. {
  112.         EA=1; //開總中斷
  113.     TMOD=0x02; //設定定時器 T0工作方式
  114.     TH0=216; //利用T0中斷產(chǎn)生CLK信號
  115.     TL0=216;  
  116.     TR0=1; //啟動定時器T0
  117.     ET0=1;
  118.     STR=0;
  119.     OE=0;
  120.         Analog_IO_Sel(0);  //設置為IN0輸入

  121.         LcdInit();
  122.         for(i=0;i<10;i++)                  //顯示初始值
  123.         {
  124.                 LcdWriteData(I_Disp[i]);        
  125.         }

  126.         while(1)
  127.           {
  128.              AD();
  129.          Conut();                        //計算
  130.                  LcdDisplay();                //lcd顯示
  131.                  delayms(10);                //10MS         
  132.           }         
  133. }
復制代碼
全部資料51hei下載地址:
煙霧檢測+ADC0809AD轉換+lcd1602顯示.7z (2.68 MB, 下載次數(shù): 183)


作者: 972963    時間: 2020-3-17 15:41
感謝樓主的熱心分享,下來研究




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产免费一区二区三区免费视频 | 91精品国产91久久久久久最新 | 99久久精品免费看国产小宝寻花 | 碰碰视频| a视频在线 | 一区二区三区免费 | av手机免费在线观看 | 四虎影视1304t | 日韩精品久久久久 | 亚洲高清免费 | 美女久久久久久久久 | 久久国产日韩欧美 | 精精国产xxxx视频在线 | 精品一区免费 | 亚洲精品视频免费观看 | 91久久久久久 | 久久久久国产一区二区三区 | 自拍偷拍亚洲一区 | 97国产精品视频人人做人人爱 | 99av成人精品国语自产拍 | 狠狠操在线 | 色婷婷综合久久久中文字幕 | 欧美激情久久久 | 色偷偷噜噜噜亚洲男人 | 成人激情免费视频 | 午夜视频在线观看网站 | 成人依人 | 亚欧洲精品在线视频免费观看 | 日本a v在线播放 | 丝袜美腿一区二区三区 | jvid精品资源在线观看 | 日韩中文字幕视频在线观看 | 中文字幕 欧美 日韩 | 免费黄色的视频 | 成人欧美一区二区三区黑人孕妇 | 久久精品二区亚洲w码 | 日韩欧美一区二区三区四区 | 一区二区电影网 | 欧美综合久久久 | 精品九九九 | 国产乱肥老妇国产一区二 |