Red de conocimiento informático - Conocimiento del nombre de dominio - Diseño de teclado electrónico de caja experimental de principio de microcomputadora, utilizando 8254,8255

Diseño de teclado electrónico de caja experimental de principio de microcomputadora, utilizando 8254,8255

Apéndice 1: Tabla de frecuencias musicales con oscilador de cristal de 12M

Frecuencia de notas (Hz) Código de notación simplificada (valor T)

Baja 1DO 262 63628 TH0=F7H TL0 =24H

#1DO# 277 63731 TH0=F8H TL0=F3H

Baja 2RE 294 63835 TH0=F9H TL0=5BH

#2RE# 311 63928 TH0 =F9H TL0=B8H

Bajo 3M 330 64021 TH0=FAH TL0=15H

Bajo 4FA 349 64103 TH0=FAH TL0=67H

#4FA# 370 64185 TH0=FAH TL0=B9H

Bajo 5SO 392 64260 TH0=FBH TL0=04H

#5SO# 415 64331 TH0=FBH TL0=4BH

Baja 6LA 440 64400 TH0=FBH TL0=90H

#6 466 64463 TH0=FBH TL0=CFH

Baja 7SI 494 64524 TH0=FCH TL0=0CH

1DO 523 64580 TH0=FCH TL0=44H

#1DO# 554 64633 TH0=FCH TL0=79H

2RE 587 64684 TH0=FCH TL0=ACH

#2RE# 622 64732 TH0=FCH TL0=DCH

中3M 659 64777 TH0=FDH TL0=09H

中4FA 698 64820 TH0=FDH TL0=34H

#4FA# 740 64860 TH0=FDH TL0=5CH

中5SO 784 64898 TH0=FDH TL0=82H

#5SO# 831 64934 TH0=FDH TL0=A6H

中6LA 880 64968 TH0=FDH TL0=C8H

#6 932 64994 TH0=FDH TL0=E2H

中7SI 988 65030 TH0=FEH TL0= 06H

Alta 1DO 1046 65058 TH0=FEH TL0=22H

#1DO# 1109 65085 TH0=FEH TL0=3DH

Alta 2RE 1175 65110 TH0=FEH TL0 =56H

#2RE# 1245 6513

4 TH0=FEH TL0=6EH

Alta 3M 1318 65157 TH0=FEH TL0=85H

Alta 4FA 1397 65178 TH0=FEH TL0=9AH

#4FA # 1480 65198 TH0=FEH TL0=AEH

高5SO 1568 65217 TH0=FEH TL0=C1H

#5SO# 1661 65235 TH0=FEH TL0=D3H

Alta 6LA 1760 65252 TH0=FEH TL0=E4H

#6 1865 65268 TH0=FEH TL0=F4H

Alta 7SI 1967 65283 TH0=FFH TL0=03H

El resto está representado por TH0=FFH, TL0=FFH

Apéndice 2: información relacionada con la pantalla LCD

La dirección de la pantalla LCD de dos líneas: (ambas son de dieciséis dígitos recuentos)

0 1 2 3 4 5 6 7 8 9 A B C D E F

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

Requisitos y configuración del formato del comando El octavo bit del puntero de dirección es 1, seguido de la dirección, es decir, AC0 ~ AC6, que corresponde a la dirección en la tabla anterior.

Apéndice 3: Procedimiento experimental:

RS BIT P2.0; Definir la etiqueta del puerto LCD

RW BIT P2.1

EBIT P2.2

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

T0TH EQU 24H;T0 dos variables temporales

T0TL EQU 23H

ORG 0000H

INICIO LJMP

ORG 000BH

LJMP T0INT

ORG 0100H

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

;***** ************ *******************Inicialización de LCD****************** *

INICIO:

MOV SP,#70H

MOV P0,#01H ;Borrar pantalla

LLAMADA HABILITADA

MOV P0,#38H ;8 dígitos, 2 líneas de visualización

HABILITACIÓN DE LLAMADA

p>

HABILITACIÓN DE LLAMADA

MOV P0,# 0CH ;Visualización de pantalla encendida, apagar cursor

HABILITAR LLAMADA

MOV P0,#06H ;Dirección de conteo Agregar 1, moverse automáticamente hacia la derecha

HABILITAR LLAMADA

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

;Indicador de arranque

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

MOV P0,#80H

LLAMADA HABILITADA

MOV DPTR,#TABLE0 ; Escribe la primera fila de datos

CALL WRITE1

MOV P0,#00010000B ;Mueve el cursor dos lugares hacia la izquierda

CALL ENABLE

MOV P0,#00010000B

LLAMADA HABILITADA

LLAMADA DEL0

LJMP PRINCIPAL

;** ****** ***********************************Escribir instrucciones

HABILITAR:

CLR RS

CLR RW

SETB E

LLAMADA DEL0

CLR E

RET

;****************************************** * *************Escribir datos

WRITE1:

MOV R1,#00H programa de búsqueda de tablas, desde el encabezado hasta el final de la tabla

A1:

MOV A,R1

MOVC A,@A+DPTR

LLAMADA ESCRITURA2

INC R1

CJNE A,#00H,A1 ;Continuar antes de llegar al final de la cadena

RET

WRITE2:

MOV P0, A ; Transfiere directamente los datos Escribe en la pantalla LCD

SETB RS

CLR RW

SETB E

CALL DEL0

CLR E

RET

<

p>DEL0:MOV R4,#020H

C0:MOV R5,#020H

C1: DJNZ R5,C1

DJNZ R4,C0

RET

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

TABLE0:DB 'BIENVENIDO AQUÍ',00H

;********************* *** ****Inicialización de memoria******************

INICIAL:

MOV R3,#08H

MOV R0,#30H

M1:

MOV @R0,#00H

INC R0

DJNZ R3,M1

RET

;******************************Seleccione la clave para reproducir ocho tonos**** *******************

PRINCIPAL: MOV SP,#80H ;Pila de inicialización

MOV TMOD,#11H ;Temporizador 0 modo de trabajo 0, Temporizador 1 modo de trabajo 0

SETB EA

SETB ET0; Contador 0 permitido

SETB ET1; permitido

INICIO : SETB P3.7 ;Apagar el timbre

CLR TR0 ;Temporizador no permitido

ESCANEO: ;Escaneo de teclado

MOV A,P1

CJNE A,#0FFH,SU_KEY Determina si el teclado está presionado, salta a SU_KEY, si no, continúa escaneando

NOP

LJMP SCAN

SU_KEY:

SU_KEY1:

JB P1.0,SU_KEY2 ;Si no es la primera tecla presionada, vaya a

MOV DPH,#0FCH

p>

MOV DPL,#44H

SJMP PLAY

SU_KEY2:

JB P1. 1,SU_KEY3; si no se presiona la segunda tecla, transfiera

MOV DPH,#0FCH

MOV DPL,#0ACH

SJMP PLAY

SU_KEY3:

JB P1.2,SU_KEY4 ;Si no se presiona la tercera tecla, vaya a

MOV DPH,#0FDH

MOV DPL ,#09H

SJMP PLAY

SU_KEY4:

JB P1.3,SU_KEY5 ;Si no es la 4ta tecla presionada, vaya a

MOV DPH,#0FDH

MOV DPL

,#34H

SJMP PLAY

SU_KEY5:

JB P1.4,SU_KEY6 ;Si no se presiona la quinta tecla, vaya a

MOV DPH,#0FDH

MOV DPL,#82H

SJMP PLAY

SU_KEY6:

JB P1.5,SU_KEY7 ;Si no es la 6ta tecla presionada, vaya a

MOV DPH,#0FDH

MOV DPL,#0C8H

SJMP PLAY

SU_KEY7:

JB P1.6,SU_KEY8 ;Si no se presiona la séptima tecla, vaya a

MOV DPH,#0FEH

MOV DPL, # 06H

SJMP PLAY

SU_KEY8:

JB P1.7,KEY1; Si no se presiona la octava tecla, vaya a

MOV DPH,#0FEH

MOV DPL,#22H

SJMP PLAY

PLAY:

MOV T0TH,DPH Almacenar alto; -ordenar caracteres

MOV T0TL,DPL ;Guardar caracteres de orden inferior

MOV TH0,T0TH

MOV TL0,T0TL

SETB TR0 ;Iniciar temporizador 0

MOV R2,#01B ;1/4 de tiempo

DJNZ R2,PLAY

LCALL DELAY

SJMP JUEZ

JUEZ:

JB P2.4,START ;Si no se presiona el botón, continúa escaneando, de lo contrario, comienza a reproducir música

;*** ***** *******************Seleccione la tecla para reproducir música******************

TECLA1:

JB P2.5, TECLA2 ; Presione la primera tecla (P2.5) para reproducir música 1

MOV R2, #00H

LCALL MODD; visualización del número de canción

MOV DPTR,#MU_TAB1

AJMP MUSIC

KEY2:

JB P2.6 ,KEY3; segunda Presione la tecla (P2.6) para reproducir música 2

MOV R2,#01H

LCALL MODD muestra el número de canción

MOV DPTR,#MU_TAB2

AJMP MUSIC

TECLA3:

JB P2.7, NEXT_2; Presione la tercera tecla (P2.7) para reproducir música 3

MOV R2,#02H

LCALL MODD; Visualización del número de canción

MOV D

PTR,#MU_TAB3

MÚSICA AJMP

NEXT_2: LJMP INICIO ;Volver

MÚSICA:

MOV TMOD,#01H

MOV IE,#82H ;Habilitar interrupción T0

MOV R7,#00H

BUCLE:

CLR A

MOVC A,@A+DPTR ;Busque la tabla y obtenga el código

MOV R1,A ;Los ocho bits superiores del temporizador almacenan R1

INC DPTR

PUSH DPH ; Proteger la escena

PUSH DPL

GECI1:

JB P2.5,GECI2 Presione la primera tecla (P2.5) para mostrar la letra 1

MOV DPTR,#GE1

AJMP GECI

GECI2:

JB P2.6,GECI3; Tecla (P2. 6) Presione para mostrar la letra 2

MOV DPTR, #GE2

AJMP GECI

GECI3:

JB P2 .7, TIAOCHU ; Presione la tercera tecla (P2.7) para mostrar la letra 3

MOV DPTR,#GE3

AJMP GECI

TIAOCHU:LJMP START

GECI:

LCALL QINGCHU

MOV P0,#0C0H ;posición mostrada

CALL ENABLE

XIANSHI1 : MOV A,R7 Busque la tabla para obtener la visualización de música en Pinyin chino

MOVC A,@A+DPTR

CALL WRITE2

INC R7

CJNE A,#00H,XIANSHI1

MOV P0,#00010000B ;Mueve el cursor una posición hacia la izquierda

LLAMADA HABILITADA

MOV P0,#00010000B ; Mueve el cursor una posición hacia la izquierda

CALL ENABLE

POP DPL

POP DPH

CLR A

MOVC A,@A+DPTR

MOV R0,A ;Los ocho bits inferiores del temporizador se almacenan en R0

ORL A,R1

JZ NEXT0 ;El resultado de la fase O es todo 0 es el carácter restante

MOV A,R0

ANL A,R1

CJNE A, #0FFH,NEXT; el resultado AND es 0FFH, lo que indica el final de la música

p>

MOV P

0,#01H ;Borrar pantalla

LLAMADA HABILITADA

LJMP INITION ;Reproducir desde el principio

NEXT: MOV T0TH,R1 ;Instalar valor inicial de temporización

MOV TH0,T0TH

MOV T0TL,R0

MOV TL0,T0TL

SETB TR0 ; SJMP NEXT1

NEXT0: CLR TR0 ;Cerrar temporizador

NEXT1: CLR A

INC DPTR

MOVC A,@A+ DPTR ; Comprobar constante de retardo

MOV R2,A

LOOP1:

ACALL D200

DJNZ R2,LOOP1 ;Controlar tiempos de retardo

INC DPTR

AJMP LOOP

D200: MOV R3,#81H; programa de retardo

D200B: MOV A,# 0FFH

D200A: DEC A

JNZ D200A

DEC R3

CJNE R3,#00H,D200B

RET

QINGCHU:MOV A,#00100000B

MOV P0,#0C0H ; Establezca la primera posición de la segunda línea en 0

LCALL ENABLE

LCALL WRITE2

MOV A,#00100000B ; Establece la segunda posición de la segunda línea en 0

MOV P0,#0C1H

LCALL ENABLE

LCALL WRITE2

MOV A,#00100000B ; Establezca la tercera posición de la segunda línea en 0

MOV P0,#0C2H

LCALL ENABLE

LCALL WRITE2

MOV A,#00100000B ; Establece la cuarta posición de la segunda línea en 0

MOV P0,#0C3H

LCALL ENABLE

LCALL WRITE2

MOV A,#00100000B ; Establezca la quinta posición de la segunda fila en 0

MOV P0,#0C4H

LCALL ENABLE

LCALL WRITE2

MOV A,#00100000B ; Establezca la sexta posición de la segunda línea en 0

MOV P0,#0C5H<; / p>

LCALL ENABLE

LCALL WRITE2

MOV A,#00

100000B ; Establece la séptima posición de la segunda fila en 0

MOV P0,#0C6H

LCALL ENABLE

LCALL WRITE2 ; fila 0

;El programa equivalente anterior es el siguiente

;GECI:MOV R3,#00H ;Controla el número de ciclos

;QINGCHU:

;MOV A,#00100000B ;Pon un espacio

;PUSH A

;MOV R4,#0C0H ;Dirección

;MOV A ,R4

;MOV P0,A

;POP A

;INC R4

;DEC R3 ;Controlar el número de ciclos

; CJNE R3,#00H,QINGCHU ;La transferencia se ejecutará después de diez veces.

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

;Temporizador 0 interrumpir subrutina, música temporizada

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

T0INT: ;Interrumpir subrutina de servicio

MOV TH0,T0TH

MOV TL0,T0TL

CPL P3.7 ;Salida de inversión, música de demostración

RETI

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

;Mostrar

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

MOD:

MOV P0,# 8EH

LCALL ENABLE

MOV A,R2

MOV DPTR,#TABLE2

MOVC A,@A+DPTR

LCALL WRITE2

RET

TABLA2:DB 31H,32H,33H

GE1: db 'xin',00h,'nian',00h ,'hao',00h,'ya ',00h,'xin',00h,'nian',00h,'hao',00h,'ya',00h

db 'zhu',00h, 'fu',00h,'da' ,00h,'jia',00h,'xin',00h,'nian',00h,'hao',00h

GE2: DB 'liang',00H ,'zhi',00H,'lao ',00H,'hu',00H,'liang',00H,'zhi',00H,'lao',00H,'hu',00H,'pao',00H,' de',00H,'kuai', 00H

DB 'pao',00H,'de',00H,'kuai',00H,'yi',00H,'zhi',00H,'mei ',00H,'tú',00H ,'yan',00H,'jing',00H,'yi',00H,'zhi',00H

DB 'mei',00H,'tú' ,00H,'er',00h, 'duo',00h,'zhen',00h,'qi',00h,'guai',00h,'zhen',00h,'q

i',00h,'guai',00h

GE3: DB 'wo',00h,'ai',00h,'bei',00h,'jing',00h,'tian',00h, 'an',00h,'men',00h,'tian',00h,'an',00h

;********************* *** ******Subrutina de retardo******************

DELAY:MOV 30H, #100; Ampliar el tiempo de espera y eliminar fluctuación del teclado

D1:MOV R5,#200

D2:DJNZ R5,D2

DJNZ 30H,D1

RET

;************************Feliz año nuevo****************** ******* *****

MU_TAB1: DB 0FEH,25H,04H,0FEH,25H,04H

DB 0FEH,25H,06H,0FDH,80H ,06H

DB 0FEH,84H,04H,0FEH,84H,04H

DB 0FEH,84H,06H,0FEH,25H,06H

DB 0FEH, 25H,04H,0FEH,84H,04H

DB 0FEH,0C0H,04H,0FEH,84H,04H

DB 0FEH,98H,04H,0FEH,84H,04H

DB 0FEH, 57H,06H

DB 0FFH,0FFH

;********************* ***Dos tigres****** *************************

MU_TAB2: DB 0FCH,44H,06H ,0FCH,0ACH,06H,0FDH,09H,06H, 0FCH,44H,06H

DB 0FCH,44H,06H,0FCH,0ACH,06H,0FDH,09H,06H,0FCH,44H,06H

DB 0FDH,09H,06H, 0FDH,34H,06H,0FDH,0A6H,06H

DB 0FDH,09H,06H,0FDH,34H,06H,0FDH,0A6H,06H

DB 0FBH,04H,04H, 0FDH,0C8H,04H,0FBH,04H,04H,0FDH,34H,04H

DB 0FDH,09H,04H,0FCH,44H,04H, 0FBH,04H,04H,0FDH,0C8H,04H

p>

DB 0FBH,04H,04H,0FDH,34H,04H,0FDH,09H,04H,0FCH,44H,04H

DB 0FCH,44H,06H,0FDH,0A6H,06H,0FCH ,44H,06H

DB 0FCH,44H,06H,0FDH,0A6H,06H,0FCH,44H,06H

DB 0FFH,0FFH

;** *******************Me encanta Beijing Tiananmen************ ******************

MU_TAB3: DB 0FDH,82H,06H,0FEH,22H,04H,0FDH,82H,04H,0FDH,34H, 04H

DB 0FDH,09H,04H,0FCH,0ACH, 04H,0FCH,44H,06H

DB 0FFH,0FFH,0FFH,0FFH

FIN