Red de conocimiento informático - Material del sitio web - Diseño de pantalla LED de matriz de puntos basado en microcontrolador

Diseño de pantalla LED de matriz de puntos basado en microcontrolador

Resumen: Dado que la visualización dinámica de las pantallas LED de matriz de puntos ordinarias suele utilizar controladores de escaneo de hardware, esto no es lo suficientemente flexible en algunas ocasiones que requieren una visualización especial. Este artículo propone un método de diseño que utiliza la comunicación entre la PC y el microcontrolador para realizar una visualización dinámica flexible y monitoreo remoto de la pantalla. Al mismo tiempo, este método también puede obtener una vista previa del contenido de la pantalla en la PC. Palabras clave: LED; pantalla dinámica; control remoto; vista previa de la pantalla?

1 Introducción La pantalla electrónica de matriz de puntos es un sistema de visualización grande que integra tecnología microelectrónica, tecnología informática y tecnología de procesamiento de información. Con sus colores brillantes, amplio rango dinámico, alto brillo, larga vida útil y funcionamiento estable y confiable, se ha convertido en una opción ideal para muchos medios de visualización y pantallas de trabajo al aire libre. Al mismo tiempo, también puede utilizarse ampliamente en muchas industrias, como la militar, estaciones, hoteles, deportes, noticias, finanzas, valores, publicidad y transporte. En la actualidad, la mayoría de los sistemas de visualización de matriz de puntos LED vienen con su propia biblioteca de fuentes. La realización de su visualización y efectos dinámicos (principalmente el desplazamiento del contenido mostrado) se basa principalmente en los controladores de escaneo de hardware. Aunque este método es más conveniente, la visualización solo se puede realizar de acuerdo con el diseño prediseñado. De hecho, a menudo nos encontramos con algunas visualizaciones dinámicas con requisitos especiales, como el movimiento hacia arriba y hacia abajo de la flecha indicadora durante el funcionamiento del ascensor, la visualización de la barra de amplitud de algunos contadores inteligentes, la visualización de la marca del fabricante en los anuncios, etc. En este momento, es difícil que un sistema de visualización general cumpla con los requisitos. Además, debido a las limitaciones de la propia memoria, los caracteres o patrones especiales suelen ser difíciles de mostrar y el contenido mostrado no se puede cambiar a voluntad. Este artículo propone un método de comunicación para sistemas de visualización LED controlados por PC y microcontrolador. Este método puede controlar el contenido de la pantalla (incluidos los caracteres chinos y los íconos especiales) en tiempo real, logrando así varios efectos de visualización dinámica, como parpadeo, desplazamiento, escritura, etc. Este método también puede ajustar la velocidad de la visualización dinámica. Al mismo tiempo, los usuarios también pueden obtener una vista previa del efecto de visualización en la PC y el contenido de la visualización también se puede modificar en tiempo real. Además, el control remoto del sistema de visualización también se puede lograr a través del módulo de conversión RS232/485 estándar. 2 Diseño de hardware del sistema El diseño de hardware principal de este sistema es la parte de control de pantalla del microcontrolador inferior de la computadora. La interfaz entre la computadora host (PC) y la parte de control de pantalla del microcontrolador es el método de comunicación estándar RS232. Si necesita realizar monitoreo remoto, solo necesita agregar un módulo de conversión RS232/485. Esta parte tiene un diseño de circuito maduro, por lo que no se describirá en detalle. El circuito de control de pantalla LED específico se muestra en la Figura 1. El circuito completo está compuesto por el microcontrolador 89C52, la memoria de datos de matriz de puntos 6264, el circuito controlador de columna ULN2803, el circuito controlador de fila TIP122, el registro de desplazamiento 4094 y circuitos auxiliares. La pantalla electrónica diseñada por este circuito puede mostrar 10 caracteres chinos y requiere 40 módulos de matriz de puntos LED de 8 × 8 para formar una matriz de puntos rectangular de 16 × 160. Dado que el AT89C52 solo tiene un espacio de almacenamiento de 8k y el contenido mostrado está controlado por la PC, es imposible hacer que el contenido que se mostrará en una matriz de puntos y almacenarlo en el microcontrolador de antemano, pero la PC solo puede convertir instantáneamente el datos de matriz de puntos que se mostrarán. Páselos al microcontrolador y guárdelos en el búfer 6264. La visualización de este circuito adopta el modo de escaneo progresivo. Cuando está en funcionamiento, el microcontrolador extrae del búfer los datos de matriz de puntos de 20 bytes que deben mostrarse en la primera fila y luego los ingresa en serie en el registro de desplazamiento de columna bit a bit a través del puerto de entrada de datos de matriz de puntos de la columna P1. 2, y la entrada de datos El orden es inverso al orden en que se muestra el contenido. Luego configure el terminal estroboscópico de matriz de puntos de fila P1.3 en 1, es decir, configure D del registro de desplazamiento de fila en un nivel alto y se habilita STR (todos los pines 4094 OE están conectados al nivel de +5 V), lo que provoca la pérdida de datos. salen simultáneamente en paralelo para hacer estroboscópica la fila. Después de un período de retraso, se muestra la siguiente línea de datos de matriz de puntos. Cabe señalar que solo se puede seleccionar una línea de datos a la vez, es decir, la visualización de caracteres chinos o caracteres debe realizarse mediante un escaneo continuo línea por línea. 3 Diseño de visualización y control En el sistema de visualización de un solo chip controlado por PC diseñado por el autor, las funciones principales implementadas por la PC incluyen la selección del subsistema de visualización de un solo chip, la selección de modos de visualización (incluidos estático, intermitente , desplazamiento, escritura, etc.), selección de dirección de desplazamiento (incluido desplazamiento hacia arriba y hacia abajo y desplazamiento hacia izquierda y derecha), ajuste dinámico de la velocidad de visualización (es decir, frecuencia de parpadeo del texto, velocidad de desplazamiento, velocidad de visualización de escritura, etc.), visualización de entrada de contenido y mostrar vista previa, etc.

El microcontrolador generalmente recibe las instrucciones de visualización enviadas por la PC a través del puerto serie RS232/485 y utiliza el método de interrupción del temporizador para escanear la línea. Cada interrupción muestra una línea y el tiempo de interrupción temporizado es de 1,25 ms. Toda la pantalla es de 50 Hz, por lo que no hay sensación de parpadeo.

El método para realizar un ajuste dinámico de la velocidad de visualización suele ser cambiar el tiempo de interrupción del temporizador. Sin embargo, cuando la velocidad de visualización es muy lenta, este método puede reducir fácilmente la frecuencia de actualización de toda la pantalla, lo que provoca. el contenido de la pantalla parpadee. Por lo tanto, este diseño adopta un método de "temporización suave", es decir, nombrar una variable en el programa como "temporizador suave" para establecer el intervalo de tiempo entre dos pantallas dinámicas. Al contar las llamadas de interrupción cronometradas, si el número de llamadas alcanza el valor establecido, se cambiará el contenido de la pantalla. Para garantizar una visualización normal, el valor de configuración del "temporizador suave" debe ser mayor que todo el período de visualización de la pantalla. Dado que cada línea de la pantalla muestra 1,25 ms y el período completo de visualización de la pantalla es de 20 ms, considerando el margen, el valor de configuración del temporizador programable se puede establecer en más de 30 ms. Contando de esta manera, se puede lograr una visualización dinámica. El valor de configuración del "temporizador suave" se puede cambiar a través de la computadora host, que no solo puede realizar el ajuste de velocidad de la pantalla dinámica LED, sino también mantener el contenido de la pantalla fluido y sin parpadeos. 3.1 Control de visualización dinámica del microcontrolador Los cuatro modos de visualización mencionados anteriormente, como estático, intermitente, desplazamiento y escritura, son en realidad métodos diferentes de procesamiento de escaneo de línea mediante el programa de interrupción temporizada del microcontrolador. A continuación se explicará cómo implementar estos cuatro métodos de visualización respectivamente. Para la visualización estática, solo necesita cargar la fila correspondiente de datos de visualización desde el búfer de visualización en el controlador de interrupciones temporizadas y luego seleccionar la fila para mostrar la fila. En este bucle, se puede mostrar todo el contenido. La pantalla parpadeante es similar a esta. La diferencia es que hay un intervalo de tiempo de "temporizador suave" durante el escaneo de línea, el extremo D del registro de desplazamiento de línea es todo 0, por lo que no se muestra toda la pantalla para garantizar que El. El tiempo de pantalla negra es igual al tiempo de visualización, logrando así la visualización parpadeante de caracteres o íconos chinos. La visualización con desplazamiento requiere que el contenido que se va a mostrar mueva una columna en una dirección específica (aquí, de derecha a izquierda como ejemplo) a intervalos regulares, para que la visualización pueda mostrar más contenido. Con este fin, es necesario cambiar el contenido del búfer de visualización antes de mover la pantalla la próxima vez para completar la operación de desplazamiento de los datos de matriz de puntos correspondientes. El método de operación específico es: configurar un área de búfer de visualización (como se muestra en la Figura 2). Esta área debe incluir dos partes: una parte se usa para guardar los datos de la matriz de puntos de 10 caracteres chinos que se muestran actualmente en la pantalla LED; es el valor preestablecido de datos de matriz de puntos. El área de carga se utiliza para guardar los datos de matriz de puntos de un carácter chino que está a punto de ingresar a la pantalla LED. El puntero de desplazamiento siempre apunta al origen más a la derecha de la pantalla. Cuando el puntero de desplazamiento se mueve a la primera dirección del primer carácter chino en el área de almacenamiento de datos de matriz de puntos que debe mostrarse, el área de visualización LED del búfer de visualización está en blanco y el área de precarga ha guardado los primeros datos de matriz de puntos del chino. carácter que se va a mostrar. Cuando se requiere visualización con desplazamiento, en cada controlador de interrupción de exploración de línea del siguiente ciclo de exploración, los datos de matriz de puntos de línea correspondientes en el búfer de visualización se pueden desplazar un bit hacia la izquierda y el contenido del búfer de visualización se puede cambiar al mismo tiempo. . (Cabe señalar que es necesario garantizar que esta operación se pueda completar dentro del tiempo de interrupción de 1,25 ms. Aquí 89C52 utiliza un oscilador de cristal de 22 MHz y los experimentos han demostrado que esta operación se puede lograr). De esta manera, después de un ciclo de escaneo, todo el carácter chino se desplazará una columna hacia la izquierda y el contenido del búfer de visualización también cambiará al mismo tiempo. Dado que el área de precarga guarda datos de matriz de puntos de 1 carácter chino, es decir, una matriz de puntos de 16 × 16, el contenido del búfer de visualización actual solo se puede mover en 16 columnas. Cuando llegue el siguiente desplazamiento, el puntero de desplazamiento se moverá a la primera dirección del siguiente carácter chino en el área de almacenamiento de datos de matriz de puntos, y los datos de matriz de puntos de este carácter chino se almacenarán en el área de precarga. Luego repita las operaciones anteriores para lograr una visualización con desplazamiento. La visualización de caracteres especiales o gráficos es similar a ésta y no se describirá nuevamente aquí.

La visualización de escritura requiere que los caracteres chinos aparezcan uno por uno en la pantalla en orden de izquierda a derecha, al igual que el efecto de escribir. Se puede utilizar el siguiente método al diseñar: primero, borre todos los búferes de visualización correspondientes a la pantalla LED, es decir, la pantalla LED está en blanco, y luego agregue un punto de carácter chino al búfer de visualización en cada intervalo de un conjunto de tiempo de visualización dinámica Utilice el "temporizador suave" para ordenar los datos y escanearlos y mostrarlos, de modo que se pueda lograr el efecto de visualización de escritura.

3.2 Programa de control de PC a. Implementación de la función de comunicación En el entorno Windows, la comunicación entre la PC y el microcontrolador se puede realizar utilizando la función API de comunicación de Windows o las funciones de comunicación estándar _inp y _outp de VC++ (u otros lenguajes). Sin embargo, los dos métodos anteriores son relativamente engorrosos y es muy conveniente utilizar el control ActiveX MSComm32 para implementarlos. Este control simplifica la programación de las operaciones del puerto serie en forma de eventos y puede configurar el envío y recepción de datos de la comunicación serie. También puede configurar el estado del puerto serie y el formato de información y protocolo de la comunicación del puerto serie. El procedimiento de inicialización es el siguiente: En circunstancias normales, la PC necesita comunicarse con múltiples sistemas de microcontrolador 89C51 de manera maestro-esclavo. Para distinguir cada sistema de microcontrolador, el 89C51 puede usar el modo de trabajo del puerto serie 3, es decir, el modo de recepción/transmisión asíncrona de 11 bits Los datos válidos son 9 bits, de los cuales el noveno bit es el bit de bandera de la información de dirección/datos. Su función es permitir que el esclavo juzgue si los datos enviados son una dirección. logrando así el funcionamiento de varias máquinas. Pero ahora el control MSCOMM se utiliza para realizar la comunicación entre la PC y el microcontrolador. Este es un método de comunicación en serie estándar de 10 bits, es decir, 8 bits de datos estándar y 1 bit de inicio y bit de parada. Por lo tanto, los dos formatos no coinciden, por lo que es difícil utilizar la solución anterior. Por lo tanto, puede considerar configurar el puerto serie del microcontrolador en el modo de trabajo 1, es decir, cambiarlo al modo de recepción/transmisión asíncrona de 10 bits. El proceso de comunicación es el siguiente: primero, envíe el indicador de inicio de comunicación y luego envíe el sistema del microcontrolador. dirección que necesita ser operada, y luego envíe el comando de trabajo de visualización Word, este comando incluye 2 bytes, el primer byte se usa para configurar el modo de visualización y la dirección de desplazamiento, y el último byte se usa para configurar la velocidad de visualización. A continuación, se transmiten los datos de matriz de puntos del contenido de la pantalla y finalmente se verifican los datos. Este protocolo de comunicación es muy simple y puede resolver mejor los problemas anteriores, logrando así la comunicación maestro-esclavo y el control de visualización entre la PC y múltiples microcontroladores. Cabe señalar que cuando es necesario cambiar el contenido de la pantalla, para evitar caracteres confusos en la pantalla cuando el microcontrolador en serie interrumpe la recepción de datos, la pantalla no debe mostrarse temporalmente (en un estado de "pantalla negra") hasta los datos se reciben completamente y la serie se muestra nuevamente después de que se completa el procesamiento de la interrupción. La extracción de fuentes de caracteres chinos es muy crítica. Los datos de fuentes de este artículo se toman del archivo de fuentes HZK16 en UCDOS. Hay muchas introducciones sobre este aspecto y la literatura [2] ofrece una solución más específica para extraer plantillas de caracteres chinos en VC, que no se describirá nuevamente aquí. Para la extracción de caracteres especiales o datos de redes gráficas, un método simple puede ser crear primero un archivo BMP y luego usar algún software de modelado (como extracción de fuentes v2.1) para obtenerlo. Para facilitar la visualización, el formato de los datos de la matriz de puntos debe ser n × (16 × 8). Si es insuficiente, debe complementarse con 0 datos. b. Visualización de simulación de efectos dinámicos Para facilitar el ajuste del efecto de visualización LED, el autor diseñó una visualización de simulación de la pantalla LED en la interfaz de control de la PC, que es exactamente la misma que el efecto de visualización real. Los usuarios pueden configurar el modo de visualización y ajustar la velocidad de visualización, y luego obtener una vista previa del efecto de visualización en la interfaz. También pueden modificar y configurar parámetros en cualquier momento, por lo que es muy conveniente y simple. Para hacer esto, primero puede dibujar una pantalla LED virtual en la interfaz. Dado que la pantalla real es una matriz de puntos de 160 × 16, se debe configurar la misma área en la interfaz. Los métodos para lograr efectos de visualización dinámica son básicamente similares a los anteriores. Aquí tomamos la visualización con desplazamiento como ejemplo para su explicación. Para el texto que necesita desplazarse, puede configurarlo en un formato de mapa de bits, almacenarlo temporalmente en la memoria y luego usar la función de copia de mapa de bits BitBlt proporcionada por VC para copiar el mapa de bits a la posición de visualización. Para caracteres o gráficos especiales, puede usar directamente la función BitBlt para llamar a la posición de visualización. Luego llame a esta función en la función OnTimer de la clase CLEDDlg para realizar la visualización de desplazamiento de texto. Además, también puedes cambiar la velocidad de desplazamiento del texto configurando diferentes intervalos de tiempo de respuesta.

Las pantallas de visualización de caracteres chinos se utilizan ampliamente en locutores de paradas de automóviles, pantallas publicitarias, etc. Este artículo presenta la producción de una práctica pantalla de visualización de caracteres chinos. Teniendo en cuenta la facilidad de compra de los componentes del circuito, no se utiliza el módulo de tubo emisor de luz de matriz de puntos, sino que se utilizan 256 tubos emisores de luz de alta densidad. Se utiliza directamente para formar 16 filas de 16 columnas de celosía brillante. Al mismo tiempo, para reducir la dificultad de producción, solo se muestra una palabra por turno. En el uso real, el número de palabras mostradas se puede ampliar de acuerdo con este principio.

1 Principio de visualización de caracteres chinos:

Tomamos como ejemplo la biblioteca de fuentes UCDOS Chinese Song Dynasty. Cada carácter se muestra mediante una matriz de puntos de 16 filas y 16 columnas. Es decir, cada carácter de la biblioteca de caracteres chinos estándar nacional está representado por una matriz de 256 puntos. Podemos entender cada punto como un píxel y el glifo de cada palabra como una imagen. De hecho, esta pantalla de caracteres chinos no sólo puede mostrar caracteres chinos, sino también cualquier gráfico dentro del rango de 256 píxeles.

Está controlado por un microcontrolador AT89C51 de 8 bits. Dado que el bus del microcontrolador es de 8 bits, una palabra debe dividirse en 2 partes.

Después de abrir el software, ingrese los caracteres chinos y haga clic en "Recuperar". El código de caracteres chinos de los datos hexadecimales se generará automáticamente. Simplemente copie los datos verticales que necesitamos en nuestro programa. Conectamos el bus de fila y columna al puerto i0 del microcontrolador y luego enviamos el código de escaneo analizado anteriormente al bus, y luego podemos obtener los caracteres chinos mostrados. En este ejemplo, dado que un terminal usa 16 filas y 16 columnas, si todas están conectadas al microcontrolador 89c51, un terminal usará 32 puertos IO, lo que provocará una escasez de recursos IO. el sistema está agotado, no hay espacio para la expansión del sistema. En aplicaciones prácticas, utilizamos el decodificador de 4-16 líneas 74ls154 para completar la visualización en la dirección de la columna. Las 16 líneas en la dirección de la fila están conectadas al puerto p0 y al puerto p2.

Lista de programas:

ORG? 00H

LOOP: MOV A, #0FFH; inicialización de arranque, borrar pantalla

MOV P0, A; Borrar puerto P0 ANL P2,#00?; Borrar puerto P2

MOV R2,#200?

D100MS: MOV R3,#250; Retraso 100 milisegundos DJNZ R3, $ DJNZ R2,D100MS

?MOV 20H,#00H; Valor inicial del puntero de código

l100: MOV R1,#100; >L16: MOV R6, #16; 16 códigos por palabra MOV R4, #00H; puntero de escaneo borrado MOV R0, 20H; puntero de código almacenado en R0

L3: MOV A, R4?; se almacena en A MOV P1,A?; Salida de escaneo INC R4? El puntero de escaneo se incrementa en 1 y escanea el siguiente MOV A,R0? El puntero de adquisición de código se almacena en A

MOV DPTR; , #TABLE ; Obtener el código en la mitad superior de la tabla de datos MOVC A,@A+DPTR MOV P0,A ; Salida a P0 INC R0 ;

MOV A,R0 MOV DPTR,#TABLE; Obtiene el código en la mitad inferior de la tabla de datos MOVC A,@A+DPTR MOV P2,A?; Salida al puerto P2 INC R0

MOV R3 ,#02 ;Escanear 1 milisegundo

DELAY2:? MOV R5,#248 ; DJNZ R5,$ DJNZ R3,DELAY2 MOV A,#00H ;Borrar pantalla MOV P0,A ANL P2,#00H DJNZ R6 ,L3? ;¿Se han completado 16 códigos para una palabra? DJNZ R1,L16?; ¿Ha expirado el tiempo de permanencia de cada palabra? MOV 20H,R0?; El puntero de adquisición de código se almacena en 20H

CJNE R0,#0FFH,L100; ¿Se han completado 8 palabras y 256 códigos? JMP LOOP; bucle repetido TABLA:

; El código del carácter chino " lean"

db 01H, 00H, 02H, 00H, 04H, 00H, 1FH, 0FFH

db 0E2H,00H,22H,00H,22H,0FCH,26H,88H

db 2AH,88H,0F2H,88H,2AH,0FAH,26H,01H

db 63H, 0FEH, 26H, 00H, 02H, 00H, 00H, 00H

; Ingrese los códigos de Tian, ​​​​Yi, Chu, Bao, Dao, Tu, Dragon respectivamente, que se omiten.

Fin En el circuito, la dirección de la fila es escaneada por el puerto p0 y el puerto p2. Dado que el puerto p0 no tiene resistencia pull-up, se conecta una resistencia pull-up de 4.7k*8. Si no hay exclusión, también puedes usar 8 resistencias ordinarias de 4,7k y 1/8w. Para proporcionar capacidad de carga, se conectan 16 controladores de transistores NPN de 2n5551.

La dirección de la columna es escaneada por el decodificador 4-16 74LS154, que está controlado por P1.0---P1.3 de 89C51. Asimismo, la parte motriz se completa con 16 transistores 2N5401.

La fuente de alimentación del circuito es un regulador de voltaje de tres terminales LM7805 y el consumo de energía es de aproximadamente 100 Ma.

Al utilizar una placa de circuito universal de 12*20 cm, se deben utilizar tubos emisores de luz de mejor calidad (de lo contrario, habrá píxeles defectuosos, que serán problemáticos de reemplazar. Primero inserte los 256 tubos emisores de luz). la placa de circuito, prestando atención a la dirección de inserción, y haga que la altura sea consistente al mismo tiempo, suéldelas directamente en la dirección de la fila y puentee y suelde por encima en la dirección de la columna. Después de completar, use un multímetro para probar y. reemplácelos si no están brillantes.

Luego busque una línea de datos del disco duro de la computadora, córtela a la longitud requerida y lleve las líneas de fila y columna a los pines relevantes del circuito. Para simplificar, en el diagrama esquemático solo se dibujan 2 triodos en la dirección de fila y fila, y solo se dibujan 4 tubos luminosos en la pantalla. De hecho, hay 256 tubos luminosos, 16. triodos en cada fila y dirección de fila, uno*** 32. El proceso de soldadura es cuidadoso y toda la producción se puede completar en un día. Compile el programa y grábelo en 89c51, insértelo en el zócalo IC de 40 pines y verá en la pantalla: "Eitian usa su espada para matar al dragón".

Por supuesto, puedes reemplazar la parte del código de caracteres chinos del programa con el código que necesitas para mostrar los caracteres chinos que necesitas

Lista de componentes:

Nombre Especificación de cantidad

Resistencia 4,7k 1/8w 32

Resistencia 4,7k*8 1?

2n5551 16 transistor NPN de baja potencia

2n5401 16 transistor PNP bajo consumo

led 256 3mm pelo blanco rojo alto brillo

22P 2 condensador cerámico

10uf/50v 1 condensador electrolítico

Condensador electrolítico 100uf/25v 2

AT89C51 1 o AT89S51

Toma Ic de 40 pines 1 para 89c51

12M 1 cristal

74LS154 1 o 74HC154

LM7805 1 IC estabilizador de voltaje

Toma de corriente 1?

Fuente de alimentación estabilizada 1