搜索
bottom↓
回复: 66

原创: 超简单的编码开关(单键飞梭开关)解码程序,INT0引脚上任意的逻辑电平变化都将引发

[复制链接]

出0入0汤圆

发表于 2007-11-25 22:02:20 | 显示全部楼层 |阅读模式
开始只有理论解码方法,只知道和鼠标的解码差不多,相位解码,

现在买到了编码开关,就是显示器上用的单键飞梭开关,采用电平改变触发中断方式,如果采用边沿触发方式,只能走2格解1个码

电路图PDF,protel99se格式,以及含中文显示、频率采集的一些代码。

点击此处下载ourdev_182732.rar(文件大小:145K)


核心代码如下,其他是一个项目的一部分,能用T6963驱动的LCD屏显示中文字,字库在ZM.H文件中

//外部中断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;
}

出0入0汤圆

 楼主| 发表于 2007-11-25 22:13:34 | 显示全部楼层
天冷了,不知道阿莫会不会给条“裤子”穿?

出0入0汤圆

发表于 2007-11-25 23:19:07 | 显示全部楼层
应该可以发一条吧!^_^
头像被屏蔽

出0入0汤圆

发表于 2007-11-26 07:25:39 | 显示全部楼层
哈哈,是 Cool ! 会更冷的。

出0入0汤圆

 楼主| 发表于 2007-12-27 19:46:21 | 显示全部楼层
上面代码的开关不带按键功能,这次出差到北京,跑到中发电子买了几十个带开关的

发现买的带开关的代码改为下降沿触发中断就可以了,解码代码少一半,转动一格也是一步.

上传个开关的尺寸图纸

点击此处打开ourdev_194453.pdf(文件大小:29K)

出0入0汤圆

发表于 2008-1-24 21:43:03 | 显示全部楼层
好东西,谢谢。

出0入0汤圆

发表于 2008-1-25 00:09:44 | 显示全部楼层
4楼的大哥, 这个在中发哪个柜台买的? 什么价钱?

出0入0汤圆

发表于 2008-1-25 09:36:35 | 显示全部楼层
我记得我以前的显示器单键飞梭开关有3个状态:按下、顺旋、逆旋,
没仔细看你的程序,问下你的程序有“按下”这个动作判断么?????

好像现在的厂家都不怎么用这种单键飞梭开关了。。。。。

出0入0汤圆

 楼主| 发表于 2008-1-25 13:22:27 | 显示全部楼层
回6楼:

在知春电子城A078号柜台买的,国产的,3.5元
010-82629493

出0入0汤圆

 楼主| 发表于 2008-1-25 13:24:40 | 显示全部楼层
TO;7楼

“按下”动作是一个独立的微动开关,可以连I/O口,或接到外部中断判断

出0入0汤圆

发表于 2008-1-25 15:58:07 | 显示全部楼层
我们习惯称它为编码开关 刚开始还弄了很久没头绪  只要抓住一个规律:左转时,先是00--01   右转时:00--10  判断这两个顺序就OK!

出0入0汤圆

发表于 2008-1-25 16:17:49 | 显示全部楼层
我们设备上面用的挺多的  单键操作LCD菜单1

出0入0汤圆

 楼主| 发表于 2008-1-25 19:08:47 | 显示全部楼层
楼上是搞什么仪器的?

我之前看到很多进口设备上采用此开关。
现在的微波炉上用的是带锁定的,但是不带按钮功能,第一次从深圳邮寄的就是锁定不带开关的,所以定货的时候要了解清楚。

还有个事,你那张图片我看着别扭,能不能请周老虎帮你改改 :)

出0入0汤圆

发表于 2008-1-25 20:02:12 | 显示全部楼层
我调试过这种开关的程序,其实比较简单,好像左旋是前高后低,右旋是前低后高,具体记不清楚了

出0入0汤圆

发表于 2008-4-5 10:40:55 | 显示全部楼层
请教:11楼 hehanlou 何汉楼
可详细介绍一下单键操作LCD菜单吗?谢谢!

出0入0汤圆

发表于 2008-4-14 16:35:13 | 显示全部楼层
高.mark

出0入0汤圆

发表于 2008-8-5 13:24:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-25 10:17:43 | 显示全部楼层
很好啊,刚要用。标记!

出0入0汤圆

发表于 2008-10-25 10:54:00 | 显示全部楼层
这东西多少钱一个?挺不错的!

出0入0汤圆

发表于 2008-11-9 16:10:59 | 显示全部楼层
毕业设计做这个哈,不过,楼主的消抖做的不好。



 (原文件名:飞梭消抖.JPG) 

本贴被 zjf1119 编辑过,最后修改时间:2008-11-09,16:14:33.

出0入0汤圆

发表于 2008-11-9 16:51:05 | 显示全部楼层
来顶哈  

出0入0汤圆

发表于 2008-11-10 02:13:01 | 显示全部楼层
这种编码开关的输出波形非常好,不用做消抖处理。下面是用示波器采到的波形。





示波器采到的波形 (原文件名:Knob_wave_1.JPG) 







有两种输出格式,一种是转一格产生一次跳变(半个脉冲),另一种是转一格输出一个脉冲的。





 (原文件名:Knob.JPG) 



注意图中红线画出的语句,只有一个脚能接单片机的中断输入。如果接错可能导致编码开关转一格时,单片机采样的值会是 加一后减一。

本贴被 hujiahua 编辑过,最后修改时间:2008-11-10,02:22:22.

出0入4汤圆

发表于 2008-11-10 06:26:09 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-11-11 10:40:40 | 显示全部楼层
MARK

出0入0汤圆

发表于 2008-11-11 14:36:13 | 显示全部楼层
做记号

出0入0汤圆

发表于 2009-5-19 23:18:37 | 显示全部楼层
怎么今试了一下用M16没成功呢。晕中。。。。

出0入42汤圆

发表于 2009-6-22 15:59:00 | 显示全部楼层
好贴,顶,先别沉了

出0入0汤圆

发表于 2009-11-16 09:28:22 | 显示全部楼层
如果这种编码开关价格便宜,那的确是个好东西。不过不加去抖,总感觉不是那么可靠。

出0入0汤圆

发表于 2009-11-24 16:26:07 | 显示全部楼层
Mark

出0入0汤圆

发表于 2009-11-25 02:58:31 | 显示全部楼层
标记位

出0入0汤圆

发表于 2009-11-25 04:56:59 | 显示全部楼层
中断用下降沿触发,在硬件上要加104消抖,非常好用,带按钮的,广州零售每个才卖3元。

出0入0汤圆

发表于 2009-11-27 22:26:37 | 显示全部楼层
顶啊、、、、、、、、、、、、、、、、、

出0入0汤圆

发表于 2009-11-27 23:19:24 | 显示全部楼层
MARK 单键飞梭

出0入0汤圆

发表于 2010-1-22 12:36:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-21 21:18:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-21 21:31:11 | 显示全部楼层
QEI interface :

with programmable delay digital filter

STM32, LPC 基本上都有配置此接口

出0入0汤圆

发表于 2010-4-21 08:38:18 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-4-21 08:41:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-21 08:52:20 | 显示全部楼层
MARK

出0入42汤圆

发表于 2010-5-16 17:40:04 | 显示全部楼层
回复【21楼】hujiahua  
-----------------------------------------------------------------------

B不能做中断是说最下面那个图那种吧,我观察每点一个脉冲的,看不出AB波形有明显区别--除了相位

出0入0汤圆

发表于 2010-5-17 10:36:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-13 21:37:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-17 15:23:59 | 显示全部楼层
mark下

出0入0汤圆

发表于 2010-8-11 14:32:00 | 显示全部楼层
mark 后面会用到这个东西!

出0入0汤圆

发表于 2010-8-11 22:38:52 | 显示全部楼层
回复【楼主位】whimsy
-----------------------------------------------------------------------

就一个简单的正交编码嘛, 能表示步进格数,和步进方向而已。 现在电机检测 转速 转向 位置 都用这玩意啊。太常规了。
另外一个周期应该有四种状态的。 需要两路信号都进行 上升沿 下降沿中断操作。 两拍操作少了两个状态 降低精度了。

出0入0汤圆

发表于 2010-8-22 02:14:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-3 10:34:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-20 16:54:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-20 22:42:35 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-9-20 22:50:29 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-1-3 22:00:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-4 15:36:45 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-1-6 00:06:18 | 显示全部楼层
mark

出5入8汤圆

发表于 2011-4-17 17:07:59 | 显示全部楼层
顶21楼

出0入0汤圆

发表于 2011-6-9 13:52:56 | 显示全部楼层
正想研究研究呢!!

出0入0汤圆

发表于 2011-7-11 17:23:32 | 显示全部楼层
还用中断太差劲了。

出0入0汤圆

发表于 2011-8-11 19:14:56 | 显示全部楼层
用AVR单片机的话,可以用引脚电平改变中断,A和B只要有改变就中断,再根据中断前后的AB电平状态来判断正反转。

A:___     ___     ___    正转:AB: 10 11 01 00 10 [11 01 00 10 11 01]
      |___|   |___|   |_   
     ___     ___     ___  反转:AB: 01 11 10 00 01 [11 10 00 01 11 10]
B:_|   |___|   |___|

比如:中断前AB状态为 11,中断后AB状态为 01,则为正转;如果中断后为 10,则为反转。

出0入0汤圆

发表于 2011-8-11 19:31:52 | 显示全部楼层
这东西实用,一直没用过,抽空试一下。

出0入0汤圆

发表于 2011-8-16 14:34:30 | 显示全部楼层
学习了!!

出0入8汤圆

发表于 2012-3-8 09:07:32 | 显示全部楼层
谢楼主,学习中

出0入0汤圆

发表于 2012-9-27 13:38:59 | 显示全部楼层
这个不错的,单键飞梭

出0入0汤圆

发表于 2016-4-17 10:37:58 | 显示全部楼层
没有防抖啊,万一碰到质量差的产品怎么办?

出0入0汤圆

发表于 2016-4-17 13:25:03 | 显示全部楼层
謝謝分享~~之前也玩過,消抖通常都接個104脈波就很漂亮了,作法一樣是用中斷Apin再去判斷B,只是把判斷的程式放在主迴圈,中斷只設定Flag,主迴圈檢測到Flag變化就做加減,
只是後來對應到高速的計數器上,還是另外用顆MCU單獨作計數,不然參了其他程式下去計數就不一定準了。

出0入0汤圆

发表于 2016-4-18 11:38:45 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2016-4-18 14:42:02 | 显示全部楼层
很不错啊

出0入0汤圆

发表于 2016-7-4 11:10:00 | 显示全部楼层
mark 编码开关】
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 04:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表