『壹』 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分,少了點哇。呵呵,寫程序很辛苦的啦~!:)呵呵
『貳』 跪求51單片機控制舵機程序(切記,單片機,不要弄個C來忽悠啊)
目前我正在研究舵機的控制,這里提供一個控制舵機的程序供參考。通過按鍵可以改變單片機輸出脈沖寬度,從而控制舵機的轉動范圍。這個程序是基於51單片機設計的。
首先,程序從0000H開始,跳轉到主程序。定時中斷子程序位於000BH,用於處理定時中斷。
主程序開始時,初始化堆棧指針和中斷系統。然後設置P3.7為脈沖波形的起始狀態,初始化定時器0,並設定舵機0位的初始值,即1.5ms。
接下來,程序通過檢測按鍵狀態來控制舵機轉動角度。當右轉鍵被按下時,程序會遞增脈沖寬度,使舵機轉動。當左轉鍵被按下時,程序會遞減脈沖寬度,使舵機反向轉動。
當電機回0鍵被按下時,程序將舵機歸零,即脈沖寬度恢復為1.5ms。
定時中斷服務程序用於處理定時中斷,它通過改變定時器0的初始值來控制脈沖寬度。
此外,程序中還包含了一個簡單的延時子程序D10MS,用於防抖處理。
這個程序的核心在於通過改變脈沖寬度來控制舵機的角度,通過按鍵可以靈活調整舵機的位置。
整體而言,這是一個通過按鍵控制舵機轉動角度的51單片機程序,適用於舵機控制的基本應用場景。
『叄』 單片機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上正脈沖的寬度。
『肆』 各位老鐵,小弟在論文進行答辯的時候碰到了點問題,論文題目是基於51單片機的數字頻率計設計
1。單片機測量的是方波信號,如果是其它波形或幅度不合適,就進行放大和整形
2。.該信號進入單片機的哪個引腳,如果用定時器0作為計數器,輸入引腳是P3.4
如果用定時器1作為計數器,輸入引腳是P3.5 如果測單個脈沖寬度(或周期),可以輸入任意引腳,但最好用中斷引腳P3.2或P3.3
3。.信號進入引腳之後怎麼計算它的程序
用另外一個定時器定時50ms,測50ms內有多少個脈沖輸入,然後乘以20(即1S)即是頻率