MICROCONTROLADORES Módulo Módulo LCD LCD HD44780 HD44780 de de Hitachi Hitachi yy el el µc µc 8051 8051 Carlos Canto Q. MICROCONTROLADORES E R/W RS D0-D7 D0-D7 VDD Vo Vss Controlador Controlador del delLCD LCD HD44780 HD44780 Manejador Manejador Del DelLCD LCD Manejador Manejador Del DelLCD LCD DisplayLCD LCD Display Módulo Módulo LCD LCD HD44780 HD44780 de de Hitachi Hitachi Características principales del módulo 16 caracteres por 2 líneas ( hay de más caracteres y de más líneas) Encendido/apagado del display Parpadeo del cursor Desplazamiento izquierdo/derecho Regreso del cursor al inicio Reconoce ASCII estándar Soporta 132 caracteres alfanuméricos y 32 de control Display de matriz de puntos de 5X7 ó 5X10 Carlos Canto Q. MICROCONTROLADORES Líneas Líneas de de Control Control • Son las siguientes: EN, R/W, RS. • EN: – Cuando esta línea pasa de 1 a 0, el controlador del LCD lee el resto de líneas, ya sean de control o de datos. • R/W (1/0): – Cuando esta línea está a cero se escribe sobre el LCD. – Cuando está a 1, se lee el LCD, es especialmente útil para leer si ha finalizado la última orden indicada. • RS: – Selección de Registro. Cuando RS está en bajo el dato es tratado como una orden o comando sobre el LCD (limpiar la pantalla, posicionar el cursor..etc.) – Si está en alto, el dato que se envía es texto a mostraren el display. Carlos Canto Q. MICROCONTROLADORES Interfases Interfases con con un un µProcesador µProcesador • El HD44780 puede transferir datos, ya sea en dos operaciones de 4 bits o en una sola de 8, lo que le permite conectarse con µPs de 4 ú 8 bits. • Para interfases de datos de 4 bits: – solamente 4 lí líneas del bus son usadas para transferir (de DB4 a DB7). Las lí líneas del bus de DB0 a DB3 está están deshabilitadas. – La transferencia de un dato entre el HD44780 y el µP se completa cuando se hayan transferido dos veces datos de 4 bits. – Primero se transfieren los 4 bits má más altos (DB4 a DB7) y despué después los 4 bits má más bajos (de DB0 a DB3). – La bandera de ocupado (BF) debe ser checada (con una instrucció instrucción) despué después de que los dos datos de 4 bits hayan sido transferidos. Carlos Canto Q. MICROCONTROLADORES CONEXIÓN DE UN MÓDULO LCD A UN 8051 INTERFASE DE 8 BITS Interfase de 8 bits DB0-DB7 Vcc Circuito de contraste Puerto 1 µC 8051 Módulo LCD de 2X16 RS P3.0 E Pin 3 Potenciómetro de 10KΩ R/ W P3.1 P3.2 Por Porsisise sedesea desealeer leerlalabandera banderaBF BF Carlos Canto Q. MICROCONTROLADORES Secuencia de las señales de control del LCD Donde: RS RS (Register Select) = 0 selecciona el registro de instrucción (IR) 1 selecciona el registro de datos (DR) E (Enable): habilita el módulo LCD R/W (Read/Write) R/ W RS R/W 0 0 E D0-D7 DATO Diagrama de tiempo de una operación de escritura Carlos Canto Q. E Operación Escritura de código de operación 0 1 Lectura de bandera de ocupado (BF) 1 0 Escritura de de dato 1 1 Lectura de dato MICROCONTROLADORES CONEXIÓN DE UN MÓDULO LCD A UN 8051 INTERFASE DE 4 BITS Circuito de contraste Vcc µC 8051 P1.4 P1.5 P1.6 P1.7 P3.0 DB4 DB5 DB6 DB7 Módulo LCD de 2X16 RS Pin 3 V0 Potenciómetro de 10KΩ R/ W E P3.1 P3.2 Por Porsisise sedesea desealeer leerlalabandera banderaBF BF Carlos Canto Q. MICROCONTROLADORES Operación de escritura en interfase de 4 bits RS R/W E D7-D4 4 bits altos 4 bits bajos Dato de 8 bits Carlos Canto Q. MICROCONTROLADORES Ejemplo de transferencias de 4 bits Carlos Canto Q. MICROCONTROLADORES Ejemplo de la secuencia de la temporización de una transferencias de 4 bits Busy Carlos Canto Q. MICROCONTROLADORES CONEXIÓN DE UN MÓDULO LCD A UN 8051 ¾Después de aplicada la potencia de alimentación , el módulo LCD requiere al menos 10ms para auto inicializarse ¾ Por lo tanto el µprocesador tiene que esperar al menos 10ms antes de poder realizar alguna operación de escritura o lectura al LCD ¾ Para usar el módulo LCD el microcontrolador debe realizar dos tipos básicos de tareas: • Escritura de controles o comandos • Escritura de datos (caracteres a desplegar) Carlos Canto Q. MICROCONTROLADORES Descripci ón de Descripción delos loscontroles controlesoocomandos comandospara paraconfigurar configurar el ódulo LCD el m módulo LCD HD44780 HD44780 Carlos Canto Q. MICROCONTROLADORES ¾ CLEAR DISPLAY Borra el módulo LCD y coloca el cursor en la primera posición (dirección 0). Pone el bit I/D “1” por defecto. Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1 Tiempo de ejecución: 1.64 ms ¾ HOME Coloca el cursor en la posición de inicio ( dirección 0) y hace que el display comience a desplazarse desde la posición original. El contenido de la memoria RAM de datos de visualización (DDRAM) permanece invariable . La dirección de la memoria RAM de datos para la visualización (DDRAM) es puesta a 0. Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1 X Tiempo de ejecución: 1.64 ms Carlos Canto Q. MICROCONTROLADORES ¾ ENTRY MODE SET Establece la direcció dirección de movimiento del cursor y especifica si la visualizació visualización se va desplazando a la siguiente posició posición de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura escritura de la DDRAM o CGRAM. Para visualizar normalmente poner el bit S a “0”. Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S Tiempo de ejecución: 40µs I/D=1 Incrementa la dirección del cursor I/D=0 Decrementa la dirección del cursor S=1 Desplaza la visualización cada vez que se escribe un dato Carlos Canto Q. MICROCONTROLADORES ¾ DISPLAY ON/OFF CONTROL Activa o desactiva poniendo en ON/OFF tanto al display (D) como el cursor (C) y se establece si este último debe o no parpadear (B). (B) Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B Tiempo de ejecución: 40µs D=1 C=1 B=1 Pantalla activa (ON) Cursor activo (ON) parpadeo Carlos Canto Q. MICROCONTROLADORES ¾ CURSOR OR DISPLAY SHIFT Mueve el cursor y desplaza el display sin cambiar el contenido de de la memoria de datos de visualizació visualización DDRAM. DDRAM Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L x x Tiempo de ejecución: 40µs S/C=1 Se desplaza la visualización S/C=0 Se desplaza el cursor R/L =1 Desplazamiento a la derecha R/L=0 Desplazamiento a la izquierda Carlos Canto Q. MICROCONTROLADORES ¾ FUNCTION SET Establece el tamañ tamaño de interfase con el bus de datos (DL), nú número de líneas del display (N) y tipo de cará á cter (F). car Código: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F x x Tiempo de ejecución: 40µs DL=1 Trabaja con bus de datos de 8 bits DL=0 Trabaja con bus de datos de 4 bits N=1 La presentación se hace en 2 líneas N=0 La presentación se hace en 1 línea F=1 Caracteres de 5X10 puntos F=0 Caracteres de 5X7 puntos Carlos Canto Q. MICROCONTROLADORES ¾ DDRAM ADDRES SET Establece la direcció dirección de la memoria de datos DDRAM a partir de la cual se almacenan los datos a visualizar. visualizar Código: RS R/W DB7 0 0 1 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Dirección de memoria de datos DDRAM Tiempo de ejecución: 40µs ¾ READ BUSY FLAG AND ADDRESS Lectura de la bandera busy (BF) e indica la última dirección empleada de la DDRAM o CGRAM. Código: RS R/W DB7 0 1 BF DB6 DB5 DB4 DB3 DB2 DB1 1 DLde DDRAM N Dirección oFCGRAMx Tiempo de ejecución: 1µs Carlos Canto Q. DB0 x MICROCONTROLADORES La La Memoria Memoria RAM RAM de de Datos Datos del del Display Display DDRAM DDRAM Carlos Canto Q. MICROCONTROLADORES MAPA MAPA DE DE MEMORIA MEMORIA DE DE LA LA DDRAM DDRAM YY SUS SUS POSICIONES POSICIONES EN EN EL EL DISPLAY DISPLAY VIRTUAL VIRTUAL Carlos Canto Q. EJEMPLO EJEMPLO DE DE DISPLAY DISPLAY DE DE 16 16 CARACTERES CARACTERES POR ÍNEAS LLÍNEAS POR 22 LÍ MICROCONTROLADORES DISPLAY VIRTUAL Y DISPLAY REAL POSICIÓN POSICIÓN DEL DEL DISPLAY DISPLAY REAL REAL RESPECTO RESPECTO AL AL VIRTUAL VIRTUAL CUANDO CUANDO SE SE INICIALIZA INICIALIZA EL EL LCD LCD POSICIÓN POSICIÓN DEL DEL DISPLAY DISPLAY REAL REAL RESPECTO AL VIRTUAL RESPECTO AL VIRTUAL CUANDO CUANDO SE SE REALIZA REALIZA UN UN DESPLAZAMIENTO DESPLAZAMIENTO HACIA HACIA LA LA DERECHA DERECHA Carlos Canto Q. MICROCONTROLADORES Asignación de terminales para un módulo LCD de 2X16 caracteres Asignación de pines en distribución horizontal Asignación de pines en distribución vertical Carlos Canto Q. MICROCONTROLADORES INICIALIZACIÓN DEL LCD EL LCD debe ser reinicializado para que opere correctamente. Esta operación se puede realizar de una de dos formas: 9Por circuito interno 9Por Programa Carlos Canto Q. MICROCONTROLADORES INICIALIZACIÓN DEL LCD POR EL CIRCUITO INTERNO DE RESET 9 Los controladores de Hitachi se inicializarán de manera automática si durante el encendido conseguimos que la tensión de alimentación suba desde 0.2V hasta 4.5V en un tiempo comprendido entra 0.1 y 10ms. 9 Igualmente el tiempo de desconexión debe ser como mínimo de 1 mS antes de volver a conectar. 4.5 V 0.2 V 0.1 ms < trcc < 10ms Carlos Canto Q. 0.2 V 0.2 V tOFF > 1ms MICROCONTROLADORES INICIALIZACIÓN DEL LCD POR PROGRAMA •Si la conexión de la alimentación no reune las condiciones que exige el módulo LCD,(que es lo más probable) habría que realizar la secuencia de inicialización por software. •Esta consiste en enviar una serie de comandos de los descritos anteriormente y esperar un determinado tiempo. •En cualquier caso, es importante enviar al LCD la primera instrucción de trabajo después de que hayan transcurrido 15 ms, para completar dicha secuencia de inicialización. Carlos Canto Q. MICROCONTROLADORES PASOS PARA LA INICIALIZACIÓN DEL LCD EN MODO 8 BITS Carlos Canto Q. MICROCONTROLADORES PASOS PARA LA INICIALIZACIÓN POR PROGRAMA EN MODO 4 BITS SIN CHEQUEO DE BF – – – – – – – – – – – – – – – – – Aplicar VCC Espera > 15 ms FUNCTION SET (Modo de 8 bits) Espera > 4.1 ms FUNCTION SET (Modo de 8 bits) Espera >100 µs FUNCTION SET (Modo de 8 bits) Espera > 4.1ms FUNCTION SET (Modo 4 bits) Espera > 40 µs FUNCTION SET (Modo 4 bits, una o dos líneas y la fuente que se desee ) Espera > 40 µs Display OFF (Apagar pantalla, quitar cursor) Espera > 40 µs DISPLAY CLEAR Espera > 1.64ms ENTRY MODE SET (Configurar desplazamiento de pantalla/cursor ) – Espera > 40 µs. – La inicialización ha sido completada. Carlos Canto Q. MICROCONTROLADORES INICIALIZACIÓN INICIALIZACIÓNPOR PORINSTRUCCIÓN INSTRUCCIÓNEN ENMODO MODO44BITS BITS POWER ON RS R/W DB7 DB6 DB5 DB4 0 Espera>15ms 0 0 0 1 1 0 0 1 0 0 0 0 0 N F * 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 Espera>1.64ms 0 1 * RS R/W DB7 DB6 DB5 DB4 0 0 Espera>40µs RS R/W DB7 DB6 DB5 DB4 RS R/W DB7 DB6 DB5 DB4 0 0 0 0 0 0 0 1 0 0 I/D S 1 Espera>100µs 0 1 0 RS R/W DB7 DB6 DB5 DB4 0 0 RS R/W DB7 DB6 DB5 DB4 Espera>4.1ms 0 0 Espera>40µs RS R/W DB7 DB6 DB5 DB4 0 0 RS R/W DB7 DB6 DB5 DB4 1 Espera>4.1ms Carlos Canto Q. 0 0 0 0 0 0 0 0 1 0 0 0 Espera>40µs Espera>40µs fin de inicialización DISPLAY LCD MICROCONTROLADORES INICIALIZACIÓN DEL MÓDULO LCD HD44780 EN MODO 4 BITS SIN CHEQUEO DE BF CARGA_LCD CARGA_LCD Power on A A ÅCLEAR_LCD ÅCLEAR_LCD ESPERA ESPERA 15ms 15ms ESPERA ESPERA 4.1 4.1 ms ms CARGA_LCD CARGA_LCD AÅFUNC_SET_4 AÅFUNC_SET_4 RsÅIR RsÅIR AÅFUNC_SET_8 AÅFUNC_SET_8 CARGA_LCD CARGA_LCD ESPERA ESPERA 4.1 4.1 ms ms ESPERA ESPERA 1.64 1.64 ms ms CARGA_LCD CARGA_LCD A A ÅENTRY_MODE_SET ÅENTRY_MODE_SET ESPERA ESPERA 40 40 µs µs AÅFUNC_SET_4X2 AÅFUNC_SET_4X2 CARGA_LCD CARGA_LCD CARGA_LCD CARGA_LCD ESPERA ESPERA 40 40 µs µs AÅFUNC_SET_8 AÅFUNC_SET_8 CARGA_LCD CARGA_LCD ESPERA ESPERA 40 40 µs µs Fin Finde deinicialización inicialización AÅDISPLAY_OFF AÅDISPLAY_OFF ESPERA ESPERA 100µs 100µs AÅFUNC_SET_8 AÅFUNC_SET_8 CARGA_LCD CARGA_LCD ESPERA ESPERA 40 40 µs µs Carlos Canto Q. MICROCONTROLADORES Diagrama Diagrama de de flujo flujo del del programa programa principal principal Descripción del programa: Power Power on on ElElobjetivo objetivodel delprograma programaes, es, que quealaloprimir oprimir una tecla del teclado matricial, una tecla del teclado matricial,se sedespliegue despliegue en enelelLCD LCDelel mensaje mensaje de de32 32caracteres caracteres correspondiente a la tecla oprimida correspondiente a la tecla oprimida Espera Espera 15 15ms ms Inicializar Inicializar LCD LCD Leer Leer Teclado Teclado Leer Leercaracter caracter de de Mensaje Mensaje de de la la memoria memoria Desplegar Desplegar caracter caracter no Fin Fin de de Línea Línea 11 =? =? no Fin Fin de de mensaje mensaje =? =? Carlos Canto Q. si si Pasa_linea2 Pasa_linea2 DISPLAY LCD MICROCONTROLADORES INICIALIZACIÓN DEL MÓDULO LCD HD44780 EN MODO 4 BITS SIN CHEQUEO DE BF Asignación de símbolos a las códigos de operación del módulo LCD FUNC_SET_8 FUNC_SET_4 FUNC_SET_4x2 EQU 30h EQU 20h EQU 28h ; Selección de bus de 8 bits ; Selección de bus de 4 bits ; Selección de bus de 4 bits , 2 líneas, 5x7 CLEAR_LCD EQU 01h ; limpia el display DISPLAY_OFF ENTRY_MODE_SET EQU 08h EQU 04h ; Apaga el display y cursor ; No desplaza el display IR DR BUS EQU 0h EQU 1h EQU P1 ; selección del registro de instrucción ; selección del registro de datos Carlos Canto Q. MICROCONTROLADORES Rutina generadora de retardos (ESPERA) ESPERA ESPERA R2 R2Å ÅN0 N0 R2 R2Å ÅR2-1 R2-1 NO R2=0 R2=0 ?? SI R3 R3Å ÅR3-1 R3-1 NO R3=0 R3=0 ?? SI Ret Ret Carlos Canto Q. Antes Antesde deinvocar invocaraaesta estasubrutina subrutinase sedebe debe cargar R3 con el correspondiente cargar R3 con el correspondienteN1 N1 PROGRAMA FUENTE MOV R3,#N1 LCALL ESPERA . . . . ;Subrutina ESPERA ESPERA_40: DELAY: MOV R2,#N0 AQUÍ: DJNZ R2,AQUÍ DJNZ R3,DELAY RET MICROCONTROLADORES CCÁLCULO ÁLCULO DEL RETARDO GENERADO POR LA RUTINA DELAY (>=40 µs) (>=40µs) Si suponemos que ; fosc=12 Mhz Æ T=(1/12)µs Etiqueta Mnemó Mnemónico # de T # de ejecuciones ttotal DELAY: MOV R3,#N0 12 R3 1µS ( R3 ) AQUÍ: DJNZ R2,AQUI 24 R2xR3 2µs(R2xR3) DJNZ R3,DELAY 24 R3 2µs R3 RET 24 1 2µS tTOT= [1R3+2R2xR3+2R3 +2] µs =[2R2xR3+3R3+2]µs R3(2R2+3) = tTOT-2 ; 2R2+3=(tTot-2)/R3ÆR2 = [(tTOT-2)/2R3]-3/2 ; si R3=1 para tTOT=50µs entonces calculamos N0=[(50-2)/2]-1.5=22.5~23 tenemos que para conseguir un retardo > de 40µs R2=23 Carlos Canto Q. MICROCONTROLADORES CCÁLCULO ÁLCULO PARA OBTENER EL RETARDO >= 4.1 mS R2=[(tTOT -2)/2R3]-3/2 ; ya que R2=23 para tTOT=50µs Despejando R3, tenemos que: R3=(tTOT-2)/(2R2+3) ;sustituimos tTOT= 4.5 ms= 4500µs y R2=23 Tenemos que: R3= 4498/[2(23)+3]=4498/49=91.8 ~92 Finalmente con: R2=23 y R3=92 obtenemos un retardo > de 4.1 ms Carlos Canto Q. MICROCONTROLADORES CCÁLCULO ÁLCULO PARA OBTENER EL RETARDO >= 100 µS 100µS R3=(tTOT-2)/(2R2+3) ;sustituimos tTOT=100µs Tenemos que: R3= 98/49 =2 Finalmente con: R2=23 y R3=2 obtenemos un retardo > de 100 µs Carlos Canto Q. MICROCONTROLADORES CCÁLCULO ÁLCULO PARA OBTENER EL RETARDO >= 1.64mS R3=(tTOT-2)/(2R2+3) ;sustituimos tTOT=1,640µs Tenemos que: R3=1638/49 =33.43~34 Finalmente con: R2=23 y R3=34 obtenemos un retardo > de 1.64 ms Carlos Canto Q. MICROCONTROLADORES CCÁLCULO ÁLCULO PARA OBTENER EL RETARDO >= 15 mS Si cargamos R3 con 180 Tenemos que : tTOT=[R3(2R2+3)+2] µs= 180(49) +2=8822µs tTOT=8.822ms Por lo tanto si invocamos 2 veces esta subrutina obtenemos un retardo de 17.644 ms > 15ms Carlos Canto Q. MICROCONTROLADORES CARGA_LCD CARGA_LCD RsÅC RsÅC ENÅ ENÅ11 BUSÅ BUSÅAA ENÅ ENÅ00 AH AH<--> <-->AL AL ENÅ ENÅ11 BUSÅ BUSÅAA ENÅ ENÅ00 Ret Ret Carlos Canto Q. SUBRUTINA DE CARGA_LCD (ESCRIBIR A REGISTROS IR Y DR) EN LA BANDERA “C” SE CARGA LA SELECCIÓN DEL REGISTRO DEL LCD ( RS) Y EN EL REGISTRO A SE CARGA LA INSTRUCCIÓN O EL DATO A ESCRIBIR AL REGISTRO SELECCIONADO SUBRUTINA SUBRUTINACARGA_LCD CARGA_LCD RS EQU P2.0 RS EQU P2.0 EN EQU P2.1 EN EQU P2.1 BUS EQU P0 BUS EQU P0 CARGA_LCD: CLR EN ; poner EN a cero CARGA_LCD: CLR EN ; poner EN a cero MOV RS, C ; selección deregistro IR o DR MOV RS, C ; selección deregistro IR o DR SETB EN ; poner en alto enable SETB EN ; poner en alto enable MOV BUS, A ; escribe dato/instrucción alto al LCD MOV BUS, A ; escribe dato/instrucción alto al LCD CLR EN ; bajar Enable CLR EN ; bajar Enable SWAP A ; intercambiar Ah y Al SWAP A ; intercambiar Ah y Al SETB EN SETB EN MOV BUS, A ; escribe dato/instrucción bajo al LCD MOV BUS, A ; escribe dato/instrucción bajo al LCD CLR EN CLR EN RET RET MICROCONTROLADORES LOCALIZACIÓN DE LOS MENSAJES EN LA MEMORIA EPROM 05E0H DPTRÅ DPTRÅ500H 500H 0500H 04E0H 0420H DPTRÅ DPTRÅ400H 400H 0400H MENSAJE MENSAJE1515 05FFH 8 mensajes MENSAJE MENSAJE88 MENSAJE MENSAJE77 051FH 04FFH 8 mensajes MENSAJE MENSAJE11 MENSAJE MENSAJE00 043FH 041FH El área de la memoria EPROM, asignada a los mensajes, está formada por 16 mensajes de 32 caracteres (bytes) cada uno, ocupando un total de 16X32=512 bytes. Se podría usar, por ejemplo, de la dirección 400h a la 5FFh El mensaje a desplegar en el LCD, se selecciona dependiendo de la tecla que se haya oprimido. PROGRAMA PROGRAMA 0000 Carlos Canto Q. DISPLAY LCD MICROPROCESADORES UBICACI ÓN DE LOS MENSAJES EN LA MEMORIA DEL UBICACIÓN PROGRAMA ; Mensajes en ASCII a desplegar en el LCD MENSAJES EQU 400H ORG MENSAJES MENSAJES: DB “MENSAJE 1MENSAJE 2” DB “MENSAJE 3 MENSAJE4” DB “MENSAJE 5 MENSAJE6” . . . DB “MENSAJE15 MENSAJE16” Carlos Canto Q. MICROCONTROLADORES Distribución de los mensajes en la memoria EPROM Mensaje 15 Mensaje 15 Mensaje 14 Mensaje 14 Mensaje Mensaje1313 Mensaje Mensaje1212 Mensaje 11 Mensaje 11 Mensaje 10 Mensaje 10 Mensaje Mensaje9 9 Mensaje Mensaje8 8 Mensaje 7 Mensaje 7 Mensaje 6 Mensaje 6 Mensaje Mensaje5 5 Mensaje 4 Mensaje 4 Mensaje 3 Mensaje 3 Mensaje Mensaje2 2 Mensaje 1 Mensaje 1 Mensaje Mensaje0 0 DptrÅ500 DptrÅ400 programa programa 500+D0H Para obtener la dirección donde empieza un mensaje, se hace lo siguiente: 500+00h 400+D0h 400+40h 400+20h 400+00h Si el valor de la tecla oprimida es menor que 8, ( el mensaje está en el primer segmento de mensajes) entonces , se multiplica su valor por 20 y se le suma 400h que es el valor del DPTR para esa región. Por ejemplo, si se oprime la tecla 3 la parte baja de la dirección del mensaje será: 3x20H=60h por lo tanto la dirección de inicio del mensaje 3 será =400h+60h=460h. Si el valor de la tecla es igual o mayor a 8, se le resta 8 y se multiplica por 20h y se le suma 500h, que es el valor asignado al Dptr para esa región. 0000 Carlos Canto Q. MICROCONTROLADORES Subrutina para leer y desplegar los mensajes en el LCD: LEE_MSG LEE_MSG LEE_MSG NO Dptr DptrÅ400H Å400H Se Secarga cargaalalLCD LCD elelcarácter carácteraadesplegar desplegar tecla tecla>=>=8?8? Dptr DptrÅ500H Å500H A ÅA - 8 A ÅA - 8 CÅ CÅ1 1 R3 R3eseselelcontador contadorde de caracteres caracteresenviados enviados CARGA_LCD CARGA_LCD AAÅA*20H ÅA*20H R1Å R1Å1 1 R3Å20H R3Å20H ESPERA ESPERA>>4040µS µS R2Å A R2Å A Cambio Cambiode deLínea Línea AAÅÅA+1 A+1 AÅ R2 AÅ R2 AAÅÅ@@A+Dptr A+Dptr AÅ AÅC0H C0H CÅ CÅ0 0 SI CARGA_LCD CARGA_LCD R1Å R1Å1 1 ESPERA > 40 µS ESPERA > 40 µS Carlos Canto Q. R3ÅR3-1 R3ÅR3-1 R3=10h? R3=10h? NO NO R3=0h? SI R3=0h? RET RET MICROCONTROLADORES LEER_MSG: ; CHECAR SI LA TECLA OPRIMIDA ES >=A 8 JB ACC.3,GRUPO2 MOV DPTR,#400H SJMP MULTI GRUPO2: MOV DPTR,#500H SUBB A,#8 MULTI: MOV B,#20H MUL A,B DE_NUEVO: MOV R2,A ; RESPALDA EL VALOR DE A MOV R3,20H ; LEER CARÁCTER DEL MENSAJE MOVC A,@A+DPTR SETB C LCALL CARGA_LCD MOV R1,#01 LCALL DELAY DEC R3 CJNE R3,#10H,FIN_LIN2 Carlos Canto Q. ; CAMBIO A LÍNEA2 DEL LCD MOV A,#0C0h CLR C LCALL CARGA_LCD MOV R1.#01 LCALL DELAY MOV A,R2 INC A SJMP DE_NUEVO FIN_LIN2: CJNE R3,#20H,SIG_CHR SJMP OTRO: RET
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )