Red de conocimiento informático - Material del sitio web - Cómo utilizar el interruptor de codificación giratorio

Cómo utilizar el interruptor de codificación giratorio

Tiene tres funciones: giro a la izquierda, giro a la derecha y pulsación. Los pines 4 y 5 son los interruptores que se empujan hacia abajo en el medio. Los pines 1, 2 y 3 suelen ser los pines intermedios 2. Después de que los pines 1 y 3 levante la resistencia, cuando la perilla. se gira hacia la izquierda o hacia la derecha, en 1, el pin 3 tiene salida de señal de pulso.

Esta es información estándar:

Al programar un microcontrolador, es difícil distinguir entre giros hacia la izquierda y hacia la derecha. Utilice un osciloscopio para observar las dos salidas de este interruptor cuando gira hacia la izquierda. y derecha.

La señal del pin tiene una diferencia de fase, como se muestra en la siguiente figura:

Se puede observar que si la salida 1 es de nivel alto, la salida 2 tendrá un nivel alto. un nivel alto, y luego el interruptor girará en el sentido de las agujas del reloj cuando la salida

esté en un nivel alto y la salida 2 parezca baja, debe girar en el sentido contrario a las agujas del reloj.

Entonces, en el microcontrolador al programar. , solo necesita juzgar si la salida 1 es de nivel alto y el estado de la salida 2 en ese momento puede determinar si está girando hacia la izquierda

o hacia la derecha.

Existe otro tipo de 3 pines, que se usa de la misma manera que el anterior excepto que no tiene interruptor de botón.

Referencia:

#include "reg51.h"

#define uint unsigned int

sbit CodingsWitch_A=P1_1;

sbit CodingsWitch_B=P1_2;

uint CodingsWitchPolling()//

{

static Uchar Aold, Bold //Se definen dos variables Usado; para guardar la última vez que se llamó a este método para codificar el nivel de los dos pines del switch

static Uchar st //Se define una variable para guardar si hubo dos; anterior Los pines están todos en alto voltaje

estado plano

uint tmp = 0;

if(CodingsWitch_Aamp;amp;CodingsWitch_B)

st = 1; //

if(st) //Si st es 1, realice los siguientes pasos

{

if(CodingsWitch_A==0amp ; amp ;CodingsWitch_B==0) //Si los dos pines del interruptor de codificación actual

están ambos en el nivel inferior, realice los siguientes pasos

{

if( Bold) //Alto significa que el interruptor de codificación está girando en la dirección de aumentar

{

st = 0;

tmp;

}

if(Aold) //Alto significa que el interruptor de codificación está girando en la dirección decreciente

{

st = 0 ;

p>

tmp-- //Supongamos el valor de retorno

}

}

}

Aold = CodingsWitch_A; / /

Bold = CodingsWitch_B; //Almacenamiento

return tmp;