文号
t62104
阅读
25853
回复
7
收藏
5
EC11数字旋钮 编码器 检测稳定程序 51单片机
2013/10/01
IP:安徽
本帖最后由 张静茹 于 2013-10-1 22:39 编辑

写了一个EC11数字旋钮的检测程序,一下午的时间才写稳定,一点不丢动作,其实也不难可能是我水平太低,
网上也没有参考的,所以发出来与大家分享

EC11的中间脚接地,其余俩脚接上拉电阻,一个接P0.0一个接P0.1



#include<STC12C5A60S2.H>                                                                                                                              
sbit P00=P0^0;//正转
sbit P01=P0^1;//反转
sbit P02=P0^2;//按下
void delay(unsigned int cnt)//10为1ms
{
unsigned char i;
for(;cnt>0;cnt--)
for(i=0;i<111;i++);
}

void main()
{
unsigned char zkb;
unsigned int ys=20,ys2=20;

// CCON=0;    //PCA初始化
// CL=0;   //PCA的16位计数器低八位
// CH=0;   //PCA的16位计数器高八位
// CMOD=0x00; //选择 系统时钟/12 为计数脉冲,则PWM的频率f=sysclk/256/12;

// CCAP0H=0x80;  //  占空比控制
// CCAP0L=0x80;  
// PCA_PWM0=0x00; //控制占空比的第九位为0

// CCAPM0=0x42;  //允许P13作为PWM输出

// //CR=1; //启动PCA计数器

// CCAP0H=0x01;  //  占空比控制
// CCAP0L=0x0;  
//   //d2=0;
while(1)
{
if(!P00) //如果p0.0口变为低电平
{
delay(ys); //延时
if(!P00) //如果p0.0还是低电平
{
while(!P00); //等待p0.0变成高电平
while(P01); //等待p0.1变成低电平
delay(ys2); //延时
while(P01); //如果p0.1还是低电平
while(!P01); //等待p0.1变成高电平
zkb+=1; //计数加1
P1=zkb; //输出P1口观察
}
}

if(!P01)
{
delay(ys);
if(!P01)
{
while(!P01);
while(P00);
delay(ys2);
while(P00);
while(!P00);
zkb-=1;
P1=zkb;
}
}


}

}
13年3个月前IP:未同步
646979
1楼
原来还有EC11这么方便的东西啊
引用
评论
张静茹作者
13年3个月前IP:未同步
646993
2楼
我说要有光 发表于 2013-10-2 04:02
原来还有EC11这么方便的东西啊


我说网上没有例程参考,原来大家不知道有这玩意呀,数字示波器,档位旋钮大多是这东西。。。。。。。
引用
评论
13年3个月前IP:未同步
647117
3楼
这段程序是一直在查询,太浪费资源了,改成中断式吧。消抖能不用死循环么?或者并联一个10nF电容?旋转编码开关这东东还是比较酷的。
引用
评论
张静茹作者
13年3个月前IP:未同步
647207
4楼
hefanghua 发表于 2013-10-2 20:42
这段程序是一直在查询,太浪费资源了,改成中断式吧。消抖能不用死循环么?或者并联一个10nF电容?旋转编码 ...


反正只是输出一个pwm ,死循环才可以稳定的不丢动作,我想不到啥好办法了
+50
科创币
1038733481
2013/10/07
-
引用
评论
13年0个月前IP:未同步
661699
5楼
看不出你这个怎么判断先后的
引用
评论
张静茹作者
13年0个月前IP:未同步
661717
6楼
q120742915 发表于 2014-1-5 20:43
看不出你这个怎么判断先后的


汗..............
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的