论坛风格切换切换到宽版
  • 7139阅读
  • 19回复

灌水:旋转编码器的检测程序(MCS51) [复制链接]

上一主题 下一主题
离线BG4UVR
 
发帖
11287
只看楼主 倒序阅读 0楼 发表于: 2005-01-15
//旋转编码器检测程序,A/B信号分别接在了INT0和INT1上
//程序作者:BG4UVR
//2005年1月15用KEIL编译、硬件测试通过

//注意:编码器的信号,程序未做消抖处理。测试中,A/B信号上各
//接了一只104的瓷片电容,工作很正常。如果不接电容,请自行编
//写信号消抖程序。

#include <at89x51.h>

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;
     }
}
离线Iraqi
发帖
393
只看该作者 1楼 发表于: 2005-01-15
那里搞到的旋转编码器,帮我弄个吧!
离线BG4UVR
发帖
11287
只看该作者 2楼 发表于: 2005-01-15
'
那里搞到的旋转编码器,帮我弄个吧!
'

我单位用的,台湾产,进价每只10元。
离线Iraqi
发帖
393
只看该作者 3楼 发表于: 2005-01-15
'
我单位用的,台湾产,进价每只10元。
'
有图片和资料吗,想要几个
离线BG4UVR
发帖
11287
只看该作者 4楼 发表于: 2005-01-15
'
有图片和资料吗,想要几个
'

没图片,没资料。

要图片可以给你拍照。资料呢,不用了,其时里面就是2个开关。

说明一下,我可不卖这东西哈
离线bg2raq
发帖
3978
只看该作者 5楼 发表于: 2005-01-15
有没有那种编码开关 就是可以左转再右转 还可以按下去当按钮用的 我需要这个
离线bg4jj
发帖
5094
只看该作者 6楼 发表于: 2005-01-15
2个中断都用上了,真是巧妙!
离线bd3si
发帖
13703
只看该作者 7楼 发表于: 2005-01-15
有!!!!!!!!!!!!!!

'
有没有那种编码开关 就是可以左转再右转 还可以按下去当按钮用的 我需要这个
'
离线bg4jj
发帖
5094
只看该作者 8楼 发表于: 2005-01-15
请告知详情     谢谢!
离线BD7YA
发帖
2392
只看该作者 9楼 发表于: 2005-01-15
'
有没有那种编码开关 就是可以左转再右转 还可以按下去当按钮用的 我需要这个
'

现在的好多电脑显示器上就有这种开关。
离线BG4UVR
发帖
11287
只看该作者 10楼 发表于: 2005-01-15
'
2个中断都用上了,真是巧妙!
'

细看,只用了一个硬件中断,另外一条线随便找个脚接就行的
离线bg4jj
发帖
5094
只看该作者 11楼 发表于: 2005-01-16
很好,加一个电容,程序就简单至极了,正可谓:软硬兼施!
离线BG4UVR
发帖
11287
只看该作者 12楼 发表于: 2005-01-16
'
很好,加一个电容,程序就简单至极了,正可谓:软硬兼施!
'

其时我还是喜欢不用电容,用软件消抖,这样成本低啊。而且,编码器的质量也有差别,如果碰到质量差一些的,可能104的电容也不太好用了。

这个帖子的主要目的是让没做过编码器解码的朋友了解一下旋转编码器的解码算法。

当然,这并不是唯一的方法,而且不一定会是最好的方法。这个方法有他的缺点:

1、占用了一个硬件中断。
2、电路安装过程中,如果没接在中断上那条信号线对地或电源短路,那么你会发现无论你向哪个方向转动编码器,程序都是认为向一个方向转的。不是什么大毛病,但在实际应用中我已经碰到过这个问题了。
3、其他。。。

优点也是明显的:
1、CPU占用低。
2、可以减小干扰。你可以只在需要检测编码器时才打开这个中断,打开后等着就行了,不用去查询。不需要检测编码器时关闭这个中断,干扰会减小。
3、程序代码量少。逻辑错误产生的可能性会更小些。
4、由于使用了硬件中断,那么CPU空闲时可以让CPU进入低功耗状态,省电!只要一转编码器,就会自动退出省电状态,CPU正常运行。(注意:这个优点不能和第2条同时使用哟)
离线BD2XA
发帖
45
只看该作者 13楼 发表于: 2005-01-17
bg4uvr:你好,昨天给你发信,想必是没接到,有事相求.bd2xa
bd2xa@163.com       13103353561
离线BG4UVR
发帖
11287
只看该作者 14楼 发表于: 2005-01-17
'
bg4uvr:你好,昨天给你发信,想必是没接到,有事相求.bd2xa
bd2xa@163.com       13103353561
'

啊?没收到?我早回过信了,请再查一下看。如果确认是丢了,我再重发一次。
离线bg4jj
发帖
5094
只看该作者 15楼 发表于: 2005-01-28
谁能提供这种旋转编码器的实物呀?想做一下试验。
离线BG7TBL
发帖
2965
只看该作者 16楼 发表于: 2005-01-29
是光电的还是机械的!
离线BG4UVR
发帖
11287
只看该作者 17楼 发表于: 2005-01-29
'
是光电的还是机械的!
'

机械的..........
离线bg4jj
发帖
5094
只看该作者 18楼 发表于: 2005-01-29
皆 可     。
离线bg3hb
发帖
298
只看该作者 19楼 发表于: 2005-02-15
我用过欧姆龙的,光电旋转编码器,太贵。
接法不如这样巧妙。用了两个i/o口。
汇编写的。远不如c 精炼。但容易理解。
测量距离用。