传感器自学笔记第五章——旋转编码器
作者:GWD 時間:2019.06.23
一:學(xué)習(xí)要點:
1.手冊只講了原理,連引腳定義也沒有,模塊上的引腳標(biāo)號也不正確。好在旋轉(zhuǎn)編碼器是開關(guān)量類的傳感器,解決辦法如下,在三個信號輸出引腳上分別接上LED燈,旋轉(zhuǎn)編碼器觀察LED燈的亮滅情況定義引腳。由此推測,開光量傳感器在引腳定義不清楚時可以用這種觀察方式;
2. 旋轉(zhuǎn)編碼器的關(guān)鍵就是判斷K2與K3的先后順序,加入“松手檢測”語句就可以很好的解決這個問題。詳見下文程序。
3.松手檢測死循環(huán)語句適用情況
1)、需要檢測信號的先后順序,可在第一個信號出發(fā)后加一個松手檢測,第一個信號結(jié)束后再判斷第二個;
2)、等待信號到來,并計數(shù)的情況類似超聲傳感器中的等待到高電平的情況。
二:手冊分析(基本上沒用)
三:編程
1.程序功能:順時針旋轉(zhuǎn)加一,逆時針旋轉(zhuǎn)減一,按下歸0,并在串口輸出,利用指針傳址參數(shù),直接把變量名放入?yún)?shù)列表就行了;
2.程序現(xiàn)象如圖
encoder.h
#ifndef ENCODER_H
#define ENCODER_H
#include “reg52.h”
sbit SW = P2^0;
sbit DT = P2^1;
sbit CLK= P2^2;
void Encoder_Clockwise(unsigned int *p);
#endif
encoder.c
#include “encoder.h”
#include “delay.h”
#include “reg52.h”
/*通過目視觀察現(xiàn)象,引腳亂標(biāo)。。。。
1.順時針旋轉(zhuǎn):DT=0->CLK=0;
2.逆時針旋轉(zhuǎn):CLK=0->DT=0;
3.按下按鍵后:SW=0;
*/
void Encoder_Clockwise(unsigned int *p)
{
if(0==DT)
{
while(0 == DT) ;
if (0 == CLK)
{
*p = *p + 1;
}
else
{
*p = *p - 1;
}
}
if(SW == 0)
{
while(SW ==0);
*p = 0;
}
}
源程序下載地址:
鏈接:https://pan.baidu.com/s/1YQswKq3cOZiWMhqr4vA85Q
提取碼:x6r2
總結(jié)
以上是生活随笔為你收集整理的传感器自学笔记第五章——旋转编码器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8.HPA自动扩缩容
- 下一篇: 三极管原理