EC11编码器和单片机通信

EC11编码器

EC11编码器通常又被称作为旋转编码器,一般主要是用于亮度、温度、频率,音量调节等参数控制。
在这里插入图片描述
三只脚中的C脚接地,AB脚接上拉电阻后,当左转或右转时,AB脚就有脉冲信号输出。S1和S2脚为按压开关,按下时导通。
旋转编码器的引脚图和原理图为:
在这里插入图片描述
在这里插入图片描述

顺时针和逆时针旋转AB引脚输出波形图
在这里插入图片描述和单片机通信的程序为:
EC11.h

#ifndef EC11
#define EC11

sbit EC11_A = P5^0; 
sbit EC11_B = P5^1;

extern uchar EC11_Value; // 获取旋转的值
extern void EC11_Display();//计算旋转的值
#endif

EC11.c

#include<All.h>
uchar EC11_Value = 125; // 获取旋转的值
/*********************************
 * @函数名:EC11_Display
 * @描  述:判断方向,计算旋转的值
 * @参  数:无
 * @返回值:无 
 *********************************/
void EC11_Display()
{
  static bit EC11_Flag=0,Left_Flag=0,Right_Flag=0;
	if((EC11_A)&&(EC11_B))  //两个都是1,表示开始第一个脉冲
	{
	  EC11_Flag =1 ;//标记为第一个信号收到,可以进行下一个信号
	}
	if(EC11_A!=EC11_B)//第二个信号
	{
	   Left_Flag = EC11_A ; //记录AB的信号状态
	  Right_Flag = EC11_B ; 
	}
	if(EC11_Flag)  
	{
	   if((EC11_A==0)&&(EC11_B==0))  // 第三个信号,处理第二个信号的值
	   {
	      if(Left_Flag)  //左转
		  {
		    EC11_Value-- ;  //旋转的值加1
		  }
		 else if(Right_Flag)
		  {
		    EC11_Value++; //旋转的值减1
		  }
		  EC11_Flag = 0; //把标志位清零,等待下一个周期
	   }
	}
}
  • 9
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值