亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: stc15單片機(jī)超聲波測(cè)距教程 [打印本頁(yè)]

作者: phpython    時(shí)間: 2017-3-31 15:40
標(biāo)題: stc15單片機(jī)超聲波測(cè)距教程
我想做超聲波測(cè)距,用89c51系列的很簡(jiǎn)單,再這個(gè)系列的單片機(jī)太慢,現(xiàn)在基本上都
用stc15系列了吧,我現(xiàn)在都是stc15系列了,價(jià)格便宜,速度快。電壓還是寬電壓,在3.3v~5v之間
都可以,主要是速度快了,就可以處理更多的程序了。
好了,不說(shuō)費(fèi)話了,
其實(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è)教程寫的很清楚。
寫教程太花時(shí)間了。

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



好了,超聲波模塊的簡(jiǎn)介就這么多了,話不多說(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;//開啟總中斷

  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; //開啟定時(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開始計(jì)時(shí)
  68.     ET0 = 1; //開啟定時(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)


作者: xmch    時(shí)間: 2017-4-14 20:00
支持一下。
作者: akzyzj    時(shí)間: 2017-4-15 00:44
謝謝分享,支持一下            
作者: joesck    時(shí)間: 2017-5-17 11:09
謝謝分享,很不錯(cuò)的資料,感謝
作者: lilining    時(shí)間: 2017-6-12 15:32
贊一個(gè)
作者: 黑科技李    時(shí)間: 2017-6-14 09:50
謝謝分享
作者: 13852833337    時(shí)間: 2017-6-16 05:26
很不錯(cuò)的東西。。謝謝樓主分享
作者: jaytan    時(shí)間: 2017-7-12 23:07
謝謝分享!
作者: jaytan    時(shí)間: 2017-7-12 23:08
正好用到,強(qiáng)烈支持!
作者: 15680255162    時(shí)間: 2017-7-21 16:56
可以用51單片機(jī)做嗎?
作者: 山大王    時(shí)間: 2017-7-22 22:23
32的有沒(méi)有
作者: aftvc    時(shí)間: 2017-8-10 08:48
謝謝分享!
作者: JimmyLin    時(shí)間: 2017-8-31 20:36
hao  hao哈哈哈好
作者: 2855177040    時(shí)間: 2017-9-1 17:09
感謝分享,支持一下。
作者: bbcf123    時(shí)間: 2017-9-28 20:17
謝謝分享
作者: chenpp    時(shí)間: 2017-12-4 09:18
謝謝呢
作者: li7301298    時(shí)間: 2017-12-5 20:46
謝謝樓主分享
作者: A17094430    時(shí)間: 2017-12-20 21:03
我也來(lái)做一個(gè)看看
作者: chunmei    時(shí)間: 2018-2-24 15:48
支持 一下!
作者: zmotian    時(shí)間: 2018-3-22 17:17
謝謝,非常感謝樓主
作者: 875870842    時(shí)間: 2018-4-3 15:59
樓主好人,超級(jí)不錯(cuò)
作者: zhuzeng    時(shí)間: 2018-4-5 16:59
感謝分享
作者: narutoa    時(shí)間: 2018-6-13 22:44
雖然沒(méi)積分下載 但是先 mark了
作者: jackyang75    時(shí)間: 2018-7-11 15:35
謝謝分享,很不錯(cuò)的資料,感謝
作者: tuxiaoxi    時(shí)間: 2018-7-11 21:33
好東西 ,謝謝分享
作者: 君子的君    時(shí)間: 2018-7-24 15:39
學(xué)習(xí)學(xué)習(xí),謝謝樓主!!!!!!!!
作者: wzk123321    時(shí)間: 2018-8-6 02:12
謝謝分享,頂起
作者: bhjyqjs    時(shí)間: 2018-8-7 14:32
好東東,謝謝分享!
作者: liyuanchengx    時(shí)間: 2018-9-5 14:58
請(qǐng)問(wèn):time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;程序中為什么要+0.5?
作者: liyuanchengx    時(shí)間: 2018-9-5 14:59
請(qǐng)問(wèn):time = (TH0 * 256 + TL0 + cnt * 65536) * (1 / 12.000) + 0.5;中為什么要+0.5
作者: 一片到    時(shí)間: 2018-9-28 16:50
先學(xué)習(xí)STc89吧,前面的基礎(chǔ)都還沒(méi)懂
作者: 自哦    時(shí)間: 2018-11-14 02:26
感謝樓主

作者: 李云能    時(shí)間: 2018-12-13 15:21
很好 支持一下
作者: long369351    時(shí)間: 2018-12-16 21:54
很好 支持一下
作者: 鐵血大師    時(shí)間: 2018-12-17 14:09
這個(gè)源程序可以直接復(fù)制嗎
作者: 鐵血大師    時(shí)間: 2018-12-17 14:38
這個(gè)有顯示距離的嗎?顯示是以數(shù)碼管顯示還是e1602顯示
作者: 快樂(lè)眼淚    時(shí)間: 2018-12-18 13:02
感謝樓主分享!
作者: highgong    時(shí)間: 2019-3-17 15:01
這個(gè)模塊的缺點(diǎn)是什么,還有定時(shí)器初始化中TH0和TL0的值為什么不是從0開始計(jì)算。
作者: ZimmerHo    時(shí)間: 2019-5-15 07:34
不錯(cuò)不錯(cuò)
作者: 遷就    時(shí)間: 2019-5-15 19:02
謝謝分享
作者: sf116    時(shí)間: 2019-5-28 20:54
謝謝分享,下載試試
作者: 3230    時(shí)間: 2019-5-30 21:02
來(lái)測(cè)試下
作者: 開心果666    時(shí)間: 2019-6-2 12:31
有封裝庫(kù)嗎
作者: fanywe    時(shí)間: 2019-6-9 10:23
君子的君 發(fā)表于 2018-7-24 15:39
學(xué)習(xí)學(xué)習(xí),謝謝樓主!!!!!!!!

怎么下載的
作者: 鄭子    時(shí)間: 2020-1-6 22:37
時(shí)間差怎么搞?第二次測(cè)距時(shí)的時(shí)間還算在內(nèi)嗎?
作者: shadaodadi    時(shí)間: 2020-5-24 20:51
速度快了肯定是好事啊,時(shí)間不是不夠用,是速度快了,16位的計(jì)時(shí)器計(jì)時(shí)時(shí)間短, 要延時(shí)還不簡(jiǎn)單嗎,用12T模式,或者是循環(huán)計(jì)數(shù)就好了,就怕跑的慢,不怕跑的快
作者: robinWei    時(shí)間: 2020-6-16 15:35
沒(méi)有頭文件,請(qǐng)版主共享一下,謝謝!




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