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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于單片機超聲波測距,大佬們幫忙看看該加點啥,或者怎么改

查看數: 2820 | 評論數: 5 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-4-22 20:05

正文摘要:

我在讀大學,學習過單片機原理與應用,但是感覺不怎么懂這個東西,但對單片機是很感興趣的。 現在有打算弄一個超聲波測距顯示模塊,網上也買了一些硬件設備。 超聲波測距模塊是US-015,現在將一塊1602顯示屏裝在一 ...

回復

ID:523803 發表于 2021-12-12 23:43
你那個超聲波模塊不是IIC協議的好像
ID:838572 發表于 2021-11-29 17:06
Trig Echo腳接好就行
ID:844772 發表于 2021-4-23 09:25
你主要不是接線問題,用的超聲測距模塊US-015,不是IIC設備,不能按你的程序使用,二樓的是正確的。
ID:895440 發表于 2021-4-23 08:02
gnd接地,vcc接高電平的。剩下兩個看程序端口定義接
ID:585428 發表于 2021-4-23 07:58
  1. /*
  2. 接線方式:超聲波模塊trig接單片機P2^0 ,超聲波模塊echo接單片機P2^1
  3.           P3^2接P2^1
  4. */

  5. #include "reg52.h"

  6. typedef unsigned char uchar;
  7. typedef unsigned int uint;

  8. sbit trig=P2^0;
  9. sbit echo=P2^1;
  10. sbit beep=P1^5;

  11. sbit LSA=P2^2;
  12. sbit LSB=P2^3;
  13. sbit LSC=P2^4;

  14. uint num=0;                   //計時
  15. float distance;           //距離
  16. float cm_per_num=3.40; //按照我的定時器初始化設定,1個num是100us
  17. uchar DisplayData[6];
  18. uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  19.                                         0x7f,0x6f};//顯示0~9的值

  20. void delay1ms(uchar xms)   
  21. {
  22.     uchar a,b,c;
  23.     for(c=xms;c>0;c--)
  24.         for(b=142;b>0;b--)
  25.             for(a=2;a>0;a--);
  26. }

  27. /*
  28. 設置工作方式為方式1,GATE=1,當中斷0口輸入1且TR0=1 時定時器工作
  29. 因為超聲波模塊的工作原理就是在接收回波時,從開始到結束,ech0=1
  30. 所以在單片機上用杜邦線將ech0的P21口和 中斷0口 P32口鏈接
  31. 使得在回波期間,定時器工作,計算回波的時間,進而s=vt算出距離
  32. */
  33. void TimerInit()          //初始化,定時10us
  34. {
  35.     TMOD = 0x09;         
  36.     TH0 = 0xFF;
  37.     TL0 = 0x9C;
  38.     EA = 1;
  39.     ET0 = 1;
  40.     TR0 = 1;
  41. }

  42. void Timer0() interrupt 1          //中斷 每過100us,num+1
  43. {
  44.     TH0 = 0xFF;
  45.     TL0 = 0x9C;
  46.         num++;
  47. }

  48. void value_distance()
  49. {
  50.         trig=0;
  51.         echo=0;
  52.         delay1ms(1);
  53.         trig=1;
  54.         delay1ms(11); //給trig一個10us以上的高電平信號
  55.         trig=0;
  56.         if(echo==1)           //如果有反射回的超聲波,echo腳會在這期間持續輸入高電平
  57.         {
  58.                 delay1ms(300);                //接收超聲波期間不做任何動作。
  59.         }
  60.         distance=num*cm_per_num/2;   //計算距離,單位CM
  61.         num=0;
  62.                
  63. }

  64. void datapros()                         //對取得的距離進行處理
  65. {
  66.         float a= distance*100;       
  67.         DisplayData[0]=smgduan[(int)a%10];
  68.         DisplayData[1]=smgduan[(int)a%100/10];
  69.         DisplayData[2]=smgduan[(int)a%1000/100]+0x80;         //數字+小數點
  70.         DisplayData[3]=smgduan[(int)a%10000/1000];
  71.         DisplayData[4]=smgduan[(int)a/10000];       
  72.                
  73. }

  74. void DigDisplay()                           //數碼管顯示
  75. {
  76.         uchar i;
  77.         for(i=0;i<6;i++)
  78.         {
  79.                 switch(i)         //位選,選擇點亮的數碼管,
  80.                 {
  81.                         case(0):
  82.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  83.                         case(1):
  84.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  85.                         case(2):
  86.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  87.                         case(3):
  88.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  89.                         case(4):
  90.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  91.                         case(5):
  92.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  93.                 }
  94.                 P0=DisplayData[i];//發送段碼
  95.                 delay1ms(1); //間隔一段時間掃描       
  96.                 P0=0x00;//消隱
  97.         }
  98. }

  99. void main()
  100. {
  101.         while(1)
  102.         {
  103.                 TimerInit();
  104.                 value_distance();
  105.                 datapros();
  106.                 DigDisplay();
  107.         }
  108. }
復制代碼

這是我以前寫的,測試過,是可以正常工作,并顯示距離的。

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩视频网站 | 欧美特级黄色 | 一级黄色片网站 | 羞羞的视频在线观看 | 日韩成人av在线 | 草久在线| 国产精品视频免费观看 | 欧美久久精品 | 欧美伊人 | 亚洲免费视频网址 | 成人国产网站 | 少妇精品亚洲一区二区成人 | 久久国产精品一区二区三区 | 日韩精品一区二区三区中文在线 | 91精品亚洲 | 久久中文一区二区 | 网络毛片| 色吧综合 | 网黄在线 | 欧美啪啪网站 | 日韩一区二区三区在线观看 | 日本在线一区二区三区 | 国产精品久久久久久久久久久久久 | 亚洲成人一区 | 中文字幕成人 | 亚洲一区二区成人 | 久久中文字幕一区 | 国产综合久久久久久鬼色 | av黄色在线 | 日日操夜夜操天天操 | 午夜精品久久久久久久星辰影院 | 亚洲网站在线播放 | 欧美视频第二页 | 91亚洲国产成人久久精品网站 | 天天天天天天天干 | 日韩在线视频一区 | 精品久久久久久久久久久久 | 日本中文字幕在线观看 | 亚洲综合三区 | 超碰高清 | 久久午夜精品 |