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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 29818|回復: 46
收起左側

stc15單片機超聲波測距教程

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

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

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

源程序:

  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. //聲明函數
  7. void getDistance();//獲取距離
  8. void Timer0Init();//初始化定時器0
  9. void UartInit();//初始化串口
  10. void SendData(u8 data_buf); //發送數據到串口
  11. void DelayXms(u16 n); //延時N ms

  12. //定義全局變量
  13. u8 cnt=0; //定時器0中斷次數
  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; //拉高超聲波模塊觸發IO
  32.     while(j--); // 延時20us
  33.     Trig = 0; //拉低超聲波模塊觸發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.     //從串口發出,也可以用顯示器顯示,自己接顯示驅動就可以了
  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, 下載次數: 505)

評分

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

查看全部評分

回復

使用道具 舉報

ID:161033 發表于 2017-4-14 20:00 | 顯示全部樓層
支持一下。
回復

使用道具 舉報

ID:187096 發表于 2017-4-15 00:44 | 顯示全部樓層
謝謝分享,支持一下            
回復

使用道具 舉報

ID:192084 發表于 2017-5-17 11:09 | 顯示全部樓層
謝謝分享,很不錯的資料,感謝
回復

使用道具 舉報

ID:115593 發表于 2017-6-12 15:32 | 顯示全部樓層
贊一個
回復

使用道具 舉報

ID:211040 發表于 2017-6-14 09:50 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:209421 發表于 2017-6-16 05:26 | 顯示全部樓層
很不錯的東西。。謝謝樓主分享
回復

使用道具 舉報

ID:219260 發表于 2017-7-12 23:07 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:219260 發表于 2017-7-12 23:08 | 顯示全部樓層
正好用到,強烈支持!
回復

使用道具 舉報

ID:221358 發表于 2017-7-21 16:56 | 顯示全部樓層
可以用51單片機做嗎?
回復

使用道具 舉報

ID:215883 發表于 2017-7-22 22:23 | 顯示全部樓層
32的有沒有
回復

使用道具 舉報

ID:226405 發表于 2017-8-10 08:48 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:230319 發表于 2017-8-31 20:36 | 顯示全部樓層
hao  hao哈哈哈好
回復

使用道具 舉報

ID:106195 發表于 2017-9-1 17:09 | 顯示全部樓層
感謝分享,支持一下。
回復

使用道具 舉報

ID:236374 發表于 2017-9-28 20:17 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:256836 發表于 2017-12-4 09:18 | 顯示全部樓層
謝謝呢
回復

使用道具 舉報

ID:255989 發表于 2017-12-5 20:46 | 顯示全部樓層
謝謝樓主分享
回復

使用道具 舉報

ID:183763 發表于 2017-12-20 21:03 | 顯示全部樓層
我也來做一個看看
回復

使用道具 舉報

ID:285174 發表于 2018-2-24 15:48 | 顯示全部樓層
支持 一下!
回復

使用道具 舉報

ID:103510 發表于 2018-3-22 17:17 | 顯示全部樓層
謝謝,非常感謝樓主
回復

使用道具 舉報

ID:301545 發表于 2018-4-3 15:59 | 顯示全部樓層
樓主好人,超級不錯
回復

使用道具 舉報

ID:268439 發表于 2018-4-5 16:59 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:351471 發表于 2018-6-13 22:44 | 顯示全部樓層
雖然沒積分下載 但是先 mark了
回復

使用道具 舉報

ID:345079 發表于 2018-7-11 15:35 | 顯示全部樓層
謝謝分享,很不錯的資料,感謝
回復

使用道具 舉報

ID:369118 發表于 2018-7-11 21:33 | 顯示全部樓層
好東西 ,謝謝分享
回復

使用道具 舉報

ID:378529 發表于 2018-7-24 15:39 | 顯示全部樓層
學習學習,謝謝樓主!!!!!!!!
回復

使用道具 舉報

ID:383273 發表于 2018-8-6 02:12 | 顯示全部樓層
謝謝分享,頂起
回復

使用道具 舉報

ID:66287 發表于 2018-8-7 14:32 | 顯示全部樓層
好東東,謝謝分享!
回復

使用道具 舉報

ID:81444 發表于 2018-9-5 14:58 | 顯示全部樓層
請問:time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;程序中為什么要+0.5?
回復

使用道具 舉報

ID:81444 發表于 2018-9-5 14:59 | 顯示全部樓層
請問:time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;中為什么要+0.5
回復

使用道具 舉報

ID:403231 發表于 2018-9-28 16:50 | 顯示全部樓層
先學習STc89吧,前面的基礎都還沒懂
回復

使用道具 舉報

ID:419084 發表于 2018-11-14 02:26 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:445696 發表于 2018-12-13 15:21 | 顯示全部樓層
很好 支持一下
回復

使用道具 舉報

ID:58820 發表于 2018-12-16 21:54 | 顯示全部樓層
很好 支持一下
回復

使用道具 舉報

ID:447947 發表于 2018-12-17 14:09 來自手機 | 顯示全部樓層
這個源程序可以直接復制嗎
回復

使用道具 舉報

ID:447947 發表于 2018-12-17 14:38 來自手機 | 顯示全部樓層
這個有顯示距離的嗎?顯示是以數碼管顯示還是e1602顯示
回復

使用道具 舉報

ID:399179 發表于 2018-12-18 13:02 來自手機 | 顯示全部樓層
感謝樓主分享!
回復

使用道具 舉報

ID:490013 發表于 2019-3-17 15:01 | 顯示全部樓層
這個模塊的缺點是什么,還有定時器初始化中TH0和TL0的值為什么不是從0開始計算。
回復

使用道具 舉報

ID:530474 發表于 2019-5-15 07:34 來自手機 | 顯示全部樓層
不錯不錯
回復

使用道具 舉報

ID:484435 發表于 2019-5-15 19:02 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线一区二区三区 | 久久久久久99 | 91看片网| 亚洲欧美中文日韩在线v日本 | 国产激情毛片 | 亚洲精品久久久久久宅男 | 99在线视频观看 | 欧美日一区二区 | 7777在线视频 | 亚洲一视频 | 国产一区二区三区免费 | 91精品中文字幕一区二区三区 | 这里只有精品999 | 中文字幕在线播放第一页 | 久久99精品久久 | 日韩欧美二区 | 伊人一区 | 91资源在线播放 | 国产高清精品一区二区三区 | 999久久久 | 亚洲97| 毛片视频观看 | 国产一区二区在线免费观看 | 99精品一级欧美片免费播放 | 日韩视频在线一区 | 9久久| 九九在线视频 | 欧美一级免费黄色片 | 中文字幕av在线 | 成人不卡视频 | 亚洲天堂中文字幕 | 蜜月va乱码一区二区三区 | 久久久久久毛片免费观看 | 亚洲国产精品久久 | 欧美一区成人 | 97狠狠干 | 国产精品久久久久久影视 | 久久久久国产 | 精品成人在线视频 | 日本三级视频 | 国产aⅴ精品 |