Red de conocimiento informático - Conocimiento del nombre de dominio - Buscando urgentemente el programa y la explicación detallada de la lámpara de agua corriente del microcontrolador

Buscando urgentemente el programa y la explicación detallada de la lámpara de agua corriente del microcontrolador

¡Hola! ¡Te daré dos ejemplos y básicamente podrás hacerlo!

1. . . . Ejemplo de lámpara de agua corriente

1. Conocimientos básicos: el modo de direccionamiento es la forma de encontrar y determinar la dirección de los datos involucrados en la operación. Los modos de direccionamiento del microcontrolador 8051 incluyen siete modos de direccionamiento: direccionamiento de registro, direccionamiento directo, direccionamiento indirecto de registro, direccionamiento inmediato, direccionamiento indexado y direccionamiento de bits.

2. Circuito de hardware (el nivel no es lo suficientemente alto por lo que no puedes cargar imágenes)

3. Programación de software:

ORG 0000H; pseudoinstrucción, que especifica que el programa se almacenará a partir de 0000H

Instrucción de salto LJMP, el programa saltará a PRINCIPAL

ORG 0100H; Pseudo instrucción, que especifica el siguiente programa que se almacenará a partir de 0100H

MAIN:

MOV SP, #60H Asigne un valor inicial al puntero de la pila

MOV P1 , #0FFH; Asigne un valor inicial a P1 y todos los LED se apagarán

El siguiente es el programa de búsqueda de tablas

MOV DPTR, #LED_TABLE

LUZ:

MOV R7, #42

BUCLE:

MOV A, #42

SUBB A, R7

MOVC A , @A DPTR

MOV P1, A; Visualización de salida

LCALL DELAY Ajustar subrutina de retardo

DJNZ R7, LOOP

SJMP LIGHT; salto, el programa continúa

DELAY:

MOV R7, #10H

DELAY0:

MOV R6, #7FH

DELAY1:

MOV R5, #7FH

DJNZ R5, $

DJNZ R6, DELAY1

DJNZ R7, DELAY0

RET

Datos de la tabla

LED_TABLE:

DB 0FFH; todo apagado

DB 0Feh., 0FDH, 0FBH, 0F7H, 0EFH, 0dfh, 0bfh, 07FH; se encienden uno a uno

db 0feh., 0CH, 08H, 0F0H, 0E0H, 080H, 000H; Superposición

DB 080H., 0C0H, 0E0H, 0F0H, 0F8H, 0FCH, 0FEH, 0FFH; Disminuir uno por uno

DB 07EH., 0BDH , 0DBH, 0E7H, 0E7H, 0DBH, 0BDH, 07EH ambos lados se juntan y luego se separan

DB 07EH., 03CH, 01BH, 000H, 000H, 018H, 03CH, 07EH disminuyen desde ambos lados; superposición

DB 000H; todos los puntos Bright

END

4. Resultados de la ejecución

Después de ejecutar el programa, los 8 LED se iluminarán uno por uno, se superpondrán uno por uno, disminuirán uno por uno, se acercarán desde ambos lados y luego se separarán, y se superpondrán desde ambos lados y luego disminuir.

5. Resumen de habilidades

La instrucción de búsqueda de tabla se puede utilizar para la visualización de conversión de código complejo. La instrucción de búsqueda de tabla puede lograr efectos de visualización complejos y reducir el código del programa.

2. . . . Diseño de luces de marcha LED controladas por microcontrolador (se proporcionan todos los circuitos y programas)

1 Introducción

Hoy es una era en la que surgen infinitas nuevas tecnologías, especialmente en el campo de Electrónica, especialmente automatización e inteligencia En el campo del control, los sistemas de control tradicionales compuestos por componentes discretos o circuitos lógicos digitales están siendo reemplazados por sistemas de control inteligentes de un solo chip a una velocidad sin precedentes. La microcomputadora de un solo chip tiene las ventajas de tamaño pequeño, funciones potentes, bajo costo y una amplia gama de aplicaciones. Se puede decir que el núcleo del control inteligente y el control automático es la microcomputadora de un solo chip. En la actualidad, está surgiendo un auge en el aprendizaje y la aplicación de microcontroladores a gran escala en fábricas, escuelas, empresas e instituciones. La forma más efectiva de aprender microcontroladores es prestar igual atención a la teoría y la práctica. En este artículo, el autor utilizó el microcontrolador AT89C51 para hacer una lámpara de agua corriente simple, centrándose en el método de programación de software, para inspirar a los principiantes en microcontroladores y convertirse rápidamente. Talento destacado en el campo de los microcontroladores.

2. Composición del hardware

Según la expansión y la configuración del sistema del microcontrolador, el sistema de aplicación del microcontrolador se puede dividir en sistema mínimo, sistema de consumo mínimo de energía y sistema típico. El microcontrolador AT89C51 es un CMOS de alto rendimiento y bajo voltaje producido por la empresa estadounidense ATMEL.

Un microcontrolador de 8 bits con abundantes recursos internos: memoria flash de 4 kB, 128 BRAM, 32 líneas de E/S, 2 16. -Temporización de bits/contador, estructura de interrupción de dos niveles de 5 vectores, 2 puertos serie full-duplex, con un rango operativo de voltaje de 4,25 ~ 5,50 V y una frecuencia operativa de 0 ~ 24 MHz. No es necesario ampliar la memoria externa cuando se utiliza. el microcontrolador AT89C51. Por lo tanto, esta lámpara de agua corriente es en realidad un sistema de aplicación mínimo de una microcomputadora de un solo chip con ocho diodos emisores de luz, que es una computadora de un solo chip compuesta por diodos emisores de luz, oscilador de cristal, reinicio, fuente de alimentación y otros circuitos. y software necesario. Su composición de hardware específica se muestra en la Figura 1.

Figura 1 Esquema del hardware de la lámpara de agua

Como se puede ver en el diagrama esquemático, si desea que se encienda el LED1 conectado al puerto P1.0, entonces solo necesita conectar el puerto P1.0 simplemente cambie el nivel a nivel bajo; por el contrario,

Si desea que el LED1 conectado al puerto P1.0 se apague, debe cambiar el nivel del puerto P1.0 a. nivel alto al mismo tiempo, Gestión, los otros 7 LED conectados a los puertos P1.1 ~ P1.7 se encienden y apagan de la misma manera que el LED1. Por lo tanto, para realizar la función de lámpara de agua corriente, solo necesitamos encender y apagar los diodos emisores de luz LED1~LED8 en secuencia, y las 8 luces LED se encenderán y apagarán como una lámpara de agua corriente. También debemos tener en cuenta aquí que debido al efecto de persistencia visual del ojo humano y el poco tiempo que le toma al microcontrolador ejecutar cada instrucción, debemos retrasar por un período de tiempo el control del diodo para encender y apagar, de lo contrario, no verá el "agua que fluye". Funcionó.

3. Programación de software

El sistema de aplicación del microcontrolador se compone de hardware y software. Una vez completado y encendido el diagrama esquemático del hardware anterior, no podemos ver el fenómeno. La lámpara de agua corriente se ilumina en ciclos, también debemos decirle al microcontrolador cómo trabajar, es decir, escribir un programa para controlar los cambios altos y bajos en el nivel del pin del microcontrolador para realizar el encendido y el diodo emisor de luz. apagado. La programación de software es una parte importante del sistema de aplicación de microcontroladores y es el foco y la dificultad del aprendizaje de microcontroladores. A continuación, utilizamos la función de control de lámpara de agua corriente más simple, que consiste en realizar la iluminación cíclica de 8 luces LED, para introducir varios métodos de programación de software para realizar el control de lámpara de agua corriente.

3.1 Método de control de bits

Este es un método relativamente estúpido pero más fácil de entender. Utiliza una estructura de programa secuencial y utiliza instrucciones de bits para controlar la salida alta y baja de cada bit. el nivel del puerto P1, controlando así el encendido y apagado de las luces LED correspondientes.

El programa es el siguiente:

ORG 0000H; Después de encender el microcontrolador, se ejecutará desde la dirección 0000H

AJMP START Salta a la dirección de almacenamiento del programa principal

p>

ORG 0030H ; Establecer la dirección de inicio del programa principal

INICIO: MOV SP, #60H; Establezca la dirección de inicio de la pila en 60H

CLR P1.0; emite un nivel bajo para encender el LED1

ACALL DELAY ; llama a la subrutina de retardo

SETB P1.0 ; emite un nivel alto para apagar el LED1

CLR; P1.1 ; P1.1 emite un nivel bajo, lo que hace que el LED2 se encienda

ACALL DELAY; llamando a la subrutina de retardo

SETB P1.1 emite un nivel alto, lo que hace que el LED2 salir

CLR P1.2; P1.2 emite un nivel bajo para encender el LED3

ACALL DELAY Llama a la subrutina de retardo

SETB P1.2 ? ; P1.2 genera un nivel alto, lo que hace que el LED3 se apague

CLR P1.3; P1.3 genera un nivel bajo, lo que hace que el LED4 se encienda

ACALL DELAY; Subrutina de retardo

SETB P1.3; P1.3 genera un nivel alto para apagar el LED4

CLR P1.4 genera un nivel bajo para encender el LED5

ACALL DELAY; subrutina de retardo de llamada

SETB P1.4; P1.4 emite un nivel alto para apagar el LED5

CLR P1.5 emite un nivel bajo; hacer que el LED6 se encienda

ACALL DELAY; subrutina de retardo de llamada

SETB P1.5 emite un nivel alto para hacer que el LED6 se apague

CLR P1. 6; P1.6 emite un nivel bajo, lo que hace que el LED7 se encienda

ACALL DELAY

;Llame a la subrutina de retardo

SETB P1.6; P1.6 emite un nivel alto para apagar el LED7

CLR P1.7; P1.7 emite un nivel bajo para apagar las luces LED8 arriba

ACALL DELAY; llama a la subrutina de retardo

SETB P1.7; P1.7 emite un nivel alto para apagar el LED8

ACALL DELAY ;llama a la subrutina de retardo

AJMP START ;8 LEDs fluyen una vez y luego regresan a la etiqueta START para reciclaje

DELAY: ;Retraso de subrutina

MOV R0, #255; de tiempo

D1: MOV R1, #255

DJNZ R1, $

DJNZ R0, D1

retornos de subrutina<; /p>

FIN; el programa finaliza

3.2 Método de desplazamiento circular

En el programa anterior controlamos el puerto P1 uno por uno. Se implementa por cada bit, por lo que el programa Parece un poco complicado. A continuación usamos la instrucción de cambio de ciclo y usamos la estructura del programa de ciclo para programar. Enviamos un número al puerto P1 al comienzo del programa. Este número en sí mismo hace que P1.0 sea bajo primero y otros bits altos, y luego se retrasa durante un período de tiempo, luego mueve los datos al bit alto y luego genera. al puerto P1. Esto logra el efecto de "agua que fluye". Dado que las instrucciones del microcontrolador de la serie 8051 solo mueven los datos en el ACC del acumulador hacia la izquierda o hacia la derecha, en la programación real, primero debemos colocar los datos que se moverán al ACC, dejar que se muevan y luego mover los datos en el ACC. transfiéralo al puerto P1, para que también se pueda lograr el efecto de "agua que fluye". La programación específica es la siguiente. La estructura del programa es de hecho mucho más simple.

ORG 0000H ; Ejecutar desde la dirección 0000H después de encender el microcontrolador

AJMP START ; Saltar a la dirección de almacenamiento del programa principal

ORG 0030H ; de la dirección del programa principal

INICIO: MOV SP, #60H; establezca la dirección inicial de la pila en 60H

MOV A, #0FEH Primero cargue los datos con el LED1 encendido en ACC ( binario 11111110)

MOV P1, A; envía los datos ACC al puerto P1

MOV R0, #7; mueve los datos 7 veces más para completar un proceso de canalización de 8 bits

LOOP: RL A; Mueve los datos en ACC hacia la izquierda una posición

MOV P1, A; Envía los datos movidos por ACC al puerto p1 para su visualización

ACALL DELAY; Retardo de llamada subrutina de tiempo

DJNZ R0, LOOP;Continúa moviéndose sin moverte 7 veces

AJMP START Salta al inicio nuevamente después de moverte 7 veces para lograr un efecto de flujo circular

p>

DELAY: ; Retraso de subrutina

MOV R0, #255; Retraso por un período de tiempo

D1: MOV R1 , #255

DJNZ R1, $

DJNZ R0, D1

RET; la subrutina regresa

FIN del programa

3.3 Método de búsqueda de tablas

Los dos programas anteriores son programas de lámpara de flujo de agua relativamente simples. El patrón "flujo de agua" solo puede implementar un único método de flujo "de izquierda a derecha". El programa de lámpara de flujo de agua escrito utilizando el método de tabla de búsqueda puede realizar el flujo de agua de cualquier manera, y los patrones de flujo de agua son ilimitados, siempre que se cambien los datos de flujo de la tabla de datos de patrones de flujo de agua, los patrones de flujo de agua pueden ser. agregue o cambie a voluntad, y el efecto de la lámpara de flujo de agua se puede realizar realmente como se desee. Primero creamos los datos que se mostrarán en el patrón de canalización en una tabla de datos denominada TAB, y luego recuperamos los datos en el acumulador A a través de la instrucción de búsqueda de tabla "MOVC A, @A DPTR" y luego los enviamos al puerto P1. para exhibición. El programa fuente específico es el siguiente. La tabla de datos en el número TAB se puede modificar arbitrariamente según los requisitos para lograr el efecto.

ORG 0000H ; Ejecutar desde la dirección 0000H después de encender el microcontrolador

AJMP START ; Saltar a la dirección de almacenamiento del programa principal

ORG 0030H ; de la dirección del programa principal

INICIO: MOV SP, #60H; establezca la dirección inicial de la pila en 60H

MOV DPTR, # TAB Envíe DPTR a la primera dirección del patrón de canalización; table

LOOP: CLR A; Borrar el acumulador

MOVC A, @A DPTR Obtener el valor en la tabla de datos

CJNE A, #0FFH, MOSTRAR; Verifique el indicador de fin de canalización

p>

AJMP START Después de que se hayan transmitido todos los patrones, la transmisión se repetirá desde el principio

MOSTRAR: MOV P1, A ; Enviar datos al puerto P1

ACALL DELAY; Retraso de llamada subrutina de tiempo

INC DPTR Obtener el puntero de la tabla de datos para apuntar a los siguientes datos

AJMP LOOP; ; Continúe buscando en la tabla para obtener datos

DELAY:; Retraso de subrutina

MOV R0, #255; retraso por un período de tiempo

D1: MOV R1, #255

DJNZ R1, $

DJNZ R0, D1

RET ; Retorno de subrutina

TAB: ; a continuación se muestra la tabla de datos del patrón de flujo, el usuario puede escribirla según sea necesario

DB 11111110B Binario Los datos del patrón de tubería representados se desplazan hacia la izquierda de menor a mayor

DB 11111101B

DB 11111011B

DB 11110111B

DB

11101111B

DB 11011111B

DB 10111111B

DB 01111111B

DB 01111111B Representación binaria de datos de patrón de tubería, de arriba a abajo a la derecha; Mover

DB 10111111B

DB 11011111B

DB 11101111B

DB 11110111B

DB 11111011B

DB 11111101B

DB 11111110B

DB 0FEH, 0FDH, 0FBH, 0F7H; datos de patrón de tubería expresados ​​en formato hexadecimal

DB 0EFH, 0DFH, 0BFH , 7FH

DB 7FH, 0BFH, 0DFH, 0EFH

DB 0F7H, 0FBH, 0FDH, 0FEH

DB 0FFH; Bandera de fin del patrón de tubería 0FFH

FIN del programa

4. Conclusión

Después de escribir uno de los programas anteriores, necesitamos usar el software de compilación Compile. para obtener el código binario que el microcontrolador puede reconocer, y luego use un programador para programar el código binario en el microcontrolador AT89C51. Finalmente, conecte el circuito y enciéndalo, y veremos el efecto de "flujo" de LED1 ~ LED8. Las funciones implementadas por el programa proporcionado en este artículo son relativamente simples y están destinadas a inspirar a otros. Sobre esta base, los usuarios pueden ampliar controles más complejos de las lámparas de agua corriente, como el control por teclado de los patrones de agua corriente y el control de las lámparas de agua corriente para mostrar. números o patrones, etc.

Espero poder ayudarte