1. 單片機定時中斷測脈沖寬度
TMOD=(TMOD&0x0f)|0x90;定時器模式這是什麼意思?我忘了具體的寄存器各位是怎麼定義的。
測脈沖寬度用定時器循環中斷吧,最好在中斷處理函數中定義一個循環累積變數。如果寬度大於你的定時時間,那麼TH1和TL1中的值就沒有意義了。12M的晶振,最長定時是60多ms。
2. 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分,少了點哇。呵呵,寫程序很辛苦的啦~!:)呵呵
3. 利用8051單片機定時器T0測量某正脈沖的寬度
原理:分別用脈沖的上升沿和下降沿出發單片機,上升沿給出中斷1開始計數,下降沿給出中斷2停止計數,最後換算出高電平寬度=計數周期數×一個計數的時間。
設置的SFR:TMODE(一定要注意GATE的設置為1),TCON,IE,TH0,TL0等
最大脈寬計算:我們知道計數器中斷的產生是從全1變為全0產生溢出中斷,所以我們計數器的處置設定為00H,如果我們讓其工作在方式1計數下,最大計數值為2^16=65536,那麼最大計數脈沖寬度就是65536*2us。
一定要注意我們利用GATE的控製作用是計數器用來測量脈沖寬度。
不明白的LZ可以在上網路看看利用GATE的控製作用是計數器用來測量脈沖寬度這方面知識,或者我們在交流,呵呵
4. "利用8051單片機定時器T0測量某正脈沖的寬度 "這個問題你弄懂了 能給我看看你的程序么 我研究很久沒有搞懂
原理:分別用脈沖的上升沿和下降沿出發單片機,下降沿給出中斷2停止計數,最後換算出高電平寬度=計數周期數×一個計數的時間。
脈沖有間隔性的特徵,因此我們可以把脈沖作為一種信號。脈沖信號的定義由此產生:
相對於連續信號(在整個信號周期內短時間中都有的信號),大部分脈沖信號周期內是沒有信號的。就象人的脈搏一樣。脈沖信號一般指數字信號,它已經是一個周期內有一半時間(甚至更長時間)有信號。計算機內的信號就是脈沖信號,又叫數字信號。
最大脈寬計算:知道計數器中斷的產生是從全1變為全0產生溢出中斷,所以計數器的處置設定為00H,如果讓其工作在方式1計數下,最大計數值為2^16=65536,那麼最大計數脈沖寬度就是65536*2us。
(4)單片機脈沖寬度擴展閱讀:
脈寬由信號的周期和占空比確定,其計算公式是脈寬W=T×P(T:周期,P:占空比)。例如在飛思卡爾的S12dg128寄存器中的具體的
占空比計算方式是:
左對齊方式:
占空比 = [ (PWMPERx - PWMDTYx) / PWMPERx ] × 100%
中心對齊方式:
占空比 = [ PWMDTYx / PWMPERx ] × 100%
周期的計算公式:
左對齊方式:
輸出周期 = 通道周期 × PWMPERx
中心對齊方式:
輸出周期 = 通道周期 × PWMPERx × 2
脈寬的計算方法就不言而喻了。
5. 使用標準的8051單片機匯編語言編寫脈沖寬度測量
不斷查詢接連脈沖的埠,有電平跳變就計算計數器時間.然後通過LED顯示,手動清零通過硬體RESET可實現.
6. 我通過單片機測量方波,三角波,正弦波的脈沖寬度,范圍是0-1M,如何測量請各位高手指點迷津
我通過單片機測量方波,三角波,正弦波的脈沖寬度,范圍是0-1M,如何測量...
----
方波,即矩形波,才有脈沖寬度的說法。
正弦波,有振幅、頻率、初相角三個要素,沒有脈沖寬度的說法。
三角波,它也沒有寬度。
7. 單片機測量脈沖寬度
如果是單穩態電路的脈沖可以使用上升沿外部中斷捕捉起始邊沿,進入中斷後啟動定時器,設置外部中斷為下降沿,捕捉到下降沿停定時器,讀取定時器即可測得脈沖寬度。
8. 求助:採用STC2051單片機測量脈沖寬度~~
提供個思路給你
計數器 模式
將脈沖接入定時器0的GATE 和中斷0
將脈沖反向接入定時器1的GATE和中斷1
讓後在中斷0裡面讀取 定時器1的計數器 並清零
讓後在中斷1裡面讀取 定時器0的計數器 並清零
這樣
定時器1的記數就是 正脈寬
定時器0的記數就是負 正脈寬
9. 求助,通過52單片機測量外部脈沖寬度,如果脈寬小於某個設定值則輸出一個信號,比如燈亮
需求沒說清楚,脈寬的具體寬度,數量級先搞清楚。對具體實施很關鍵的。
方法有一下:
1、如果單片機有捕捉功能,則在沿上捕捉後記錄定時器時間,然後計算出時間,即可比較輸出信號。
2、如果沒有,接入單片機的中斷管腳(上下沿中斷,如果沒有,進入後立馬改變下次中斷觸發方式,進行上升下降沿中斷的切換),單片機外部中斷服務中記錄定時器時間,然後下次中斷來臨後計算時間,即可比較輸出信號。
3、如果都沒有,功能且單一,脈寬比較寬,要求不高,硬體又沒有在中斷管腳上,可以考慮主程序定時查詢,記錄時間。
5ms,很寬的,如果功能單一的話,定時器都可以免了,直接用單片機指令周期算時間,定義一個長整型變數,不斷監測管腳,監測完變數加一,後再比較。
不過呢,希望還是用我提到的方法2吧,通用些。具體實施自己多想想,另位朋友的代碼慎重使用,問題較多,不一一說明了
10. 51單片機測量脈沖寬度
脈沖寬度說白了就是連續兩次電平變化所佔用的時間,單片機實現的話就是利用電平變化中斷打開定時器,到再次變化時定時器的讀數(沒有溢出的情況)。