Autor Tema: LCD 4x40 en proton?  (Leído 5635 veces)

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

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
LCD 4x40 en proton?
« en: 29 de Julio de 2008, 12:31:15 »
Amigos de todopic alguien tiene una rutina para poder controlar un lcd de 4x40 en proton? esta trae 2 enables y los lcds comunes de 2x16 etc..solo traen 1 enable..

salu2

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: LCD 4x40 en proton?
« Respuesta #1 en: 29 de Julio de 2008, 15:41:33 »
Has probado activando los enables o solo uno para saber si uno es para 2 lineas??
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: LCD 4x40 en proton?
« Respuesta #2 en: 29 de Julio de 2008, 16:34:12 »
 :? si amigo generalmente estos lcd traen 2 controladores hd44780 cada uno controla 2 lineas y el otro las otras 2 lineas...
aqui te dejo el link del datasheet
ATM4004A


Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: LCD 4x40 en proton?
« Respuesta #3 en: 29 de Julio de 2008, 16:48:22 »
Ah entonces usa un ejemplo normal pero cuandso quieras poner las lineas las primeras 2 lineas activa el EN1 y cuando quieras bajar usas el EN2... dejame ver un ejemplo
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: LCD 4x40 en proton?
« Respuesta #4 en: 29 de Julio de 2008, 18:14:48 »
estube leyendo algo en el foro oficial de proton
mira aqui este link porfa..
dan una solucion pero no veo en el programa la asignacion del e2
LINK...

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: LCD 4x40 en proton?
« Respuesta #5 en: 29 de Julio de 2008, 18:17:00 »
esto lo saque del foro oficial..pero no se si este bien no tengo orita el compilador ni el programador a la mano..

Código: [Seleccionar]
Device 18F452
   
    XTAL 40
   
    DelayMS 500
   
    #disable Print
    #disable Cursor
    #enable DelayUS
 
 
    Dim BPF As Byte SYSTEM
    Dim BPFH As Byte SYSTEM
    Dim GEN As Byte SYSTEM
    Dim PP0 As Byte SYSTEM
    Dim PP0H As Byte SYSTEM
    Dim PP3 As Byte SYSTEM
    Dim PP3H As Byte SYSTEM
    Dim PP4 As Byte SYSTEM
    Dim PP5 As Byte SYSTEM

    Dim LCD#ENPINSELECT1 As Bit
    Dim LCD#ENPINSELECT2 As Bit
   
    Symbol LCD#DATAUS = 50
    Symbol LCD#COMMANDUS = 2000
    Symbol LCD_ENPORT2 = PORTB
    Symbol LCD_ENPIN2= 2
       
LCD_DTPIN = PORTB.4
LCD_RSPIN = PORTB.3
LCD_ENPIN = PORTB.0
LCD_INTERFACE = 4 ' 4-bit Interface
LCD_LINES = 2
LCD_TYPE = 0   

    LCDCURSOR_12 MACRO
    LCD#ENPINSELECT1 = 1
    LCD#ENPINSELECT2 = 0
    ENDM
   
    LCDCURSOR_34 MACRO
    LCD#ENPINSELECT1 = 0
    LCD#ENPINSELECT2 = 1
    ENDM   

    LCDCURSOR_1234 MACRO
    LCD#ENPINSELECT1 = 1
    LCD#ENPINSELECT2 = 1
    ENDM
               
    GoTo over#lcdcode
   
ASM
lcd@crs clrf BPFH
    bsf BPFH,7
curs@   movwf PP5
    movlw 254
        Call ch@snd2
        movfw PP5
        GoTo ch@snd2
Print   movwf PP3H
        bcf LCD#ENPORT,LCD#ENPIN
        bcf LCD_ENPORT2,LCD_ENPIN2
   bcf LCD#RSPORT,LCD#RSPIN
   bcf (LCD#ENPORT + 18),LCD#ENPIN
   bcf (LCD_ENPORT2 + 18),LCD_ENPIN2
   bcf (LCD#ENPORT + 18),LCD#RSPIN
   movlw 15
   andwf (LCD#DTPORT + 18),f
   movfw PP3H
   btfsc BPF,1
   GoTo prt@1
   movlw 58
   movwf PP0H
   movlw 152
   Call dlus@w
   movlw 51
   movwf PP3
   Call pr@lp
    movlw 19
   movwf PP0H
   movlw 136
   Call dlus@w
   Call pr@lp
   movlw 100
   Call dl@us
   Call pr@lp
   movlw 100
   Call dl@us
   movlw 34
   movwf PP3
   Call pr@lp
   movlw 40
   Call pr@c
   movlw 12
   Call pr@c
   movlw 6
   Call pr@c
   bsf BPF,1
   movfw PP3H
   bra prt@1
pr@c   bsf BPF,0
prt@1  movwf PP3
   btfss BPF,0
   bra pr@cc
   bcf LCD#RSPORT,LCD#RSPIN
   sublw 3
   bnc pr@sd
   Call pr@sd
   movlw High LCD#COMMANDUS
   movwf PP0H
   movlw Low LCD#COMMANDUS
   Call dlus@w
   bsf STATUS,0
   Return
pr@cc  bsf BPF,0
   sublw 254
   btfsc STATUS,2
   GoTo pr@ex
   bsf LCD#RSPORT,LCD#RSPIN
pr@sd
   btfss BPF,0
pr@lp  bcf BPF,0
   btfsc LCD#ENPINSELECT1
   bsf LCD#ENPORT,LCD#ENPIN
        btfsc LCD#ENPINSELECT2
   bsf LCD_ENPORT2,LCD_ENPIN2
   movlw 15
   andwf LCD#DTPORT,f
   movfw PP3
   andlw 240
   iorwf LCD#DTPORT,f
   nop
   bra $ + 2
   nop
   bcf LCD#ENPORT,LCD#ENPIN
   bcf LCD_ENPORT2,LCD_ENPIN2
   swapf PP3,f
   nop
   bra $ + 2
   nop
   btfsc BPF,0
   bra pr@lp
   movlw Low LCD#DATAUS
   Call dl@us
pr@ex  movfw PP3H
   Return
ch@snd2
   btfsc BPFH,7
   GoTo Print
       GoTo dl@us
ENDASM

over#lcdcode:

   
    ALL_DIGITAL = TRUE ' Set PORTA and PORTE to all digital

   
    LCDCURSOR_1234
    Cls

    Print At 1,1,"hello"
    Print At 2,1,"hello"
   
    DelayMS 500
    LCDCURSOR_12
    Cls
LOOP:
    LCDCURSOR_12
    Cls
    DelayUS 500
    Print At 1,1,"hello"
    Print At 2,1,"hello"       
    DelayUS 1000

    LCDCURSOR_34
    Cls
    DelayUS 500
    Print At 1,1,"hello"
    Print At 2,1,"hello"
           
    DelayUS 1000
     
    GoTo LOOP
    Stop
« Última modificación: 29 de Julio de 2008, 18:27:11 por MiCrOtRoNiC »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: LCD 4x40 en proton?
« Respuesta #6 en: 29 de Julio de 2008, 19:12:50 »
Pues lo he compilado y no boto errores lo unico que en la simulacion de proteus las lineas par no salen en el origen si no mas alla de la mitad del LCD pero si funciono. Lo que si es que esta muy complejo su programa o al menos yo no le entiendo muy bien ya que usa macros y variables de systema.

Pero lo soluciono de maravilla
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: LCD 4x40 en proton?
« Respuesta #7 en: 29 de Julio de 2008, 20:36:05 »
entonces seria
No entiendo ese programa justamente pro lo que dices??
E1-----PORTB.0
E2-----???
RS----PORTB.3
RW----???
D4,D5,D6,D7-----PORTB(4,5,6,7)
« Última modificación: 30 de Julio de 2008, 11:21:13 por MiCrOtRoNiC »

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD 4x40 en proton?
« Respuesta #8 en: 29 de Julio de 2008, 21:16:41 »
Que tal amigos!
Mira MiCrOtRoNiC
Me parece que el controlador que utiliza esa lcd de 40 x 4 no es compatible con el hdd44780 en el data sheet utilizan otro controlador el S6A0069X01-C0CX  :shock:
si no es compatible no se puede  :(
Esta lcd de 40 x 4 si es compatible con el hd44780.

De todas formas prueba colocando una sola E al pic y la otra llevala a cero o a uno y trata la lcd como si fuera una lcd de 20 x 2 y ves si te trabaja  :mrgreen:  de lo contrario ese modelo no lo soporta el proton.

Avisanos tus resultados a ver que le podemos hacer  :mrgreen:

Saludos

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: LCD 4x40 en proton?
« Respuesta #9 en: 30 de Julio de 2008, 11:19:41 »
que tal RALF2 en algunos lados he leido que si es compatible el controlador S6A0069 con el hd44780...supestamente en esta pagina todas sus lcd son compatibles con hd44780 :? :?

    * LCD modules GREEN
          o Sizes from 8x2 up to 40x4 chars.
          o STN, Transreflective, with backlight
          o HD44780 compatible controller

LCDs

LCDS

y esto es una cita textual de este FORO
 :?

"The controllers HD44780, S6A0069 and KS-0066 are completelly compatible with any code writed to HD44780. The differences are only in pinout of the CHIP and pinout of the display boards."

salu2 mientras voya a ver si puedo hacer simular bien el programa en proton q me da problemas con el proteus :?

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: LCD 4x40 en proton?
« Respuesta #10 en: 30 de Julio de 2008, 18:09:58 »
Hola MIcrotronic en el ejmplo que has puesto del codigo de proton los pines quedan asi:

EN1--->RB0
EN2--->RB2
RS---->RB3
RW---->Yo siempre lo conecto a tierra pues solo mando info no recibo.
Y los datos de RB4 a RB7

De hecho en el codigo lo definen.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD 4x40 en proton?
« Respuesta #11 en: 30 de Julio de 2008, 20:20:55 »
Bueno MiCrOtRoNiC
Prueba con la configuracion de pines que te muestra navaismo, pero la lcd que tiene el proteus no estoy seguro si es compatible con el hd44780, esto porque las palabras aparecen desplazadas fuera de lugar como dice navaismo, mejor haz la prueba con la lcd real asi los resultados son mas fiables  :mrgreen:

Pero tambien prueba con la lcd real utilizando solo E1 o E2  a ver si te funciona bien, como te dije arriba  :mrgreen:  si te trabaja bien cada E, como si fueran dos lcd en una, pues el problema lo puedes resolver utilizando dos compuertas and  :shock:
uniendo una entrada de cada compuerta y la conectas a la señal E que maneja el pic  :mrgreen: y las otras dos entradas la utilizas para seleccionar ya sea E1 o E2 (esta señales la controla el pic  :mrgreen:) luego las dos salidas de las compuertas van una a E1 y la otra a E2.
En otras palabras vas a implementar dos funciones:
E1 = CS1 and E,   E2 = CS2 and E, donde E es la variable que maneja el pic y CS1 Y CS2 son las señales que te permitiran habilitar  E1 o E2 de la lcd :mrgreen:

Saludos
« Última modificación: 30 de Julio de 2008, 20:37:32 por RALF2 »