用51單片機實現(xiàn)的具體方法:將A信號連接至外部中斷INTO,冉將其反向后連接至外部中斷INT1將B信號作為方向信號連接至某一輸入端口(P30),這樣在信號A的上升沿和與下降沿都會產(chǎn)生中斷。由
于在不同轉(zhuǎn)向時,信號A的下降沿所對應(yīng)的方向信號電平正好相反,單片機在中斷服務(wù)程序中先檢測B信號的狀態(tài),根據(jù)不同的狀態(tài)進行不同的處理(計數(shù)值增加還是減小),這樣能夠有效的防止反轉(zhuǎn)產(chǎn)生的誤差,從而實現(xiàn)精確計數(shù),相應(yīng)的C程序段如下;
sbitDIR=P3.0;
intcnt; /計數(shù)器數(shù)值變量
void IntOISR(void)interrupt 0using 1{if(DIR)cnt++; else cnt--;}
void Int1ISR(void)interrupt 2 using2{if(DIR)cnt--; else cnt++;)
上述方法雖然能夠?qū)崿F(xiàn)精確計數(shù),但需要占用兩個外部中斷源,在一些應(yīng)用中受到限制。目前的新型
單片機都具有增強的功能,如輸入捕捉,輸入比較等;利用輸入捕捉功能能夠更容易的實現(xiàn)編碼器的接口。一個可編程計數(shù)器陣列模塊PCA,有一個專用的計數(shù)器和5個工作通道所組成。5個通道可以工作于4種方式之一:軟件定時器方式,輸入捕捉方式,輸出比較方式和PWM方式。輸入捕捉方式可以在脈沖的上升
沿或者下降沿捕捉,并同時產(chǎn)生中斷請求。利用這個功能可以很容易的實現(xiàn)編碼器的信號檢測與處理。
為了消除反轉(zhuǎn)誤差,同時也增加了分辨率,將PCA設(shè)置成上升沿和下降沿捕捉方式。在PCA中新服
務(wù)程序中,首先檢測信號A的狀態(tài),以判別其是上升沿中斷還是下降沿中斷。無論是上升沿還是下降沿。
信號B都有兩種可能(正傳和反轉(zhuǎn))。因此像前面一樣,還需要再根據(jù)不同的情況進行相反的處理。具體的 C程序如下:采用PCA通道4
sbitDIR=P3.0;
sbitPLS=P1.6;//PCA輸入通道4
int cnt; //計數(shù)器數(shù)值變量
void PcaISR(void)interrupt6using2
if(PLS){
if(DIR)cnt--; else cnt++;
Else{
if(DIR)cnt++else cnt--}}
相關(guān)產(chǎn)品
免責聲明
- 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負版權(quán)等法律責任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。