此程序可用在任何单片机上
不占用硬件中断口
/************************编码器变量*******************************/
bit Encoder_A_Old,Encoder_B_Old,BMQ_R_AH,BMQ_R_BH,BMQ_R_AL,BMQ_R_BL,BMQ_L_AH;
bit BMQ_L_BH,BMQ_L_AL,BMQ_L_BL,Encoder_Add,Encoder_Rec,Encoder_A_Now,Encoder_B_Now;
bit BMQ_IO_A_SATTE,BMQ_IO_B_SATTE;
unsigned char Twice_Effective,Twice_Effective1;
/************************编码器变量*******************************/
/***********************以下程序放定时中断***********************************/
if(FLAG_BMQ_1MS) //1MS扫描一次
{
FLAG_BMQ_1MS=0;
/******************************编码器检测驱动************************************/
Encoder_A_Now=BMQ_A_IO; //IO端口
Encoder_B_Now=BMQ_B_IO; //IO端口
if (Encoder_A_Old==0&&Encoder_A_Now==1)
{
if (Encoder_B_Now==1)
{
BMQ_L_AH=1;
} else
{
BMQ_R_AH=1;
}
}
if (Encoder_B_Old==0&&Encoder_B_Now==1)
{
if (Encoder_A_Now==1)
{
BMQ_R_BH=1;
} else
{
BMQ_L_BH=1;
}
}
if (Encoder_A_Old==1&&Encoder_A_Now==0)
{
if (Encoder_B_Now==1)
{
BMQ_R_AL=1;
} else
{
BMQ_L_AL=1;
}
}
if (Encoder_B_Old==1&&Encoder_B_Now==0)
{
if (Encoder_A_Now==1)
{
BMQ_L_BL=1;
} else
{
BMQ_R_BL=1;
}
}
Encoder_Add=Encoder_Rec=0;
if (BMQ_R_AH==1&&BMQ_R_BH==1) {
Encoder_Add=1;
}
if (BMQ_R_AL==1&&BMQ_R_BL==1) {
Encoder_Add=1;
}
if (BMQ_L_AH==1&&BMQ_L_BH==1) {
Encoder_Rec=1;
}
if (BMQ_L_AL==1&&BMQ_L_BL==1) {
Encoder_Rec=1;
}
if (Encoder_Add)
{
BMQ_R_AH=0;
BMQ_R_BH=0;
BMQ_R_AL=0;
BMQ_R_BL=0;
BMQ_L_AH=0;
BMQ_L_BH=0;
BMQ_L_AL=0;
BMQ_L_BL=0;
Twice_Effective++;
Twice_Effective1=0;
if(Twice_Effective>=2)
{
Twice_Effective=0;
// //向右转
//自己加上自己的程序
}
}
if (Encoder_Rec)
{
BMQ_R_AH=0;
BMQ_R_BH=0;
BMQ_R_AL=0;
BMQ_R_BL=0;
BMQ_L_AH=0;
BMQ_L_BH=0;
BMQ_L_AL=0;
BMQ_L_BL=0;
Twice_Effective1++;
Twice_Effective=0;
if(Twice_Effective1>=2)
{
Twice_Effective1=0; //向左转
//自己加上自己的程序
}
}
Encoder_A_Old=BMQ_A_IO; //IO端口
Encoder_B_Old=BMQ_B_IO; //IO端口
/******************************编码器驱动END************************************/
}
编码器程序(定时扫描版本) - 啊和的博客
OLED画点函数心得--一图搞定(分享给有需要的同学)
一款红外感应自动开盖的垃圾桶源码
十速单片机驱动DS1302程序
BYD单片机烧录软件及keil插件
合泰单片机驱动步进电机程序
BF7612AMXX-MCU-Datasheet
Android手机通过蓝牙模块与单片机通信单片机程序