Ⅰ 求單片機脈沖計數程序
,顯示的是每分鍾的脈沖個數。
----
需要等待一分鍾後,顯示出來嗎?
對1Hz的脈沖計數,顯示的數字,不就是 60 嗎?
定時5MS,是什麼意思?
Ⅱ 求51單片機對外加脈沖信號(5~20HZ)計數,測量10秒鍾內計到脈沖個數並顯示的程序(C語言)!謝謝大佬!
(1)電路圖計 (不需要設計時鍾電路)
--僅僅使用一個LED。
--也沒有什麼可設計的。
(2)程序設計
--樓主沒有指定編程語言。
Ⅲ 51單片機脈沖計數
你好!
那就用外部中斷來檢測吧,速度快精度高
void outside() interrupt 0
{
T0count++;
}
然後將計數,通過液晶顯示出來就可
Ⅳ 51單片機如何用計數器檢測脈沖信號(高低電平),程序怎麼做!沒有思路!
可以利用51單片機的計數器T0、T1,例如用計數器0的外部計數脈沖輸入端T0計數,當計滿100個脈沖數量後,觸發中斷。進入計數服務中斷程序。
如果有脈沖信號,經過電容微分後,在下降沿會產生一個向下的尖端脈沖,電阻R2是作為一個偏置,當有向下的尖端脈沖來後,反相端的電壓會低於同向端的電壓。
從而比較器輸出高電平,這個電路圖要注意的兩個參數是,1,比較器的選擇,你可以選LM339,要加上拉電阻。
(4)51單片機脈沖計數子程序擴展閱讀:
通向輸入端的那兩個電阻是用來產生一個參考電壓的,電容用來微分你的PWM波,你可以用示波器在反向輸入端觀察微分信號。
主程序中可根據不同運行狀態調用部分子函數。需要開機按鍵設置時,優先執行按鍵程序,其它需要設置以後才能運行的子函數暫時不調用,減少單片機被佔用過多。
設置後,不需要按鍵了,就不調用按鍵程序了。如果需要隨時按鍵都要反應,可以把按鍵接到外部中斷上,以中斷方式響應按鍵,不受其他子函數影響。
Ⅳ 51單片機c語言脈沖計數並顯示程序
TMOD=0x05;
TH0=0;TL0=0;
TR0=1;
while(1)
{
a=TH0*256+TL0;
display(a);
}
Ⅵ 求51單片機1秒鍾脈沖計數C語言程序
單片機的系統時間為晶振頻率的12分之一,如果晶振是12兆赫茲,那麼單片機最小系統時間就是1us,所以可以用_nop_();指令達到精確延時,這條語句執行1次系統時間,具體的網路下就行了。
至於你說的1s,時間比較長,不適合用定時器,那麼可以用嵌套循環語句,for、while、do while,要注意循環時使用不同的變數類型,所消耗的時間也不同。網路下proteus,這個是能將keil生成的c工程文件進行軟體模擬的一個軟體,和multisim一樣很簡單,裡面有示波器,用示波器看模擬時間,自己用循環和_nop_()指令湊1秒出來就行了
Ⅶ 51單片機,用匯編語言編寫程序,10秒內對外部脈沖進行計數,並數出外部脈沖頻率。求高手編寫程序。
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#51H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
MOV TH1,#0
MOV TL1,#0
SETB TR0
SETB TR1
SETB ET0
SETB EA
CLR A
MOV R2,#0
LOOP:
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC A
CJNE A,#20,T0E
MOV A,#0
INC R2
CJNE R2,#10,T0E
MOV R2,#0
MOV R1,TH1
MOV R0,TL1
MOV B,#10
LCALL DIV16
MOV P1,R0
T0E:
RETI
;R1:R0/B=R1:R0
DIV16:
MOV R7,#08H
MOV B,#6
DIV1:
CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
CLR C
SUBB A,B
JC DIV2
MOV R1,A
INC R7
DIV2:
DJNZ R7,DIV1
RET
END
Ⅷ 關於用一個51單片機對脈沖計數的程序
....每兩個下降沿時間間隔內L1的脈沖個數單獨算出來....
肯定是能算出來的。
算完了,顯示嗎? LCD、還是LED數碼顯示器?
Ⅸ 51單片機怎麼實現外部脈沖計數
100ms內,測出外部INT0脈沖的個數。
---------
這個「個數」,最多 能達到多少?
Ⅹ 51單片機使用T0和T1外部脈沖計數,C語言如何編程
1、使用T0和T1外部脈沖計數,控制兩個電機,到1700個脈沖電機停止,
--統計脈沖個數,用外部中斷更好。
--T0和T1,留著定時用。
用四個按鍵控制,按鍵1控制電機正轉,按鍵2控制電機反轉,按鍵3控制電機1正轉,按鍵4控制電機2正轉。
2、常式:
#include<reg51.h>
sbitk1=?;//自己定義
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}