电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
在使用单片机+EC11编码器中遇到的问题,请大家帮忙
已解决
73482
个问题
已帮助
5993
位优秀工程师
在使用单片机+EC11编码器中遇到的问题,请大家帮忙
c860c7a3a6f9fde2
2020-07-11
浏览量:472
我想使用编码器控制数码管值的加减,一直没有反应,望高手指教,非常感谢!
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit EC11_A=P2^5;
sbit EC11_B=P2^6;
u8 code smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//显示0~F的值
u8 d=125;
/@@*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/@@*******************************************************************************
* 函 数 名 : DigDisplay
* 函数功能 : 数码管动态扫描函数,循环扫描8个数码管显示
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<3;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; P0=smgduan[d%10];delay(100); P0=0x00; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; P0=smgduan[d%100/10];delay(100);P0=0x00; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; P0=smgduan[d/100];delay(100);P0=0x00; break;//显示第2位
}
}
}
void xuanzhun()
{
u8 flag=0left_flag=0right_flag=0;
if((EC11_A)&&(EC11_B))
{
flag=1;
}
if(EC11_A!=EC11_B)
{
left_flag = EC11_A; //记录AB的信号状态
right_flag = EC11_B;
}
if(flag==1)
{
if((EC11_A==0)&&(EC11_B==0))
{
flag=0;
if(left_flag==0) //左转
{
d--;
}
if(right_flag==0)
{
d++;
}
}
}
}
/@@*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
while(1)
{
xuanzhun();
DigDisplay(); //数码管显示函数
}
}
显示全部
单片机
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
yhj416606438
51单片机用旋转编码器要用外部中断法,你的程序主要问题出在xuanzhuan这个函数里面,就算修改好了也会遗漏脉冲,检测也不准
发布于
2020-07-11
举报
评论 0
0
0
其他答案
数量:
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
在使用单片机+EC11编码器中遇到的问题,请大家帮忙
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: