旋钮编码器c代码_旋转编码器EC11驱动

本文档详细介绍了如何使用C代码初始化和扫描EC11旋转编码器,包括初始化函数`Encoder_EC11_Init`和扫描函数`Encoder_EC11_Scan`。扫描时间间隔需控制在1~4ms之间,以避免快速旋转时的方向误判。代码中还包含了按键动作的判断和处理,如短按、长按和双击。
摘要由CSDN通过智能技术生成

旋转编码器EC11驱动

/*-------->>>>>>>>--------注意事项:EC11旋转编码器的扫描时间间隔控制在1~4ms之间,

否则5ms及以上的扫描时间在快速旋转时可能会误判旋转方向--------<<<<<<<

//*******************************************************************/

//功能:初始化EC11旋转编码器相关参数

//形参:EC11旋转编码器的类型-->> unsigned char Set_EC11_TYPE <

//返回:无

//详解:对EC11旋转编码器的连接IO口做IO口模式设置。以及将相关的变量进行初始化

//*******************************************************************/

void Encoder_EC11_Init(unsigned char Set_EC11_TYPE)

{

EC11_A_Now = 1;

EC11_B_Now = 1;

EC11_Key = 1;

//EC11类型选择:0-一定位一脉冲;1-两定位一脉冲

if(Set_EC11_TYPE == 0)

{

EC11_Type = 0;

}

else

{

EC11_Type = 1;

}

//避免上电时EC11旋钮位置不确定导致一次动作误判

EC11_A_Last = EC11_A_Now;

EC11_B_Last = EC11_B_Now;

//--------清除按键计数器和标志位--------//

EC11_KEY_COUNT = 0; //EC11按键动作计数器

EC11_KEY_DoubleClick_Count = 0; //EC11按键双击动作计数器

FLAG_EC11_KEY_ShotClick = 0; //EC11按键短按动作标志

FLAG_EC11_KEY_LongClick = 0; //EC11按键长按动作标志

FLAG_EC11_KEY_DoubleClick = 0; //EC11按键双击动作标志

}

//*******************************************************************/

//功能:扫描EC11旋转编码器的动作并将参数返回给动作分析函数使用

//形参:EC11旋转编码器的类型-->> unsigned char Set_EC11_TYPE <

//返回:EC11旋转编码器的扫描结果-->> char ScanResult -->> 0:无动作;1:正转; -1:反转;2:只按下按键;

// 3:按着按键正转;-3:按着按键反转

//详解:只扫描EC11旋转编码器有没有动作,不关心是第几次按下按键或长按或双击。

//返回值直接作为形参传给 [ void Encoder_EC11_Analyze(char EC11_Value); ] 函数使用

//*******************************************************************/

char Encoder_EC11_Scan()

{

//以下储存A、B上一次值的变量声明为静态全局变量,方便对EC11对应的IO口做初始化

// static char EC11_A_Last =

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值