Autor Tema: Subrrutina para gobernar LCDs  (Leído 5966 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado SantiMizar

  • PIC10
  • *
  • Mensajes: 1
Subrrutina para gobernar LCDs
« en: 04 de Marzo de 2003, 11:14:00 »
Aqui va el segundo, pués.

La siguiente subrrutina en ensamblador (solo programo en ensmblador) es la más sencilla, efectiva y rápida que he encontrado hasta la fecha, para gobernar una LCD. La he diseñado con comentarios. Puede utilizarse con cualquier modelo de PIC que tenga 1 puerto y 3 bits de otro libres para tal efecto.

Es una maravilla, si teneis alguna duda, me lo comentais.

Desconectado JLT-malibeto

  • PIC10
  • *
  • Mensajes: 31
RE: Subrrutina para gobernar LCDs
« Respuesta #1 en: 04 de Marzo de 2003, 17:54:00 »
Gracias, por ahora lo bajo y cuando tenga el conocimiento y tiempo lo miraré y tendré en cuenta.
Saludos ..
JLT

Desconectado RubioRubio

  • PIC10
  • *
  • Mensajes: 24
RE: Subrrutina para gobernar LCDs
« Respuesta #2 en: 14 de Junio de 2003, 10:13:00 »
Hola, empecé a mirar tu  rutina, estoy empezando con esto de los PICs, podes pasarme bien los puertos q usa?
y en q registro debo guardar el dato q representará?
Quizá esté preguntando una estupidez......

Desconectado Elizabeth2004

  • PIC10
  • *
  • Mensajes: 46
RE: Subrrutina para gobernar LCDs
« Respuesta #3 en: 01 de Mayo de 2005, 10:44:00 »
Escrito originalmente por SantiMizar
Puede utilizarse con cualquier modelo de PIC que tenga 1 puerto y 3 bits de otro libres para tal efecto.

Es una maravilla, si teneis alguna duda, me lo comentais.Sonrisa



Ke tal amigo, no tendrás por ahí la misma rutina para manejo del LCD pero con bus de 4 bits?? ah.. y si simula en el proteus mejorSonrisa
Gracias
BYe

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #4 en: 03 de Mayo de 2005, 10:54:00 »
Saludos, espero que estas rutinas les sea de ayuda.

Codigo:
; REALIZA LA INICIALIZACION DEL LCD. UNA INTERFAZ DE 4 BITS,
; 2 LINEAS Y 5X7 PIXELS.
;
;   RS   ---->   RA4      D7   ---->   RA3
;   RW   ---->   RA6      D6   ---->   RA2
;   E   ---->   RA7      D5   ---->   RA1
;               D4   ---->   RA0
;               D3   ---->   GND
;               D2   ---->   GND
;               D1   ---->   GND
;               D0   ---->   GND
;       _____________________________________________________
;      |                                         |
;      |   -----------------------------------------------   |
;      |  |                                               |  |
;      |  |                                               |  |
;      |  |                                               |  |
;      |   -----------------------------------------------   |
;      |                   _                                 |
;      |  GND VCC VEE RS R/W E D0 D1 D2 D3 D4 D5 D6 D7  A K  |
;      |_____________________________________________________|
;          |   |   |  |   |  |  |  |  |  |  |  |  |  |  |  |
;             1   2   3  4   5  6  7  8  9 10 11 12 13 14 15 16  

; SE DEFINEN PINES DEL PORTA
#DEFINE   D4_LCD   PORTA,0
#DEFINE   D5_LCD   PORTA,1
#DEFINE   D6_LCD   PORTA,2
#DEFINE   D7_LCD   PORTA,3
#DEFINE   RS   PORTA,4
#DEFINE   RW   PORTA,6
#DEFINE   E   PORTA,7


; BLOQUE DE COMANDOS
LCD_LINEA1   EQU   0X80   ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 1
LCD_LINEA2   EQU   0XC0   ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 2
LCD_BORRAR   EQU   0X01   ;CLR LCD, CURSOR EN LA POSICION 1 LINEA 1
LCD_INICIO   EQU   0X02   ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 1
LCD_INC      EQU   0X06   ;INC POSICION CURSOR DESPUES DE CADA CARACTER
LCD_DEC      EQU   0X04   ;DEC POSICION CURSOR DESPUES DE CADA CARACTER
LCD_ON      EQU   0X0C   ;ENCIENDE LCD
LCD_OFF      EQU   0X08   ;APAGA LCD
LCD_CURSON   EQU   0X0E   ;ENCIENDE LCD Y EL CURSOR (_CURSOR)
LCD_CURSOFF   EQU   0X0C   ;APAGA EL CURSOR
LCD_CURSBLK   EQU   0X0D   ;ENCIENDE LCD Y PARPADEA EL CURSOR ([]CURSOR)
LCD_IZDA            EQU   0X18   ;DESPLAZA LOS CARACTERES MOSTRADOS A LA IZQUIERDA
LCD_DECHA       EQU   0X1C   ;DESPLAZA LOS CARACTERES MOSTRADOS A LA DERECHA
LCD_CURSIZ   EQU   0X10   ;MUEVE EL CURSOR UNA POSICION A LA IZQUIERDA
LCD_CURSDE   EQU   0X14   ;MUEVE EL CURSOR UNA POSICION A LA DERECHA
LCD_4BITS       EQU   0X28   ;INTERFACE 4 BITS, 2 LINEAS, 5X7 PIXELES
LCD_CGRAM     EQU   0X40   ;GENERADOR DE CARACTERES DE USUARIO RAM

; RUTINA PARA LA CONFIGURACION DEL LCD
LCD_CONFIG
   CALL   DEMO_5MS
   MOVLW   B"11110000"
   ANDWF   PORTA,F      ;BORRA PORTA_LOW RESPETANDO LAS RESTANTES
   MOVLW   0X03
   IORWF   PORTA,F      ;INTERFACE DE 8 BITS
   BCF   RW      ;MODO ESCRITURA
   BCF   RS      ;MODO COMANDO
   CALL   LCD_E
   CALL   DEMO_150MS       ;RETARDO SUGERIDO POR EL FABRICANTE
   CALL   LCD_E
   CALL   DEMO_150MS       ;RETARDO SUGERIDO POR EL FABRICANTE
   CALL   LCD_E
   CALL   DEMO_150MS       ;RETARDO SUGERIDO POR EL FABRICANTE
   MOVLW   B"11110000"
   ANDWF   PORTA,F      ;BORRA PORTA_LOW RESPETANDO LAS RESTANTES
   MOVLW   0X02
   IORWF   PORTA,F      ;INTERFACE DE 4 BITS
   CALL   LCD_E
   MOVLW   LCD_4BITS       ;INTERFACE DE 4 BITS, 2 LINEAS Y 5X7 PIXELS
   CALL   LCD_CMD
   MOVLW   LCD_ON
   CALL   LCD_CMD
   MOVLW   LCD_BORRAR
   CALL   LCD_CMD
   RETURN

; RUTINA QUE ENTREGA UN PULSO A ENABLE DEL LCD
LCD_E
   BSF   E
   NOP
   NOP
   BCF   E
   RETURN

; RUTINA QUE VERIFICA EL ESTADO DEL FLAG BUSY DEL LCD.
LCD_BUSY
   BANK_1
   MOVLW   B"00001111"
   IORWF   TRISA,F      ;PORTA_LOW COMO ENTRADA
   BANK_0
   BSF   RW      ;MODO LECTURA
   BCF   RS      ;MODO COMANDO
   NOP
LCD_BUSY3
   BSF   E
   NOP
   NOP
   MOVFW   PORTA
   MOVWF   LCD_TEMP
   NOP
   NOP
   BCF   E
   NOP
   NOP
   BSF   E
   NOP
   NOP
   BCF   E
   BTFSC   LCD_TEMP,3
   GOTO   LCD_BUSY3
   BANK_1
   MOVLW   B"11110000"
   ANDWF   TRISA,F      ;PORTA_LOW COMO SALIDA
   BANK_0
   RETURN      

; RUTINA QUE ENVIA UN COMANDO AL LCD
LCD_CMD
   MOVWF   LCD_CHAR      ;SALVA COMANDO PARA SER ENVIADO
   CALL   LCD_BUSY
   BCF   RW      ;MODO ESCRITURA
   BCF   RS      ;MODO COMANDO
   GOTO   $+.5
; RUTINA QUE VISUALIZA EN EL LCD EL CONTENIDO CARGADO EN W (W=ASCII)
LCD_DATA
   MOVWF   LCD_CHAR      ;SALVA COMANDO PARA SER ENVIADO
   CALL   LCD_BUSY
   BCF   RW      ;MODO ESCRITURA
   BSF   RS      ;MODO CARACTER
   BCF   D4_LCD
   BCF   D5_LCD
   BCF   D6_LCD
   BCF   D7_LCD
; SEND NYBLE MSB
   BTFSC   LCD_CHAR,7
   BSF   D7_LCD
   BTFSC   LCD_CHAR,6
   BSF   D6_LCD
   BTFSC   LCD_CHAR,5
   BSF   D5_LCD
   BTFSC   LCD_CHAR,4
   BSF   D4_LCD   
   CALL   LCD_E
; SEND NYBLE LSB
   BCF   D4_LCD
   BCF   D5_LCD
   BCF   D6_LCD
   BCF   D7_LCD
   BTFSC   LCD_CHAR,3
   BSF   D7_LCD
   BTFSC   LCD_CHAR,2
   BSF   D6_LCD
   BTFSC   LCD_CHAR,1
   BSF   D5_LCD
   BTFSC   LCD_CHAR,0
   BSF   D4_LCD
   CALL   LCD_E
   RETURN
   

Saludos,
Mario.

Lima - Perú

Desconectado Elizabeth2004

  • PIC10
  • *
  • Mensajes: 46
RE: Subrrutina para gobernar LCDs
« Respuesta #5 en: 04 de Mayo de 2005, 07:50:00 »
Escrito originalmente por mario_pastor
Saludos, espero que estas rutinas les sea de ayuda.




Gracias amigo, una pregunta... la has probado?? y te funcionan..?

Bye

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #6 en: 04 de Mayo de 2005, 09:48:00 »
Claro que las probe y me funcionaron...  porque las hice yo Muchas risas   Por cierto, donde veas CALL DEMO_5MS y CALL DEMO_150MS son retardos que debes crear de acuerdo al CRISTAL que uses Giño. Ya me contaras como te va con tu diseño...
Saludos,
Mario.

Lima - Perú

Desconectado Elizabeth2004

  • PIC10
  • *
  • Mensajes: 46
RE: Subrrutina para gobernar LCDs
« Respuesta #7 en: 04 de Mayo de 2005, 16:46:00 »
Escrito originalmente por mario_pastor
Claro que las probe y me funcionaron...  porque las hice yo Muchas risas   Por cierto, donde veas CALL DEMO_5MS y CALL DEMO_150MS son retardos que debes crear de acuerdo al CRISTAL que uses Giño. Ya me contaras como te va con tu diseño...


Ok, Gracias, luego te cuento.. oye y hablando de todo un poco.. has trabajado con Rf.??
Bye

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #8 en: 04 de Mayo de 2005, 19:48:00 »
Claro, con los de RENTRON que trabajan a 433MHz y su modulación es OOK. Aquí tienes el link: http://www.rentron.com/PicBasic/RemoteControl.htm pero te recomiendo a que abras un nuevo post si tienes alguna duda respecto al tema... tu sabes para mantener el orden del foro Giño
Saludos,
Mario.

Lima - Perú

Desconectado Elizabeth2004

  • PIC10
  • *
  • Mensajes: 46
RE: Subrrutina para gobernar LCDs
« Respuesta #9 en: 05 de Mayo de 2005, 07:39:00 »
Escrito originalmente por mario_pastor
Claro, con los de RENTRON que trabajan a 433MHz y su modulación es OOK. Aquí tienes el link: http://www.rentron.com/PicBasic/RemoteControl.htm pero te recomiendo a que abras un nuevo post si tienes alguna duda respecto al tema... tu sabes para mantener el orden del foro Giño


mmm.. lo ke pasa es ke hace tiempo pedí ayuda en eso y nadie me dijo nada... entonces por eso no he vuelto a postear yo utilizo son los TLPRLP434A..

Gracias voy a ver si me animo a postear..

Bye

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #10 en: 05 de Mayo de 2005, 11:18:00 »
Elizabeth, coloca aquí el link de tu consulta sobre RF y de esa manera vemos como solucionamos tu problema.
Saludos,
Mario.

Lima - Perú

Desconectado Elizabeth2004

  • PIC10
  • *
  • Mensajes: 46
RE: Subrrutina para gobernar LCDs
« Respuesta #11 en: 05 de Mayo de 2005, 17:48:00 »
Escrito originalmente por mario_pastor
Elizabeth, coloca aquí el link de tu consulta sobre RF y de esa manera vemos como solucionamos tu problema.

Pues mira inicialmente el post lo colocó mi hermano, ya ke estamos haciendo el proyecto de grado entre los 2 pero el se alejó un poco de esto y ahora me tocó a mi.. Link
Al principio teníamos unas ideas para el tx.. pero luego del tiempo pensamos en enviar bytes mediante RS-232 con un 16f84a y también desde el pc...
Pero bueno ahora, las dudas son menos, estamos en la etapa de prueba del tx para ver como se comporta con los datos ke le enviamos, si al rx le llegan bien y cosas así.... las inkietudes eran en la parte de la señal a enviar, en tipo de antena y cosas así de RF, ke depronto alguien ke ya haya trabajado con estos módulos sabe bien como es ke funcionan y me podría echar una manito...

Gracias de antemano

bye

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #12 en: 05 de Mayo de 2005, 20:31:00 »
Elizabeth, te respondi por este otro sub-foro:  http://miarroba.com/foros/ver.php?foroid=15353&temaid=1777135
Saludos,
Mario.

Lima - Perú

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
RE: Subrrutina para gobernar LCDs
« Respuesta #13 en: 13 de Mayo de 2005, 17:43:00 »
Hola, alguien ha usado la rutina de control lcd de 4 bits? Pues aparecen dos etiquetas, llamadas BANK_0, y BANK_1, que me imagino que tendran que ser sustituidas por la selección del banco 1 o 0. ¿O me equivoco?

Gracias, y saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Subrrutina para gobernar LCDs
« Respuesta #14 en: 13 de Mayo de 2005, 20:44:00 »
Saludos micro_falo, estas en lo correcto puedes reemplazar los BANK_0 y BANK_1 por tus rutinas habituales para cambio de banco. Diseñe las rutinas de esa manera porque estoy acostumbrado a trabajar con macros y de esa manera me evito de estar escribiendo todo el código  Sonrisa Gigante   Suerte y espero me comentes como te fue con las rutinas.

Un abrazo,

Saludos,
Mario.

Lima - Perú