導航:首頁 > 操作系統 > 單片機測量脈沖寬度

單片機測量脈沖寬度

發布時間:2024-10-15 10:54:26

A. 求助,通過52單片機測量外部脈沖寬度,如果脈寬小於某個設定值則輸出一個信號,比如燈亮

需求沒說清楚,脈寬的具體寬度,數量級先搞清楚。對具體實施很關鍵的。
方法有一下:
1、如果單片機有捕捉功能,則在沿上捕捉後記錄定時器時間,然後計算出時間,即可比較輸出信號。
2、如果沒有,接入單片機的中斷管腳(上下沿中斷,如果沒有,進入後立馬改變下次中斷觸發方式,進行上升下降沿中斷的切換),單片機外部中斷服務中記錄定時器時間,然後下次中斷來臨後計算時間,即可比較輸出信號。
3、如果都沒有,功能且單一,脈寬比較寬,要求不高,硬體又沒有在中斷管腳上,可以考慮主程序定時查詢,記錄時間。

5ms,很寬的,如果功能單一的話,定時器都可以免了,直接用單片機指令周期算時間,定義一個長整型變數,不斷監測管腳,監測完變數加一,後再比較。
不過呢,希望還是用我提到的方法2吧,通用些。具體實施自己多想想,另位朋友的代碼慎重使用,問題較多,不一一說明了

B. 單片機測量脈寬 能夠用單片機測量1us以下的脈寬嗎,極限是多少

這個和單片機的時鍾頻率有關,比如51單片機,12MHz外晶振,內部定時器使用的就是1MHz的晶振,測量脈沖寬度誤差就是1us。
換句話說,如果要求測量1us的脈寬,以最大1%的誤差計算(0.01us),要求的測量頻率至少是100MHz。這個頻率恐怕沒有幾個單片機做得到的。
如果放寬要求,可以算算看了。以前曾經採用過FPGA,輸入頻率是50MHz(高穩晶振),經PLL倍頻,測量1us的脈沖才剛剛好。

C. 如何用stc單片機測量脈寬

測量原理,低電平時,等待高電平到來,打開定時器,等待高電平結束,關閉定時器,讀出定時器的值,即是脈沖寬度。當然有時定時器會溢出,要開中斷,把中斷時間也要算上。

D. 利用8051單片機定時器T0測量某正脈沖的寬度

原理:分別用脈沖的上升沿和下降沿出發單片機,上升沿給出中斷1開始計數,下降沿給出中斷2停止計數,最後換算出高電平寬度=計數周期數×一個計數的時間。
設置的SFR:TMODE(一定要注意GATE的設置為1),TCON,IE,TH0,TL0等
最大脈寬計算:我們知道計數器中斷的產生是從全1變為全0產生溢出中斷,所以我們計數器的處置設定為00H,如果我們讓其工作在方式1計數下,最大計數值為2^16=65536,那麼最大計數脈沖寬度就是65536*2us。
一定要注意我們利用GATE的控製作用是計數器用來測量脈沖寬度。
不明白的LZ可以在上網路看看利用GATE的控製作用是計數器用來測量脈沖寬度這方面知識,或者我們在交流,呵呵

E. 單片機PCA能測量1秒脈寬嗎

可以,只要代碼編輯無誤,一般情況下是可以測量的。STC12C系列增強型單片機片上擴展了基本51單片機的功能,如提供了PCA/PWM介面,定時器能工作在1T模式下(基本51單片機的時鍾是Fosc的12分頻,1T模式下1分頻)。PCA可以用於脈寬測量,但是,protues暫不支持該系列單片機的模擬功能,反復燒寫也挺麻煩,所以還是先用基本51單片機實現該功能,在後面的博文里在實現PCA測量脈寬。TMOD最高位GATEn置位後,Tn啟動計數受INTn(Pin3.3)和TRn的共同影響:TRn為1,當INTn引腳輸入為高電平時,Tn才允許計數。利用這個功能可測量INTn上正脈沖的寬度。

F. 如何實現單片機實時測量輸入中斷口的脈沖寬度

您好!可以分以下幾步來解決這個問題!
1、首先設置一個定時器,1us中斷一次,然後每次中斷檢測IO的電平。
2、在定時中斷函數內定義一個static 的int類型靜態變數 count;
3、每次檢測到IO口為高電平(假設為高電平脈沖)的時候,count++;
4、在IO口重新回到低電平的時候,count的值就是時間了,比如count為1000,那麼脈沖寬度就是1000*1us=1ms
5、在讀取count的值之後,復位count為0;繼續測量下一個脈沖寬度。
純手打,給個採納唄~

G. 51單片機測量脈沖寬度程序

假設用定時器0,一個完整過程是
TH0=0;TL0=0;
whiIe(IN==1);∥等待當前高電平過去
while(IN==0);∥等待高電平來到
TR0=1;∥啟動計時
while(IN==1);∥等待高電平結結束
TR0=0;∥停止計時
HIGH=TH0*256+TL0;∥存計時結果
TH0=0;TL0=0;∥清0

H. 51單片機測量正脈沖寬度

建議你在INT1引腳上,加一個反相器。這樣,可以使用中斷功能來完成。程序如下:
ORG 0000H
SJMP MAIN
ORG 000BH
LJMO I_T0
ORG 00013H
LJMP I_INT1
MAIN:
MOV R0,#0
MOV TMOD,#02H
MOV TH0,#0
MOV TL0,#0
SETB IT1
SETB EA
SETB EX1
SETB ET0
SJMP $
I_INT1:
SETB TR0
JNB P3.3,$
MOV 60H,TL0
MOV 61H,R0
MOV R0,#0
MOV TL0,#0
CLR TR0
RETI
I_T0:
CLR TF0
INC R0
RETI
END
最後正脈沖的寬度為:[(61H)×256+(60H)]×T
其中:T為機器周期,如果是6MHz的話就是2uS,如果是12MHz的話就是2uS。
我評經驗,你要測量正脈沖寬度是要計算占空比。這個程序,實現該功能沒問題。

附帶說一句,你這樣的問題才30分,少了點哇。呵呵,寫程序很辛苦的啦~!:)呵呵

閱讀全文

與單片機測量脈沖寬度相關的資料

熱點內容
python實現記事本 瀏覽:888
怎麼查伺服器突發流量 瀏覽:329
單片機驅動共陰數碼管 瀏覽:404
單片機斷流水燈怎麼辦 瀏覽:292
python增加庫路徑 瀏覽:635
銀行業法律法規與綜合能力pdf 瀏覽:958
南京壓縮機品牌 瀏覽:244
域伺服器dns是什麼 瀏覽:269
安卓手機怎麼更新su程序 瀏覽:816
python後門反向tcp 瀏覽:30
5e進不去伺服器輸入什麼指令 瀏覽:212
編譯程序時c2143代表啥 瀏覽:584
adobeacrobat編輯pdf 瀏覽:372
快手賣號app哪個靠譜 瀏覽:241
安卓如何改幀數吃雞 瀏覽:52
如何將多個伺服器集中管理 瀏覽:612
傳奇手游架設雲伺服器的配置 瀏覽:952
手機怎麼播放加密的音樂 瀏覽:974
360p2刷機命令提示無法連接 瀏覽:829
單片機測量脈沖寬度 瀏覽:985