標(biāo)題: 基于STC51單片機(jī)超聲波測(cè)距(精簡(jiǎn)設(shè)計(jì)只需三個(gè)元件) [打印本頁]

作者: 劉海龍    時(shí)間: 2016-10-16 21:33
標(biāo)題: 基于STC51單片機(jī)超聲波測(cè)距(精簡(jiǎn)設(shè)計(jì)只需三個(gè)元件)
基于STC51單片機(jī)超聲波測(cè)距精簡(jiǎn)設(shè)計(jì)只需三個(gè)元件(測(cè)距模塊暫且算做是一個(gè)元件吧
1.所需元件:STC單片機(jī)+超聲波模塊+4位共陽數(shù)碼管
2.原理:?jiǎn)纹瑱C(jī)向測(cè)距模塊trig腳發(fā)送20us的高電平觸發(fā)測(cè)距,Echo 測(cè)距結(jié)束時(shí)會(huì)輸出高電平,電平時(shí)長為超聲波信號(hào)往返時(shí)間之和。Echo 腳開始輸出高電平時(shí)啟動(dòng)定時(shí)計(jì)數(shù)器計(jì)時(shí),當(dāng)Echo 腳高電平結(jié)束時(shí)停止計(jì)數(shù),根據(jù)定時(shí)器的時(shí)間可算出距離。
3.連接:?jiǎn)纹瑱C(jī)插在面包板上數(shù)碼管直接插在單片機(jī)上面(引腳一一對(duì)應(yīng)見原理圖)測(cè)距模塊trig腳接P5.4Echo 腳接P5.5












  1. /***************************************************************                                                                                                        
  2. 作者:    劉海龍(部分程序來自網(wǎng)絡(luò)及STC官網(wǎng))
  3. 程序名:  51單片機(jī)超聲波測(cè)距()    
  4. 編寫時(shí)間:2016年7月4日
  5. 硬件支持:超聲波模塊US-020、四位共陽數(shù)碼管、STC單片機(jī)                                                                  
  6. /***************************************************************/
  7. #include <STC15w.H>//        單片機(jī)頭文件
  8. #include <intrins.h>
  9. #include <4LED_YANG.h>//包含共陽數(shù)碼管驅(qū)動(dòng)程序
  10. #define uchar unsigned char
  11. #define uint  unsigned int
  12. uint timeH,timeL;//定義2個(gè)存儲(chǔ)計(jì)時(shí)器值的變量
  13. uint distance;//定義測(cè)量值的變量
  14. uint time;//定義Echo腳返回的高電平時(shí)間變量
  15. /***************************************************************/
  16. sbit        Echo         =         P5 ^ 5;        //超聲波測(cè)距模塊Echo連接的IO
  17. sbit        Trig         =         P5 ^ 4;        //超聲波測(cè)距模塊Trig連接的IO
  18. /*******************************************/
  19. void delay1ms (unsigned int a){ // 1ms延時(shí)程序
  20.         unsigned int i;
  21.         while( --a != 0){
  22.                 for(i = 0; i < 630; i++);//STC單片機(jī)在晶振為12MHz時(shí)i值上限為630  
  23.         }                                                       //AT89C51單片機(jī)在外部晶振為12MHz時(shí)i值上限為125
  24. }
  25. /*******************************************/               
  26. void delay_20us()                //@12.000MHz
  27. {
  28.         unsigned char i;
  29.         _nop_();
  30.         _nop_();
  31.         i = 57;
  32.         while (--i);
  33. }
  34. /*********************************************************************************************
  35. 函數(shù)名:定時(shí)器初始化函數(shù)
  36. 調(diào)  用:INT_init();
  37. /**********************************************************************************************/
  38. void INT_init (void){
  39.         TMOD=0x01; //定時(shí)器0,16位工作方式計(jì)數(shù)模式
  40.         TH0=0;   //定時(shí)器0清零
  41.     TL0=0; //定時(shí)器0清零
  42.         EA = 1;        //總中斷開
  43.         Trig=0;//拉低為下次觸發(fā)做準(zhǔn)備   
  44. }
  45. //***************************************************************
  46. void dist (void){//測(cè)量距離程序
  47.         Trig=1;         //
  48.         delay_20us();   //延時(shí)20us
  49.         Trig=0;         //Trig輸出20us高電平觸發(fā)測(cè)距
  50.         while(Echo==0); //等待Echo回波引腳變高電平
  51.                 TR0=1;//程序運(yùn)行到此處時(shí)說明Echo腳變成了高電平,此時(shí)啟動(dòng)T0開始計(jì)時(shí)
  52.                 while(Echo==1); //等待Echo回波引腳高電平結(jié)束               
  53.         TR0=0;//程序運(yùn)行到此處時(shí)說明Echo腳變成了低電平,此時(shí)T0停止計(jì)時(shí)
  54.                 time=TH0*256+TL0;
  55.         distance=time*0.170;  //測(cè)量距離
  56.         distance=distance-2;//測(cè)量起點(diǎn)不同減去的數(shù)值不同        
  57.         TH0 = 0;  //重置計(jì)時(shí)器
  58.             TL0 = 0;
  59.                         
  60. }
  61. void main()//主函數(shù)  
  62. {

  63.         init();//單片機(jī)IO口工作方式初始化
  64.         INT_init;//T0初始化
  65.         while(1)        
  66.     {        
  67.                 dist();//測(cè)量距離
  68.                 disp();//數(shù)碼管顯示距離
  69.                 delay1ms(20);//兩次測(cè)量間需要有10ms間隔                                            
  70.     }
  71. }
  72. //***************************************************************END
復(fù)制代碼



超聲波測(cè)距程序.rar

3.08 MB, 下載次數(shù): 331, 下載積分: 黑幣 -5

源程序+原理圖


作者: gm388    時(shí)間: 2016-10-18 09:06
果然夠精簡(jiǎn)
作者: 劉海龍    時(shí)間: 2016-10-18 10:14
gm388 發(fā)表于 2016-10-18 09:06
果然夠精簡(jiǎn)

謝謝夸獎(jiǎng)
作者: 紫電1    時(shí)間: 2017-2-19 10:05
下載看看
作者: 趙鐸    時(shí)間: 2017-3-30 07:27
沒有仿真圖嗎
作者: 劉海龍    時(shí)間: 2017-4-3 20:26
趙鐸 發(fā)表于 2017-3-30 07:27
沒有仿真圖嗎

沒有仿真圖
作者: 大肚肥貓    時(shí)間: 2017-4-3 23:46
下載看看
作者: rapemn    時(shí)間: 2017-6-2 11:33
你這是20腳單片機(jī)吧?哪有P5.5  P5.4的?
作者: kouzili    時(shí)間: 2017-11-8 22:01
好東西謝謝分享
作者: iloveplc    時(shí)間: 2017-12-13 10:46
超級(jí)簡(jiǎn)單,學(xué)習(xí)樓主的程序一下,問問樓主,連三極管都不用,單片機(jī)會(huì)沒事嗎?還有精度如果,誤差為正負(fù)多少個(gè)mm?
作者: KAIving    時(shí)間: 2018-1-26 14:34
哈哈,正需要,謝謝啦
作者: KAIving    時(shí)間: 2018-1-26 14:52
回復(fù)回復(fù),在找資料謝謝啦
作者: 993691524    時(shí)間: 2018-2-6 17:05
HC-SR04模塊適用這套代碼嗎?

作者: 剛學(xué)車的小司機(jī)    時(shí)間: 2018-3-6 17:26
謝謝大佬分享
作者: wpq201800    時(shí)間: 2018-3-18 17:16
的確是很精簡(jiǎn),學(xué)習(xí)下!
作者: 剛學(xué)車的小司機(jī)    時(shí)間: 2018-3-23 10:48
這個(gè)源程序?yàn)槭裁催\(yùn)行不出結(jié)果?
作者: 香辣小籠包    時(shí)間: 2018-4-12 11:46
學(xué)習(xí)一下
作者: hc1997    時(shí)間: 2018-6-4 12:01
學(xué)習(xí)一下

作者: XD1860    時(shí)間: 2018-6-4 13:16
厲害學(xué)習(xí)了這么精簡(jiǎn)效率好高啊
作者: 倫雪洋    時(shí)間: 2018-6-9 23:56
最近在做這方面的,下載來看看。
作者: 13855759542    時(shí)間: 2018-6-11 20:37
沒有考慮超聲波的測(cè)距范圍吧,當(dāng)定時(shí)器溢出的時(shí)候,不應(yīng)該再添加個(gè)中斷處理嗎
作者: pantak    時(shí)間: 2018-7-5 10:07
學(xué)習(xí)一下
作者: 予軒同學(xué)    時(shí)間: 2018-8-4 11:24
沒有仿真圖嘛
作者: a9069776    時(shí)間: 2018-10-7 16:26
學(xué)習(xí)中,謝謝!
作者: 快樂眼淚    時(shí)間: 2018-10-7 20:19
這個(gè)精度和最大距離是多少
作者: 1468216262    時(shí)間: 2018-10-11 10:32
謝謝樓主,對(duì)我?guī)椭艽?img src="static/image/smiley/default/em74.gif" smilieid="74" border="0" alt="" />
作者: 新鄉(xiāng)家電維修    時(shí)間: 2018-10-11 12:13
rapemn 發(fā)表于 2017-6-2 11:33
你這是20腳單片機(jī)吧?哪有P5.5  P5.4的?

STC15W408AS單片機(jī)就有P5.5,P5.4,是個(gè)比較器兩個(gè)輸入腳,也可以做IO口使用
作者: pptototo    時(shí)間: 2018-10-12 09:58
確實(shí)精簡(jiǎn)
作者: gdxz001    時(shí)間: 2019-2-4 17:52
看著不錯(cuò)
作者: 文哥2019    時(shí)間: 2019-2-6 16:06
請(qǐng)問這個(gè)的精度和測(cè)量距離是多少?
作者: chwei1    時(shí)間: 2019-2-25 07:33
looklook,這幾天正好在用sr04
作者: 艾特77    時(shí)間: 2019-2-25 13:38
樓主可以加一下Q嗎,我想學(xué)習(xí)一下3444131422
作者: gxlin    時(shí)間: 2019-2-26 11:34
另件齊備,做一個(gè)玩玩。
作者: a461624201    時(shí)間: 2020-4-5 14:55
發(fā)個(gè)我理解和修改的程序,也不枉我研究一晚上。stc15f104e通過。

超聲.zip

38.13 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5


作者: tieq1952    時(shí)間: 2020-4-6 07:01
謝謝分享!!!
作者: rayin    時(shí)間: 2020-11-15 16:33
不錯(cuò),值得學(xué)習(xí)。51hei有你更精彩!!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1