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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 29640|回復(fù): 46
打印 上一主題 下一主題
收起左側(cè)

stc15單片機(jī)超聲波測(cè)距教程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:93375 發(fā)表于 2017-3-31 15:40 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我想做超聲波測(cè)距,用89c51系列的很簡(jiǎn)單,再這個(gè)系列的單片機(jī)太慢,現(xiàn)在基本上都
用stc15系列了吧,我現(xiàn)在都是stc15系列了,價(jià)格便宜,速度快。電壓還是寬電壓,在3.3v~5v之間
都可以,主要是速度快了,就可以處理更多的程序了。
好了,不說(shuō)費(fèi)話(huà)了,
其實(shí)用過(guò)stc15系列做超聲波測(cè)距,就知道有個(gè)問(wèn)題就是,單片機(jī)的速度快了,那么定時(shí)器
跑一圈的時(shí)間就少了,像stc15t系列跑一圈才 1除以12乘以65536,計(jì)算公式
1/12*65536=5.461ms左右。聲音的速度大概為 us/58cm, 5461/58=94.2cm左右,發(fā)現(xiàn)計(jì)時(shí)器不夠用了,
這個(gè)時(shí)候就得想辦法了,
一般新手就不知道怎么辦了,
其它很簡(jiǎn)單,定一個(gè)全局變量,記錄跑了幾圈,然后乘以65536,
具體的程序可以了看下面我發(fā)的 馬偉的教程
上面有詳細(xì)介紹。這里我就不多說(shuō),
那個(gè)教程寫(xiě)的很清楚。
寫(xiě)教程太花時(shí)間了。

教程:
本教程用的硬件清單:
    單片機(jī):stc12c5a60s2、stc15w408as、stc15f2k60等
    超聲波模塊:HC-SR04
超聲波測(cè)距的特點(diǎn)就是便宜,缺點(diǎn)就不說(shuō)了,主要說(shuō)說(shuō)超聲波器距離模塊的用法原理吧,模塊圖如下:



好了,超聲波模塊的簡(jiǎn)介就這么多了,話(huà)不多說(shuō),直接上程序

源程序:

  1. #include "STC12C5A.H"

  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. sbit Trig = P2^1;
  5. sbit Echo = P2^0;

  6. //聲明函數(shù)
  7. void getDistance();//獲取距離
  8. void Timer0Init();//初始化定時(shí)器0
  9. void UartInit();//初始化串口
  10. void SendData(u8 data_buf); //發(fā)送數(shù)據(jù)到串口
  11. void DelayXms(u16 n); //延時(shí)N ms

  12. //定義全局變量
  13. u8 cnt=0; //定時(shí)器0中斷次數(shù)
  14. u16 time; //計(jì)時(shí)
  15. u16 distance; //距離


  16. void main(){
  17.     EA = 1;//開(kāi)啟總中斷

  18.     UartInit();//初始化串口
  19.     Timer0Init();//初始化定時(shí)器0

  20.     while(1){
  21.         getDistance(); //獲取距離
  22.         DelayXms(800); //延時(shí)
  23.     }

  24. }

  25. //獲取距離
  26. void getDistance()
  27. {
  28.     u8 i,j=60;
  29.     u8 str[] = "D:-.--M";

  30.     TH0 = TL0 = cnt = 0; //初始化定時(shí)器0
  31.     Trig = 1; //拉高超聲波模塊觸發(fā)IO
  32.     while(j--); // 延時(shí)20us
  33.     Trig = 0; //拉低超聲波模塊觸發(fā)IO
  34.     while(!Echo);//等待超聲波模塊輸出IO拉高
  35.     TR0 = 1; //開(kāi)啟定時(shí)器計(jì)時(shí)
  36.     while(Echo); //等待超聲波模塊輸出IO拉低
  37.      TR0 = 0; //關(guān)閉定時(shí)器計(jì)時(shí)

  38.      //判斷是否超出模塊最大測(cè)距 4m
  39.      if(cnt < 5){
  40.          //計(jì)算出時(shí)間
  41.         time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;
  42.         //計(jì)算出距離 340m/s 或 us/58cm
  43.         distance = time / 58 + 0.5;
  44.     }else
  45.         distance = 0;

  46.     str[2] = (distance % 1000 / 100) + '0';
  47.     str[4] = (distance % 100 / 10) + '0';
  48.     str[5] = (distance % 10) + '0';
  49.     //從串口發(fā)出,也可以用顯示器顯示,自己接顯示驅(qū)動(dòng)就可以了
  50.     for(i=0;i<7;i++){
  51.         SendData(str[i]);
  52.     }
  53.     SendData('');
  54.     //復(fù)位定時(shí)器
  55.     cnt = 0;
  56.     TH0 = TL0 = 0;
  57. }
  58. //定時(shí)器0寄存器初始化
  59. void Timer0Init(void)        //100微秒@12.000MHz
  60. {
  61.     AUXR |= 0x80;        //定時(shí)器時(shí)鐘1T模式
  62.     TMOD &= 0xF0;        //設(shè)置定時(shí)器模式
  63.     TMOD |= 0x01;        //設(shè)置定時(shí)器模式
  64.     TL0 = 0x50;        //設(shè)置定時(shí)初值
  65.     TH0 = 0xFB;        //設(shè)置定時(shí)初值
  66.     TF0 = 0;        //清除TF0標(biāo)志
  67.     TR0 = 0;        //定時(shí)器0開(kāi)始計(jì)時(shí)
  68.     ET0 = 1; //開(kāi)啟定時(shí)器中斷
  69. }

  70. void T0() interrupt 1
  71. {
  72.     cnt++;
  73. }
  74. //串口初始化定時(shí)器1
  75. void UartInit(void)        //4800bps@12.000MHz
  76. {
  77.     SCON=0x52;                  
  78.     AUXR &= 0xFE;
  79.     TMOD=0x20;   
  80.     TH1=TL1=0xf3;
  81.     PCON=0x80;     
  82.     TR1=1;
  83. }

  84. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

下載:
超聲波測(cè)距程序.rar (1.25 KB, 下載次數(shù): 505)

評(píng)分

參與人數(shù) 5黑幣 +99 收起 理由
angmall + 35 共享資料的黑幣獎(jiǎng)勵(lì)!
ljw123456 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
2482366442 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
黑科技李 + 4
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏24 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161033 發(fā)表于 2017-4-14 20:00 | 只看該作者
支持一下。
回復(fù)

使用道具 舉報(bào)

板凳
ID:187096 發(fā)表于 2017-4-15 00:44 | 只看該作者
謝謝分享,支持一下            
回復(fù)

使用道具 舉報(bào)

地板
ID:192084 發(fā)表于 2017-5-17 11:09 | 只看該作者
謝謝分享,很不錯(cuò)的資料,感謝
回復(fù)

使用道具 舉報(bào)

5#
ID:115593 發(fā)表于 2017-6-12 15:32 | 只看該作者
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

6#
ID:211040 發(fā)表于 2017-6-14 09:50 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

7#
ID:209421 發(fā)表于 2017-6-16 05:26 | 只看該作者
很不錯(cuò)的東西。。謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

8#
ID:219260 發(fā)表于 2017-7-12 23:07 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

9#
ID:219260 發(fā)表于 2017-7-12 23:08 | 只看該作者
正好用到,強(qiáng)烈支持!
回復(fù)

使用道具 舉報(bào)

10#
ID:221358 發(fā)表于 2017-7-21 16:56 | 只看該作者
可以用51單片機(jī)做嗎?
回復(fù)

使用道具 舉報(bào)

11#
ID:215883 發(fā)表于 2017-7-22 22:23 | 只看該作者
32的有沒(méi)有
回復(fù)

使用道具 舉報(bào)

12#
ID:226405 發(fā)表于 2017-8-10 08:48 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

13#
ID:230319 發(fā)表于 2017-8-31 20:36 | 只看該作者
hao  hao哈哈哈好
回復(fù)

使用道具 舉報(bào)

14#
ID:106195 發(fā)表于 2017-9-1 17:09 | 只看該作者
感謝分享,支持一下。
回復(fù)

使用道具 舉報(bào)

15#
ID:236374 發(fā)表于 2017-9-28 20:17 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

16#
ID:256836 發(fā)表于 2017-12-4 09:18 | 只看該作者
謝謝呢
回復(fù)

使用道具 舉報(bào)

17#
ID:255989 發(fā)表于 2017-12-5 20:46 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

18#
ID:183763 發(fā)表于 2017-12-20 21:03 | 只看該作者
我也來(lái)做一個(gè)看看
回復(fù)

使用道具 舉報(bào)

19#
ID:285174 發(fā)表于 2018-2-24 15:48 | 只看該作者
支持 一下!
回復(fù)

使用道具 舉報(bào)

20#
ID:103510 發(fā)表于 2018-3-22 17:17 | 只看該作者
謝謝,非常感謝樓主
回復(fù)

使用道具 舉報(bào)

21#
ID:301545 發(fā)表于 2018-4-3 15:59 | 只看該作者
樓主好人,超級(jí)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

22#
ID:268439 發(fā)表于 2018-4-5 16:59 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

23#
ID:351471 發(fā)表于 2018-6-13 22:44 | 只看該作者
雖然沒(méi)積分下載 但是先 mark了
回復(fù)

使用道具 舉報(bào)

24#
ID:345079 發(fā)表于 2018-7-11 15:35 | 只看該作者
謝謝分享,很不錯(cuò)的資料,感謝
回復(fù)

使用道具 舉報(bào)

25#
ID:369118 發(fā)表于 2018-7-11 21:33 | 只看該作者
好東西 ,謝謝分享
回復(fù)

使用道具 舉報(bào)

26#
ID:378529 發(fā)表于 2018-7-24 15:39 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝樓主!!!!!!!!
回復(fù)

使用道具 舉報(bào)

27#
ID:383273 發(fā)表于 2018-8-6 02:12 | 只看該作者
謝謝分享,頂起
回復(fù)

使用道具 舉報(bào)

28#
ID:66287 發(fā)表于 2018-8-7 14:32 | 只看該作者
好東東,謝謝分享!
回復(fù)

使用道具 舉報(bào)

29#
ID:81444 發(fā)表于 2018-9-5 14:58 | 只看該作者
請(qǐng)問(wèn):time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;程序中為什么要+0.5?
回復(fù)

使用道具 舉報(bào)

30#
ID:81444 發(fā)表于 2018-9-5 14:59 | 只看該作者
請(qǐng)問(wèn):time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;中為什么要+0.5
回復(fù)

使用道具 舉報(bào)

31#
ID:403231 發(fā)表于 2018-9-28 16:50 | 只看該作者
先學(xué)習(xí)STc89吧,前面的基礎(chǔ)都還沒(méi)懂
回復(fù)

使用道具 舉報(bào)

32#
ID:419084 發(fā)表于 2018-11-14 02:26 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

33#
ID:445696 發(fā)表于 2018-12-13 15:21 | 只看該作者
很好 支持一下
回復(fù)

使用道具 舉報(bào)

34#
ID:58820 發(fā)表于 2018-12-16 21:54 | 只看該作者
很好 支持一下
回復(fù)

使用道具 舉報(bào)

35#
ID:447947 發(fā)表于 2018-12-17 14:09 來(lái)自手機(jī) | 只看該作者
這個(gè)源程序可以直接復(fù)制嗎
回復(fù)

使用道具 舉報(bào)

36#
ID:447947 發(fā)表于 2018-12-17 14:38 來(lái)自手機(jī) | 只看該作者
這個(gè)有顯示距離的嗎?顯示是以數(shù)碼管顯示還是e1602顯示
回復(fù)

使用道具 舉報(bào)

37#
ID:399179 發(fā)表于 2018-12-18 13:02 來(lái)自手機(jī) | 只看該作者
感謝樓主分享!
回復(fù)

使用道具 舉報(bào)

38#
ID:490013 發(fā)表于 2019-3-17 15:01 | 只看該作者
這個(gè)模塊的缺點(diǎn)是什么,還有定時(shí)器初始化中TH0和TL0的值為什么不是從0開(kāi)始計(jì)算。
回復(fù)

使用道具 舉報(bào)

39#
ID:530474 發(fā)表于 2019-5-15 07:34 來(lái)自手機(jī) | 只看該作者
不錯(cuò)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

40#
ID:484435 發(fā)表于 2019-5-15 19:02 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 噜噜噜噜狠狠狠7777视频 | 亚洲精品二区 | 日日干夜夜操 | 欧美一级做性受免费大片免费 | 亚洲日本中文字幕在线 | 亚洲一区二区三 | 国产精品高潮呻吟久久aⅴ码 | 国家一级黄色片 | 中文字幕日韩欧美 | 国产精品特级毛片一区二区三区 | 成人一区二区三区在线观看 | 精品伊人| 色婷婷精品国产一区二区三区 | 久久精品国产99国产 | 91就要激情 | 亚洲人成人一区二区在线观看 | 99精品电影 | h免费观看 | 日韩综合在线 | 国产伦精品一区二区三区视频金莲 | 成人国产综合 | 日韩免费av | 中文字幕一区二区三区四区 | 精品一区二区视频 | 蜜臀久久99精品久久久久久宅男 | 欧美日韩一二三区 | 亚洲欧洲精品一区 | 国产精品一区在线观看 | 国产精品久久99 | 亚洲一区二区三区视频免费观看 | 在线观看三级av | a级毛片国产 | 一级毛片网 | 日本国产高清 | 久草视频网站 | 欧美久久一区二区三区 | 国产成人精品一区二区三区在线观看 | 亚洲欧美中文日韩在线v日本 | 看一级黄色毛片 | 国产午夜精品久久久久免费视高清 | 日韩欧美一区二区三区免费观看 |