STM32F1开发指南笔记21----旋转编码器

之前学过机械按键与电容式触摸按键,均可以用来调节数值大小。在某些需求中,譬如需要快速调节音量数值大小或速度数值大小等,此时用按键方式则十分麻烦。于是引入了旋转编码器这种器件,可以快速调节数值大小,在工业领域较常应用。

开发板接线

在这里插入图片描述

实物图

在这里插入图片描述

旋转编码器共有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(); 
  • 5
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值