Red de conocimiento informático - Espacio del host - Tengo un módulo LCD 12864. ¿Cómo utilizar el módulo LCD 12864?

Tengo un módulo LCD 12864. ¿Cómo utilizar el módulo LCD 12864?

Nota al comienzo del artículo: este artículo es solo una introducción detallada al funcionamiento de 12864 y es solo para referencia de los principiantes que son nuevos en 12864. Por favor, dame el visto bueno, el artículo ya no existe. Se recomienda que los principiantes consulten el manual de 12864 y el manual en inglés del controlador de control ST7920. Después de una comprensión preliminar, lea el artículo para tener una comprensión más profunda. ¡Se recomienda encarecidamente leer atentamente el manual en inglés del ST7920! Hay una introducción detallada en los detalles, y la mayor parte del chino 12864 está traducido de ella.

Este artículo presenta los principios de recursos internos de 12864 en tres pasos, una descripción detallada del conjunto de instrucciones y ejemplos de aplicación.

12864 tiene cuatro operaciones:

1), lectura en estado ocupado (el contenido de la dirección del puntero se leerá al mismo tiempo), después de cada inicialización, la lectura y escritura de 12864 debe detectarse ocupado.

2) Escribir comandos: todos los comandos se pueden ver en la lista de comandos. El uso detallado de los comandos se explicará más adelante. Escribir una dirección también es una instrucción de escritura.

3) Escribir datos: Los objetos de operación son DDRAM, CGRAM y GDRAM.

4) Leer datos: Los objetos de operación también son DDRAM, CGRAM y GDRAM.

Para aprender 12864, primero debes comprender sus recursos internos y saber qué hay dentro para poder usarlo de manera más conveniente.

Permítanme presentarles brevemente algunos nombres en inglés:

DDRAM: (RAM de visualización de datos), RAM de visualización de datos. Si escribe algo en él, se mostrará algo en la pantalla.

CG CGROM: ​​(ROM de generación de caracteres), ROM de generación de caracteres. Existe una fuente que almacena caracteres chinos, también llamada fuente de caracteres chinos. Los métodos de codificación son GB2312 (chino simplificado) y BIG5 (chino tradicional). El autor utiliza como ejemplo el QC12864B de Songyu Electronics.

CG CGRAM: (RAM de generación de caracteres), 12864 proporciona un CGRAM de 64×2B internamente, que se puede utilizar para 16×16 cuatro caracteres definidos por el usuario, cada carácter ocupa 32 bytes.

GdRAM: (RAM de visualización de gráficos): RAM de visualización de gráficos, esta área se utiliza para dibujar. Asimismo, lo que esté escrito en su interior también se mostrará en pantalla. La diferencia entre este y DDRAM es que los datos escritos en DDRAM están codificados por caracteres, y la visualización de caracteres se encuentra primero en CGROM y luego se asigna a la pantalla. Al escribir datos en GD RAM, la información de red del gráfico es 65438.

Hcg rom: (ROM de generación de caracteres de media altura): Generador de caracteres de medio ancho, que es alfanumérico, es decir, código ASCII.

En cuanto a ICON RAM (IRAM): el 12864 en el mercado no parece tener esta función y el autor no ha encontrado la información de su aplicación, por lo que no la presentaré aquí.

Reimpreso en el módulo LCD 12864:/

Centrémonos en los recursos enumerados anteriormente para explicar 12864:

DDRAM:

El 12864 utilizado por el autor tiene 4 filas × 32 bytes de espacio DDRAM en su interior. Pero en cierto punto, la pantalla solo puede mostrar 2 líneas × 32 bytes de espacio, entonces, ¿qué pasa con el espacio restante? Se pueden utilizar para el almacenamiento en caché y estos espacios pueden resultar útiles al implementar pantallas de desplazamiento.

La estructura de DDRAM es la siguiente:

80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH

90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H, 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH

A0H, A1H, A2H, A3H, A4H, A5H, A6H, A7H, A8H, A9H, AAH, ABH, ACH, ADH, AEH, AFH

B0H, B1H, B2H, B3H, B4H, B5H, B6H, B7H, B8H, B9H, BAH, BBH, BCH, BDH, BEH, BFH

La relación correspondiente entre la dirección y la visualización en pantalla es la siguiente:

Primera línea: 80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H.

Segunda línea: 90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H.

La tercera línea: 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH.

La cuarta fila: 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH.

Nota: Los datos en rojo se muestran en la pantalla superior y los datos en verde en la pantalla inferior. Generalmente, utilizamos el espacio en las dos líneas anteriores para mostrar caracteres, es decir, 80H~8FH y 90H~9FH. El espacio de cada dirección es de 2 bytes, que es 1 palabra, por lo que el espacio total que puede utilizar para almacenar códigos de caracteres es de 128 bytes. Debido a que la codificación de cada carácter chino es de 2 bytes, cada dirección requiere 2 bytes para almacenar un carácter chino. Por supuesto, también puede utilizar estos dos bytes solos, es decir, mostrar dos caracteres de medio ancho.

Los datos almacenados en DDRAM son todos códigos de caracteres. Los códigos que se pueden escribir incluyen el código ASCII, el código GB2312 y el código BIG5. La fuente 12864 utilizada por el autor parece estar incompleta y no se puede mostrar la cantidad de caracteres, pero se muestran otros caracteres. Si muestra un artículo muy extenso en caracteres chinos, Ventajas no será adecuado.

Lectura y escritura de datos DDRAM:

Toda lectura y escritura de datos debe enviar primero la dirección y luego leer y escribir. Al escribir datos en DDRAM, asegúrese de que estén bajo el conjunto de instrucciones básicas (ábralo con la instrucción 0x30), luego escriba la dirección y luego escriba dos bytes de datos continuamente. Al leer datos, primero escriba la dirección en el conjunto de instrucciones básicas, luego pseudoléala nuevamente y luego lea dos bytes de datos continuamente. Después de leer, el puntero de dirección aumentará automáticamente en uno y saltará a la siguiente palabra. Si necesita leer el contenido de la siguiente palabra, simplemente lea dos bytes de datos continuamente. Lo que hay que señalar aquí es una lectura falsa. Lea no sólo CGRAM, sino también otros GDRAM y DDRAM. La lectura posterior es una lectura real. La lectura falsa consiste en leer datos una vez pero no almacenarlos. Es decir, los primeros datos leídos después de enviar la dirección son incorrectos y los datos posteriores son correctos. (La pronunciación ficticia es falsa)

Acerca del almacenamiento de códigos en DDRAM, es necesario explicar los siguientes puntos:

1), cada unidad de operación de DDRAM es una palabra, es decir es decir, dos bytes. Al escribir datos en DDRAM, primero debe escribir la dirección y luego enviar dos bytes de datos continuamente, enviando primero los datos del byte alto y luego los datos del byte bajo. Lo mismo ocurre al leer datos. Primero escriba la dirección, luego lea los datos de bytes altos y luego lea los datos de bytes bajos (primero preste atención a las lecturas falsas).

2) Cuando se muestran caracteres de ancho medio del código ASCII, envíe 2 bytes de código ASCII a cada dirección. Se mostrarán dos caracteres de ancho medio en la posición correspondiente en la pantalla, con los caracteres de byte alto activados. los caracteres de la izquierda y de byte bajo a la derecha.

3) Al mostrar caracteres chinos, los dos bytes de codificación de caracteres chinos deben almacenarse en el mismo espacio de direcciones y no se pueden almacenar en dos direcciones por separado; de lo contrario, no se mostrarán los caracteres que desea. Los dos bytes de cada palabra se combinan automáticamente para encontrar la fuente y mostrar el carácter. Por tanto, si escribimos el código de 2 bytes de un carácter chino en la dirección, el carácter se mostrará correctamente. El código de byte alto se almacena en el byte bajo de la dirección anterior y el código de byte bajo se almacena en el byte alto de la dirección posterior. Al parecer no combinan búsquedas de fuentes, sino los bytes correspondientes a cada dirección para encontrar la fuente.

4) Dado que el controlador ST7920 proporciona cuatro caracteres personalizados, estos cuatro caracteres personalizados también se pueden mostrar en su totalidad. De manera similar, estos cuatro caracteres personalizados también tienen codificaciones, pero las codificaciones de estos cuatro caracteres son fijas, que son 0000h, 0002h, 0004h y 0006h. Como se muestra en la siguiente figura:

La figura anterior solo dibuja 2 caracteres del espacio CGRAM, y habrá 2 caracteres en el futuro. Se puede ver que cada carácter tiene 16 filas y 16 columnas, y cada fila usa 2 bytes, por lo que el espacio ocupado por un carácter es de 32 bytes y la dirección es de 6 bits. Las direcciones de cuatro caracteres son: 00H~0FH, 10H~1FH, 20H~2FH, 30h. La codificación usa 2 bytes. Se puede ver que 2 bits son arbitrarios, lo que significa que estos 4 caracteres pueden tener múltiples codificaciones, pero a menudo usamos las cuatro codificaciones enumeradas anteriormente.

CGRAM: (lectura y escritura de datos)

La estructura de CGRAM se muestra en la figura anterior. Aquí hay algunos contenidos adicionales sobre lectura y escritura de CGRAM. La dirección debe escribirse antes de leer y escribir. La instrucción para escribir CGRAM es 0x4dirección. Pero al escribir la dirección, solo necesitamos escribir la dirección de la primera línea, por ejemplo, el primer carácter es 0x40 + 00H, y luego escribir dos bytes de datos continuamente, y luego el puntero de dirección aumentará automáticamente en uno y saltará. a la siguiente línea y luego escriba dos bytes de datos. De hecho, la implementación de la programación consiste en escribir primero la dirección y luego escribir 32 bytes de datos continuamente. Para leer datos, escriba primero la primera dirección, luego léala una vez y luego lea 32 bytes de datos continuamente.

GDRAM: (RAM de visualización de dibujo)

La estructura espacial de la memoria de dibujo se muestra en la siguiente figura:

Estas son celosías. La RAM de dibujo establece 1 o 0 para estos puntos. Como puede ver, originalmente tiene 32 filas × 256 columnas, pero está dividida en dos pantallas, superior e inferior, y cada punto corresponde a un punto de la pantalla. Para utilizar la función de dibujo, debe abrir el comando de extensión. Luego escriba la dirección, luego lea y escriba los datos.

Lectura y escritura de GDRAM:

En primer lugar, es necesario explicar que la unidad operativa básica en GDRAM es una palabra, es decir, dos bytes. Para leer y escribir GDRAM, se deben leer y escribir al menos dos bytes a la vez.

Escribir datos: primero abra el conjunto de instrucciones extendido (0x36) y luego envíe la dirección. La dirección aquí es ligeramente diferente a la de DDRAM. Solo hay una dirección en DDRAM, que es la palabra dirección. GDRAM tiene solo dos direcciones, a saber, dirección de palabra (dirección de columna/dirección horizontal X) y dirección de bits (dirección de fila/dirección vertical Y). En la imagen de arriba, las direcciones verticales son 00H~31H y las direcciones horizontales son 00H~15H. Al escribir una dirección, escriba primero la dirección vertical (dirección de fila) y luego la dirección horizontal (dirección de columna). Como se muestra en la figura, el byte alto está a la izquierda y el byte bajo a la derecha. Los puntos con 1 están sombreados, los puntos con 0 se muestran en blanco. Aquí hay un ejemplo de cómo escribir una dirección: el comando de dirección de GDRAM es 0x8. Las direcciones agregadas son X e Y enumeradas anteriormente. Supongamos que queremos escribir los dos bytes de la primera fila, luego la dirección de escritura es 0x00H (dirección de fila de escritura) y luego 0x80H (dirección de columna), y luego escribir dos bytes de datos continuamente (primero el byte alto y luego el byte bajo). Otro ejemplo es escribir dos bytes en la esquina inferior derecha de la pantalla, primero escribir la dirección de fila 0x9F (0x832), luego escribir la dirección de columna 0x8F (0x815) y luego escribir dos bytes de datos continuamente. En programación, el parámetro (0x+32) se usa directamente en la función de dirección y no es necesario agregarlo por separado.

Leer datos: primero abra el conjunto de instrucciones extendido, luego escriba la dirección de fila y la dirección de columna, realice una lectura de error y luego lea 2 bytes de datos continuamente (primero el byte alto, luego el byte bajo).

Tiempo de lectura y escritura:

El diagrama de tiempo de lectura y escritura es el siguiente: (la imagen superior está escribiendo, la imagen inferior está leyendo)

El Los pines de señal en el diagrama de sincronización son Los pines principales de 12864 son:

RS: terminal de selección de registro de comando/datos

WR: terminal de control de lectura y escritura.

e: Habilitar terminal

DB7~DB0: Terminal de datos

Todas las operaciones en 12864 básicamente giran en torno a unos pocos pines. Incluyendo comandos de escritura, escritura de datos, lectura de datos y estado de lectura, se logra haciendo coincidir el nivel alto y bajo de estos pines.

Según el diagrama de tiempos, se pueden escribir la función de comando de escritura, la función de escritura de datos, la función de lectura de datos y la función de estado de lectura correspondientes. Cabe señalar que el tiempo Tc cuando aparecen datos válidos debe ser apropiado y no puede ser demasiado corto, de lo contrario fallará la lectura y la escritura.

Da algunos ejemplos de funciones:

//Detección de ocupado, si está ocupado, espera, el tiempo máximo de espera es de 60 ms.

void togetherchk_12864(void){

Tiempo de espera de entero sin signo = 0;

e _ 12864 = 0

RS _ 12864 =; 0;

RW _ 12864 = 1;

e _ 12864 = 1;

mientras((IO _ 12864 & 0x 80); & amp++ tiempo de espera ! = 0); //Detección de estado ocupado, tiempo de espera de 60 ms.

e _ 12864 = 0;

}

//Escribir subrutina de comando

void wrt com _ 12864(unsigned char com ) {

ocupado chk _ 12864();

e _ 12864 = 0;

RS _ 12864 = 0

RW _ 12864 = 0;

IO _ 12864 = com;

e _ 12864 = 1;

retraso _ 12864(50); //50us habilitan retraso! ! ! Tenga en cuenta aquí que si se trata de una CPU más rápida, el retraso debería ser mayor.

e _ 12864 = 0;

}

//Leer subrutina de datos

Carácter sin firmar reddat_12864(void){

Temperatura de carácter sin firmar;

busy chk _ 12864();

e _ 12864 = 0;

IO _ 12864 = 0x ff; /Puerto IO establecido en nivel alto, pin de lectura

RS_12864 = 1;

RW_12864 = 1;

e _ 12864 = 1; >retraso _ 12864(50); //¡Habilitar retraso! ! ! Tenga en cuenta aquí que si se trata de una CPU más rápida, el retraso debería ser mayor.

temp = IO _ 12864

Temperatura de retorno;

}

//Escribir subrutina de datos

void wrtdat_12864(datos de caracteres sin firmar){

busy chk _ 12864();

e _ 12864 = 0

RS _ 12864 = 1; p>

RW _ 12864 = 0;

e _ 12864 = 1;

IO _ 12864 = dat;

retraso _ 12864( 50) ; //¡Habilitar retraso! ! ! Tenga en cuenta aquí que si se trata de una CPU más rápida, el retraso debería ser mayor.

e _ 12864 = 0;

}

Entre ellos, la detección de ocupado es necesaria. Cuando BF = 1, significa que las operaciones relevantes se están realizando internamente, es decir, está ocupado. El ST7920 no aceptará ninguna instrucción hasta que BF vuelva a 0. Antes de enviar una instrucción, la MCU debe detectar BF para determinar si se ha completado la operación interna del ST7920. También se puede utilizar el retraso en lugar de la detección de ocupado, pero el retraso debe ser suficiente. La detección ciega en realidad lee el registro de estado interno. El bit más alto (D7) de este registro es el indicador de ocupado BF, y los 7 bits restantes son el contenido del puntero de dirección, por lo que la dirección en el puntero de dirección en realidad se lee durante la detección ciega.

Conjunto de instrucciones:

El conjunto de instrucciones se divide en conjunto de instrucciones básico y conjunto de instrucciones extendido.

Para utilizar el conjunto de instrucciones correspondiente, primero debe escribir las instrucciones correspondientes, indicando que las instrucciones posteriores son de este tipo. Si utiliza el conjunto de instrucciones básico, escriba la instrucción (0x 30); si se requiere un conjunto de instrucciones extendido, escriba la instrucción (0x34) y cambie al conjunto de instrucciones extendido.

1) Conjunto de instrucciones básico (RE=0): (Cuando utilice el conjunto de instrucciones extendido, primero escriba la instrucción 0x30 para hacer RE=0)

Borrar instrucción de pantalla (0x001): Escriba 0x20 en DDRAM y 0x00 en la dirección del puntero. Lo que se muestra en la pantalla es una muestra de espacio vacío.

Comando de entrada (0x02/0x03): Escribe 0x00 en el puntero de dirección.

Método de entrada: 00001 I/D S: establece la dirección del cursor y muestra el desplazamiento después de leer y escribir datos. Hay 2 bits programables en su interior. I/D indica si el puntero de datos aumenta o disminuye después de leer o escribir un carácter. El puntero I/D=1 aumenta en uno y el puntero I/D=0 disminuye en uno. S=1 permite el movimiento de pantalla completa.

S I/D= H H, la pantalla se mueve un carácter hacia la izquierda a la vez.

S I/D= H L, la pantalla se mueve un carácter hacia la derecha a la vez.

Sin embargo, si no sueles activar el movimiento de la pantalla, aquí tienes un concepto, que es el movimiento de la pantalla. Lo que es muy extraño es que en la prueba real, se mostrará cuando la pantalla se encienda y se mueva. La explicación es la siguiente: Porque la estructura de DDRAM es como se muestra en la siguiente tabla:

Mitad pantalla superior y mitad inferior

80H, 81H , 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH

90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H, 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH

A0H, A1H, A2H, A3H, A4H, A5H, A6H, A7H, A8H, A9H, AAH, ABH, ACH, ADH, AEH, AFH

B0H, B1H, B2H, B3H, B4H, B5H, B6H, B7H, B8H, B9H, BAH, BBH, BCH, BDH, BEH, BFH

Cuando el movimiento de la pantalla no está activado, la pantalla utiliza la primera columna de la tabla como punto de partida de referencia y luego las primeras ocho columnas se clasifican como la mitad superior de la visualización en pantalla y las últimas ocho columnas se clasifican como la mitad inferior de la visualización en pantalla. Si mueve un carácter hacia el lado izquierdo de la pantalla en este momento, la relación de mapeo entre el contenido DDRAM y la visualización debe ser:

80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH

90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H, 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH

A0H, A1H, A2H, A3H, A4H, A5H, A6H, A7H, A8H, A9H, AAH, ABH, ACH, ADH, AEH, AFH

B0H, B1H, B2H, B3H, B4H, B5H, B6H, B7H, B8H, B9H, BAH, BBH, BCH, BDH, BEH, BFH

Se puede observar que en realidad, los personajes a partir del tercero y la cuarta línea continúa Al final de la primera y segunda línea, toda la estructura DDRAM es una estructura cíclica, y la relación de mapeo entre DDRAM y la pantalla cambia constantemente cuando se mueve la pantalla. Pero esto no se ajusta a nuestros hábitos de lectura, por lo que si necesita utilizar esta función, es necesaria una corrección de programación.

Display, cursor e interruptor de parpadeo: 0 0 0 0 0 0 1 D C B:

D=1: Display C = 1: Cursor B = 1: La posición del cursor parpadea. Si es 0, se desactiva.

Control de desplazamiento de visualización del cursor: 0 0 0 1 S/C R/L X X

Descripción:

LH: en este momento, simplemente disminuya el valor de la dirección puntero AC Simplemente vaya a 1. Lo que aparece en la pantalla es el cursor que se mueve un carácter hacia la izquierda.

LH: En este momento, simplemente agregue 1 al valor del puntero de dirección AC. Lo que aparece en la pantalla es el cursor que se mueve un carácter hacia la derecha.

El puntero de HL:AC permanece sin cambios y mueve un carácter a la pantalla izquierda. Este es un desplazamiento circular hacia la izquierda de la estructura DDRAM, 80H después de 8FH y 90H después de 9FH. Esto es lo mismo que el cambio de pantalla mencionado anteriormente.

HH: El puntero AC permanece sin cambios y se mueve un carácter hacia la derecha. Este es un desplazamiento cíclico hacia la derecha de la estructura DDRAM, 80H después de 8FH y 90H después de 9FH.

Configuración de funciones: 0 0 1 DL X RE X X (cambiar entre el conjunto de instrucciones básico y el conjunto de instrucciones extendido)

DL=1 significa 8 es la interfaz, DL=0 significa 4 es la interfaz.

RE=1 significa iniciar instrucciones extendidas, RE=0 significa usar instrucciones básicas.

Los comandos básicos están configurados en 0x30 y los comandos extendidos en 0x34.

Configuración de dirección CGRAM: 0x4dirección. El rango de direcciones es de 00h a 3fh. La premisa es que SR=0, lo que significa que se permite configurar las direcciones IRAM y CGRAM. ! !

Configuración de dirección DDRAM: Sólo habrá direcciones de palabras. Como se muestra en la siguiente tabla. (Tenga en cuenta que la dirección DDRAM tiene 4 líneas × 16 palabras) de la siguiente manera:

80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH , 8EH , 8FH

90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H, 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH

A0H , A1H , A2H, A3H, A4H, A5H, A6H, A7H, A8H, A9H, AAH, ABH, ACH, ADH, AEH, AFH

B0H, B1H, B2H, B3H, B4H, B5H, B6H , B7H , B8H, B9H, BAH, BBH, BCH, BDH, BEH, BFH

Por lo tanto, sólo se pueden mostrar dos líneas a la vez. Las otras dos filas de datos solo son visibles al desplazarse.

Ver tono de ocupado (dirección): Visualiza el tono de ocupado y la dirección al mismo tiempo. Cuando está ocupado, ST7920 no acepta ninguna instrucción. Configure RS en 0 y RW en 1 según el diagrama de tiempos, luego lea el registro de estado.

Escribir RAM (DDRAM/CGRAM/GDRAM): escribir lógica de control (función wrtcom_12864 (dirección);) y enviar datos directamente (wrtdat_12864). Después de escribir, el puntero de dirección aumenta o disminuye en 1 dependiendo de la configuración en el modo de entrada. Escriba la dirección primero y luego escriba los datos. Escribir la dirección en sí es un comando de escritura de dirección y luego escriba los datos.

RAM de lectura (DDRAM/CGRAM/GDRAM): Recuerda hacer primero una lectura falsa y la siguiente es la lectura real. No es necesario realizar una lectura ficticia después de una lectura ficticia a menos que se restablezca la dirección.

2) Conjunto de instrucciones extendido (RE=1): (Use el conjunto de instrucciones extendido para escribir la instrucción 0x34 primero, de modo que RE=1)

Modo de espera: 0x001, no afecta a DDRAM, por lo que cualquier comando puede finalizar el modo de espera, a diferencia del comando borrar pantalla.

Configuración permitida de dirección de desplazamiento/dirección IRAM: 0 0 0 0 0 0 1 SR:

SR=1: Configuración permitida de dirección de desplazamiento vertical. SR=0: permite configurar direcciones IRAM y CGRAM.

Establecer dirección de desplazamiento/IRAM: 0x4dirección. (La dirección de desplazamiento es una dirección de fila, es decir, una dirección vertical).

Desplazarse aquí significa desplazarse por la pantalla hacia arriba y hacia abajo para lograr el desplazamiento vertical de la pantalla.

Dirección de desplazamiento: el rango de direcciones es 0x00 ~ 0x63, y la dirección de desplazamiento de *** 64 líneas es en realidad una dirección vertical. Cada dirección representa un píxel en una fila de DDRAM. Un desplazamiento mueve todos los puntos de la línea a la parte superior de las pantallas superior e inferior.

80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH

90H, 91H, 92H , 93H, 94H, 95H, 96H, 97H, 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH

A0H, A1H, A2H, A3H, A4H, A5H, A6H, A7H, A8H , A9H, AAH, ABH, ACH, ADH, AEH, AFH

B0H, B1H, B2H, B3H, B4H, B5H, B6H, B7H, B8H, B9H, BAH, BBH, BCH, BDH, BEH , BFH

o el diagrama de estructura de DDRAM. Cabe señalar que la pantalla de desplazamiento se divide en la mitad superior de la pantalla y la mitad inferior de la pantalla. No hay relación entre las dos pantallas, es decir, la parte roja a la izquierda en DDRAM se desplaza en la mitad superior de la pantalla. y la parte verde a la derecha se desplaza en la mitad inferior de la pantalla.

La siguiente línea de B0H, B1H, B2H, B3H, B4H, B5H, B6H y B7H es

80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H

p>

En otras palabras, el lado izquierdo es una estructura circular conectada hacia arriba y hacia abajo. De manera similar, el lado derecho también es una estructura circular conectada hacia arriba y hacia abajo. Los caracteres en la memoria izquierda se desplazan hacia arriba y hacia abajo. El personaje en la memoria de la derecha se desplaza hacia arriba y hacia abajo y no tiene nada que ver con eso.

Para activar el desplazamiento, primero abra el conjunto de instrucciones extendido, luego permita la configuración de la dirección de desplazamiento y luego configure la dirección de desplazamiento.

wrt com _ 12864(0x 34); //Abrir instrucciones extendidas

wrt com _ 12864(0x 03); //Permitir entrada de dirección continua

wrt com _ 12864(0x 4address //Establece la dirección de desplazamiento.

wrt com _ 12864(0x 30); //Volver a las instrucciones básicas

Para lograr una desplazamiento de pantalla, necesita Utilice un bucle para modificar continuamente la dirección de desplazamiento De 00 a 63, desafortunadamente este bucle no se ajusta a nuestros hábitos de lectura. La aplicación posterior explicará la implementación del desplazamiento de pantalla completa. >Resaltado: 00001R1R0:

Los valores inicializados de R1 y R0 son 00. Seleccione cualquier línea del 1 al 4 para decidir si desea resaltarla.

Cómo girar. en el resaltado: primero abra el comando de extensión (0x34) y luego establezca una línea de selección para establecer el resaltado (0x04 + R1R0 es la primera línea, 01 es la segunda línea, 10 es la tercera línea y 11). es la cuarta línea. Las filas aquí se refieren a todas las filas de almacenamiento de DDRAM, no a las filas mostradas, solo se muestran 2 filas en la pantalla.

Entonces, si activamos el resaltado de las filas 3 y 4, no se desplazará. No se ve ningún efecto.

Al mismo tiempo, si activamos el resaltado de la línea 1, la línea 1, la línea 3 y la línea 2 se resaltarán en la pantalla, correspondiente a. líneas 2 y 4 en la pantalla. Debes prestar atención.

Cómo desactivar el resaltado: solo necesitas escribir la dirección una vez para desactivarlo. Es decir, escribir la misma dirección para el. la primera vez activa el resaltado y al escribir la misma dirección la segunda vez lo desactiva.

wrt com _ 12864(0x 34); com _ 12864(0x 04); //Activar resaltado /p>

delay _ 12864(60000); //Retraso

delay _ 12864(60000); >

wrt com _ 12864(0x 04);/ /Desactivar resaltado

wrt com_12864(0x 30); //Abrir conjunto de comandos básicos

Configuración de funciones extendidas: 0x36 Active la visualización del dibujo. >Cuando GDRAM haya terminado, escriba 0x36 y la pantalla mostrará el gráfico que dibujó.

0 0 0 0 1 DL x RE G x (RE=1 instrucción extendida, G=1 enciende la pantalla de dibujo, DL=1 significa 8 es la interfaz).

Establezca la dirección GDRAM: al dibujar, primero debe escribir la dirección GDRAM en el puntero de dirección y luego escribir los datos. Escriba dos bytes seguidos, el primero es la dirección de la fila (y), el segundo es la dirección de la columna (x).

Cabe señalar que después de escribir datos, el puntero de dirección aumentará automáticamente en 1 (en palabras). Cuando llega al final de la línea, el siguiente incremento del puntero hace que el puntero de la dirección salte al principio de la línea, es decir, si el valor de la dirección es 8FH, la próxima vez será 80H (tome el primer comportamiento como ejemplo). Las direcciones del puntero recorren las filas.

Después de la introducción del manual.

Hablemos primero del proceso de inicialización. Simplemente siga los pasos de inicialización proporcionados en el manual ST7920.

La función de inicialización es la siguiente:

//Subrutina de retardo

void delay_12864 (entero sin signo) {

Unsigned int I;

for(I = 0;i<deli++){;}

}

//Inicializar subfunción 12864

void inicial_12864 ( void){

retraso _ 12864(40000);

RST _ 12864 = 1;

RST _ 12864 = 0;

delay _ 12864(500);

RST _ 12864 = 1;

wrt com _ 12864(0x 30); //Establecer operación básica del conjunto de instrucciones

>

delay _ 12864(100);

wrt com _ 12864(0x 30); //Establece la operación del conjunto de instrucciones básicas

delay _ 12864(37);

wrt com_12864(0x 08); //Establece la pantalla, el cursor y el parpadeo.

delay _ 12864(100);

wrt com _ 12864(0x 01); //Borrar la pantalla y borrar el puntero de datos DDRAM.

delay _ 12864(100000);

wrt com _ 12864(0x 06); //Ingresar configuración de modo

}