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

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

QQ登錄

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

搜索
12
返回列表 發(fā)新帖
樓主: lkc8210
打印 上一主題 下一主題
收起左側(cè)

一定位一脈沖的EC11旋轉(zhuǎn)編碼器最簡(jiǎn)潔的單片機(jī)驅(qū)動(dòng)代碼

  [復(fù)制鏈接]
41#
ID:433219 發(fā)表于 2023-9-22 19:34 | 只看該作者
一般方法:先判斷跳變(同時(shí)觸發(fā)抖動(dòng)計(jì)時(shí)連續(xù)判斷),再判斷另一個(gè)io的高低,
回復(fù)

使用道具 舉報(bào)

42#
ID:965189 發(fā)表于 2023-9-22 23:34 | 只看該作者
我用一個(gè)外中斷,使用正常。
回復(fù)

使用道具 舉報(bào)

43#
ID:427868 發(fā)表于 2023-9-25 15:48 | 只看該作者
以下是我之前采用拿來(lái)主義得到的,只對(duì)判斷后執(zhí)行部分稍作修改,應(yīng)用還不錯(cuò)。
/************************參數(shù)設(shè)置***************************/
void        canshu()                                //EC11旋轉(zhuǎn)編碼器一定位一脈沖
{
        static bit LastA = 0;                 //EC11旋轉(zhuǎn)編碼器的A引腳上一次的狀態(tài)
        static bit LastB = 0;                //EC11旋轉(zhuǎn)編碼器的B引腳上一次的狀態(tài)
               
  if(KA != LastA)                         //判斷EC11旋轉(zhuǎn)編碼器A引腳是否等于上一次的狀態(tài)
  {
    if(KA == 0)                                //EC11旋轉(zhuǎn)編碼器旋轉(zhuǎn)后,判斷KA是否是低電平狀態(tài)
         {
                if(KB)                         //判斷KB引腳當(dāng)前狀態(tài),高電平則為正轉(zhuǎn)
                        {num++;}                                                
                else
                        {num--;}                                                       
         }       
     LastA = KA;                         //更新編碼器上一個(gè)狀態(tài)暫存變量
     LastB = KB;                         //更新編碼器上一個(gè)狀態(tài)暫存變量
   }
}

現(xiàn)在看來(lái)LsaB變量似乎沒(méi)有用,有空了去掉它試試。對(duì)于正反向不同的EC11,我是通過(guò)調(diào)換num變量的加減方向來(lái)解決的。
回復(fù)

使用道具 舉報(bào)

44#
ID:378108 發(fā)表于 2023-9-28 09:49 | 只看該作者
haokey 發(fā)表于 2021-7-7 12:20
探討一下,假如我改成這樣會(huì)怎樣:
if(!PinA&&PinB)
{PinA_O= 1;}

你這樣是不行的,會(huì)重復(fù)的加或減
回復(fù)

使用道具 舉報(bào)

45#
ID:378108 發(fā)表于 2023-9-28 09:57 | 只看該作者
  unsigned char key=0;
  static bit nextA;
  if (KA()!=nextA)
    {nextA=KA();
      if (nextA==1)
        {if (KB()==1) key=6;else key=5;}
      else
        {if (KB()==0) key=6;else key=5;}
    }
return key;
回復(fù)

使用道具 舉報(bào)

46#
ID:1053178 發(fā)表于 2023-11-25 19:55 | 只看該作者
劉佑紅 發(fā)表于 2023-9-25 15:48
以下是我之前采用拿來(lái)主義得到的,只對(duì)判斷后執(zhí)行部分稍作修改,應(yīng)用還不錯(cuò)。
/************************ ...

我跟你用的一樣,但是發(fā)現(xiàn)轉(zhuǎn)快了丟碼,慢很好
回復(fù)

使用道具 舉報(bào)

47#
ID:103411 發(fā)表于 2023-11-29 14:12 | 只看該作者
下載學(xué)習(xí)一下,正準(zhǔn)備用這個(gè)一定位一脈沖編碼器。
回復(fù)

使用道具 舉報(bào)

48#
ID:427868 發(fā)表于 2023-11-29 15:01 | 只看該作者
diyage 發(fā)表于 2023-11-25 19:55
我跟你用的一樣,但是發(fā)現(xiàn)轉(zhuǎn)快了丟碼,慢很好

你說(shuō)的這種情況,確實(shí)存在,也不能旋轉(zhuǎn)過(guò)快,且在部分EC11上表現(xiàn)明顯,即存在挑EC11現(xiàn)象,,后來(lái)我嘗試將KB對(duì)地接的104電容換成105的就改善了,也不挑EC11了,你可試試。
回復(fù)

使用道具 舉報(bào)

49#
ID:688905 發(fā)表于 2023-11-29 16:40 | 只看該作者
很好的優(yōu)化方法,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

50#
ID:471574 發(fā)表于 2023-12-14 17:37 | 只看該作者
樓主的代碼很不錯(cuò),我這邊有另一種算法,也很精簡(jiǎn)EC11編碼器基于運(yùn)算解碼的算法(原創(chuàng)),匯編后大小也基本一樣,有一個(gè)算法甚至更小
回復(fù)

使用道具 舉報(bào)

51#
ID:774081 發(fā)表于 2024-1-19 14:17 | 只看該作者
完美的代碼效果應(yīng)該是轉(zhuǎn)動(dòng)一下只計(jì)數(shù)一下,不能多增也不能不增,最重要的是!不論轉(zhuǎn)得多快還是多慢,都如此,那才是好代碼!從這個(gè)標(biāo)準(zhǔn)來(lái)說(shuō),我試驗(yàn)了上10款作者自詡為非常不錯(cuò)的代碼,均不合格!當(dāng)然我自己也編不出合格的代碼來(lái),一度懷疑是我買(mǎi)的EC11編碼器在硬件方面不合格,因?yàn)橹挥猩侠娮琛](méi)有消抖電容。但符合這樣標(biāo)準(zhǔn)的編碼器效果是普遍存在的,比如十幾、二十年前的進(jìn)口功放機(jī),就采用了旋轉(zhuǎn)編碼器調(diào)整音量,那編碼器的使用效果才是我追求的,現(xiàn)在我的一個(gè)項(xiàng)目卡在編碼器上,怎么都不好用,肯定采用中斷來(lái)實(shí)現(xiàn),還沒(méi)找到合適的代碼,下一步寄加消抖電容看看誰(shuí)的代碼最理想,再來(lái)匯報(bào)。
回復(fù)

使用道具 舉報(bào)

52#
ID:1101997 發(fā)表于 2024-1-19 14:51 | 只看該作者
這東西還是需要用狀態(tài)機(jī)來(lái)寫(xiě),只要描述好正常狀態(tài)遷移的關(guān)系,異常狀態(tài)處理,硬件上消抖不消抖都是可以處理好的。
回復(fù)

使用道具 舉報(bào)

53#
ID:430492 發(fā)表于 2024-1-19 14:56 | 只看該作者
要想多快都不丟步(相對(duì)哈,快到中斷處理都來(lái)不及不算哈),必須在中斷里來(lái)處理。這種中斷+輪詢(xún)判斷的方式,依然會(huì)丟步的。
回復(fù)

使用道具 舉報(bào)

54#
ID:774081 發(fā)表于 2024-1-26 16:36 | 只看該作者
之前測(cè)試很多代碼,效果均不理想,表現(xiàn)為正轉(zhuǎn)、反轉(zhuǎn)有誤判,從而導(dǎo)致計(jì)數(shù)不對(duì)。我想到的辦法是得到方向數(shù)據(jù)后(比如正轉(zhuǎn)定義為1,反轉(zhuǎn)定義為0),先修正方向,再結(jié)合中斷和方向二者,決定是否累加或累減計(jì)數(shù)值。方案是建立一個(gè)數(shù)組,包括10個(gè)元素,用來(lái)存儲(chǔ)獲得的方向,任何時(shí)刻記錄的是最近十次獲得的方向數(shù)據(jù),對(duì)數(shù)組的10個(gè)元素進(jìn)行累加,和超過(guò)5時(shí),強(qiáng)制為正方向,反之為負(fù)方向。實(shí)測(cè)效果有所改善,計(jì)數(shù)值絕不會(huì)忽大忽小、重復(fù)出現(xiàn)等情況了。遺憾的是如果你反復(fù)正轉(zhuǎn)、反轉(zhuǎn)1下,那計(jì)數(shù)還是會(huì)有問(wèn)題,即不會(huì)保持不變。但這種使用場(chǎng)景很少見(jiàn)吧?真要微調(diào),你多轉(zhuǎn)幾下,再反過(guò)來(lái)多轉(zhuǎn)幾下就行。有人會(huì)說(shuō),實(shí)際卡頓感與計(jì)數(shù)反映會(huì)不同步吧?理論上講是這樣,但單片機(jī)速度很快,實(shí)際感覺(jué)不到不同步。
回復(fù)

使用道具 舉報(bào)

55#
ID:119977 發(fā)表于 2024-7-2 17:06 | 只看該作者
個(gè)人做法是a下降沿中斷     中斷后   判斷b高低   確定正反轉(zhuǎn)
回復(fù)

使用道具 舉報(bào)

56#
ID:774081 發(fā)表于 2024-9-20 15:54 | 只看該作者
hewayking 發(fā)表于 2024-7-2 17:06
個(gè)人做法是a下降沿中斷     中斷后   判斷b高低   確定正反轉(zhuǎn)

試了,很棒!史上最簡(jiǎn)潔的代碼。
回復(fù)

使用道具 舉報(bào)

57#
ID:471574 發(fā)表于 2024-9-27 08:22 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-233399-1.html
這個(gè)也是很簡(jiǎn)潔,又新穎的EC11驅(qū)動(dòng)
回復(fù)

使用道具 舉報(bào)

58#
ID:1143011 發(fā)表于 2025-1-16 12:31 | 只看該作者
bhjyqjs 發(fā)表于 2022-2-7 10:49
樓主代碼及其精簡(jiǎn),不錯(cuò)!
實(shí)際上,只檢測(cè)A引腳的下降沿,由B引腳狀態(tài)決定加減更高效。
經(jīng)實(shí)驗(yàn),無(wú)漏脈沖 ...

高手啊!
回復(fù)

使用道具 舉報(bào)

59#
ID:983641 發(fā)表于 2025-2-15 15:21 | 只看該作者
相當(dāng)簡(jiǎn)潔的代碼。需要時(shí)間消化。
回復(fù)

使用道具 舉報(bào)

12
返回列表 發(fā)新帖

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品久久 | 国产亚洲成av人在线观看导航 | 精品伊人 | 欧美成人精品激情在线观看 | 四虎永久影院 | 亚洲一区视频 | 国产精品福利在线 | 国产黄色免费网站 | 亚洲成av | 国产精品久久久久久亚洲调教 | 激情五月婷婷丁香 | 天天射天天干 | 蜜桃视频成人 | 天天操天天天 | 久久精品一区 | 成人h动漫亚洲一区二区 | 免费观看羞羞视频网站 | 成人在线观看网址 | 久久久精品 | 久久婷婷香蕉热狠狠综合 | 亚洲视频在线一区 | 中文字幕啪啪 | 精品欧美一区二区三区久久久 | 欧美精品欧美精品系列 | 国产成人久久精品 | 精品视频在线观看 | 中文字幕在线一区二区三区 | 免费精品在线视频 | www.久久久.com | 91视频一区 | 日韩在线不卡 | 国产在线视频一区 | 91一区二区 | 日本三级视频 | 欧美二级 | 欧美一区二区三区在线 | 欧洲毛片 | 欧美一级艳情片免费观看 | 国产做爰 | 国产一区二区影院 | 亚洲国产精品一区二区久久 |