性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

編碼器的STC單片機(jī)實(shí)例分析

就常用的EC11旋轉(zhuǎn)編碼器為例來(lái)分析

一開(kāi)始我只是在示波器和數(shù)控電源上見(jiàn)到過(guò)旋轉(zhuǎn)編碼器,那時(shí)候我聽(tīng)人說(shuō)這叫數(shù)字電位器,就覺(jué)得很神奇,是什么結(jié)構(gòu)竟然可以讓一個(gè)“電位器”無(wú)限的轉(zhuǎn)下去。后來(lái)才知道汽車的車機(jī)上用的也是旋轉(zhuǎn)編碼器。

一、旋轉(zhuǎn)編碼器作為人機(jī)交互的輸入設(shè)備,最常用的是EC11(類似的還有EC12、EC16等)

具體電路分析如下

EC11測(cè)試電路原理圖.無(wú)外部上拉電阻.幾乎所有單片機(jī)IO口都可以設(shè)置為輸入上拉模式,也可以省略EC11的外部上拉電阻,但是我沒(méi)有這樣做。

在研究EC11的時(shí)序之前首先要了解一點(diǎn),EC11按旋轉(zhuǎn)的輸出動(dòng)作可以分為兩種。一種是轉(zhuǎn)兩格,A、B對(duì)C端輸出一個(gè)完整脈沖(轉(zhuǎn)一格就只是由低電平->高電平或由高電平->低電平);另一種就是轉(zhuǎn)一格,A、B對(duì)C端輸出一個(gè)完整脈沖。

二、具體原理分析一下,如何讓輸出脈沖的

兩定位一脈沖的EC11稍微復(fù)雜一些,轉(zhuǎn)動(dòng)一格只會(huì)輸出半個(gè)脈沖。靜止時(shí),AB觸點(diǎn)開(kāi)關(guān)可以是斷開(kāi)的也可以是閉合的。

若初始狀態(tài)時(shí)AB都是高電平,轉(zhuǎn)動(dòng)一格就輸出從高電平到低電平的下降沿,隨后一直輸出低電平。對(duì)應(yīng)于EC11內(nèi)部AB兩個(gè)觸電開(kāi)關(guān)的動(dòng)作為斷開(kāi)-->閉合。若初始狀態(tài)時(shí)AB都是低電平,轉(zhuǎn)動(dòng)一格就輸出從低電平到高電平的上升沿,隨后一直輸出低電平。對(duì)應(yīng)于EC11內(nèi)部AB兩個(gè)觸點(diǎn)開(kāi)關(guān)的動(dòng)作為閉合-->斷開(kāi)。由于兩脈沖一定位的EC11會(huì)有兩種初始狀態(tài),寫(xiě)驅(qū)動(dòng)程序就需要考慮多一些情況。再者,這類EC11在轉(zhuǎn)動(dòng)到內(nèi)部AB觸點(diǎn)一直閉合的時(shí)候,就相當(dāng)于把上拉電阻的另一端接地,無(wú)形中加大了系統(tǒng)的功耗(若外接10K上拉電阻到5V電源就是500uA的電流),這對(duì)于低功耗應(yīng)用來(lái)說(shuō)是非常不利的。因此對(duì)于無(wú)特殊要求的人機(jī)輸入應(yīng)用來(lái)說(shuō),我都推薦使用一定位一脈沖的EC11。

當(dāng)然了,有一些質(zhì)量比較差的EC11會(huì)有一些額外的問(wèn)題要考慮,例如開(kāi)關(guān)的抖動(dòng)問(wèn)題,例如轉(zhuǎn)動(dòng)定位不清晰,靜止時(shí)AB兩個(gè)觸點(diǎn)都要閉合或者都要斷開(kāi)才對(duì),但是定位點(diǎn)不清晰,轉(zhuǎn)動(dòng)的角度不到位導(dǎo)致一個(gè)觸點(diǎn)已經(jīng)閉合(斷開(kāi))了,另一個(gè)觸點(diǎn)卻還保持在斷開(kāi)(閉合)。

這樣就輸出了高低電平的脈沖了

三、stc15單片機(jī)程序分析

//----------------IO口定義----------------//
#define EC11_A_Now                    P36   //EC11的A引腳,視為時(shí)鐘線
#define EC11_B_Now                    P35    //EC11的B引腳,視為信號(hào)線
#define EC11_Key                      P37    //EC11的按鍵
文件內(nèi)需要的靜態(tài)局部變量
//----------------局部文件內(nèi)變量列表----------------//
static  char    EC11_A_Last = 0;                        //EC11的A引腳上一次的狀態(tài)
static  char    EC11_B_Last = 0;                        //EC11的B引腳上一次的狀態(tài)
static  char    EC11_Type = 1;          //定義變量暫存EC11的類型---->>>>----  0:一定位對(duì)應(yīng)一脈沖;  1:兩定位對(duì)應(yīng)一脈沖
//所謂一定位對(duì)應(yīng)一脈沖,是指EC11旋轉(zhuǎn)編碼器每轉(zhuǎn)動(dòng)一格,A和B都會(huì)輸出一個(gè)完整的方波。
//而  兩定位對(duì)應(yīng)一脈沖,是指EC11旋轉(zhuǎn)編碼器每轉(zhuǎn)動(dòng)兩格,A和B才會(huì)輸出一個(gè)完整的方波,只轉(zhuǎn)動(dòng)一格只輸出A和B

編碼器掃描程序

按鍵檢測(cè)部分

我們自己用EC11,大多數(shù)時(shí)候都是選擇帶按鍵的,這就可以把按鍵檢測(cè)加入到EC11的動(dòng)作掃描程序中,實(shí)現(xiàn)單獨(dú)的檢測(cè)按鍵以及按下按鍵時(shí)轉(zhuǎn)動(dòng)轉(zhuǎn)軸。

掃描到EC11的動(dòng)作后,可以在此函數(shù)內(nèi)做出對(duì)應(yīng)的動(dòng)作處理。函數(shù)內(nèi)包含了按鍵的單擊,雙擊,長(zhǎng)按和長(zhǎng)按松手檢測(cè)。

大家可以參考下程序

EC11.zip

全部回復(fù)(17)
正序查看
倒序查看
2021-06-09 23:06

之前沒(méi)用過(guò)旋轉(zhuǎn)編碼器,這個(gè)要判斷位置,是不是得ABC都檢測(cè),比如EC11EH 是001,010,100這3個(gè)狀態(tài)一個(gè)循環(huán)?謝謝

0
回復(fù)
#回復(fù)內(nèi)容已被刪除#
3
#回復(fù)內(nèi)容已被刪除#
4
k6666
LV.9
5
2021-06-10 12:36

感謝樓主分析程序,學(xué)習(xí)下。編碼這塊接觸的少。

0
回復(fù)
2021-06-10 14:51
@天府大懶貓
之前沒(méi)用過(guò)旋轉(zhuǎn)編碼器,這個(gè)要判斷位置,是不是得ABC都檢測(cè),比如EC11EH是001,010,100這3個(gè)狀態(tài)一個(gè)循環(huán)?謝謝

AB是脈沖,C是普通的按鍵,高低電平,

0
回復(fù)
飛翔2004
LV.10
7
2021-06-16 14:50

EC11編碼器能識(shí)別正反旋轉(zhuǎn)嗎?如何識(shí)別?

0
回復(fù)
2021-06-18 09:31

長(zhǎng)按檢測(cè)的時(shí)間設(shè)置是多少啊,3S?

0
回復(fù)
2021-06-21 19:47
@飛翔2004
EC11編碼器能識(shí)別正反旋轉(zhuǎn)嗎?如何識(shí)別?

主要是檢測(cè)AB脈沖來(lái)確定那個(gè)方向旋轉(zhuǎn)

0
回復(fù)
2021-06-21 19:59
@快樂(lè)的小天使
長(zhǎng)按檢測(cè)的時(shí)間設(shè)置是多少啊,3S?

可以的

0
回復(fù)
iszjt
LV.5
11
2021-06-22 09:05

STC單片機(jī)(具有PCA功能的),怎么實(shí)現(xiàn)可變頻率的PWM輸出?

0
回復(fù)
2021-06-26 10:08

旋轉(zhuǎn)編碼器是不是通過(guò)旋轉(zhuǎn)來(lái)改它的阻值,來(lái)達(dá)到各個(gè)脈沖大小實(shí)現(xiàn)的呢?

0
回復(fù)
2021-06-28 23:21

如何保證編碼器的精度如何呢

0
回復(fù)
魯珀特
LV.4
14
2021-07-02 16:19

這種編碼器聽(tīng)說(shuō)過(guò)但沒(méi)用過(guò),有個(gè)疑問(wèn),會(huì)不會(huì)某一種角度,所有輸出管腳都處在高電平(低電平)

0
回復(fù)
2021-07-08 09:41
@飛翔2004
EC11編碼器能識(shí)別正反旋轉(zhuǎn)嗎?如何識(shí)別?

識(shí)別這個(gè)AB的相位

0
回復(fù)
2021-07-08 09:42
@iszjt
STC單片機(jī)(具有PCA功能的),怎么實(shí)現(xiàn)可變頻率的PWM輸出?

可以改變頻率的,改變周期那個(gè)數(shù)值就可以

0
回復(fù)
2021-07-08 09:43
@13688922894a
旋轉(zhuǎn)編碼器是不是通過(guò)旋轉(zhuǎn)來(lái)改它的阻值,來(lái)達(dá)到各個(gè)脈沖大小實(shí)現(xiàn)的呢?

ab脈沖的相位不一樣

0
回復(fù)
2021-07-08 09:46
@魯珀特
這種編碼器聽(tīng)說(shuō)過(guò)但沒(méi)用過(guò),有個(gè)疑問(wèn),會(huì)不會(huì)某一種角度,所有輸出管腳都處在高電平(低電平)

默認(rèn)狀態(tài)都是高電平,只要轉(zhuǎn)動(dòng)的話既可以檢測(cè)的

0
回復(fù)
發(fā)