Buscando el principio del menú multinivel del microcontrolador + LCD
La verdad es que nunca lo he hecho, ¡así que no sé si te será útil!
Tome el microcontrolador 8031 que controla la pantalla LCD MGLS-240128 como ejemplo para presentar el método de uso de la biblioteca de caracteres chinos (HzK16) en CCDOS para realizar una visualización del menú de caracteres chinos de varios niveles. Cuando cambia el contenido de la pantalla, no es necesario cambiar el programa, simplemente cambie los parámetros del menú para mostrar.
Palabras clave: LCD; MGLS-240128; biblioteca de caracteres chinos; menú de varios niveles
1. Introducción
Las pantallas pequeñas de uso común incluyen LCD y LED. La pantalla LED solo puede mostrar números y una cantidad limitada de caracteres en inglés, pero no puede mostrar caracteres chinos. El contenido de la pantalla no es intuitivo y el operador solo puede entender el contenido de la pantalla de acuerdo con el formato acordado. La pantalla LCD puede mostrar varios caracteres y gráficos chinos, puede visualizar el menú chino, es fácil de operar y tiene un bajo consumo de energía. Por lo tanto, la pantalla LCD se utiliza ampliamente. Cuando se muestran caracteres chinos en una pantalla LCD, generalmente se utilizan modelos de caracteres chinos hechos por usted mismo y codificación de caracteres chinos. Cuando hay mucho contenido de visualización, la capacidad de la biblioteca de fuentes es muy grande y la codificación de caracteres chinos también es difícil de recordar. lo que dificulta la programación cuando cambia el contenido de la pantalla, la biblioteca de fuentes también Para realizar los cambios correspondientes, la carga de trabajo es pesada. A continuación se muestra un método para utilizar directamente la biblioteca de caracteres chinos (HZK16) en CCDOS para mostrar menús de varios niveles de caracteres chinos. El HZK16 y el contenido del menú están solidificados en EPROM, lo que permite realizar de manera conveniente la visualización de menús de caracteres chinos de varios niveles y aprovechar al máximo las ventajas de la pantalla LCD.
2. Introducción al módulo de visualización y circuito de interfaz MGLS-240128
El módulo de visualización utilizado en este artículo es MGLS-240128. Su número de matriz de puntos es 240 × 128. muestra 16×16 Los caracteres chinos de matriz de puntos pueden mostrar 8 líneas, cada línea tiene 15 caracteres. El módulo MGLS-240128 tiene un controlador HD61830 incorporado. El diagrama de bloques eléctricos del módulo se muestra en la Figura 1.
A veces, en la visualización del menú, se muestran muchas páginas. Para facilitar el posicionamiento en EPROM, al editar el menú en la computadora, se debe agregar pxx antes de cada página del menú: p representa el comienzo de una página, xx es el número de serie de la página y dos puntos representan el siguiente contenido de la página. . Presione Entrar para pasar a la siguiente línea e ingresar al estado de edición en chino para ingresar el contenido que debe mostrarse. Cada página está dividida en 8 líneas, cada línea contiene 15 caracteres chinos o caracteres (incluidos los espacios). En el archivo editado, hay caracteres de retorno de carro y avance de línea al final de cada línea. De esta manera, en cada página del menú, pxx se almacena en forma de código ASCII y cada carácter chino se almacena en forma de código interno de la máquina. Cada código interno de la máquina ocupa dos bytes. Hay un retorno de carro y un avance de línea al final de cada línea. ***Hay 9 líneas. De esta forma, la longitud de cada página es 4+8×15×2×+9×2=262 bytes. Si una página tiene 40 páginas, el requisito de memoria es: 40×262=10480 bytes. La Figura 2 ofrece un ejemplo de un menú. El estándar nacional GB2312-80 divide los caracteres chinos en 94 áreas, cada área tiene 94 caracteres. Entre ellos, las áreas 1 a 15 son símbolos gráficos y letras, y las áreas 16 a 55 son caracteres chinos de primer nivel, con un total de 3755. Para una visualización general, las primeras 55 áreas son suficientes. En HZK16, cada carácter ocupa 32 bytes, lo que requiere 32 × 55 × 94 = 165440 bytes.
Para almacenar fuentes de caracteres chinos y mostrar contenido, se requieren aproximadamente 180 kbytes de memoria y se puede seleccionar un 27020. El diagrama esquemático del hardware se muestra en la Figura 3. En aras de la simplicidad, solo la tecla de movimiento del cursor, la tecla Intro y la tecla Retorno se dibujan como referencia durante la operación. La ROM en la imagen está dividida en dos partes, una parte es 2764, que contiene el programa de usuario, y la otra parte es 27020, que contiene la biblioteca de fuentes y el menú. Debido a que el programa debe comenzar a ejecutarse desde 0000H, el espacio de direcciones de. 2764 es 0000H ~ 1FFFH y el espacio de direcciones de 27020 es 8000H ~FFFFH.
3. Utilice la biblioteca de caracteres chinos en CCDOS para mostrar caracteres chinos.
En el sistema de caracteres chinos de la computadora, el código interno de cada carácter chino es una codificación de dos bytes, con el La posición más alta del byte es 1, mientras que ASCII El código es un código de 7 bits, siendo el bit más alto 0. Por lo tanto, puede determinar si es un carácter chino o un código ASCII en función de si el valor del carácter es mayor o menor que 128. El código de dirección de caracteres chinos se refiere a la codificación de la dirección lógica donde se almacena cierta información de glifos de caracteres chinos en una biblioteca de caracteres chinos. Código de dirección = [(Primer byte del código interno - AIH) × 94 + (Segundo byte del código interno - AIH)] × 32.
27020 se divide en 8 áreas, cada área ocupa 32k bytes.
Las fuentes de caracteres chinos se almacenan en las áreas 0 a 6, mientras que los menús se almacenan en el área 7 y la selección se realiza a través del puerto P1. Por lo tanto, para encontrar la información de fuente de un carácter chino, primero debe determinar el número de áreas en las que se encuentra el carácter chino y luego determinar la dirección (dirección de fuente) en esta área; Número de área = código de dirección/32768. Dirección de fuente = (resto del código de dirección/32768) × 32 + 8000H. Por ejemplo, el código interno de la máquina del carácter chino "Tang" es CCC6H y el código de dirección = [(CCH-AIH) × 94 + (C6H - AIH)] × 32 = 4079 × 32. Número de área = cociente de 4079×32/32768 = 4, dirección de fuente = (resto de 4079×32/32768) × 32 + 8000 = 83E0H.
Dado que hay muchos artículos introductorios sobre cómo mostrar un carácter chino en modo gráfico y los métodos son similares, aquí no se presentará en detalle el proceso de visualización de un carácter chino. Como se muestra en la Figura 4.
4. Cómo mostrar un menú de una página
Al mostrar caracteres chinos en una matriz de puntos de 16×16, la pantalla de visualización se divide en cuadrados de 8×15. Cada página de menú también tiene 8×15 caracteres, dispuestos en el mismo formato, por lo que cada carácter se puede colocar en un cuadrado. Si las coordenadas de los caracteres en el menú de cada página están marcadas con x, y, significa que el carácter está ubicado en el cuadrado de la fila x y la columna y de la pantalla de visualización. El origen de las coordenadas está en la esquina superior izquierda. El diagrama de flujo de visualización de un menú de una página se muestra en la Figura 5.
5. Visualización del menú de varios niveles
Al visualizar el menú, debe colocar el cursor en el menú y en el número de la primera opción. Cuando desee seleccionar otros elementos, presione la tecla de movimiento del cursor, coloque el cursor en el número de la opción a seleccionar y luego presione la tecla Enter para ingresar al menú del siguiente nivel. Cuando quieras volver al menú anterior, simplemente presiona la tecla de retorno. Para cumplir con los requisitos anteriores, primero debemos crear una tabla (tabla de menú) para cada página de menús. El contenido de la tabla (es decir, parámetros de menú) es el siguiente: El primer byte contiene el número de opciones de menú en este. página. Luego coloque las coordenadas x, y de cada número de opción en la pantalla y la primera dirección del menú correspondiente a la opción en EPROM. De esta manera, cada opción ocupa cuatro bytes y los dos últimos bytes se colocan en la primera dirección del menú de nivel superior en la EPROM. Para que sea más fácil de encontrar, cada tabla debe tener la misma longitud, al menos igual a la longitud de la tabla requerida para la página del menú con la mayor cantidad de opciones. Si hay un máximo de 8 opciones, la longitud de la cuadrícula = 1 + 8 × 4 + 2 = 35. Si el menú de una determinada página no tiene opciones, excepto los dos últimos bytes de la tabla, que se rellenan con la dirección del menú de nivel superior, complete 0 en el resto. Junte todas las tablas en orden de números de página para formar una tabla total. La primera dirección se llama dirección base de la tabla. Establezca un contador de opciones para cada nivel de menú del programa. El valor inicial es 0. Cada vez que se presiona la tecla de movimiento del cursor, el contador de opciones aumenta en 1. Los caracteres chinos en el cursor están resaltados (caracteres blancos sobre fondo negro). Generalmente, los caracteres chinos son caracteres negros sobre fondo blanco. El proceso de implementación es el siguiente: Calcule la posición de la fuente del carácter en el búfer de visualización (DDRAM) a partir de los valores x e y del carácter a resaltar, lea la fuente de DDRAM, resalte y envíela. volver a la ubicación original.
La subrutina de visualización del cursor se muestra en la Figura 6 y la subrutina de procesamiento de claves se muestra en la Figura 7.
6. Conclusión
Cuando se utiliza esta tecnología para mostrar menús de varios niveles en el trabajo real, debido a una programación simple y conveniente, se evita el complicado trabajo de las bibliotecas de caracteres chinos de fabricación propia. . Y todo el programa se puede utilizar como un módulo, y se pueden mostrar menús con diversos contenidos simplemente cambiando el contenido de la tabla de menú (es decir, los parámetros del menú). Para una operación más conveniente, se puede agregar una tecla de cursor hacia arriba. Cuando el menú final tiene varias páginas, se pueden agregar claves para pasar de página.