Está en la página 1de 7

12/07/13

Com partir 0

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A


Ms Siguiente blog Crear un blog Acceder

TECNOLOGA ELECTRNICA
martes, 28 de septiembre de 2010

Archivo del blog 2010 (5) septiembre (2) LCD PROTEUS PIC 16F84A SECUENCIA DE LEDS1 EN PROTEUS Y CDIGO mayo (2) enero (1) 2009 (2)

LCD PROTEUS PIC 16F84A


AQU LES DEJO EL CDIGO LISTO PARA ENSAMBLAR EN MPLAB Y GENERAR EL .HEX, NO HAY NECESIDAD DE LIBRERAS ADICIONALES PORQUE YA LAS CARGUE N EL MISMO CDIGO. SALUDOS, ESPERO LO DISFRUTEN, CAMBIEN EL MENSAJE QUE SE DESPLEGAR EN PANTALLA. SOLO COPIEN Y PEGUEN EL CODIGO EN EL BLOC DE NOTAS. EL AUTOR NO SE RESPONSABILIZA DEL MAL USO DE ESTOS MATERIALES. POR FAVOR SI QUIERE ESTA INFORMACIN CITE LA FUENTE Y EL AUTOR. EL VDEO SE ENCUENTRA EN: http://www.youtube.com/watch?v=llCTVCrwCRk

Barra de vdeo

con la tecnologa de

Buscar este blog


Buscar

;************************************ Mensaje******************************************* ; ; El mdulo LCD visualiza un mensaje largo (ms de 16 caracteres) que se desplaza a lo largo ; de la pantalla. Se utiliza la subrutina LCD_MensajeMovimiento de la librera LCD_MENS.INC. ; ; ZONA DE DATOS ********************************************************************** LIST P=16F84A INCLUDE __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Se ha producido un error en este gadget.

Calendario

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

1/7

12/07/13
CBLOCK 0x0C ENDC

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A

; ZONA DE CDIGOS ******************************************************************** ORG 0 Inicio call LCD_Inicializa ; Prepara la pantalla. Principal movlw Mensaje0 ; Apunta al mensaje. call LCD_MensajeMovimiento goto Principal ; Repite la visualizacin. ; "Mensajes" ---------------------------------------------------------------------------; Mensajes addwf PCL,F Mensaje0 ; Posicin inicial del mensaje. DT " " ; Espacios en blanco al principio para mejor DT "HOLA MUY BUENOS DIAS " DT "UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD " DT "TECNOLOGIA EN ELECTRONICA " DT "FRANCISCO JAVIER HILARON NOVOA. " DT " ", 0x0 ; Espacios en blanco al final.

JULIO | 2013

12
Viernes
; visualizacin.

Se ha producido un error en este gadget.

TE PARECE QUE LA INFORMACI N CONTENIDA EN ESTE BLOG ES TIL?


MUCHO SI 0 (0%) 0 (0%) 0 (0%)

Seguidores

Participar en este sitio


Google Friend Connect

;-----------------------LIBRERAS-------------------------------------------------;**************************** Librera "LCD_4BIT.INC" *********************************** ; ZONA DE DATOS ********************************************************************* CBLOCK LCD_Dato LCD_GuardaDato LCD_GuardaTRISB LCD_Auxiliar1 LCD_Auxiliar2 ENDC LCD_CaracteresPorLinea #DEFINE #DEFINE #DEFINE #DEFINE EQU .16 ; Nmero de caracteres por lnea de la pantalla.

UN POCO 0 (0%) NO

Todava no hay miembros. S el primero!


Ya eres miembro? Iniciar sesin

Votos hasta el momento: 0 Encuesta cerrada

LCD_PinRS PORTA,0 LCD_PinRW PORTA,1 LCD_PinEnable PORTA,2 LCD_BusDatos PORTB

LAS TENDENCIAS FUTURISTAS


; Subrutina "LCD_Inicializa" -----------------------------------------------------------; ; Inicializacin del mdulo LCD: Configura funciones del LCD, produce reset por software, ; borra memoria y enciende pantalla. El fabricante especifica que para garantizar la ; configuracin inicial hay que hacerla como sigue: ; LCD_Inicializa bsf STATUS,RP0 ; Configura las lneas conectadas al pines RS, bcf LCD_PinRS ; R/W y E. bcf LCD_PinEnable bcf LCD_PinRW bcf STATUS,RP0 bcf LCD_PinRW ; En caso de que est conectado le indica ; que se va a escribir en el LCD. bcf LCD_PinEnable ; Impide funcionamiento del LCD poniendo E=0. bcf LCD_PinRS ; Activa el Modo Comando poniendo RS=0. call Retardo_20ms movlw b'00110000'

Apple Google Microsoft Eric Schmidt asegura que la relacin ecodiario entre Google y Apple ha ... La relacin entre Google y Apple ha mejorado durante el ltimo ao, en el que ambas compaas tecnolgicas rivales y a veces socias han realizado "muchas y muchas" reuniones, ha dicho el presidente ejecutivo de la firma que opera el mayor motor de ... Artculos relacionados Samsung sobrepasa a Apple en navegacin Europa Press web mvil y se impone ... La firma de investigacin de mercado StatCounter ha realizado un estudio que pone de manifiesto que los consumidores utilizan con ms
2/7

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

12/07/13
call LCD_EscribeLCD call Retardo_5ms movlw b'00110000' call LCD_EscribeLCD call Retardo_200micros movlw b'00110000' call LCD_EscribeLCD call Retardo_20micros movlw b'00100000' call LCD_EscribeLCD call Retardo_20micros

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A


; Escribe el dato en el LCD.

frecuencia los 'smartphones' de Samsung que el iPhone de Apple para navegar por la web. Aunque a nivel mundial ... Artculos relacionados Apple, culpable de conspiracin para incrementar El Mundo.es el precio de los 'e ... El gigante de la informtica Apple ha sido hallado culpable de conspiracin con cinco editoriales para elevar el precio de los 'e-book' cuando lanz al mercado su tableta iPad en 2010, segn el dictamen emitido por una jueza de Nueva York. La ... Artculos relacionados Inditex, Google y Apple, entre las empresas Europa Press ms atractivas para ... El grupo espaol Inditex, seguido de Google y Apple son las empresas ms atractivas para trabajar en Espaa en opinin de los estudiantes de ciencias empresariales, segn un ranking de empleadores ideales en Espaa elaborado conjuntamente por ... Artculos relacionados
con la tecnologa de

; Este retardo es necesario para simular en PROTEUS. ; Interface de 4 bits. ; Este retardo es necesario para simular en PROTEUS.

; Ahora configura el resto de los parmetros: call LCD_2Lineas4Bits5x7 ; LCD de 2 lneas y caracteres de 5x7 puntos. call LCD_Borra ; Pantalla encendida y limpia. Cursor al principio call LCD_CursorOFF ; de la lnea 1. Cursor apagado. call LCD_CursorIncr ; Cursor en modo incrementar. return ; ; ; ; ; ; Subrutina "LCD_EscribeLCD" ----------------------------------------------------------Enva el dato del registro de trabajo W al bus de dato y produce un pequeo pulso en el pin Enable del LCD. Para no alterar el contenido de las lneas de la parte baja del Puerto B que no son utilizadas para el LCD (pines RB3:RB0), primero se lee estas lneas y despus se vuelve a enviar este dato sin cambiarlo.

LCD_EscribeLCD andlw b'11110000' ; Se queda con el nibble alto del dato que es el movwf LCD_Dato ; que hay que enviar y lo guarda. movf LCD_BusDatos,W ; Lee la informacin actual de la parte baja andlw b'00001111' ; del Puerto B, que no se debe alterar. iorwf LCD_Dato,F ; Enviar la parte alta del dato de entrada ; y en la parte baja lo que haba antes. bsf STATUS,RP0 ; Acceso al Banco 1. movf TRISB,W ; Guarda la configuracin que tena antes TRISB. movwf LCD_GuardaTRISB movlw b'00001111' ; Las 4 lneas inferiores del Puerto B se dejan andwf PORTB,F ; como estaban y las 4 superiores como salida. bcf STATUS,RP0 ; Acceso al Banco 0. ; movf LCD_Dato,W ; Recupera el dato a enviar. movwf LCD_BusDatos ; Enva el dato al mdulo LCD. bsf LCD_PinEnable ; Permite funcionamiento del LCD mediante un pequeo bcf LCD_PinEnable ; pulso y termina impidiendo el funcionamiento del LCD. bsf STATUS,RP0 ; Acceso al Banco 1. Restaura el antiguo valor en movf LCD_GuardaTRISB,W ; la configuracin del Puerto B. movwf TRISB bcf STATUS,RP0 ; Acceso al Banco 0. return ; Subrutinas variadas para el control del mdulo LCD ----------------------------------------; ;Los comandos que pueden ser ejecutados son: ; LCD_CursorIncr ; Cursor en modo incrementar. movlw b'00000110' goto LCD_EnviaComando LCD_CursorOFF movlw b'00001100' goto LCD_EnviaComando ; Pantalla encendida y cursor apagado.

LCD_Borra ; Borra toda la pantalla, memoria DDRAM y pone el movlw b'00000001' ; cursor a principio de la lnea 1. goto LCD_EnviaComando LCD_2Lineas4Bits5x7 ; Define la pantalla de 2 lneas, con caracteres movlw b'00101000' ; de 5x7 puntos y conexin al PIC mediante bus de ; goto LCD_EnviaComando ; 4 bits.

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

3/7

12/07/13

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A

; Subrutinas "LCD_EnviaComando" y "LCD_Caracter" -----------------------------------; ; "LCD_EnviaComando". Escribe un comando en el registro del mdulo LCD. La palabra de ; comando ha sido entregada a travs del registro W. Trabaja en Modo Comando. ; "LCD_Caracter". Escribe en la memoria DDRAM del LCD el carcter ASCII introducido a ; a travs del registro W. Trabaja en Modo Dato. ; LCD_EnviaComando bcf LCD_PinRS ; Activa el Modo Comando, poniendo RS=0. goto LCD_Envia LCD_Caracter bsf LCD_PinRS call LCD_CodigoCGROM

; Activa el "Modo Dato", poniendo RS=1. ; Obtiene el cdigo para correcta visualizacin.

LCD_Envia movwf LCD_GuardaDato ; Guarda el dato a enviar. call LCD_EscribeLCD ; Primero enva el nibble alto. swapf LCD_GuardaDato,W ; Ahora enva el nibble bajo. Para ello pasa el ; nibble bajo del dato a enviar a parte alta del byte. call LCD_EscribeLCD ; Se enva al visualizador LCD. btfss LCD_PinRS ; Debe garantizar una correcta escritura manteniendo call Retardo_2ms ; 2 ms en modo comando y 50 s en modo cracter. call Retardo_50micros return ; ; ; ; ; ; ; ; ; ; ; Subrutina "LCD_CodigoCGROM" ----------------------------------------------------------A partir del carcter ASCII nmero 127 los cdigos de los caracteres definidos en la tabla CGROM del LM016L no coinciden con los cdigos ASCII. As por ejemplo, el cdigo ASCII de la "" en la tabla CGRAM del LM016L es EEh. Esta subrutina convierte los cdigos ASCII de la "", "" y otros, a cdigos CGROM para que que puedan ser visualizado en el mdulo LM016L. Entrada: En (W) el cdigo ASCII del carcter que se desea visualizar. Salida: En (W) el cdigo definido en la tabla CGROM.

LCD_CodigoCGROM movwf LCD_Dato ; Guarda el valor del carcter y comprueba si es LCD_EnheMinuscula ; un carcter especial. sublw '' ; Es la ""? btfss STATUS,Z goto LCD_EnheMayuscula ; No es "". movlw b'11101110' ; Cdigo CGROM de la "". movwf LCD_Dato goto LCD_FinCGROM LCD_EnheMayuscula movf LCD_Dato,W ; Recupera el cdigo ASCII de entrada. sublw '' ; Es la ""? btfss STATUS,Z goto LCD_Grado ; No es "". movlw b'11101110' ; Cdigo CGROM de la "". (No hay smbolo para movwf LCD_Dato ; la "" mayscula en la CGROM). goto LCD_FinCGROM LCD_Grado movf LCD_Dato,W ; Recupera el cdigo ASCII de entrada. sublw '' ; Es el smbolo ""? btfss STATUS,Z goto LCD_FinCGROM ; No es "". movlw b'11011111' ; Cdigo CGROM del smbolo "". movwf LCD_Dato LCD_FinCGROM movf LCD_Dato,W ; En (W) el cdigo buscado. return

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

4/7

12/07/13

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A

;**************************** Librera "LCD_MENS.INC" ********************************

CBLOCK LCD_ApuntaCaracter

LCD_ValorCaracter ENDC

; Indica la posicin del carcter a visualizar ; respecto del comienzo de todos los mensajes, ; (posicin de la etiqueta "Mensajes"). ; Cdigo ASCII del carcter a ; visualizar.

; Los mensajes tienen que estar situados dentro de las 256 primeras posiciones de la ; memoria de programa, es decir, no pueden superar la direccin 0FFh. ; Vuelve al programa principal. ; ; ; ; ; ; ; ; Subrutina "LCD_MensajeMovimiento" ----------------------------------------------------Visualiza un mensaje de mayor longitud que los 16 caracteres que pueden representarse en una lnea, por tanto se desplaza a travs de la pantalla. En el mensaje debe dejarse 16 espacios en blanco, al principio y al final para conseguir que el desplazamiento del mensaje sea lo ms legible posible. CBLOCK LCD_CursorPosicion ENDC

; Contabiliza la posicin del cursor dentro de la ; pantalla LCD

LCD_MensajeMovimiento movwf LCD_ApuntaCaracter ; Posicin del primer carcter del mensaje. movlw Mensajes ; Halla la posicin relativa del primer carcter subwf LCD_ApuntaCaracter,F ; del mensaje respecto de la etiqueta "Mensajes". decf LCD_ApuntaCaracter,F ; Compensa la posicin que ocupa "addwf PCL,F". LCD_PrimeraPosicion clrf LCD_CursorPosicion ; El cursor en la posicin 0 de la lnea. call LCD_Borra ; Se sita en la primera posicin de la lnea 1 y LCD_VisualizaCaracter ; borra la pantalla. movlw LCD_CaracteresPorLinea ; Ha llegado a final de lnea? subwf LCD_CursorPosicion,W btfss STATUS,Z goto LCD_NoEsFinalLinea LCD_EsFinalLinea call Retardo_200ms ; Lo mantiene visualizado durante este tiempo. call Retardo_200ms movlw LCD_CaracteresPorLinea-1; Apunta a la posicin del segundo carcter visualizado subwf LCD_ApuntaCaracter,F ; en pantalla, que ser el primero en la siguiente goto LCD_PrimeraPosicion ; visualizacin de lnea, para producir el efecto LCD_NoEsFinalLinea ; de desplazamiento hacia la izquierda. movf LCD_ApuntaCaracter,W call Mensajes ; Obtiene el ASCII del carcter apuntado. movwf LCD_ValorCaracter ; Guarda el valor de carcter. movf LCD_ValorCaracter,F ; Lo nico que hace es posicionar flag Z. En caso btfsc STATUS,Z ; que sea "0x00", que es cdigo indicador final goto LCD_FinMovimiento ; de mensaje, sale fuera. LCD_NoUltimoCaracter2 call LCD_Caracter ; Visualiza el carcter ASCII ledo. incf LCD_CursorPosicion,F ; Contabiliza el incremento de posicin del ; cursor en la pantalla. incf LCD_ApuntaCaracter,F ; Apunta a la siguiente posicin por visualizar. goto LCD_VisualizaCaracter ; Vuelve a visualizar el siguiente carcter LCD_FinMovimiento ; de la lnea. return ; Vuelve al programa principal.

;**************************** Librera "RETARDOS.INC" ********************************* ; ZONA DE DATOS ********************************************************************* CBLOCK R_ContA R_ContB

; Contadores para los retardos.

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

5/7

12/07/13
R_ContC ENDC

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A

; RETARDOS de 20 hasta 500 microsegundos -----------------------------------------------Retardo_200micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. movlw d'64' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_50micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. movlw d'14' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_20micros movlw d'5' ; La llamada "call" aporta 2 ciclos mquina. ; Aporta 1 ciclo mquina. Este es el valor de "K".

RetardoMicros movwf R_ContA ; Aporta 1 ciclo mquina. Rmicros_Bucle decfsz R_ContA,F ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto Rmicros_Bucle ; Aporta (K-1)x2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina. ; RETARDOS de 1 ms hasta 200 ms. -------------------------------------------------------; Retardo_200ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'200' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_20ms movlw d'20' goto Retardos_ms Retardo_5ms movlw d'5' goto Retardos_ms Retardo_2ms movlw d'2' goto Retardos_ms ; La llamada "call" aporta 2 ciclos mquina. ; Aporta 1 ciclo mquina. Este es el valor de "M". ; Aporta 2 ciclos mquina. ; La llamada "call" aporta 2 ciclos mquina. ; Aporta 1 ciclo mquina. Este es el valor de "M". ; Aporta 2 ciclos mquina. ; La llamada "call" aporta 2 ciclos mquina. ; Aporta 1 ciclo mquina. Este es el valor de "M". ; Aporta 2 ciclos mquina.

Retardos_ms movwf R_ContB ; Aporta 1 ciclo mquina. R1ms_BucleExterno movlw d'249' ; Aporta Mx1 ciclos mquina. Este es el valor de "K". movwf R_ContA ; Aporta Mx1 ciclos mquina. R1ms_BucleInterno nop ; Aporta KxMx1 ciclos mquina. decfsz R_ContA,F ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar). goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos mquina. decfsz R_ContB,F ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina.

END

; Fin del programa.

Publicado por Francisco Javier Hilarin Novoa en 08:11

3 comentarios:
tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html 6/7

12/07/13
luciana 5 de diciembre de 2010 22:34

TECNOLOGA ELECTRNICA: LCD PROTEUS PIC 16F84A

COMPERO ME PODRIA DECIR LA LISTA DE MATERIALES Y EL PLANO DEL CIRCUITO??? ES QUE SOY NUEVO EN ESTO... =) Responder

dg@ 31 de mayo de 2011 17:18 Hola que tal! Te agradezco por tu post. Ya lo compile en MPLAB y genera muchos errores: ": Symbol not previously defined (PORTA)", "Symbol not previously defined " y asi con la mayoria de instrucciones. No se si puedas ayudarme con esto, gracias. Responder

jhoser 23 de noviembre de 2011 16:30 hola me podrias ayudar estoy armando un teclado utilisando una memoria ram 6116 unos circuitos y un display LCD C61602L, no se como armar el display, cuales son los pines que van a la energia y a los pines para la memoria podrias ayyudarme con un diagrama mosjauregui@hotmail.com Responder I n t r o d u c et uc o m e n t a r i o . . .

Comentar como: Cuenta de Google Publicar Vista previa

Pgina principal
Suscribirse a: Enviar comentarios (Atom)

Entrada antigua

Plantilla Awesome Inc.. Imgenes de plantillas de enot-poloskun. Con la tecnologa de Blogger.

tecnologyelectronik.blogspot.com/2010/09/lcd-proteus-pic-16f84a.html

7/7

También podría gustarte