之前学过机械按键与电容式触摸按键,均可以用来调节数值大小。在某些需求中,譬如需要快速调节音量数值大小或速度数值大小等,此时用按键方式则十分麻烦。于是引入了旋转编码器这种器件,可以快速调节数值大小,在工业领域较常应用。
开发板接线
实物图
旋转编码器共有3种操作:逆时针旋转、顺时针旋转、向下按
旋转是有格段的,每旋转一个格段,大小加一或减一。按下旋转编码器时清零。
原理图
与模拟量摇杆共用三个引脚,在使用旋转编码器时短接旋转编码器,断开模拟量摇杆。
左右旋转的波形图
每一个低电平都表示旋转了一个格段,通过计数低电平的个数就可以知道旋转了多少个格段。
在旋转格段时会有机械抖动,360度有20个格段。
如何判断向左旋转还是向右旋转
方法:先判断K2是否是低电平,如果是低电平,再判断K3是高电平还是低电平,如果K3是高电平则是向右旋转,如果K3是低电平则是向左旋转。
判断旋转格段是否锁死
方法:用一定的时间来计数,譬如1.2秒,在规定时间内完成旋转并回到高电平则未锁死,如果在规定时间内还没有完成旋转格段回到高电平,则判断为锁死。
代码如下:
main函数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "rtc.h"
#include "TM1640.h"
#include "encoder.h"
int main (void)
{
u8 a=0,b=0,c=0x01;
RCC_Configuration(); //系统时钟初始化
RTC_Config(); //RTC初始化
ENCODER_Init(); //旋转编码器初始化
TM1640_Init();