c語言單片機超聲波測距可以不使用定時器和外部中斷口嗎?
-
搜了些樣例程序,發(fā)現(xiàn)都是靠定時器和外部中斷完成測距 可以用普通口 通過查詢的方式來測距嗎? 可以附上程序嗎?謝謝
全部評論(3條)
-
- 李兆普 2011-04-18 00:00:00
- 不用定時器,你的程序很難組織,你只能靠指令延時,這太難把握了。 不用中斷的話,出現(xiàn)較大的誤差。除非你的程序就一句“while”等待超聲波接收,其他什么事情都不干。
-
贊(7)
回復(0)
-
- 門診室味掀 2011-04-18 00:00:00
- 不可以啊,你可以一直不斷的發(fā)送超聲波,然后通過查詢接收到,但是你用查詢操作至少要好幾個時鐘周期才能查詢一次,你不可能保證查詢到的一瞬間正好是超聲波返回的時間,誤差很大,定時器是必須要用的,用來計算超聲波從發(fā)出到接收的時間。
-
贊(14)
回復(0)
-
- aswthcb6109 2011-04-18 00:00:00
- diyi 用查詢法 時間誤差會很高 本身超聲波傳播的時間就很短 這個時間對設計來說 就是致命的。 第二 查詢法cpu 占用率會很高 也就是說 在沒有收到回波的時候 cpu 一直“心里”惦記著它呢 但是這時cpu 所做的功 可以說是無用的。 所以這種情況還是用中斷比較好!
-
贊(15)
回復(0)
熱門問答
- c語言單片機超聲波測距可以不使用定時器和外部中斷口嗎?
- 搜了些樣例程序,發(fā)現(xiàn)都是靠定時器和外部中斷完成測距 可以用普通口 通過查詢的方式來測距嗎? 可以附上程序嗎?謝謝
2011-04-17 15:08:27
571
3
- 51單片機 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)并非預期結(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; //接收標志 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被賦值為接收端信號,當出現(xiàn)下降沿是觸發(fā)外部中斷0 if(JS_FLAG==0){ //如果沒有接收到高電平則觸發(fā) CHUFA=1; while(CF_TIME--); //10us以上高電平觸發(fā)傳感器 } if(JIESHOU==1){ TR0=1; //如果接收端收到高電平則啟動定時器 JS_FLAG=1; //并且標志位置1 BEEP=0; //蜂鳴器響 } display(t1); //顯示測量時間(秒) } } /*定時器0中斷程序*/ void timer0() interrupt 1{ TH0=(65536-10000)/256; //裝初值 10ms TL0=(65536-10000)%256; t0++; //每進入一次中斷t0加1 } /*外部中斷0中斷程序*/ void int0() interrupt 0{ TR0=0; //一旦進入外部中斷0,說明接收端收到下降沿信號。關閉定時器0 JS_FLAG=0; //接收標志位置0 BEEP=1; //關閉蜂鳴器 t1=t0*10/1000; //測量時間為 進入定時器中斷次數(shù)t0乘以每次時間10ms,除以1000化為秒為單位 t0=0; //t0清零 } /*數(shù)碼管顯數(shù)函數(shù)*/ void display(uint shu){ //數(shù)碼管顯示函數(shù) } 展開
2013-05-11 19:12:16
577
2
- 求US-100(模塊)超聲波測距的C語言程序,基于51單片機的,3Q哦~
- 求基于51單片機的US-100超聲波測距C語言程序。需要詳細點的具體設計程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實現(xiàn)2--150cm的測距,測得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪... 求基于51單片機的US-100超聲波測距C語言程序。需要詳細點的具體設計程序,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
- 超聲波測距和單片機的連接
- 超聲波測距四個引腳vcc,gnd,trig,echo和單片機怎么連?直接連到io口就可以了嗎?之間需要什么電阻之類的東西嗎?謝謝各位好心人了
2013-01-21 23:41:05
529
1
- 求個51單片機超聲波測距(距離+報警)的c程序
- 求個51單片機超聲波測距(距離+報警)的c程序
2017-05-19 03:18:16
462
1
- 對照式光電傳感器 c語言 單片機 編程
- 光電傳感器部分如圖所示,對照式的光電傳感器。想編一個程序測量并能控制電機轉(zhuǎn)速。有沒有人能幫幫忙呀?電機扇葉由帶孔圓盤取代。圓盤上的洞洞可以實現(xiàn)光電傳感器測速功能。 另外再給我編一個簡單的程序,就是還是光電傳感器的應用,就是那種Z基本的,控制... 光電傳感器部分如圖所示,對照式的光電傳感器。想編一個程序測量并能控制電機轉(zhuǎn)速。有沒有人能幫幫忙呀?電機扇葉由帶孔圓盤取代。圓盤上的洞洞可以實現(xiàn)光電傳感器測速功能。 另外再給我編一個簡單的程序,就是還是光電傳感器的應用,就是那種Z基本的,控制led燈亮滅。人手伸到傳感器那里擋住,燈滅,移開手,燈亮。 程序上面有注釋讓我看懂就行啦,謝謝了 展開
2013-04-15 13:06:46
634
2
- 跪求單片機at89c52頻率計c語言程序
- 還有跪求那個方波的名字叫神馬~~~
2015-04-23 09:42:30
372
1
- 求一段匯編程序,利用51單片機控制3個超聲波傳感器測距的C語言程序
2017-07-25 22:41:03
343
1
- 51單片機超聲波測距模塊代碼
- ****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了... ****************************************************************************************這是代碼原文 我想問一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來了 才打開定時器1和外部中斷呢 這時候回波已經(jīng)回來了啊 不是測不出超聲波回波的時間了嗎還有就是 為什么在whlie循環(huán)前先打開了總中斷 然后進入whlie又立刻關閉 再重新打開 那diyi次打開不是很多余嗎 麻煩大神解答一下 展開
2018-06-26 20:47:55
563
1
- 求51單片機超聲波測距代碼
2011-08-20 06:16:46
490
2
- 怎樣用單片機做0-10mhz的頻率計,C語言
2016-11-07 03:16:59
566
3
- 51單片機溫度控制系統(tǒng)的C語言程序
- 設計基于單片計算機的溫度控制器。用于控制電加熱爐的溫度。具體要求如下1.溫度連續(xù)可調(diào),范圍為30℃~150℃2.超調(diào)量σ%≤20%3.溫度誤差≤±0.5℃4.人-機對話方便5.控制算法采用PID或改... 設計基于單片計算機的溫度控制器。用于控制電加熱爐的溫度。具體要求如下 1. 溫度連續(xù)可調(diào),范圍為30℃~150℃ 2. 超調(diào)量σ%≤20% 3. 溫度誤差≤±0.5℃ 4. 人-機對話方便 5. 控制算法采用PID或改進的PID或其他算法 .請發(fā)至3166109374@qq.com 謝謝幫忙 具體見http://wenku.baidu.com/view/e0feacf0f121dd36a22d822c 展開
2015-06-07 00:06:30
504
3
- c語言中選擇和投影的區(qū)別??
2014-03-22 20:58:54
819
4
- 51單片機超聲波測距用lcd顯示
- 51單片機超聲波測距用lcd顯示1602顯示屏
2018-11-24 01:55:06
380
0
- 超聲波測距或單片機的英文資料
- 我做畢業(yè)設計 要用的 關于超聲波車在倒車雷達 測距 誰有相關英文文獻及翻譯啊 英文Z好要原版的 翻譯不要簡單的軟件翻譯的 拜托各位大哥 幫幫小弟
2010-04-27 04:04:26
479
2
- 單片機做頻率計數(shù)碼管的顯示C語言程序
- #include
float time=0; float freq=0; unsigned char dsh=0; unsigned char dsz=0; unsigned char dsl=0; main() {EA=1; ET0=1; ET1=1; TMOD=0x061; TH0=-1000/256; TL0=-1000%256; TH1=0xfb; TL1=0xfb; TR0=1; TR1=1; while...
2010-06-19 23:43:52
533
2
- 用51單片機實現(xiàn)超聲波測距怎樣才可以測到4m?
2011-08-14 00:36:29
485
4
- MQ-5氣體傳感器 通過LM339比較器接單片機中斷口
- 我正在做科創(chuàng),計劃用MQ-5氣體傳感器感應是否有有害氣體,當檢測到有害氣體時傳感器發(fā)出信號,信號經(jīng)過放大接到單片機中斷口,現(xiàn)在問題是傳感器發(fā)出的信號怎么放大到單片機能夠識別,使用電壓比較器嗎?電壓比較器輸出高電平?用LM339應該怎么接啊,有沒有詳細... 我正在做科創(chuàng),計劃用MQ-5氣體傳感器感應是否有有害氣體,當檢測到有害氣體時傳感器發(fā)出信號,信號經(jīng)過放大接到單片機中斷口,現(xiàn)在問題是傳感器發(fā)出的信號怎么放大到單片機能夠識別,使用電壓比較器嗎?電壓比較器輸出高電平?用LM339應該怎么接啊,有沒有詳細一點的電路?除了用電壓比較器還能用什么將傳感器的信號提升到單片機能識別的程度》 展開
2011-08-13 22:40:05
738
5
- 51單片機 超聲波測距 控制直流電機正反轉(zhuǎn)
- 通過超聲波傳感器測距,當距離大于設定值A時,直流電機反轉(zhuǎn);當距離等于設定值A時,直流電機停止;當距離小于設定值A時,直流電機正轉(zhuǎn)。具體要求:1)設定值A能夠通過鍵盤設定;2)電機所處的各個狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)和停止)及超聲波傳感器檢測的距離值能夠在液... 通過超聲波傳感器測距,當距離大于設定值A時,直流電機反轉(zhuǎn);當距離等于設定值A時,直流電機停止;當距離小于設定值A時,直流電機正轉(zhuǎn)。具體要求:1)設定值A能夠通過鍵盤設定;2)電機所處的各個狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)和停止)及超聲波傳感器檢測的距離值能夠在液晶上實時顯示。 展開
2015-07-12 14:27:24
787
1
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論