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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc15單片機超聲波測距教程

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

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



好了,超聲波模塊的簡介就這么多了,話不多說,直接上程序

源程序:

  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();//初始化定時器0
  9. void UartInit();//初始化串口
  10. void SendData(u8 data_buf); //發(fā)送數(shù)據(jù)到串口
  11. void DelayXms(u16 n); //延時N ms

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


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

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

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

  24. }

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

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

  38.      //判斷是否超出模塊最大測距 4m
  39.      if(cnt < 5){
  40.          //計算出時間
  41.         time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;
  42.         //計算出距離 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ā)出,也可以用顯示器顯示,自己接顯示驅動就可以了
  50.     for(i=0;i<7;i++){
  51.         SendData(str[i]);
  52.     }
  53.     SendData('');
  54.     //復位定時器
  55.     cnt = 0;
  56.     TH0 = TL0 = 0;
  57. }
  58. //定時器0寄存器初始化
  59. void Timer0Init(void)        //100微秒@12.000MHz
  60. {
  61.     AUXR |= 0x80;        //定時器時鐘1T模式
  62.     TMOD &= 0xF0;        //設置定時器模式
  63.     TMOD |= 0x01;        //設置定時器模式
  64.     TL0 = 0x50;        //設置定時初值
  65.     TH0 = 0xFB;        //設置定時初值
  66.     TF0 = 0;        //清除TF0標志
  67.     TR0 = 0;        //定時器0開始計時
  68.     ET0 = 1; //開啟定時器中斷
  69. }

  70. void T0() interrupt 1
  71. {
  72.     cnt++;
  73. }
  74. //串口初始化定時器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. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品二区三区99精品 | 91精品国产乱码久久久久久 | 91人人视频在线观看 | 少妇黄色 | 日韩精品视频一区二区三区 | 风间由美一区二区三区在线观看 | 日韩一二三区 | 男女啪啪高潮无遮挡免费动态 | 久久成人免费视频 | 天天干天天色 | 色在线免费视频 | 在线视频亚洲 | 涩爱av一区二区三区 | 欧美成人猛片aaaaaaa | 黄色大片毛片 | 狠狠操电影 | 天天干人人 | 欧美成人一区二免费视频软件 | 欧美亚洲在线视频 | 91热在线 | 欧美天堂在线 | 黄色在线免费观看 | 久久国产精品一区二区 | 黄色一级在线播放 | 精品少妇一区二区三区在线播放 | 欧美日韩中文在线观看 | 日韩欧美在线观看视频 | 久久精品屋 | 成人免费一区二区三区视频网站 | 国产亚洲网站 | 日韩高清国产一区在线 | 亚洲永久 | 欧美一级毛片免费观看 | 欧美一级片免费看 | 久久九| 国产成人99久久亚洲综合精品 | 天天天天天操 | 嫩草懂你的影院入口 | 亚洲视频欧美视频 | 国产二区在线播放 | 精品久久久久久亚洲国产800 |