自寫程序:旋轉編碼器軟體方式掃描計數

2020-12-05 電子產品世界

國培期間時間相對而言比較充裕,於是就想寫點程序。來的時候帶了一個旋轉編碼開關,今天晚上寫了個程序測試了一下,通過了,程序能夠識別編碼開關的旋轉方向和旋轉次數,並且在數碼管上顯示出來。支持負數顯示。以下為源程序,程序在一職校開發板上運行成功,晶片為STC89C51RC。

#include reg52.h> //頭文件 sbit anotherbit = P1^2; //旋轉編碼器另一腳 sbit rotation=P1^0; //旋轉編碼器中一腳 bit oldbit; //上一狀態暫存位 unsigned char led1,led2,led3,led4,ztj;//LED顯示緩存,掃描狀態機 int xuanzhuanzhi,ctemp;//旋轉值 unsigned char code ledseg[17]={0x88,0xBE,0xC4,0x94,0xB2,0x91,0x81,0xBC,0x80, 0x90,0xA0,0x83,0xC9,0x86,0xC1,0xE1,0xf7}; void init(void) { TMOD=0x11; //方式1 TR0=1; //啟動T0開始掃描數碼管 ET0=1; //打開中斷 EA=1; } void ledscan(void) //數碼管掃描程序 { switch(ztj) //切換狀態機 { case 0: //分支 P2=0xff; //關閉數碼管 P0=ledseg[led4];//查表得段碼數據 P2=0x7f; //打開數碼管 ztj=1; //轉移狀態 break; //分支結束 case 1: P2=0xff; P0=ledseg[led3]; P2=0xbf; ztj=2; break; case 2: P2=0xff; P0=ledseg[led2]; P2=0xdf; ztj=3; break; case 3: P2=0xff; P0=ledseg[led1]; P2=0xef; ztj=0; break; default: //沒有找到分支 ztj=0; //狀態機復位 break; //分支結束 } } void timer0 (void) interrupt 1 using 1 //T0定時器中斷程序,定時時間到,自動運行此程序 { TH0=(65536-5000)/256; //置定時值,每次時間到都要重新置定時值 TL0=(65536-5000)%256; //每5000us產生一次定時器定時中斷(12MHz) ledscan(); //每5000us掃描一次LED(12MHz) } void main(void) { init(); //是初始化,打開中斷及定時器 while(1) { ctemp=xuanzhuanzhi; //複製計數值 if(ctemp0) //判斷符號 { ctemp=-ctemp; //如果為負數,取反 led4=16; //顯示負號 led3=ctemp%1000/100; //提取各位數值 led2=ctemp%100/10; //提取各位數值 led1=ctemp%10; //提取各位數值 } else { led4=ctemp/1000; //提取各位數值 led3=ctemp%1000/100; //提取各位數值 led2=ctemp%100/10; //提取各位數值 led1=ctemp%10; //提取各位數值 } if(oldbit==1rotation==0) //判斷前後狀態以識別是否發生下降沿 { if(anotherbit) //判斷另一相電平 { xuanzhuanzhi++; //為高,正轉 } else { xuanzhuanzhi--; //為低,反轉 } } oldbit=rotation; //刷新位暫存值 } }

相關焦點

  • 旋轉編碼器的抗抖動計數電路
    介紹了一個抗抖動計數電路,濾除了旋轉編碼器因抖動而造成的誤計數。旋轉編碼器的輸出波形見圖1。A相和B相輸出佔空比為50%的方波。編碼器每轉一周,A相和B相輸出固定數目的脈衝(如100個脈衝)。當編碼器正向旋轉時,A相比B相超前四分之一個周期;當編碼器反向旋轉時,B相比A相超前四分之一個周期。A相和B相輸出方波的相位差為90°。編碼器每轉一周,Z相輸出一個脈衝。
  • 如何設計基於ARM的旋轉編碼器採集模塊?
    旋轉編碼器同時還對2路編碼器信號進行角速度計算,最終模塊通過CAN總線將採集到的旋轉位置值以及角速度值發送到DPU(分散處理單元),以供工業現場使用。1 旋轉編碼器旋轉編碼器是一種測量轉動部件運動情況的傳感器,是將旋轉的機械位移量轉換為電氣信號,對該信號進行處理後檢測位置、速度等的傳感器。所謂編碼,其實就是將旋轉角度的信息轉換為單片機可讀的電信號的過程。
  • 旋轉編碼器在線速度檢測控制中的應用
    設旋轉編碼器每旋轉一周,其計數脈衝個數為NP(脈衝個數/轉),則旋轉編碼器角解析度(單位:(°)/個)為:P=360/NP假定固定在旋轉編碼器轉軸上的主動導向輪半徑為r m,則旋轉編碼器位移解析度(單位:m/個)為:Ps=27πr/NP這時,若計數脈衝個數為N(個),則由旋轉編碼器測量的位移量S(單位:m)為:S=Ps
  • 旋轉編碼器的編程思路
    當編碼器正向旋轉時,A相比B相超前四分之一個周期;當編碼器反向旋轉時,B相比A相超前四分之一個周期。A相和B相輸出方波的相位差為90°。編碼器每轉一周,Z相輸出一個脈衝。由於編碼器每轉一周,A相和B相輸出固定數目的脈衝,則A相或B相每輸出一個脈衝,表示編碼器旋轉了一個固定的角度。當Z相輸出一個脈衝時,表示編碼器旋轉了一周。因此旋轉編碼器可以測量角位移及位移方向。
  • 光電旋轉編碼器的原理及應用方法
    然而,由於嵌入式計算機的專用性,系統的硬體、軟體結構千差萬別,其輸入設備也不再像通用計算機那樣單一。嵌入式計算機的輸入沒備一般有滑鼠、鍵盤、觸控螢幕、按鈕、旋鈕等,而光電編碼器(俗稱「單鍵飛梭」)作為一種輸入設備,由於其具有輸入靈活,簡單可靠等特點,因此特別適合應用在嵌入式儀器和手持式設備上,整個系統可以只用一個鍵作為輸入。
  • 【E課堂】旋轉編碼器的編程思路
    當編碼器正向旋轉時,A相比B相超前四分之一個周期;當編碼器反向旋轉時,B相比A相超前四分之一個周期。A相和B相輸出方波的相位差為90°。編碼器每轉一周,Z相輸出一個脈衝。由於編碼器每轉一周,A相和B相輸出固定數目的脈衝,則A相或B相每輸出一個脈衝,表示編碼器旋轉了一個固定的角度。當Z相輸出一個脈衝時,表示編碼器旋轉了一周。因此旋轉編碼器可以測量角位移及位移方向。
  • 安裝旋轉編碼器的S7-200PLC的電氣設計講解說明
    將編碼器連接到測速輥,在程序中根據測速輥的直徑計算出測速輥的周長,進而計管出每分鐘走過的米數。旋轉編碼器Autonics(E50S8-3-T-24),編碼器每轉脈衝數為250,三相A、B、Z測速輥直徑為100mm。
  • 旋轉編碼器原理
    在接合數字電路特別是單片機後,增量式旋轉編碼器在角度測量和角速度測量較絕對式旋轉編碼器更具有廉價和簡易的優勢。光電編碼器按編碼方式分為二類:增量式與絕對式。1、增量式編碼器特點:增量式編碼器轉軸旋轉時,有相應的脈衝輸出,其計數起點任意設定,可實現多圈無限累加和測量。編碼器軸轉一圈會輸出固定的脈衝,脈衝數由編碼器光柵的線數決定。
  • PLC連接編碼器具體有哪些方式
    絕對值編碼器信號不怕幹擾,停電數據不會丟失,PLC對於絕對值編碼器無需時刻計數,對於CPU掃描無需計算中斷時間並節省CPU資源,尤其是現在絕對值編碼器的市場價格大幅度下降,同時因數據可靠性的提高,對於使用絕對值編碼器可節省調試時間,減少售後服務成本,實際使用效果及性價比已遠優於選用增量型編碼器,在PLC位置定位中已有越來越多的用戶傾向於使用絕對值編碼器。
  • 旋轉編碼器的設計
    智能旋轉換向編碼器提供輸出選項、簡單調零、簡化BOM和基於PC的見解。雖然光學編碼器和磁編碼器歷史悠久,而且基於看似「更具體」的物理概念,但是電容式編碼器亦是基於經過全面試驗的原理,並且已經通過多年來在現場的成功實際應用中得到證明。這種不同於運動感測的數字式交替方法提供了許多益處,為利用旋轉換向編碼器的設計人員提供了全新的智能水平。
  • 霍爾式膠印機旋轉編碼器設計
    引 言 實現膠印機印刷工藝過程的程序控制系統(PLC)需用多個傳感器對紙張位置、旋轉角度進行檢測,傳感器數量的增多給安裝、調試和使用造成諸多不便,使設備的可靠性降低,電氣控制系統的成本增加
  • 你也許想不到,有一天旋轉編碼器還可以這樣設計
    旋轉編碼器對於幾乎所有運動-控制應用來說都很關鍵,由於無刷直流電動機(BLDC)使用增加,使得旋轉編碼器的需求進一步擴大,而且提供了控制、精度和效率等方面的諸多益處。它具有兩個柱狀或線狀型式,一個在固定元件上,另一個在運動元件上,兩者一起形成了一個配置為發送器/接收器對的可變電容器,請參考圖3.當編碼器轉動時,一體式ASIC對這些線的變化進行計數,並利用內插法尋找軸的位置和轉動方向,建立標準的正交輸出,以及其它編碼器提供的換向輸出,用於控制無刷直流(BLDC)電機。
  • 乾貨 旋轉編碼器精華解讀,不信你都知道
    旋轉編碼器可分為絕對型(absolute)編碼器及增量型(incremental)編碼器二種。增量型編碼器也稱作相對型編碼器(relative encoder),利用檢測脈衝的方式來計算轉速及位置,可輸出有關旋轉軸運動的信息,一般會由其他設備或電路進一步轉換為速度、距離、每分鐘轉速或位置的信息;絕對型編碼器會輸出旋轉軸的位置,可視為一種角度傳感器。
  • 基於單片機與旋轉編碼器的閉環線速度控制系統
    成纜工藝參數的穩定,直接關係到  該項目中,採用的旋轉編碼器的型號是TRDJ1000系列實際應用中,將其與一加工精度極高、周長為500 mm的旋轉編碼器測量主動輪與旋轉編碼器同軸安裝,主動輪與電纜接觸。在電纜生產運動過程中,依靠摩擦力拉動測量輪旋轉,這樣就把電纜的直線位移(長度)轉化為旋轉編碼器的脈衝數位訊號輸出。
  • 編碼器的作用
    編碼器的作用--簡介  編碼器(encoder)是一種將模擬視頻信號(如比特流)或數據編制、轉換為可用以通訊、傳輸和存儲的數位訊號的硬體/軟體設備。編碼器的應用十分廣泛,主要用來檢測機械運動的速度、位置、角度、距離或計數,除了應用在機械外,許多的馬達控制如伺服馬達均需配備編碼器以供馬達控制器作為換相、速度及位置的檢出。
  • 基於ARM的旋轉編碼器採集模塊設計
    本文引用地址:http://www.eepw.com.cn/article/271736.htm  本文針對旋轉編碼器在工業現場中的應用,基於LPCI768硬體平臺,設計出一種旋轉編碼器採集模塊,該模塊內部具有高精度分析、整形、解碼電路,可同時對2路編碼器輸入信號進行分析、解碼。經過處理的旋轉信號通過高性能處理器進行採集及數字濾波。
  • 增量旋轉編碼器選型注意事項及使用方法介紹
    一、增量旋轉編碼器選型有哪些注意事項?械安裝尺寸,包括定位止口,軸徑,安裝孔位;電纜出線方式;安裝空間體積;工作環境防護等級是否滿足要求。2. 解析度,即編碼器工作時每圈輸出的脈衝數,是否滿足設計使用精度要求。3.電氣接口,編碼器輸出方式常見有推拉輸出(F型HTL格式),電壓輸出(E),集電極開路(C,常見C為NPN型管輸出,C2為PNP型管輸出),長線驅動器輸出。其輸出方式應和其控制系統的接口電路相匹配。
  • 機械測量中旋轉編碼器與單片機的通用接口(07-100)
    編碼器,我們成功地開發了單片機與旋轉編碼器的最簡硬體接口。單路輸出是指旋轉編碼器的輸出是一組脈衝,而雙路輸出的旋轉編碼器輸出兩組相位差90度的脈衝,通過這兩組脈衝不僅可以測量轉速,還可以判斷旋轉的方向。  它將測量到的角度量轉換為數字脈衝信號輸出,用來檢測被檢對象的角位移、角速度、角加速度、線位移、線速度和線加速度等,因而,應用十分廣泛。旋轉編碼器有絕對式和增量式兩種。
  • 旋轉編碼器還可以這樣設計
    智能旋轉換向編碼器提供輸出選項、簡單調零、簡化BOM和基於PC的見解本文引用地址:http://www.eepw.com.cn/article/278338.htm  新方法開啟新機遇
  • 成為電梯高手之旋轉編碼器圖解及故障解決
    編碼器以信號原理來分,有增量式編碼器(SPC)和絕對式編碼器(APC),顧名思義,絕對式編碼器可以記錄編碼器在一個絕對坐標系上的位置,而增量式編碼器可以輸出編碼器從預定義的起始位置發生的增量變化。增量式編碼器需要使用額外的電子設備(通常是PLC、計數器或變頻器)以進行脈衝計數,並將脈衝數據轉換為速度或運動數據,而絕對式編碼器可產生能夠識別絕對位置的數位訊號。