Red de conocimiento informático - Conocimiento sistemático - Cómo programar una celosía

Cómo programar una celosía

El siguiente es el programa fuente de la pantalla gráfica electrónica LED de matriz de puntos de 16x16, escrito en lenguaje ensamblador (o lenguaje C). El programa C ha sido depurado en el entorno KeiluVision2 V2.30.

El siguiente es un programa de control de visualización de caracteres escrito en lenguaje ensamblador:

;************************ ******** ****************

;* *

;*Carácter de pantalla electrónica de matriz de puntos único de 16x16 pantalla*

; *Oscilador de cristal ATA89C52 de 12MHz*

*LRM*

***************** ******* *******************

; Utilice el método de tabla de búsqueda para mostrar caracteres, que no ocupa memoria. Utilice una matriz de puntos LED positiva de 16x16 **.

; Efecto: Desplácese hacia arriba para mostrar 5 palabras y luego repita el ciclo.

; R1: registro de compensación de la tabla de búsqueda, b: dirección del encabezado de la tabla de búsqueda, R2: dirección de escaneo (de 00 a 0fh).

; R3: controla la velocidad de movimiento al desplazarte, y el tiempo de visualización estática se puede controlar mediante una visualización de un solo carácter.

;************;

;Interrumpir la entrada al programa;

;********* *** *****;

ORG 0000H

Inicio LJMP

ORG 0003H

Reti

ORG 000BH

LJMP INTTO

ORG 0013H

Segunda escalera

ORG 001BH

Segunda escalera

ORG 0023H

Reti

ORG 002BH

Reti

;********** *;

;Programa de inicialización;

;************;

;******** ** **;

; Programa principal

; *************

Primera versión: MOV 20H. , # 00H marca clara, 00H es la marca de inicio de escaneo de la línea 16 y 01 es el cuadro 1.

;Indicador de fin de escaneo

MOV A, # 0Inicialización del puerto FFH

MOV P1, A

MOV P1, A

MOV·P3

MOV P0, A

CLR p 1.6; bit de control de entrada/salida del registro serie

MOV TMOD, # 01H; T0 como temporizador de 16 bits para escaneo de línea.

MOV TH0, #0FCH el valor inicial es 1 ms (12 MHz)

MOV TL0, #18H

MOV SCON, #00H Modo puerto serie 0 Transmisión mostrar bytes.

MOV IE, #82H permite interrupción T0, permite interrupción total

MOV SP, #70H

Principal: preparación de pantalla LCALL DISI, pantalla negra, 1.5; s

MOV DPTR, #hashtag

LCALL MOVDISP desplácese hacia arriba para mostrar una página (8 palabras)

DPH Corporation

LCALL MOVDISP arriba Desplácese hacia arriba para mostrar una página (8 palabras)

DPH Company

LACLL MOVDISP Desplácese hacia arriba para mostrar una página (8 palabras)

AJMP Manager

;************************;

;Programa de visualización de desplazamiento de varias palabras;

; *************************;

Ocho palabras a la vez, el valor DPTR se define en la entrada.

MOVDISP: MOV B, # 00H mueve la pantalla hacia arriba y encuentra temporalmente el valor de desviación de la tabla (comenzando desde 00)

Dislocación: MOV R3, # 07H velocidad de movimiento

Disimov: MOV R2, 00h; comienza en la línea 0

MOV R1, B

SETB TR0; escaneo abierto (un cuadro a la vez)

Witimov: JBC 01H, Disimov 1; marca 1, complete un escaneo de un cuadro (1 cuadro de 16 ms, cada línea de 1 ms).

AJMP Waimov

DISMOV1: DJNZ R3, visualización repetida de cuadros DISMOV1 (controla la velocidad de movimiento)

INC B muestra la siguiente línea de la palabra (cada línea; 2 bytes)

Empresa B

MOV A, r 1; R1 es 0 y muestra 8 palabras.

JZ Mofft

Dislocación AJMP

movimiento: RET; el movimiento termina primero

;****** *** *******;

;Programa de visualización de un solo carácter;

;******************;

;Mostrar palabras en tabla;

;******************;

DIS1: MOV R3, # 5AH control de tiempo de visualización estática (16 milisegundos * # = 1,6 segundos)

DIS11: MOV R2, #00H valor de escaneo inicial de un cuadro (dirección de fila de 00 a 0fh)

MOV· DPTR, # TAB toma la primera dirección de la tabla

MOV R1, # 00H desplazamiento de la tabla de búsqueda (muestra la primera palabra)

SETB TR0 escaneo abierto (Un cuadro a la vez; )

espera 11: JBC 01H, dis 111 para 1, el escaneo finaliza un cuadro.

AJMP Esperando 11

DIS 111: DJNZ R3, DIS 11

Remojado en agua para ablandar

;*** ** *******;

;Escáner;

;************;

;1ms actualizar Una vez, cada línea muestra 1.

INTT0: Presione ACC

MOV TH0, #0FCH1 ms recarga valor inicial

MOV TL0, #18H

JBC 00H , GOEND La bandera de escaneo de la línea 16 es 1, fin.

INC r 1; obtiene el desplazamiento de bytes en el lado derecho de la línea

MOV A, R1

MOVC A, @ A DPTR;

MOV·SBUFF; transmisión en modo puerto serie 0

Espera: JBC levanta, espera a que se complete la transferencia.

AJMP WAIT1

GO: DEC r 1; toma el byte desplazado a la izquierda de la línea

MOV A, R1

MOVC A, @A DPTR

MOV·SBUFF

WAIT1: JBC T1, GO1

AJMP WAIT1

go 1: SETB p 1.7; cierre la pantalla y prepárese para actualizar.

Estabilidad de los datos del registro del puerto serie NOP

SETB p 1.6; se genera un flanco ascendente y los datos de la fila se ingresan al terminal de salida.

no proporcionado (para)a menos que se especifique lo contrario

no proporcionado (para)a menos que se especifique lo contrario

CLR p 1.6 volver al nivel bajo

MOV A, R2; modificar la dirección de la fila de visualización

ORL A, # 0F0H modificar la dirección de la fila de visualización

MOV·R2 modificar la dirección de la fila de visualización

MOV A , p 1; Modificar la dirección de la línea de visualización

ORL A, # 0FH Modificar la dirección de la línea de visualización

ANL A, R2 Modificar la dirección de la línea de visualización

<; p>MOV P1, A; modificación completada

CLR p 1.7; visualización de línea

Empresa R2; valor de dirección de escaneo de siguiente línea

INC R1

INC r 1; Dirección de datos de la siguiente fila

R2 MOV

ANL A, #0FH

JNZ GO2

SETB 00H ; R2 es 01H. Ahora se escanea y marca la última línea.

GO2: aparece ACC

Reti

GOEND: CLR TR0; después de escanear un cuadro, desactive el escaneo.

SETB 01H; Después de escanear un fotograma, establezca la bandera de finalización.

ACC Popular

RETI; rendirse

; **************;

;Escanear lista de textos;

;***************;

TAB: DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 00FFH, 0FFH, 0 ffh, pantalla negra

Decibel

0F9H, 0BFH, 0C7H, 0AFH, 0F7H, 0B7H, 0F7H, 0B7H, 0F7H, 0BFH, 000H, 001H, 0F7H, 0BFH, 0F7H, 0B7H;i

Decibelio

0F1H, 0D7H, 0C7H, 0CFH, 037H, 0DFH, 0F7H, 0AFH, 0F6H, 06DH, 0F7H, 0F5H, 0D7H, 0F9H, 0EFH, 0FDH

Decibelio

0FFH, 007H, 0C0H, 06FH, 0EDH, 0EFH, 0F6H, 0DFH, 0C0H, 001H, 0DDH, 0FDH, 0BDH, 0FFH, 0C0H, 003H Amor

Decibel

0FBH, 0FFH, 0F8H, 00FH, 0F3H, 0DFH, 0F4H, 0BFH , 0EFH , 03FH, 09CH, 0CFH, 073H, 0F1H, 0CFH, 0 fbh;

Decibelio

0F7H, 0DFH, 0F9H, 0CFH, 0FBH, 0BFH, 0C0H, 007H, 0DEH , 0F7H , 0C0H, 007H, 0DEH, 0F7H, 0DEH, 0 DEH, 0F7H; único

Decibelio

0C0H, 007H, 0DEH, 0F7H, 0FEH, 0FFH, 000H, 001H, 0FEH , 0FFH, 0FEH, 0FFH, 0FEH, 0FFH, 0FFH, 0FEH, 0 ffh

Decibelio

0FFH, 0BFH, 0EFH, 0BFH, 0EFH, 0BFH, 0EFH, 0BBH, 0E0H , 001H, 0EFH, 0FFH, 0EFH, 0FFH, 0FFH, 0EFH, 0 efh, 0 efh, 0 ffh, 0 ffh; bloques

Decibelio

0E0H, 00FH, 0EFH, 0EFH , 0EFH, 0EFH, 0EFH, 0EFH, 0EFH, 0EFH, 0BFH, 0EFH, 07FH, 0FFH

Decibel

0EFH, 0FFH, 0EFH, 007H, 0EFH, 077H, 001H, 077H , 0EFH, 077H, 0EFH, 077H, 0C7H, 077H, 0CBH, 077h; máquina

Decibel

0ABH, 077H, 0AFH, 077H, 06EH, 0F7H, 0EEH, 0F5H, 0EDH , 0F5H, 0EDH, 0F5H, 0EBH, 0F9H, 0EFH, 0FFH

Decibelio

0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH , 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0 ffh, pantalla negra

Decibel

0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH; , 0FFH , 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0ffh;

Fin