久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

EC11編碼器基于運(yùn)算解碼的算法(原創(chuàng))

查看數(shù): 5689 | 評(píng)論數(shù): 30 | 收藏 43
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2023-12-13 22:46

正文摘要:

EC11編碼器基于運(yùn)算解碼的算法(原創(chuàng)) EC11旋轉(zhuǎn)編碼器是一種基于脈沖發(fā)生的裝置,它的編碼邏輯如下圖 單片機(jī)解碼方式主要有幾種: 1、MCU定時(shí)器自帶編碼器模式,如GD32、STM32等; 2、使用外部IO中斷,在 ...

回復(fù)

ID:1143041 發(fā)表于 2025-5-17 13:34
感謝樓主分享
ID:46750 發(fā)表于 2025-5-17 10:53
代碼非常穩(wěn)定可靠!謝謝分享!!!
ID:21740 發(fā)表于 2025-2-21 16:54
zhang32568 發(fā)表于 2025-2-20 10:54
我經(jīng)常使用的程序。非常靈敏!定時(shí)器3毫秒以內(nèi)都毫不拖泥帶水。
sbit EC11_A = P3^5;           //EC11 A ...

剛試了代碼非常穩(wěn)定可靠!謝謝分享!!!
ID:30165 發(fā)表于 2025-2-20 10:54
我經(jīng)常使用的程序。非常靈敏!定時(shí)器3毫秒以內(nèi)都毫不拖泥帶水。
sbit EC11_A = P3^5;           //EC11 A端
sbit EC11_B = P3^3;           //EC11 B端
void EC11_Display()
{
   static bit EC11_Flag=0,Left_Flag=0,Right_Flag=0;

   if((EC11_A)&&(EC11_B))//兩個(gè)都是1,表示開(kāi)始第一個(gè)脈沖
     {
       EC11_Flag =1 ;//標(biāo)記為第一個(gè)信號(hào)收到,可以進(jìn)行下一個(gè)信號(hào)
      }

    if(EC11_A!=EC11_B)//第二個(gè)信號(hào)
     {
       Left_Flag = EC11_A ; //記錄AB的信號(hào)狀態(tài)
       Right_Flag = EC11_B ;
      }

    if(EC11_Flag)
     {
       if((EC11_A==0)&&(EC11_B==0))// 第三個(gè)信號(hào),處理第二個(gè)信號(hào)的值
         {
           if(Right_Flag)//右轉(zhuǎn)
          {
                //自己程序      
          }
     else if(Left_Flag) //左轉(zhuǎn)
         {                             
             //自己程序
          }
         EC11_Flag = 0; //把標(biāo)志位清零,等待下一個(gè)周期
       }
    }       
}
ID:471574 發(fā)表于 2025-2-19 15:59
邰夏留 發(fā)表于 2025-2-18 09:57
請(qǐng)教一下樓主,這個(gè)怎么消抖的呢?

我用的是模塊,應(yīng)該是加了電容消抖。軟件消抖這個(gè)不好處理,你可以測(cè)試下,不消抖有什么問(wèn)題
ID:79034 發(fā)表于 2025-2-18 09:57
zyhlove813 發(fā)表于 2023-12-13 23:11
同時(shí)貼上lkc8210發(fā)表的算法:
//算法四: 編譯大小不錯(cuò),只適合單倍頻
uint8_t KeyA_Last;

請(qǐng)教一下樓主,這個(gè)怎么消抖的呢?
ID:471574 發(fā)表于 2024-11-14 11:34
kkfy888 發(fā)表于 2024-11-10 21:39
看了up的視頻,特意搜了關(guān)鍵字找到了^_^

有心了
ID:98767 發(fā)表于 2024-11-10 21:39
看了up的視頻,特意搜了關(guān)鍵字找到了^_^
ID:479134 發(fā)表于 2024-11-6 12:25
講解的思路真的很清晰啊
ID:433219 發(fā)表于 2024-10-7 16:32
編碼器,判斷誰(shuí)先跳變,就當(dāng)起始
ID:228467 發(fā)表于 2024-7-19 18:49
zyhlove813 發(fā)表于 2024-7-10 13:28
這么特異的算法都沉底了

沒(méi)有沉,都在學(xué)習(xí)中。感謝大佬分享的算法
ID:63692 發(fā)表于 2024-7-19 14:35

樓主鉆研精神可嘉,向你學(xué)習(xí)。
ID:471574 發(fā)表于 2024-7-10 13:28
這么特異的算法都沉底了
ID:471574 發(fā)表于 2024-1-16 18:04
youlinys 發(fā)表于 2023-12-31 21:35
講解得很詳細(xì)。UP厲害人。

通過(guò)不同的方法去實(shí)現(xiàn)目標(biāo),可能鍛煉自己的思維能力
ID:983641 發(fā)表于 2023-12-31 21:35
講解得很詳細(xì)。UP厲害人。
ID:604453 發(fā)表于 2023-12-26 09:43
zyhlove813 發(fā)表于 2023-12-25 21:04
正常應(yīng)該是要的,我是網(wǎng)購(gòu)的模塊,帶電阻和電容濾波,不硬件濾波,你自己可以試下。

好的,我去試一下,謝謝!
ID:471574 發(fā)表于 2023-12-25 21:04
lzuoxin 發(fā)表于 2023-12-25 18:09
樓主的算法還需要硬件消抖電路嗎

正常應(yīng)該是要的,我是網(wǎng)購(gòu)的模塊,帶電阻和電容濾波,不硬件濾波,你自己可以試下。
ID:604453 發(fā)表于 2023-12-25 19:14
代碼精簡(jiǎn)高效,向樓主學(xué)習(xí)了
ID:604453 發(fā)表于 2023-12-25 18:09
樓主的算法還需要硬件消抖電路嗎
ID:471574 發(fā)表于 2023-12-25 13:07
發(fā)表于 2023-12-24 19:28
樓主鉆研精神可嘉,學(xué)習(xí)了。

共同學(xué)習(xí)
ID:537530 發(fā)表于 2023-12-24 19:28
樓主鉆研精神可嘉,學(xué)習(xí)了。
ID:514317 發(fā)表于 2023-12-16 10:42
zyhlove813 發(fā)表于 2023-12-14 13:08
編譯什么提示?我是keil4 C51 編譯正常,會(huì)不會(huì)少了個(gè)括號(hào)標(biāo)點(diǎn)之類的?

剛才看了下   是我定義的變量的問(wèn)題    我的變量都是BIT 位類型的   編譯就出錯(cuò)
樓主使用的是u8類型的   
ID:514317 發(fā)表于 2023-12-16 10:27
zyhlove813 發(fā)表于 2023-12-14 13:08
編譯什么提示?我是keil4 C51 編譯正常,會(huì)不會(huì)少了個(gè)括號(hào)標(biāo)點(diǎn)之類的?

APP_EC11.C(59):C193: '-': BAD OPERAND TYPE
后段那個(gè) 減號(hào)   拆成2段就正常了
ID:417804 發(fā)表于 2023-12-15 09:54
小白只能頂樓主
ID:471574 發(fā)表于 2023-12-14 13:08
lzzasd 發(fā)表于 2023-12-14 11:56
經(jīng)過(guò)測(cè)試   樓主的程序運(yùn)行穩(wěn)定    算法精簡(jiǎn)高效    感謝樓主
只是 (int)((KeyA_Last ^ KeyA_Now) - (KeyB ...

編譯什么提示?我是keil4 C51 編譯正常,會(huì)不會(huì)少了個(gè)括號(hào)標(biāo)點(diǎn)之類的?
ID:514317 發(fā)表于 2023-12-14 11:56
經(jīng)過(guò)測(cè)試   樓主的程序運(yùn)行穩(wěn)定    算法精簡(jiǎn)高效    感謝樓主
只是 (int)((KeyA_Last ^ KeyA_Now) - (KeyB_Last ^ KeyB_Now)這段編譯報(bào)錯(cuò)   只好拆成2段
我也貼上我常用的   也是很穩(wěn)定


if (PinA != PinA_O)        //當(dāng)A發(fā)生跳變時(shí)采集B當(dāng)前的狀態(tài),并將B與上一次的狀態(tài)進(jìn)行對(duì)比。
        {                                   //若A 0->1 時(shí),B 1->0 正轉(zhuǎn);若A 1->0 時(shí),B 0->1 正轉(zhuǎn);
                                                                                //若A 0->1 時(shí),B 0->1 反轉(zhuǎn);若A 1->0 時(shí),B 1->0 反轉(zhuǎn)
                if (PinA == 1)     //EC11_A和上一次狀態(tài)相比,為上升沿
                {
                if ((PinB_O == 1) && (PinB == 0))   //EC11_B和上一次狀態(tài)相比,為下降沿
                        encoder_data++;                         //正轉(zhuǎn)
                if ((PinB_O == 0) && (PinB == 1))   //EC11_B和上一次狀態(tài)相比,為上升沿               
                        encoder_data--;                        //反轉(zhuǎn)
                //>>>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理<<<<<<<<<<<<<<<<//
                if ((PinB_O == PinB) && (PinB == 0))  //A上升沿時(shí),采集的B不變且為0
                    encoder_data++;                                 //正轉(zhuǎn)
                if ((PinB_O == PinB) && (PinB == 1))  //A上升沿時(shí),采集的B不變且為1
                        encoder_data--;                                //反轉(zhuǎn)
                }

                else                    //EC11_A和上一次狀態(tài)相比,為下降沿
                {
                if ((PinB_O == 1) && (PinB == 0))   //EC11_B和上一次狀態(tài)相比,為下降沿
                        encoder_data--;                        //反轉(zhuǎn)
                if ((PinB_O == 0) && (PinB == 1))   //EC11_B和上一次狀態(tài)相比,為上升沿
                        encoder_data++;                         //正轉(zhuǎn)
                //>>>>>>>>>>>>>>>>下面為正轉(zhuǎn)一次再反轉(zhuǎn)或反轉(zhuǎn)一次再正轉(zhuǎn)處理<<<<<<<<<<<<<<<<//
                if ((PinB_O == PinB) && (PinB == 0))  //A上升沿時(shí),采集的B不變且為0
                    encoder_data--;                                //反轉(zhuǎn)
                if ((PinB_O == PinB) && (PinB == 1))  //A上升沿時(shí),采集的B不變且為1   
                        encoder_data++;                                 //正轉(zhuǎn)
                }
                PinA_O = PinA;   //更新編碼器上一個(gè)狀態(tài)暫存變量
                PinB_O = PinB;   //更新編碼器上一個(gè)狀態(tài)暫存變量
ID:156220 發(fā)表于 2023-12-14 10:14
講解的蠻詳細(xì)的,謝謝樓主的分享
ID:1064915 發(fā)表于 2023-12-14 08:28
好文章,需要認(rèn)真學(xué)習(xí)
ID:471574 發(fā)表于 2023-12-13 23:11
同時(shí)貼上lkc8210發(fā)表的算法:
//算法四: 編譯大小不錯(cuò),只適合單倍頻
uint8_t KeyA_Last;
uint8_t KeyB_Last;
uint8_t KeyA_Now;
uint8_t KeyB_Now;
int EC_Counter;

void Encoder_Ini()
{
    KeyA_Last = P10;
    KeyB_Last = P11;
}

void Encoder_Run()
{
        KeyA_Now=P10;
        KeyB_Now=P11;
        if(!KeyA_Now && KeyA_Last && KeyB_Now)
        {
                EC_Counter++;
  }
        KeyA_Last=KeyA_Now;
        if(!KeyB_Now && KeyB_Last && KeyA_Now)
        {
                EC_Counter--;
  }
        KeyB_Last=KeyB_Now;
}

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 波多野结衣av中文字幕 | h视频免费在线观看 | 欧美一级片在线 | 欧美精品一区久久 | 成人在线视频免费看 | www.99热 | av黄色免费在线观看 | 999精品视频| 91麻豆精品国产91久久久久久久久 | 久久国产精品一区二区三区 | 国产精品日产欧美久久久久 | 亚洲欧美中文日韩在线v日本 | 91爱啪啪| 中文字幕av在线 | 啪啪免费网站 | 人人爽人人爽人人片av | 日韩精品久久一区二区三区 | 日本午夜在线视频 | 亚洲欧美日韩在线不卡 | 午夜大片 | 性xxxxx| 国产精品久久久久久久久久久久久 | 韩日av片| 日本欧美国产 | 国产精品国产自产拍高清 | 国产成人99久久亚洲综合精品 | 欧美日韩在线精品 | 国产一区二区三区不卡av | 日日射影院 | 999国产精品视频免费 | 日韩精品一区二区三区在线播放 | 欧美v日韩| 99久久免费精品视频 | 亚洲精品久久久一区二区三区 | 日韩在线视频免费观看 | 久久夜夜 | 日日碰狠狠躁久久躁96avv | 亚洲综合久久久 | 中文字幕精品视频在线观看 | 在线观看成人 | 久久精品国产一区二区电影 |