N76E003 旋转编码器 EC11

1、概述

本文所使用的编码器为EC11旋转编码器,该编码器由两个部分组成,第一部分(3脚ACB)分别为编码器A B相和公共端(接地);第二部分(2脚S1、S2)为按键,按下后导通。
N76E003 旋转编码器 EC11_第1张图片

2、电路图

如下图所示

其中EC11_A接P17、EC11_B接P30;电容103为0.01uf
N76E003 旋转编码器 EC11_第2张图片

3、信号分析

N76E003 旋转编码器 EC11_第3张图片
由上图中可以看出,当我们使用A相上升沿触发中断时,B相如果为高电平,则是顺时针旋转,反之则是逆时针旋转。

4、程序代码

以下程序运用了N76E003的管脚中断功能,相关博文请点这里

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"
#include 

#define uchar unsigned char
#define uint  unsigned int

sbit LED =P0^5;
			int temp;

void main (void) 
{
		 	Set_All_GPIO_Quasi_Mode;//所有引脚配置为双向模式
			P17_Input_Mode;//编码器A设定为输入
			P30_Input_Mode;//编码器B设定为输入
			LED=0;//初始化LED端口

			set_EA;	//开启总中断
			set_EPI;	//开启管脚中断(位于拓展中断中)

	
			clr_PIPS1;
			set_PIPS0;//选择P1.7为中断输入源
			

//Enable_BIT7_HighLevel_Trig;	//高电平
//Enable_BIT7_FallEdge_Trig;	//下降沿		
Enable_BIT7_RasingEdge_Trig;//上升沿
//Enable_BIT7_LowLevel_Trig;	//低电平

	while(1)
	{
	}
}

//-------管脚中断中断服务程序---------
void PinInterrupt (void) interrupt 7
{
		if(PIF==0x80&&P17)//P11位于一通道
		{
			Timer0_Delay1ms(1);//消抖
			if(P17)
			{
				if(P30)temp++;//顺时针
				else{temp--;}//逆时针
			}	
		}
				PIF=0;//清除外部中断标志
				LED=~LED;
}

5、实际运行

先逆时针转10下、复位后在顺时针转动10下
N76E003 旋转编码器 EC11_第4张图片
N76E003 旋转编码器 EC11_第5张图片

你可能感兴趣的:(N76E003)