Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo utilizar un microcontrolador para controlar el número de revoluciones de un motor? ¿Es posible darse cuenta de que no es necesario girar la manija?

¿Cómo utilizar un microcontrolador para controlar el número de revoluciones de un motor? ¿Es posible darse cuenta de que no es necesario girar la manija?

1. En primer lugar, el motor debe poder ajustarse en velocidad;

2. Utilice dos botones para conectarse a los dos pines de entrada del microcontrolador. aumentar el conteo y el otro se utiliza como conteo de desaceleración. Cada vez que se presiona el botón de aumento de velocidad, el microcontrolador cuenta una vez y emite una señal de control para controlar el motor para aumentar la velocidad, y viceversa para el botón de desaceleración.

3. Por ejemplo, utilice el microcontrolador pwm para controlar la velocidad del motor:

Lista de software anotada

==========Utilice la configuración de la unidad. = =========

//.

....................... ......Utilice la configuración de la unidad

DIS0 EQU 30H

DIS1 EQU 31H

DIS2 EQU 32H

DIS3 EQU 33H

LED EQU 34H

TM1 EQU 35H;

TM2 EQU 36H

INTV BIT 37H;

Indicador de interrupción

THX EQU 38H;

Nivel alto de ancho de pulso de sincronización

CISHU EQU 39H

PRIMER BIT 41H; /p>

Detecta si se presiona la suma o resta por primera vez

SET1 BIT 42H

SETZ0 EQU 43H establece el valor establecido actual SETZ0~SETZ3

SETZ1 EQU 44H

SETZ2 EQU 45H

SETZ3 EQU 46H

TM3 EQU 47H

Unidad de conteo de ciclos

p >

JIA1 BIT 48H

Adición de banderas en un solo paso

LIANJIA BIT 49H

Adición continua de banderas

JIAN1 BIT 50H ;

Indicador de resta de un solo paso

LIANJIAN BIT 51H

Indicador de resta continua

SETDATA EQU 52H; /p>

Establecer unidad de almacenamiento temporal de velocidad

REALDATA EQU 53H

Unidad de almacenamiento temporal de velocidad medida

YK1 EQU 54H; p>Última vez Unidad de almacenamiento temporal de datos de salida

KP EQU 56H Coeficiente proporcional

KI EQU 57H;

Coeficiente integral

EK EQU 58H;

La diferencia entre el valor establecido y el valor medido real

EK1 EQU 59H;

Último valor de EK

SALIDA EQU 60H;

EK2 EQU 61H;

Valor EK-EK1

ONPRESS BIT 62H;

Determine si aparece la tecla ENTER la bandera

TMS EQU 63H

Duración del parpadeo

SHAN BIT 64H

Logotipo de parpadeo

=; ===== ====Programa principal==========

ORG 0000H

SJMP PRINCIPAL

ORG 0013H;

Dirección de entrada de interrupción externa 1

AJMP INX1

ORG 001BH;

Dirección de entrada de interrupción del temporizador T1

AJMP ITX1

ORG 0070H

PRINCIPAL: MOV SP, #70H;

Establecer dirección de entrada del puntero de pila

ACALL INIT;

Llame al programa de inicialización

M1: JB SET1, FLASH;

Si actualmente se encuentra en el estado de configuración, salte al módulo de visualización parpadeante

ACALL DISP;

De lo contrario, es una visualización normal

SJMP NEXTT

FLASH: ACALL DISP1

NEXTT: ACALL DELAY;

Llamada al retardo de tecla programa

p>

ACALL M2; llame al programa clave

DJNZ CISHU, M1;

Actualice el valor medido cada 100 MS

MOV CISHU, #20

ACALL CONTROL;

Llame al módulo de control de velocidad

SJMP M1

//

==== ======Módulo de inicialización==========

INIT: MOV DPTR, #0FD00H;

Establecer PA y PB como puertos de salida, y PC como puerto de entrada

MOV A, #03H

MOVX @DPTR, A

MOV TMOD, #21H;

El temporizador/contador T1 es el modo 2, el temporizador/contador T0 es el modo 1

MOV TL0, #00H

El temporizador/contador T0 tiene asignado el valor inicial #00H;

MOV TH0, #00H

MOV THX, #0BBH;

A la unidad de salida se le asigna un valor inicial de #0BBH, que es el nivel alto del pulso. ancho

MOV TH1, THX

MOV TL1, THX

SETB TR1;

Iniciar temporizador/contador T1

SETB TR0;

Iniciar temporizador/contador T0

SETB ET1;

Permitir interrupción por desbordamiento del temporizador/contador T1

SETB EX1 ;

Permitir interrupción externa 1

SETB IT1;

Seleccionar disparador de flanco

SETB EA;

CPU en interrupción

SETB 07H;

SETB SHAN

CLR 11H;

La detección se realizó correctamente