News新闻中心
行业资讯 公司新闻
当前位置:南宁棋牌游戏 > 新闻中心 > 行业资讯 > EC11旋转编码开关,旋转编码开关应用原理

EC11旋转编码开关,旋转编码开关应用原理

TIME:2021-02-11   click: 591 次    编辑:南宁棋牌游戏    当前栏目:行业资讯

Description:░旋转编码开关的应用非常广泛,今天给大家介绍下如下这款3脚和5脚的EC11旋转编码开关。そ5脚的旋转编码开关,如下图?具有左转,右转,按下三个功能。4、5脚是中间按下去的开?关接线じ░,本文发布时间:2021-02-11,关于【EC11旋转编码开关,旋转编码开关应用原理】的文章内容即将呈现,预计花费您806秒时间

  旋转编码开关的应用非常广泛,今天给大家介绍下如下这款3脚和5脚的EC11旋转编码开关。

  5脚的旋转编码开关,如下图

  EC11旋转编码开关

  ?具有左转,右转,按下三个功能。4、5脚是中间按下去的开? 关接线 じ 1 ¥2 3脚 一般是中间2脚接地,1、3脚? 上拉电阻后,当左转、右转旋纽时,在1、3脚就有脉冲信号输出了。?

  推荐型号:EC11旋转编码开关

  【】おEC11旋转编码开关

  在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时两个输出脚的信号有个相位差,见下图:

  安卓棋牌游戏手机版下载EC11旋转编码开关信号?

  由此可见,如果输出1为高电平时,输出2出现一个高电平,这时开关就是向顺时针旋转; 当输出1 为高电平★,输出2出现一个低电平,这时就一定是逆时针方向旋转.

  所以,在单片机编程时只需要判断当输出1为高电平时,输出2当时的状态就可以判断出是左旋转或是右旋转了。

  #include "reg51.h"

  #define uint unsigned int

  sbit CodingsWitch_A=P1_1;

  sbit CodingsWitch_B=P1_2;

  uint CodingsWitchPolling()//

  {

  static Uchar べ Aold,Bold; //定义了两个变量用来储蓄上一次写 调用此方法是?编码开关两引脚的电平

@

  static Uchar st; ぬ//定?义了一个变量用来储蓄以前是否出现了两个引脚都为高电平的状态

 § uint ?tmp=0;

  if(CodingsWitch_A&&CodingsWitch_B)

  st=1; ? //

  if(st) //如果st为1执行下面的步骤

网络棋牌十大排行榜

  {

  if(CodingsWitch_A==0&&CodingsWitch_B==0) //如果当前编码开关的两个引脚都为底电平执行下面的步骤

  {

  if(Bold) //为高说明编码开关在向加大的方向转

  {

  st=0;

  tmp++; //

  }

  if(Aold) //为高说明编码开关在向减小的方向转

  {

  st=0;

  tmp--; //设返回值

  }

  }

  }

  Aold=CodingsWitch_A; //

  Bold=CodingsWitch_B; //储

  return tmp; //

  }

  //编码器计数程序

  void encoder_cnt(void)

  {

  uchar temp;

  temp=PIND; ◆ //取端口D管脚信号

  ? couch_clr=(temp & 0x08); /‖/取编码器清零信号

  if(couch_clr !=false) 秘 //有编码器清零信号

  {?

  couch_num=0; //水平床码清零

  }

  else

  ? {

  if(encoder_cnt_en==false) //编码器计数模块没有启动

  {

  pr_couch_ba=temp △ & 0x03; //取编码器A、B相电平信号

  }

  else

  {

  couch_ba=temp & 0x03; //取编码器A、B相电平信号

  if(pr_couch_ba==0x00)

  {

  if(couch_ba==0x01)

  {

  couch_num++; //水平床码加1

  }

  else if(couch_ba==0x10)

  {

  couch_num--; //水平床码减1

  }

  }

  else if(pr_couch_ba==0x01)

  {

  if(couch_ba==0x11)

  {

  couch_num++; //水平床码加1

  }

  else if(couch_ba==0x00)

  {

  couch_num--; //水平床码减1

  }?

  }

  else ?if(pr_couch_ba==0x10)

 ? {

  if(couch_ba=へ=0x00)

  {

  couch_?num++; K //水平床码加1

  }

  else ↖if(couch_ba==0x11)

  {

  couch_num--; //水平床码减1

  }

  }

  else if(pr_couch_ba==0x11)

  {

  if(couch_ba==0x10)

  {

  couch_num++; //水平床码加1

  }

  else if(couch_ba==0x01)

  {

  couch_num--; //水平床码减1协

  }

  }

  }

  pr_couch_ba=couch_ba;

  }

  }

  编码器及其计数模块原理

  该文件只允许会员下载! 登录 | 注册

  飘扬的旋转编码器的检测程序(MCS51)

  //旋转编码器检测程序,A/B信号分别接在了INT0和INT1上

  //程序作者:BG4UVR

  //2005年1月15用KEIL编译、硬件测试通过

  //注意:编码器的信号,程序未做消抖处理。测试中,A/B信号上各

  //接了一只104的瓷片电容,工作很正常。如果不接电容,请自行编

  //写信号消抖程序。

  ? #include ? わ

  sbit led="0xB1";//有?一只LED接在了RXD引脚上,用来指示正反转;?

  main()

  {?

【】

  EA=1; //总中断允许

  EX0=1; //外部中断0允许

  IT0=1; //外部中断0为边沿触发方式

  while(1);;

  }

  void encoder(void) interrupt ?0 { //外部中断0

  if (INT1){

  led=1;

  }else{

  led=0;

  }

  }

  whimsy 的AVR程序

  //外部中断0,用于编码开关解码,解码图: A接中断脚(AVR的PD2),以此为基准,B用来判断方向(连到AVR的PA1), C接地

  //A -|

  // | -----|__________|----------|____________

  //C -|

  //

  //B -|

  // | ----------|__________|----------|____________

  //C -|

  // CW ===>>> ROTATION

  //外部中断设置(ISC01=0,ISC00=1): INT0 引脚上任意的逻辑电平变化都将引发中断

 项 #pragma interrupt_handler int0_isr:2

  void ? int0_isr(void)

?

  {

  //external interupt ?on INT0

 ♀  GICR=0; //禁止外部中断

  if ? ((PIND & 0x04)==0) //先判断是高电平产生的中断还是低点平的中断?

  if ((PINA & 0x02)==0) //再判断B线上的电平

  {

  keycounter--;

  keydirection="0";

  }

  else

  {

  keycounter++;

  keydirection="1";

  }

  else

  if ((PINA & 0x02)==0)

  {

  keycounter++;

  keydirection="1";

棋牌游戏

  }

  else

  {

  keycounter--;

  keydirection=0;

  }

  GICR=0x40;

  }

相关文章推荐: