传感器自学笔记第五章——旋转编码器
作者:GWD 時(shí)間:2019.06.23
一:學(xué)習(xí)要點(diǎn):
1.手冊(cè)只講了原理,連引腳定義也沒(méi)有,模塊上的引腳標(biāo)號(hào)也不正確。好在旋轉(zhuǎn)編碼器是開(kāi)關(guān)量類(lèi)的傳感器,解決辦法如下,在三個(gè)信號(hào)輸出引腳上分別接上LED燈,旋轉(zhuǎn)編碼器觀察LED燈的亮滅情況定義引腳。由此推測(cè),開(kāi)光量傳感器在引腳定義不清楚時(shí)可以用這種觀察方式;
2. 旋轉(zhuǎn)編碼器的關(guān)鍵就是判斷K2與K3的先后順序,加入“松手檢測(cè)”語(yǔ)句就可以很好的解決這個(gè)問(wèn)題。詳見(jiàn)下文程序。
3.松手檢測(cè)死循環(huán)語(yǔ)句適用情況
1)、需要檢測(cè)信號(hào)的先后順序,可在第一個(gè)信號(hào)出發(fā)后加一個(gè)松手檢測(cè),第一個(gè)信號(hào)結(jié)束后再判斷第二個(gè);
2)、等待信號(hào)到來(lái),并計(jì)數(shù)的情況類(lèi)似超聲傳感器中的等待到高電平的情況。
二:手冊(cè)分析(基本上沒(méi)用)
三:編程
1.程序功能:順時(shí)針旋轉(zhuǎn)加一,逆時(shí)針旋轉(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”
/*通過(guò)目視觀察現(xiàn)象,引腳亂標(biāo)。。。。
1.順時(shí)針旋轉(zhuǎn):DT=0->CLK=0;
2.逆時(shí)針旋轉(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é)
以上是生活随笔為你收集整理的传感器自学笔记第五章——旋转编码器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 8.HPA自动扩缩容
- 下一篇: 三极管原理