旋转编码开关-数字电位器.doc

旋转编码开关-数字电位器.doc

ID:56802481

大小:290.50 KB

页数:8页

时间:2020-07-12

旋转编码开关-数字电位器.doc_第1页
旋转编码开关-数字电位器.doc_第2页
旋转编码开关-数字电位器.doc_第3页
旋转编码开关-数字电位器.doc_第4页
旋转编码开关-数字电位器.doc_第5页
资源描述:

《旋转编码开关-数字电位器.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、标签:无标签旋转编码开关(RotaryEncoderswitch)这种旋转编码开关(RotaryEncoderswitch),一个使用3脚的,后面一个使用5脚的,大家可能对这种玩意都不是很了解,但涉及到有调整的地方,这个玩意使用真是很爽,我弄了2个,研究了一下,供大家参考~5脚的ALPS:具有左转,右转,按下三个功能。4、5脚是中间按下去的开关接线  123脚一般是中间2脚接地,1、3脚上拉电阻后,当左转、右转旋纽时,在1、3脚就有脉冲信号输出了。着这是标准资料:在单片机编程时,左转和右转的判别是难点,

2、用示波器观察这种开关左转和右转时两个输出脚的信号有个相位差,见下图:由此可见,如果输出1为高电平时,输出2出现一个高电平,这时开关就是向顺时针旋转;当输出1为高电平,输出2出现一个低电平,这时就一定是逆时针方向旋转.所以,在单片机编程时只需要判断当输出1为高电平时,输出2当时的状态就可以判断出是左旋转或是右旋转了。还有另外一种3脚的,除了不带按钮开关外,和上面是一样的使用。参考:#include"reg51.h"#defineuintunsignedintsbitCodingsWitch_A=P1_1;

3、sbitCodingsWitch_B=P1_2;uintCodingsWitchPolling()//{  staticUcharAold,Bold;  //定义了两个变量用来储蓄上一次调用此方法是编码开关两引脚的电平  staticUcharst;        //定义了一个变量用来储蓄以前是否出现了两个引脚都为高电平的状态  uinttmp=0;  if(CodingsWitch_A&&CodingsWitch_B)  st=1;      //  if(st)              //如果

4、st为1执行下面的步骤  {      if(CodingsWitch_A==0&&CodingsWitch_B==0)      //如果当前编码开关的两个引脚都为底电平执行下面的步骤      {        if(Bold)      //为高说明编码开关在向加大的方向转        {            st=0;                  tmp++;      //        }        if(Aold)      //为高说明编码开关在向减小的方向转       

5、 {            st=0;            tmp--;      //设返回值        }      }  }  Aold=CodingsWitch_A;            //  Bold=CodingsWitch_B;            //储  returntmp;            //}//编码器计数程序voidencoder_cnt(void){        uchartemp;        temp=PIND;//取端口D管脚信号        c

6、ouch_clr=(temp&0x08);//取编码器清零信号        if(couch_clr!=false)//有编码器清零信号        {                couch_num=0;//水平床码清零        }        else        {                if(encoder_cnt_en==false)//编码器计数模块没有启动                {                        pr_couch_ba=tem

7、p&0x03;//取编码器A、B相电平信号                }                else                {                        couch_ba=temp&0x03;//取编码器A、B相电平信号                        if(pr_couch_ba==0x00)                        {                                if(couch_ba==0x01)  

8、                              {                                        couch_num++;//水平床码加1                                }                                elseif(couch_ba==0x10)                                {           

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。