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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有關用2Y0A21紅外傳感器測量距離的程序,求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:166237 發表于 2017-3-2 20:51 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近在做紅外測距實驗,用的是2Y0A21紅外傳感器,外加外置的ADC0809轉換模塊連接到單片機中,用數碼管顯示出測到的距離,程序在下面,紅外模塊和ADC的連線應該沒有錯誤,但是不能測到距離,數碼管總是顯示000,求大神幫助為什么不能測出距離;PS:我的單片機數碼管顯示程序是正確的,程序編譯后沒有錯誤沒有警告
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char


  5. sbit ST  = P3^0;
  6. sbit OE  = P3^1;
  7. sbit EOC = P3^2;
  8. sbit CLK = P3^3;
  9. sbit LSA=P2^2;
  10. sbit LSB=P2^3;
  11. sbit LSC=P2^4;
  12. sbit adress_A=P1^0; //這是定義ADIN0輸入
  13. sbit adress_B=P1^1;
  14. sbit adress_C=P1^2;

  15. uchar DisplayData[8]; //數碼管顯示數組

  16. uchar code table[]={ 0x3f  , 0x06 , 0x5b , 0x4f ,0x66 , 0x6d,
  17.                        0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c,
  18.                              0x39 , 0x5e , 0x79 , 0x71} ;

  19. void delayms(uint a)        //延時函數
  20.   {
  21.      uint c,d;
  22.      for(c=a;c>0;c--)
  23.        for(d=110;d>0;d--);
  24.   }


  25. /*******************************************************************************
  26. * 函 數 名         : datapros()
  27. * 函數功能                   :AD讀取處理轉換函數
  28. * 輸    入         : temp
  29. * 輸    出         : 無
  30. *******************************************************************************/
  31. void datapros(int temp)  //數據轉換函數,用來轉換由AD轉換而來的電壓值,以便讓數碼管顯示
  32. {
  33.    DisplayData[0] = 0x00;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
  34.     DisplayData[1]=table[temp/100];
  35.      DisplayData[2]=table[temp%100/10];
  36.      DisplayData[3]=table[temp%100%10];
  37. }

  38. /*******************************************************************************
  39. * 函數名         :DigDisplay()
  40. * 函數功能                 :數碼管顯示函數
  41. * 輸入           : 無
  42. * 輸出                  : 無
  43. *******************************************************************************/
  44. void DigDisplay()
  45. {
  46.         uchar i;
  47.         for(i=0;i<3;i++)
  48.         {
  49.                 switch(i)         //位選,選擇點亮的數碼管,
  50.                 {
  51.                         case(0):
  52.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  53.                         case(1):
  54.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  55.                         case(2):
  56.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  57.                         case(3):
  58.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  59.                         case(4):
  60.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  61.                         case(5):
  62.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位        
  63.                 }
  64.                 P0=DisplayData[3-i];//發送數據
  65.                 delayms(5); //間隔一段時間掃描        
  66.                 P0=0x00;//消隱
  67.         }               
  68. }



  69. void ADC0809 ()          //ADC0809啟動程序
  70. {        
  71.       long int temp;
  72.         long int temp1;

  73.       adress_A=0;adress_B=0;adress_C=0;   //選擇IN0作為模擬信號輸入
  74.       ST=0;         //START下降沿時啟動芯片,開始進行A/D轉換,轉換期間保持低電平
  75.         OE=0;

  76.         delayms(10);

  77.         while(1)
  78.         {
  79.              ST=1;ST=0;
  80.              CLK=1;                     //用作AD的時鐘
  81.            CLK=0;
  82.            CLK=1;
  83.            CLK=0;                //給一個脈沖,上升沿寄存器復位,下降沿AD轉換開始
  84.              while(!EOC)
  85.              {
  86.                         CLK=1;
  87.                CLK=0;
  88.              }        //當EOC為1時,轉換結束
  89.              OE=1;                        //寄存器數據輸出到D0-D7
  90.              temp=P0;               
  91.              OE=0;                    //DO-D7復位

  92.              temp1=(temp*500)/256;        //AD值轉換成電壓值(V=AD*VREF/256)
  93. //顯示AD值
  94.            datapros(temp1); //先轉換數據
  95.              DigDisplay();
  96.         }
  97. }

  98. void main()
  99.   {
  100.           ADC0809 ();
  101.          
  102.   }

復制代碼


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

相關帖子

回復

使用道具 舉報

地板
ID:166237 發表于 2017-3-4 18:31 | 只看該作者
admin 發表于 2017-3-3 17:03
你先把ad的輸入端分別接地和vcc看看 看看這時候數碼管的顯示有沒有變化

都只是顯示000
回復

使用道具 舉報

板凳
ID:1 發表于 2017-3-3 17:03 | 只看該作者
你先把ad的輸入端分別接地和vcc看看 看看這時候數碼管的顯示有沒有變化
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本人做爰大片免费观看一老师 | av一区二区三区四区 | 日韩欧美三级 | 一区二区伦理电影 | 美国a级毛片免费视频 | 一区二区三区四区av | 中文字幕一区在线 | 国产欧美一级二级三级在线视频 | 色橹橹欧美在线观看视频高清 | 一区二区三区四区在线视频 | 中文一区二区 | 日韩三级在线观看 | 91人人爽| 成人夜晚看av | 一级黄色片网址 | 91看片在线观看 | 电影91久久久 | 国产精品明星裸体写真集 | 不卡欧美 | 亚洲精品日日夜夜 | 国产欧美一区二区三区另类精品 | 一二三四av| 免费看国产片在线观看 | 亚洲精品一区在线观看 | 精品久久久久久亚洲综合网 | 97久久久久久 | 69av网| 免费视频一区 | 亚洲人成网站777色婷婷 | 91视频网址| 日韩久久久久久 | 国产精品视频一二三区 | 欧美激情国产日韩精品一区18 | 欧美日韩国产精品一区 | 亚洲国产精品一区二区久久 | 久久久999国产精品 中文字幕在线精品 | 中文字幕 国产 | 久久国产一区 | 一级欧美一级日韩片免费观看 | 国产成人精品一区二区三 | 国产精品亚洲精品久久 |