導航:首頁 > 操作系統 > 51單片機脈沖任務

51單片機脈沖任務

發布時間:2023-03-02 16:13:00

1. 51單片機能否實現光電編碼器的脈沖採集任務光電編碼器轉一圈是5000個脈沖。

51的處理能力應該不夠,外加計數器不知道能不能行,我用16位飛思卡爾xs128單片機做的,將光電編碼器接在計數器上,普通IO口不行

2. 用C51單片機統計脈沖次數

舉例解答如下:
利用定時器T1,對外部脈沖(P3.5引腳輸入)計數,
每輸入200次脈沖產生一次中斷,累加器+1,
選用T1,計數器模式,方式2(自動重裝初值8位計數器),
TMOD
=0110
0000B
=60H
計數初值
=2^8
-200
=256
-200
=56d
=38H,
編程序如下:
;
;
主程序:
MAIN:
CLR
A
;
;
累加器清零
MOV
TMOD,
#60H
;
;置T1計數模式、方式2
MOV
TL1,
#38H
;
;
寫入計數初值
MOV
TH1,
#38H
;
;
寫入留待自動重裝的初值
SETB
TR1
;
;
啟動T1計數
SETB
ET1
;
;
允許T1中斷
SETB
EB
;
;
CPU開中斷
SJMP
$
;
;
等待一輪對外部脈沖計數溢出中斷
;
;
以下是T1中斷處理子程序:
T1_INT:
INC
A
;
;
累加器加1
RETI
;
;
中斷返回

3. 求大神幫忙寫個51單片機的接收脈沖程序。

用計數器T1的中斷控制蜂鳴器發出1KHz音頻
#include<reg51.h> // 包含51單片機寄存器定義的頭文件
sbit sound=P3^7; //將sound位定義為P3.7引腳
/**************************************************************
函數功能:主函數
**************************************************************/
void main(void)
{
EA=1; //開總中斷
ET1=1; //定時器T1中斷允許
TMOD=0x10; //TMOD=0001 000B,使用定時器T1的模式1
TH1=(65536-921)/256; //定時器T1的高8位賦初值
TL1=(65536-921)%256; //定時器T1的高8位賦初值
TR1=1; //啟動定時器T1
while(1)//無限循環等待中斷
;
}
/**************************************************************
函數功能:定時器T1的中斷服務程序
**************************************************************/
void Time1(void) interrupt 3 using 0 //「interrupt」聲明函數為中斷服務函數
{
sound=~sound;
TH1=(65536-921)/256; //定時器T1的高8位重新賦初值
TL1=(65536-921)%256; //定時器T1的高8位重新賦初值
}
改改 就成了你的

4. 51單片機怎麼產生外部脈沖

用外部中斷,按一次加一,不能用外部中斷控制計數器,這樣不是加一,而是啟動定時器,會加很多一。。。

5. 如何編程實現51單片機每隔 t 時間發出一個脈沖求C語言詳細編程。。。

給你個基本框架,根據你的具體要求再修改吧。使用定時1中斷實現,精度比較高。
#include <reg52.h>

#define PERIODH (65536l-10000l)/0X100 //設10ms中斷1次TH1初值
#define PERIODL (65536l-10000l)%0X100 //設10ms中斷1次TL1初值

sbit P1_1 = 0x91; //假設從P1.1輸出脈沖

unsigned int iCount; //延時間隔時間變數
unsigned int iPulseCount; //脈沖脈寬時間變數

void timer1() interrupt 3 using 1
{//定時器每0.01秒一次中斷

TH1 = PERIODH;
TL1 = PERIODL;

if(iCount)
{//計數未到0,計數器-1
iCount--;
}
if(iPulseCount)
{//計數未到0,計數器-1
iPulseCount--;
}

}
main()
{

TMOD = 0X10;//方式1
EA = 1;//總中斷允許
ET1 = 1;//定時器1中斷允許
TR1 = 1;//啟動定時器1

P1_1 = 0; //脈沖輸出埠,假設輸出正脈沖,預置為低電平
while(1)
{
iCount = 200;//每間隔200*10ms = 2秒一個脈沖,t值變化改此處
while(iCount);//等待2秒中
P1_1 = 1; //置為高電平,輸出正脈沖
iPulseCount = 10;//每間隔10*10ms = 100ms一個脈沖,脈寬變化改此處
while(iPulseCount);//高電平保持100ms
P1_1 = 0; //置為低電平,輸出正脈沖結束
}
}

6. 如何用51系列單片機發射脈沖

51單片機本身就有兩個自帶的可編程定時器/計數器T1,T2有四種工作方式,只要寫入控制字和設置記數初值,就可以輸出不同頻率的脈沖.51單片機的為6M
HZ,所以存入的值可以計算的為0F0H,選用方式1,控制字
MOV
TMOD,#01H
;選用方式1
MOV
TL0,#0F0H
;裝入初值
SETB
TR0
;啟動
SETB
ET0
;允許中斷
SETB
EA
;CUP開放中斷

7. 51單片機如何用計數器檢測脈沖信號(高低電平),程序怎麼做!沒有思路!

可以利用51單片機的計數器T0、T1,例如用計數器0的外部計數脈沖輸入端T0計數,當計滿100個脈沖數量後,觸發中斷。進入計數服務中斷程序。

如果有脈沖信號,經過電容微分後,在下降沿會產生一個向下的尖端脈沖,電阻R2是作為一個偏置,當有向下的尖端脈沖來後,反相端的電壓會低於同向端的電壓。

從而比較器輸出高電平,這個電路圖要注意的兩個參數是,1,比較器的選擇,你可以選LM339,要加上拉電阻。

(7)51單片機脈沖任務擴展閱讀:

通向輸入端的那兩個電阻是用來產生一個參考電壓的,電容用來微分你的PWM波,你可以用示波器在反向輸入端觀察微分信號。

主程序中可根據不同運行狀態調用部分子函數。需要開機按鍵設置時,優先執行按鍵程序,其它需要設置以後才能運行的子函數暫時不調用,減少單片機被佔用過多。

設置後,不需要按鍵了,就不調用按鍵程序了。如果需要隨時按鍵都要反應,可以把按鍵接到外部中斷上,以中斷方式響應按鍵,不受其他子函數影響。

8. 51單片機處理接收的脈沖

核心的思想就是在一個時間段內計算脈沖的數量。可以用外部中斷,有下降沿的時候找個標記位標記一下。程序外通過掃描標記位,對脈沖進行計數。
對脈沖計數的時候可以根據脈沖寬度進行一下過濾。脈沖的計數周期也需要根據脈沖輸出特性進行調整。

9. 51單片機keil4中,怎麼查看脈沖信號

1、首先打開51單片機進入到keil4中。
2、其次點擊設置進入,然後找到多功能。
3、最後即可查看脈沖信號。

閱讀全文

與51單片機脈沖任務相關的資料

熱點內容
安卓怎麼換相機 瀏覽:931
華為相片文件夾怎麼刪除重復照片 瀏覽:312
plc編程視頻教程大全 瀏覽:938
直播用哪個app播放背景音樂 瀏覽:850
點歌機系統app在哪裡下載 瀏覽:609
javadate類型轉換string 瀏覽:694
RPG游戲解壓後亂碼 瀏覽:988
無線通信的幾個密鑰演算法 瀏覽:644
王者榮耀app數據修復在哪裡 瀏覽:429
基於單片機飲水機溫度控制系統的設計 瀏覽:455
c中委託被編譯後的結構 瀏覽:152
飛燕app怎麼注銷賬號 瀏覽:895
cad命令縮小 瀏覽:154
linux發展史 瀏覽:629
伺服器選用什麼CPU比較好 瀏覽:334
明星怎麼宣傳安卓 瀏覽:953
8255晶元編程 瀏覽:65
java文件bat運行 瀏覽:747
java常見筆試 瀏覽:529
360程序員模式 瀏覽:363