導航:首頁 > 操作系統 > 51單片機脈沖信號編碼

51單片機脈沖信號編碼

發布時間:2022-06-01 06:07:37

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

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

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

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

(1)51單片機脈沖信號編碼擴展閱讀:

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

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

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

㈡ 如何用單片機加上兩個按鍵模擬脈沖編碼旋鈕,代替脈沖編碼旋鈕輸出脈沖波形信號

通過高解析度計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。

脈沖寬度調制

詳細釋義:是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。

基本原理:控制方式就是對逆變電路開關器件的通斷進行控制,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替正弦波或所需要的波形。也就是在輸出波形的半個周期中產生多個脈沖,使各脈沖的等值電壓為正弦波形,所獲得的輸出平滑且低次諧波少。

優點:從處理器到被控系統信號都是數字形式的,無需進行數模轉換。讓信號保持為數字形式可將雜訊影響降到最小。雜訊只有在強到足以將邏輯1改變為邏輯0或將邏輯0改變為邏輯1時,也才能對數字信號產生影響。

㈢ 向51單片機里寫發出脈沖信號的c程序怎麼編啊

//用ADC0808控制PWM輸出
//通過可變電阻調節脈沖寬度
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK =P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit PWM=P3^0;
//延時
void Delay(uchar x)
{
uchar i;
while(x--)
for(i=0;i<40;i++);
}
void main()
{
uchar Val;
TMOD=0x02;//定時器T0工作於方式2自動重裝8位計數器
TH0=0x14;
TL0=0x00;
IE=0x82; //允許T0中斷
TR0=1; //啟動定時器
while(1)
{
ST=0;ST=1;ST=0; //啟動A/D轉換
while(!EOC); //等待轉換完成
OE=1;
Val=P1; //讀取轉換結果
OE=0;
if(Val==0) //PWM輸出占空比為0
{
PWM=0;
Delay(0xff);
continue;}
if(Val==0xFF) // PWM輸出占空比為100%
{
PWM=1;
Delay(0xff);
continue;
}
PWM=1;
Delay(Val); //PWM輸出占空比
PWM=0;
Delay(0xff-Val);
}
}
//--------------------------------
//T0定時器中斷給ADC0808提供時鍾信號
//---------------------------------
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0808時鍾
}

能看明白嗎?我也是剛學的,照書上寫的

㈣ 問下增量式旋轉編碼器與51單片機的接線問題。

1、如果需要高速(速度比較快)計數,在單片機外面加一個判向電路。做硬體判向。
輸出一般有兩種,一種是輸出一個方向信號和一個計數信號。
用單片機的一個計數器(如用T0),這樣就能實現正反兩方向的加減計數了。
另一種是輸出兩個正反計數的脈沖串。
用兩個計數器做減法運算。兩種都可以。
Z信號一般不用接計數器。看你用途和用法了。
2、編碼器直接接單片機。
如你用5V單片機那編碼器輸出信號的幅值也應該是TTL電平的。
做軟體判向,可能會影響計數速度。

㈤ 單片機:車輪每轉一圈產生一脈沖信號,通過單片機完成此脈沖信號計數及顯示

電路比較簡單,程序原理,設置定時器/計數器為16位外部計數狀態,主程序中不斷地讀取計數器數據並顯示即可。
51單片機程序大致如下:
TMOD=0x05;
TH0=0;
TL0=0;
TR0=1;
while(1)

a=TH0*256+TL0;
display(a);

㈥ 有關編碼器與51單片機連接的問題

E6A2-CW3C旋轉編碼器輸出兩路正交(相位相差90°)脈沖信號。解析度200意味著編碼器每旋轉一周輸出200個周期脈沖。如果把每一路脈沖的上沿和下沿都利用起來,相當於四倍頻,解析度可以達到200×4=800。
編碼器輸出通常為5v的TTL電平,可以直接連接到單片機。能否利用單片機直接讀取編碼器並計數,則取決於你的應用中,編碼器軸旋轉的速度有多大?因為,單片機對兩路脈沖的計數只能基於對脈沖的上跳(或者下跳,下同)的處理。而單片機對隨機上跳處理的較好的方案是上跳引起一個中斷,在中斷程序中實施判斷後再進行加1或減1的計數。中斷處理是需要時間的。當編碼器旋轉足夠快,輸出脈沖周期少於中斷處理時間時,將導致脈沖丟失,這會引起計數誤差。
所以,你要准確估計你的編碼器旋轉速度,得到最小的脈沖周期;然後估算你的中斷處理程序的執行時間(在AT89S52最大系統時鍾下)。兩者比較後才能確定你的設計是否可行。

㈦ 51單片機怎樣采樣脈沖信號

對於低電壓的脈沖信號,你所述的15ms脈寬是比較大的,你可以用運放,如LM358或LM324放大後送給MCU的中斷輸入腳,用定時器對脈沖進行計時即可測出寬度和周期.

㈧ 51單片機處理接收的脈沖

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

㈨ 怎樣用51單片機輸出一個脈沖信號

我直接說思路可以嗎?利用已知的脈沖信號的數據(比如單位脈沖整個時間和高電位時間)可以推到出頻率計算公式,然後利用除法和取模,一位位的放到字元串裡面,然後顯示字元串。比如說51hz,(int)51/10=5,51%10=1,明白了吧。
寫完之後才發現這個問題是09年提的,都過了三年了,汗///估計現在這位兄弟已經成牛人了吧....

㈩ 51單片機怎麼寫編碼器的程序

可以用T0或T1的計數器模式來處理編碼器的脈沖信號。

閱讀全文

與51單片機脈沖信號編碼相關的資料

熱點內容
不能修改的pdf 瀏覽:737
同城公眾源碼 瀏覽:475
一個伺服器2個埠怎麼映射 瀏覽:283
java字元串ascii碼 瀏覽:62
台灣雲伺服器怎麼租伺服器 瀏覽:462
旅遊手機網站源碼 瀏覽:317
android關聯表 瀏覽:930
安卓導航無聲音怎麼維修 瀏覽:322
app怎麼裝視頻 瀏覽:424
安卓系統下的軟體怎麼移到桌面 瀏覽:81
windows拷貝到linux 瀏覽:757
mdr軟體解壓和別人不一樣 瀏覽:889
單片機串列通信有什麼好處 瀏覽:325
游戲開發程序員書籍 瀏覽:849
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:480
php和java整合 瀏覽:835
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:62
蘋果手機怎麼設置不更新app軟體 瀏覽:289