¿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; p>
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