51單片機(jī)超聲波測距模塊代碼
-
****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了... ****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了嗎還有就是 為什么在whlie循環(huán)前先打開了總中斷 然后進(jìn)入whlie又立刻關(guān)閉 再重新打開 那diyi次打開不是很多余嗎 麻煩大神解答一下 展開
熱門問答
- 51單片機(jī)超聲波測距模塊代碼
- ****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了... ****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了嗎還有就是 為什么在whlie循環(huán)前先打開了總中斷 然后進(jìn)入whlie又立刻關(guān)閉 再重新打開 那diyi次打開不是很多余嗎 麻煩大神解答一下 展開
2018-06-26 20:47:55
563
1
- 求51單片機(jī)超聲波測距代碼
2011-08-20 06:16:46
488
2
- 51單片機(jī) HC-SR04超聲波測距 我寫的C語言代碼,請問
- /* HC-SR04使用方法:給觸發(fā)端子trig一個10us以上的高電平即可觸發(fā),觸發(fā)后echo端子將接受到高電平,高電平的持續(xù)時間就是測距的往返時間。 下面是我寫的代碼:我想測試自己使用該模塊是否正確,于是就想實現(xiàn)如果echo端接受到了高電平,蜂鳴器BEEP就響。但... /*
HC-SR04使用方法:給觸發(fā)端子trig一個10us以上的高電平即可觸發(fā),觸發(fā)后echo端子將接受到高電平,高電平的持續(xù)時間就是測距的往返時間。
下面是我寫的代碼:我想測試自己使用該模塊是否正確,于是就想實現(xiàn)如果echo端接受到了高電平,蜂鳴器BEEP就響。但是實際使用的時候發(fā)現(xiàn)并非預(yù)期結(jié)果,情高人幫忙看看下面的代碼有何問題。代碼不長,望大神賜教!
*/
#include
#define uchar unsigned char #define uint unsigned int /*位定義*/ sbit CHUFA=P0^1; //位定義超聲波觸發(fā)端(10us以上高電平觸發(fā)) sbit JIESHOU=P0^3; //接收端(接受高電平) sbit BEEP=P2^0; //蜂鳴器 sbit OUT0=P3^2; //外部中斷0 uchar JS_FLAG; //接收標(biāo)志 uint CF_TIME,t0,t1,shu; /*函數(shù)聲明*/ void timer0(); void int0(); void display(uint); main(){ CHUFA=0; //初始化拉低觸發(fā)端和接收端電平 JIESHOU=0; JS_FLAG=0; CF_TIME=15; //初始化觸發(fā)時間(大于10us) TMOD=0x11; //定時器方式選擇 EA=1; //開總中斷 ET0=1; //開定時器0中斷 EX0=1; //開外部中斷0 IT0=0; //外部中斷選擇下降沿觸發(fā) //JIESHOU=1; while(1){ OUT0=JIESHOU; //外部中斷0被賦值為接收端信號,當(dāng)出現(xiàn)下降沿是觸發(fā)外部中斷0 if(JS_FLAG==0){ //如果沒有接收到高電平則觸發(fā) CHUFA=1; while(CF_TIME--); //10us以上高電平觸發(fā)傳感器 } if(JIESHOU==1){ TR0=1; //如果接收端收到高電平則啟動定時器 JS_FLAG=1; //并且標(biāo)志位置1 BEEP=0; //蜂鳴器響 } display(t1); //顯示測量時間(秒) } } /*定時器0中斷程序*/ void timer0() interrupt 1{ TH0=(65536-10000)/256; //裝初值 10ms TL0=(65536-10000)%256; t0++; //每進(jìn)入一次中斷t0加1 } /*外部中斷0中斷程序*/ void int0() interrupt 0{ TR0=0; //一旦進(jìn)入外部中斷0,說明接收端收到下降沿信號。關(guān)閉定時器0 JS_FLAG=0; //接收標(biāo)志位置0 BEEP=1; //關(guān)閉蜂鳴器 t1=t0*10/1000; //測量時間為 進(jìn)入定時器中斷次數(shù)t0乘以每次時間10ms,除以1000化為秒為單位 t0=0; //t0清零 } /*數(shù)碼管顯數(shù)函數(shù)*/ void display(uint shu){ //數(shù)碼管顯示函數(shù) } 展開
2013-05-11 19:12:16
577
2
- 51單片機(jī)超聲波測距用lcd顯示
- 51單片機(jī)超聲波測距用lcd顯示1602顯示屏
2018-11-24 01:55:06
380
0
- 51單片機(jī) 超聲波測距 控制直流電機(jī)正反轉(zhuǎn)
- 通過超聲波傳感器測距,當(dāng)距離大于設(shè)定值A(chǔ)時,直流電機(jī)反轉(zhuǎn);當(dāng)距離等于設(shè)定值A(chǔ)時,直流電機(jī)停止;當(dāng)距離小于設(shè)定值A(chǔ)時,直流電機(jī)正轉(zhuǎn)。具體要求:1)設(shè)定值A(chǔ)能夠通過鍵盤設(shè)定;2)電機(jī)所處的各個狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)和停止)及超聲波傳感器檢測的距離值能夠在液... 通過超聲波傳感器測距,當(dāng)距離大于設(shè)定值A(chǔ)時,直流電機(jī)反轉(zhuǎn);當(dāng)距離等于設(shè)定值A(chǔ)時,直流電機(jī)停止;當(dāng)距離小于設(shè)定值A(chǔ)時,直流電機(jī)正轉(zhuǎn)。具體要求:1)設(shè)定值A(chǔ)能夠通過鍵盤設(shè)定;2)電機(jī)所處的各個狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)和停止)及超聲波傳感器檢測的距離值能夠在液晶上實時顯示。 展開
2015-07-12 14:27:24
787
1
- 做一個51單片機(jī)超聲波測距需要哪些器材
2017-02-28 00:10:01
438
1
- 超聲波測距模塊
- 1——超聲波模塊測距的有效距離是多少?模塊的有效距離與什么有關(guān)?2——怎樣在一個單片機(jī)上同時使用幾個頻率不同的超聲波模塊(注意是完全同時工作)?是不是使用頻率不同的模塊就可... 1——超聲波模塊測距的有效距離是多少?模塊的有效距離與什么有關(guān)? 2——怎樣在一個單片機(jī)上同時使用幾個頻率不同的超聲波模塊(注意是完全同時工作)?是不是使用頻率不同的模塊就可以?如果是的話,那推薦一下每個模塊的頻率(同時使用3-4個)。 展開
2012-10-18 09:17:21
690
3
- 51單片機(jī)超聲波模塊測厚度程序怎么寫?
2018-12-03 12:10:19
487
0
- 這個51單片機(jī)HC-SR04超聲波測距程序哪里錯了
- //晶振11.0592MHz #include
#define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TI... //晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TIM1init(void)//定時器1初始化 { TMOD=0x22;//定時器1工作方式2,TH1是重裝值,TL1是初值 TH1=0xd2; //重載值 溢出一次約50us TL1=0xd2; //初始化值 ET1=1; //開中斷 } void EX1init(void) //外部中斷1初始化 { IT1 = 1; //指定外部中斷0下降沿觸發(fā),INT1 (P3.3) EA = 1; //開總中斷 } /*------------------------------------------------ 定時器1中斷處理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于計數(shù)2個下降沿之間的時間 } /*------------------------------------------------ 外部中斷1中斷處理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中斷1服務(wù)函數(shù) { dis=340*(irtime/2.0)*50/10000; irtime=0; TR1=0; EX1=0; } void test(void) { trig=1; delay_20us(); trig=0; EX1=1; while(!echo); TR1=1; } void main(void) { TIM1init(); EX1init(); while(1) { test(); display(dis); } } 主函數(shù)調(diào)用test,然后在數(shù)碼管上顯示(顯示函數(shù)略過),測試的時候,在數(shù)碼管上顯示的距離明顯不對,還各種不穩(wěn)定,有時就個位數(shù)上顯示一個1或2,不知道怎么回事 展開
2016-01-25 09:17:10
409
2
- 求US-100(模塊)超聲波測距的C語言程序,基于51單片機(jī)的,3Q哦~
- 求基于51單片機(jī)的US-100超聲波測距C語言程序。需要詳細(xì)點的具體設(shè)計程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實現(xiàn)2--150cm的測距,測得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪... 求基于51單片機(jī)的US-100超聲波測距C語言程序。需要詳細(xì)點的具體設(shè)計程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實現(xiàn)2--150cm的測距,測得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪位大神幫幫忙嘍,急?。。。≌嫘闹x謝大神了~ 展開
2017-05-17 15:16:00
580
1
- 用51單片機(jī)做超聲波測距都需要什么元件?
- 用51單片機(jī)做超聲波測距都需要什么元件(探測的距離5到10米左右)?知道的話發(fā)到我郵箱里zhanxiage1994@sina.com謝謝了
2012-03-28 03:51:02
344
1
- 想學(xué)下51單片機(jī)的超聲波測距,有幾個疑問。
- 想學(xué)下51單片機(jī)的超聲波測距,有幾個疑問。 在百度上看到的超聲波模塊工作原理:單片機(jī)供給超聲波信號端Trig一個Z少10us長的高電平信號,模塊自動發(fā)射8個40khz的方波,自動檢測到信號是否返回,有信號返回,Echo端輸出一個高電平,高電平持續(xù)的實踐就是超... 想學(xué)下51單片機(jī)的超聲波測距,有幾個疑問。 在百度上看到的超聲波模塊工作原理:單片機(jī)供給超聲波信號端Trig一個Z少10us長的高電平信號,模塊自動發(fā)射8個40khz的方波,自動檢測到信號是否返回,有信號返回,Echo端輸出一個高電平,高電平持續(xù)的實踐就是超聲波從發(fā)射到返回的時間。 我的理解是給Trig一個10微秒以上高電平信號,模塊會發(fā)射超聲波,這個時候Echo應(yīng)該是低電平,等有聲波信號返回時Echo會變高電平,聲波從發(fā)射到返回用了多長時間,Echo的高電平就持續(xù)多長時間。不知道理解的對不對? 這里有個疑問,百度了一下發(fā)現(xiàn)都是檢測Echo收到返回聲波后高電平持續(xù)時間來計算距離,為什么不檢測從模塊發(fā)射聲波到Echo收到返回聲波的時間呢?這樣不是可以節(jié)約一半的時間嗎? 還有一個問題,我在學(xué)習(xí)板上試了一下程序,給Trig一個20微秒的高電平信號,然后等待Echo變高電平開啟定時器,但直到定時器溢出Echo一直都是高電平,超聲波模塊離墻面只有80厘米左右,模塊換了2個都是這樣。 第三個問題,百度上說計算測量距離等于定時器記錄的時間乘以340除以2,但定時器記錄的時間單位不是納秒嗎?還要除以一百萬才能乘以340吧?這樣得到的距離單位是米。 求教各位答疑解惑。 展開
2018-01-19 02:56:05
446
2
- 用51單片機(jī)實現(xiàn)超聲波測距怎樣才可以測到4m?
2011-08-14 00:36:29
485
4
- 求個51單片機(jī)超聲波測距(距離+報警)的c程序
- 求個51單片機(jī)超聲波測距(距離+報警)的c程序
2017-05-19 03:18:16
460
1
- 51單片機(jī)接收加速度計傳感器數(shù)據(jù)的代碼
- 速度有加速度和角速度,用51單片機(jī)接收并處理數(shù)據(jù)。求接收數(shù)據(jù)部分代碼
2012-11-23 13:45:28
504
1
- 超聲波測距模塊兩次測距Z短間隔
2012-07-25 02:10:55
423
2
- 51單片機(jī)溫度控制系統(tǒng)溫控模塊要怎么做?
- 溫度控制模塊要怎么操作??... 溫度控制模塊要怎么操作?? 展開
2015-01-18 04:34:38
459
2
- 請問適合51單片機(jī)用的50M測距用哪種超聲波芯片好
2012-10-03 21:03:52
394
2
- 超聲波測距和單片機(jī)的連接
- 超聲波測距四個引腳vcc,gnd,trig,echo和單片機(jī)怎么連?直接連到io口就可以了嗎?之間需要什么電阻之類的東西嗎?謝謝各位好心人了
2013-01-21 23:41:05
527
1
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評論
登錄后參與評論