<th id="sqoc8"><progress id="sqoc8"></progress></th>
  • <del id="sqoc8"><form id="sqoc8"></form></del>
    
    
    <th id="sqoc8"><progress id="sqoc8"></progress></th>
  • <th id="sqoc8"><progress id="sqoc8"></progress></th>
      1. <kbd id="sqoc8"></kbd>

        <th id="sqoc8"></th>

        <del id="sqoc8"><form id="sqoc8"></form></del>
        加入收藏 | 發(fā)展歷程 | 在線留言 | 在線招聘     您好,歡迎來到廣東升威電子制品有限公司官網(wǎng)!
        中文 英文
        全國咨詢熱線:182-1927-6011

        35年模組、傳感器、編碼器、電位器、開關定制廠家

        電位器國家標準制定單位 | 編碼器行業(yè)標準制定單位
        升威動態(tài)

        Granville dynamic

        廣東升威電子制品有限公司

        電 話:0769-38833333
        傳 真:0769-87930111
            0769-87930222
        E-mail:[email protected]
        地 址:廣東省東莞市塘廈鎮(zhèn)鳳凰崗升威工業(yè)園

        旋轉編碼開關的應用原理

        文章出處:www.e2s8ui.cn  編輯:升威電子  發(fā)表時間:2016-10-18

               旋轉編碼開關的應用非常廣泛,今天給大家介紹下如下這款3腳和5腳的EC11旋轉編碼開關。

        5腳的旋轉編碼開關,如下圖

        EC11旋轉編碼開關

        具有左轉,右轉,按下三個功能。4、5腳是中間按下去的開關接線   1 2 3腳 一般是中間2腳接地,1、3腳上拉電阻后,當左轉、右轉旋紐時,在1、3腳就有脈沖信號輸出了。

        推薦型號:EC11旋轉編碼開關

         

        EC11旋轉編碼開關


              在單片機編程時,左轉和右轉的判別是難點,用示波器觀察這種開關左轉和右轉時兩個輸出腳的信號有個相位差,見下圖:

         

        EC11旋轉編碼開關信號


               由此可見,如果輸出1為高電平時,輸出2出現(xiàn)一個高電平,這時開關就是向順時針旋轉; 當輸出1 為高電平,輸出2出現(xiàn)一個低電平,這時就一定是逆時針方向旋轉.

         

               所以,在單片機編程時只需要判斷當輸出1為高電平時,輸出2當時的狀態(tài)就可以判斷出是左旋轉或是右旋轉了。


        #include "reg51.h"
        #define uint unsigned int

        sbit CodingsWitch_A=P1_1;
        sbit CodingsWitch_B=P1_2;

        uint CodingsWitchPolling()//
        {
           static Uchar Aold,Bold;   //定義了兩個變量用來儲蓄上一次調用此方法是編碼開關兩引腳的電平
           static Uchar st;         //定義了一個變量用來儲蓄以前是否出現(xiàn)了兩個引腳都為高電平的狀態(tài)
           uint tmp = 0;
           if(CodingsWitch_A&&CodingsWitch_B)
           st = 1;      //
           if(st)               //如果st為1執(zhí)行下面的步驟
           {
              if(CodingsWitch_A==0&&CodingsWitch_B==0)      //如果當前編碼開關的兩個引腳都為底電平執(zhí)行下面的步驟
              {
                 if(Bold)      //為高說明編碼開關在向加大的方向轉
                 {
                    st = 0;      
                    tmp++;      //
                 }
                 if(Aold)      //為高說明編碼開關在向減小的方向轉
                 {
                    st = 0;
                    tmp--;      //設返回值
                 }
              }
           }
           Aold = CodingsWitch_A;            //
           Bold = CodingsWitch_B;            //儲
           return tmp;            //
        }

         

        //編碼器計數(shù)程序
        void encoder_cnt(void)
        {
                uchar temp;
                temp = PIND; //取端口D管腳信號
                couch_clr = (temp & 0x08); //取編碼器清零信號
                if(couch_clr != false) //有編碼器清零信號
                {
                        couch_num = 0; //水平床碼清零
                }
                else
                {
                        if(encoder_cnt_en == false) //編碼器計數(shù)模塊沒有啟動
                        {
                                pr_couch_ba = temp & 0x03; //取編碼器A、B相電平信號
                        }
                        else
                        {
                                couch_ba = temp & 0x03; //取編碼器A、B相電平信號
                                if(pr_couch_ba == 0x00)
                                {
                                        if(couch_ba == 0x01)
                                        {
                                                couch_num++; //水平床碼加1
                                        }
                                        else if(couch_ba == 0x10)
                                        {
                                                couch_num--; //水平床碼減1
                                        }
                                }
                                else if(pr_couch_ba == 0x01)
                                {
                                        if(couch_ba == 0x11)
                                        {
                                                couch_num++; //水平床碼加1
                                        }
                                        else if(couch_ba == 0x00)
                                        {
                                                couch_num--; //水平床碼減1
                                        }
                                }
                                else if(pr_couch_ba == 0x10)
                                {
                                        if(couch_ba == 0x00)
                                        {
                                                couch_num++; //水平床碼加1
                                        }
                                        else if(couch_ba == 0x11)
                                        {
                                                couch_num--; //水平床碼減1
                                        }
                                }
                                else if(pr_couch_ba == 0x11)
                                {
                                        if(couch_ba == 0x10)
                                        {
                                                couch_num++; //水平床碼加1
                                        }
                                        else if(couch_ba == 0x01)
                                        {
                                                couch_num--; //水平床碼減1
                                        }
                                }
                        }
                        pr_couch_ba = couch_ba;
                }
        }


        編碼器及其計數(shù)模塊原理
        該文件只允許會員下載! 登錄 | 注冊

        飄揚的旋轉編碼器的檢測程序(MCS51)
        //旋轉編碼器檢測程序,A/B信號分別接在了INT0和INT1上
        //程序作者:BG4UVR
        //2005年1月15用KEIL編譯、硬件測試通過

        //注意:編碼器的信號,程序未做消抖處理。測試中,A/B信號上各
        //接了一只104的瓷片電容,工作很正常。如果不接電容,請自行編
        //寫信號消抖程序。

        #include <at89x51.h>

        sbit led="0xB1";//有一只LED接在了RXD引腳上,用來指示正反轉;

        main()
        {
        EA=1; //總中斷允許
        EX0=1; //外部中斷0允許
        IT0=1; //外部中斷0為邊沿觸發(fā)方式
        while(1);;
        }


        /*********************
        編碼器中斷函數(shù)
        入口:無
        出口:無
        *********************/
        void encoder(void) interrupt 0 { //外部中斷0
        if (INT1){
        led=1;
        }else{
        led=0;
        }
        }


        whimsy 的AVR程序

        //外部中斷0,用于編碼開關解碼,解碼圖:   A接中斷腳(AVR的PD2),以此為基準,B用來判斷方向(連到AVR的PA1), C接地
        //A -|
        //   |   -----|__________|----------|____________
        //C -|
        //
        //B -|
        //   |   ----------|__________|----------|____________
        //C -| 
        //             CW  ===>>> ROTATION
        //外部中斷設置(ISC01=0,ISC00=1): INT0 引腳上任意的邏輯電平變化都將引發(fā)中斷
        #pragma interrupt_handler int0_isr:2
        void int0_isr(void)
        {
        //external interupt on INT0
            GICR=0;    //禁止外部中斷
            if ((PIND & 0x04)==0)           //先判斷是高電平產生的中斷還是低點平的中斷
                        if ((PINA & 0x02)==0)         //再判斷B線上的電平
                            {
                            keycounter--;      
                             keydirection="0";
                            } 
                        else
                            {
                             keycounter++;
                             keydirection="1";
                            }         
                        
                else
                     if ((PINA & 0x02)==0)
                    {
                     keycounter++; 
                     keydirection="1";
                    } 
                  else
                   {
                    keycounter--;
                    keydirection=0;
                   }
                GICR=0x40;
        }

         

        升威電子風采相冊

        • 升威團隊風采
         

        升威員工心聲:

        在別人看來,升威是一個企業(yè),在我們看來,升威是一個家,升威電子的每個員工都有一份積極向上的心,對生活和工作充滿著激情,感謝升威給自己這個發(fā)展平臺,未來希望大家同心協(xié)力,共同進步。 >>點此進入相冊

        升威自動化事業(yè)部
        升威自動化事業(yè)部
        作為業(yè)界的專業(yè)企業(yè),廣東升威電子制品有限公司于2006年花巨資成立自動化事業(yè)部,開始為母公司提供全自動精密部件組裝設備、測試設備... [查看詳情]
        升威首頁 | 電位器 | 編碼器 | 旋轉開關 | 升威產品 | 走進升威 | 榮譽資質 | 實地參觀 | 標準制定 | 聯(lián)系升威 |
        鄭重聲明:未經授權禁止轉載、摘編,如有違反,追究法律責任 
        <th id="sqoc8"><progress id="sqoc8"></progress></th>
      2. <del id="sqoc8"><form id="sqoc8"></form></del>
        
        
        <th id="sqoc8"><progress id="sqoc8"></progress></th>
      3. <th id="sqoc8"><progress id="sqoc8"></progress></th>
          1. <kbd id="sqoc8"></kbd>

            <th id="sqoc8"></th>

            <del id="sqoc8"><form id="sqoc8"></form></del>
            亚洲男人的天堂在线观看 | 久久澡狠l澡欧美老妇 | 国产一级片免费在线观看 | 青青草23视频 | 久草免费电影 |