Hola gente:
Hace rato que tenia un par de displays de Nokia, uno blanco y negro 5110 y este color, el b/n funciono de una, pero este... no funciono ni los pocos HEX que habia en la red. Ofuscado le meti 5v a todo... y tampoco funciono =P
En fin, realice otra compra y me puse a intentar probar algo mas que los dos pobres HEX que encontre en la web, por lo menos yo no tuve suerte encontrando codigo para usarlo, y lo mas legible que encontre estaba en ASM pero de AVR. Cosas muy locas.
Finalmente empece de cero, mirando la secuencia de inicializacion y leyendo el PDF. Nada funciono, le di mil vueltas al asunto (por suerte el PROTEUS hace la bronca mas manejable) y como ultima variable encontre (por simple experimentacion) que la pata de CS funciona invertida en cuanto al codigo de AVR (del que no tenia el HEX)... incluso estaba aclarado que iba asi, y por eso nunca lo habia cambiado... pero ya no quedaban mas cosas para cambiar.
En fin, por si a alguien le sirve adjunto el codigo (simple) que use para por lo menos empezar, me falta la parte de texto (como urgencia) pero bueno, seguro a alguien le puede servir, lei que habia una libreria pero no parece no estar mas en la www.
'****************************************************************
'* Name : UNTITLED.BAS *
'* Date : 10/03/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device=16F877A
Xtal = 4
Symbol LCD_CS=PORTD.1
Symbol LCD_SDA=PORTD.2
Symbol LCD_RST=PORTD.0
Symbol LCD_CLK=PORTD.3
Dim Lcd_Data As Byte
Dim ColorByte1 As Byte
Dim ColorByte2 As Byte
Dim ColorByte3 As Byte
Dim X As Word
Dim wRegion As Word
ColorByte1=0xF0'255'%11000110 'RRRRGGGG - Los colores se cargan en 3 bytes para formar 2pixels con esta
ColorByte2=0X0F'255'%00111111 'BBBBRRRR estructura
ColorByte3=0X00'255'%11000011 'GGGGBBBB
GoSub Inicializar
GoSub DefinirRegion
Demo: Lcd_Data=0x2c 'Escribir en la RAM y enviarpixel funciona en modo relleno, todavia no probe mas regiones
GoSub EnviarComando 'En el ejemplo esta en modo 12bits
For X=0 To wRegion Step 2
ColorByte1=ColorByte1 -1
If ColorByte1=128 Then ColorByte3=ColorByte3 -1
If ColorByte3=128 Then ColorByte2=ColorByte2 +1
GoSub WritePixel
DelayMS 10
Next
DelayMS 5000
GoTo Demo
Inicializar:
Low LCD_RST
DelayMS 100
High LCD_RST
Lcd_Data=0x11 'SleepOut
GoSub EnviarComando
Lcd_Data=0x29 'Encender Display
GoSub EnviarComando
Lcd_Data=0x03 'On Voltage Booster
GoSub EnviarComando
Lcd_Data=0x3a 'Sets pixel format to the following data byte
GoSub EnviarComando
Lcd_Data=0x03 'The pixel format 0x03 is 12 bits per pixel
GoSub EnviarDato
Lcd_Data=0x36 'Varios Parametros pueden ir MirroY, MirrorX, VerticalWrite, BottonTop, BGR/RGB, etc
GoSub EnviarComando
Lcd_Data=0xc0 'Mirror Y
GoSub EnviarDato
Lcd_Data=0x25 'Ajustar contraste
GoSub EnviarComando
Lcd_Data=0X3C '
GoSub EnviarDato
Return
DefinirRegion:
Lcd_Data=0x2b 'Page(Y) Adress Set
GoSub EnviarComando
Lcd_Data=001 'y1
GoSub EnviarDato
Lcd_Data=66 'y2
GoSub EnviarDato
Lcd_Data=0x2a 'Column Adress Set
GoSub EnviarComando
Lcd_Data=001 'x1
GoSub EnviarDato
Lcd_Data=97 'x2
GoSub EnviarDato
wRegion=97*66
Return
SetXYPos:
Return
WritePixel:
Lcd_Data=ColorByte1
GoSub EnviarDato
Lcd_Data=ColorByte2
GoSub EnviarDato
Lcd_Data=ColorByte3
GoSub EnviarDato
Return
EnviarDato:
Low LCD_CS
SHOut LCD_SDA,LCD_CLK, msbfirst, [ 0XFF\1,Lcd_Data ]
High LCD_CS
Return
EnviarComando:
Low LCD_CS
SHOut LCD_SDA,LCD_CLK, msbfirst, [ 0X00\1,Lcd_Data ]
High LCD_CS
Return
Bueno, veo que es bastante simple ahora que lo veo en Proton... no le veo cosas locas como en AVR o caprichos como algunos ejemplos en C para otros micros.
Espero que puedan colar ideas a este thread porque es un LCD no muy caro y consume pocos recursos de pines y de memoria y todo eso.
Texto el siguiente paso...