打印

如何提高检测旋转式光电编码器的速度

[复制链接]
1693|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
孟孟|  楼主 | 2014-8-26 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
chunyang| | 2014-8-26 18:12 | 只看该作者
这是你的软件编程有问题所致,速度是足够的。

使用特权

评论回复
板凳
孟孟|  楼主 | 2014-8-26 18:42 | 只看该作者
king5555 发表于 2014-8-26 17:54
要有防彈跳的措施。

请问具体有哪些措施?

使用特权

评论回复
地板
孟孟|  楼主 | 2014-8-26 18:59 | 只看该作者
chunyang 发表于 2014-8-26 18:12
这是你的软件编程有问题所致,速度是足够的。

帮我看看我的代码。。。我已经给贴出来了。。。。多谢版主大人。

使用特权

评论回复
5
孟孟|  楼主 | 2014-8-26 19:00 | 只看该作者
king5555 发表于 2014-8-26 17:54
要有防彈跳的措施。

帮我看看我的代码存在的问题。。。我已经给贴出来了

使用特权

评论回复
6
孟孟|  楼主 | 2014-8-26 19:11 | 只看该作者
@春阳 版主不要走,,,,我的问题还没解决啊

使用特权

评论回复
7
受不了了| | 2014-8-26 21:05 | 只看该作者
脉冲大概有多高频率你心里都没个底吗

使用特权

评论回复
8
51scm| | 2014-8-26 22:51 | 只看该作者
不明白你的程序。我给一个我以前做的程序段(在正式产品中用过的),希望有用。说明:此程序编码器为鼠标滚轮,一旦停止转动则得到一个有效转次数,最高位代表方向。

unsigned char KeyK3Buf;                //S3编码器输入缓冲
unsigned char KeyK3Buf_Old;        //S3编码器输入缓冲旧值
unsigned char KeyK3Cnt;                //S3编码器转次数(最高位为符号位)
unsigned char KeyValidCnt;        //S3编码器有效转次数(最高位为符号位)
unsigned char KeyNATC;                //键不活动计时器

void KeyScn(void)
{
if(KeyScan)                                     //定期检测,间隔时间决定于滚轮速度
        {
        KeyScan=0;
        KeyK3Buf=KeyK3Buf<<2;                        //
        if(K3A)
                {
                KeyK3Buf|=0x01;
                }
        if(K3B)
                {
                KeyK3Buf|=0x02;
                }
        if(KeyK3Buf!=KeyK3Buf_Old)
                {
                KeyNATC=0x00;
                switch(KeyK3Buf)
                        {
                        case        80:
                        case        245:
                        case        175:
                        case        10:
                                KeyK3Cnt++;
                                break;
                        case        5:
                        case        95:
                        case        250:
                        case        160:
                                KeyK3Cnt--;
                                break;
                        }
                }
        else
                {
                if((KeyNATC<255)&&(KeyK3Cnt))
                        {
                        KeyNATC++;
                        }
                else
                        {
                        KeyValidCnt=KeyK3Cnt;
                        KeyK3Cnt=0;
                        }
                }

        KeyK3Buf_Old=KeyK3Buf;
}

使用特权

评论回复
9
651927693| | 2014-8-27 00:20 | 只看该作者
“输出数据乱跳”,那要从头一点点DEBUG呀。首先要确保数码管的显示稳定正确。

使用特权

评论回复
10
tergy2012| | 2014-8-27 16:44 | 只看该作者
这个程序,看不懂,我是新手

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝