当前位置:编程学习 > C/C++ >>

编码开关测试OK陈

[plain]
    BMA    = P4^2;//编码开关A引脚1       //必须接上拉电阻680欧 
sbit     BMB    = P4^3;//编码开关B引脚3       //必须接上拉电阻680欧 
                       //编码开关引脚2 接地                          
sbit     BMC    = P1^6;//编码开关c 按下引脚 
unsigned int  counter = 0;     //编码器脉冲计数  
/**********************************************************                              
扫描编码器子函数  by陈                              
正转(时钟方向) 
11 
10 
00 
01 
 
11   //开始第二角度 
10 
…… 
 
反转(时钟反方向) 
11 
01 
00 
10 
 
11   //开始第二角度 
01 
…… 
 
程序从00开始   
 
如果还是00 则等待 如果在延时这么长时间0ffff*yans(1)还是00  则返回  (如果转的速度非常快,则可使减小;相反亦然) 
如果收到01 则正转加1 返回 
如果收到10 则反转减1 返回 
如果收到11 则错误    返回 
                                                           
**********************************************************/ 
void scan_encoder() 

    unsigned int i; 
    while(1) 
    { 
        if(BMA==0&&BMB==0)       //收到0 0 后开始判断 
        { 
            for(i=0;i<0xfff0;i++) 
            { 
                if(BMA==0&&BMB==0)      //状态未变,等待 
                { 
                    yans(1); 
                } 
                else if(BMA==0&&BMB==1) //正转 
                { 
                     
                    counter++;   
                    return; 
                } 
                else if(BMA==1&&BMB==0) //反转 
                { 
                    counter--;   
                    return; 
                } 
                if(BMA==1&&BMB==1)      //错误 
                { 
                    return; 
                } 
            } 
        } 
        else if(0==BMC) 
        { 
            counter=0; 
            return; 
        } 
        else  
        { 
            return; 
        } 
    }    

void xszs() 

    unsigned int code db[]={ 
        0,0,}; 
        fsfont55(); 
        fsszxy(4,db); 
        printf("%5u\n",counter); 
        txjs(); 
         

void testmain() 

    yans(3000); 
    while(1) 
    { 
        //tisy(); 
        xszs(); 
        scan_encoder();  
    } 

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,