Autor Tema: LCD Nokia en PBP  (Leído 41789 veces)

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

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #30 en: 29 de Septiembre de 2006, 00:30:37 »
Hola amigos basandome en lo que pone Eyedol de la pagina de cucaracha hice esta rutina que creo sirve para inicializar un LCD de nokia, pero porque no le dan una revisada ya que tengo dudas con respecto a la posicion del cursor y el limpiado del lcd.

Con referencia a la libreria de MKB aun no se como definir los letras no es tan sencillo como en MKB (jajajaja ahora si verdad uno se da cuenta de las ventajas de regresar valores a una funcion jajajajaja) y eso seria otra cosa u otra libreria lo que hice esta para un 16F877 por lo del PORTC.

Bueno chequenlo y me dicen no apenas estoy con esto.

Código: XML
  1. '****************************************************************
  2. '*  Name    : Libreria LCD nokia3310                            *
  3. '*  Author  : Max E. Reyes Vera Juarez                          *
  4. '*  Notice  : Copyright (c) 2006 Protegido por leyes de Autor   *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 28/09/2006                                        *
  7. '*  Version : 0.1a                                              *
  8. '*  Notes   : Basado en la libreria de ANTON RIECKERT           *
  9. '*          : para MKB. Y en la pagina web de cucaracha         *
  10. '*          :    http://webs.ono.com/usr008/cucaracha/                *
  11. '****************************************************************
  12.  
  13. '  PORTC.0   -  CS   - Habilitar Chip
  14. '  PORTC.1   -  RES  - Reset
  15. '  PORTC.4   -  SCLK - Entrada de Reloj Serie
  16. '  PORTC.5   -  DC   - Dato / Comando
  17. '  PORTC.6   -  SDA  - Entrada Dato Serie
  18.  
  19. TRISC = 0
  20.  
  21.  
  22. CS   VAR PORTC.0
  23. DC   VAR PORTC.5
  24. RES  VAR PORTC.1
  25. SDA  VAR PORTC.6
  26. SCLK VAR PORTC.4
  27.  
  28. CMD VAR BYTE
  29. B   VAR BYTE
  30. I   VAR BYTE
  31. x   VAR BYTE
  32. y   VAR BYTE
  33.  
  34. COLUMNA VAR BYTE
  35. FILA    VAR BYTE
  36.  
  37. LCD_INIT:
  38.  CS = 0
  39.  DC = 0
  40.  RES = 0
  41.  SDA = 0
  42.  SCLK = 0
  43.  PAUSEUS 250
  44.  DC = 1
  45.  CS = 1
  46.  PAUSE 15
  47.  RES = 0
  48.  PAUSE 300
  49.  RES = 1
  50.  PAUSE 100
  51. GOTO ENVIO_CMD_0x21:
  52.  
  53. ENVIO_CMD_0x21:
  54.  CMD = $21
  55.  dc = 0
  56.  cs = 0
  57.   FOR I = 7 TO 0 STEP -1
  58.    SCLK = 0
  59.      IF CMD[i] = 0 THEN
  60.       SDA = 0
  61.      ELSE
  62.       SDA = 1
  63.      ENDIF  
  64.    SCLK = 1
  65.   NEXT I
  66. GOTO ENVIO_CMD_0x90:  
  67.  
  68. ENVIO_CMD_0x90:
  69.  CMD = $90
  70.  dc = 0
  71.  cs = 0
  72.   FOR I = 7 TO 0 STEP -1
  73.    SCLK = 0
  74.      IF CMD[i] = 0 THEN
  75.       SDA = 0
  76.      ELSE
  77.       SDA = 1
  78.      ENDIF  
  79.    SCLK = 1
  80.   NEXT I
  81. GOTO ENVIO_CMD_0x13:
  82.  
  83. ENVIO_CMD_0x13:
  84.  CMD = $13
  85.  dc = 0
  86.  cs = 0
  87.   FOR I = 7 TO 0 STEP -1
  88.    SCLK = 0
  89.      IF CMD[i] = 0 THEN
  90.       SDA = 0
  91.      ELSE
  92.       SDA = 1
  93.      ENDIF  
  94.    SCLK = 1
  95.   NEXT I
  96. GOTO ENVIO_CMD_0x20:
  97.  
  98. ENVIO_CMD_0x20:
  99.  CMD = $20
  100.  dc = 0
  101.  cs = 0
  102.   FOR I = 7 TO 0 STEP -1
  103.    SCLK = 0
  104.      IF CMD[i] = 0 THEN
  105.       SDA = 0
  106.      ELSE
  107.       SDA = 1
  108.      ENDIF  
  109.    SCLK = 1
  110.   NEXT I
  111. GOTO ENVIO_CMD_0x09:
  112.  
  113. ENVIO_CMD_0x09:
  114.  CMD = $09
  115.  dc = 0
  116.  cs = 0
  117.   FOR I = 7 TO 0 STEP -1
  118.    SCLK = 0
  119.      IF CMD[i] = 0 THEN
  120.       SDA = 0
  121.      ELSE
  122.       SDA = 1
  123.      ENDIF  
  124.    SCLK = 1
  125.   NEXT I
  126. PAUSE 60
  127. GOTO IR_x0y0
  128.  
  129. IR_x0y0:
  130.   Y = %01000000
  131.   x = %10000000
  132.  dc = 0
  133.  cs = 0
  134.   FOR I = 7 TO 0 STEP -1
  135.    SCLK = 0
  136.      IF X[i] = 0 THEN
  137.       SDA = 0
  138.      ELSE
  139.       SDA = 1
  140.      ENDIF  
  141.    SCLK = 1
  142.   NEXT I
  143.  
  144.   FOR I = 7 TO 0 STEP -1
  145.    SCLK = 0
  146.      IF Y[i] = 0 THEN
  147.       SDA = 0
  148.      ELSE
  149.       SDA = 1
  150.      ENDIF  
  151.    SCLK = 1
  152.   NEXT I
  153. GOTO LCD_CLEAR
  154.  
  155. LCD_CLEAR:
  156.  
  157.  SDA = 0
  158.  DC  = 1
  159.  CS  = 0
  160.  
  161.  for FILA = 1 to 6              
  162.   for COLUMNA = 1 to 84  
  163.    for B = 1 to 8    
  164.       LOW SCLK
  165.       TOGGLE SCLK      
  166.    next B
  167.   next COLUMNA
  168.  next FILA
  169. PAUSE 20
  170. GOTO ENVIO_CMD_0x0C
  171.  
  172. ENVIO_CMD_0x0C:
  173. CMD = $0C
  174.  dc = 0
  175.  cs = 0
  176.   FOR I = 7 TO 0 STEP -1
  177.    SCLK = 0
  178.      IF CMD[i] = 0 THEN
  179.       SDA = 0
  180.      ELSE
  181.       SDA = 1
  182.      ENDIF  
  183.    SCLK = 1
  184.   NEXT I
  185. '.....................

ah y si nos les gusta pues ayudenme a modificarlo y a optimizarlo, esque derepente me hice bolas. :shock:
« Última modificación: 29 de Septiembre de 2006, 00:53:17 por navaismo »
"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."

AABHGA

  • Visitante
Re: lcd nokia en pbp
« Respuesta #31 en: 29 de Septiembre de 2006, 01:14:35 »
Aunque no soy muy ducho en esto, veo que cada proceso de CMD 0xXX es para enviar un valor que hace parte de los caracteres cierto?

si es así, no sería mas facil almacenar los data de los caracteres en la eeprom del micro de manera ordenada, ya que veo que cada caracter son 5 datos, entonces por decir almacenamos en la eeprom desde la posición 10 a la 14 el caracter "A", de la 15 a la 20 el caracter "B" y así sucesivamente, y luego cuando se quiera mostrar algo, se puede hacer una cadena por ejemplo, queremos mostrar la frase "Hola" entonces haríamos un ciclo, y que cada vez lea el valor ASCII de cada letra y se dirija a la rutina específica, para hacerme entender en esto se diría:

Código: [Seleccionar]
FRASE = "Hola"
FOR C = 1 to n step 1 (donde n sería la cantidad de caracteres que tiene lo que queremos mostrar)
    CHAR(C) = al primer caracter (no se me viene a la mente el código)
    GOSUB MOSTRAR
NEXT C

MOSTRAR:
con una formula determinamos en donde está almacenado en la eeprom el caracter, la cual sería
ASCII = valor ascii de CHAR(C)
BASEMEM = (ASCII - 64) * 5
FOR DAT = 0 TO 4 STEP 1 (DE 0 A 4 porque cada caracter esta ocupando 5 posiciones de la eeprom)
    BASEMEM = BASEMEM + DAT (Empezamos a sumar para ir recorriendo cada una de las posiciones en la eeprom)
    READ BASEMEM,MEM (Lea en la posición que indica BASEMEM y asignela a MEM)
-------------------------------
Aquí pondríamos el ciclo de envio del dato en MEM que se repetiría 5 veces por cada caracter
-------------------------------
NEXT DAT
RETURN

Supongo que así podrás simplificar los procesos y solo te preocuparías por hacer la base de datos de cada caracter, si me equivoco o meto las patas por favor corrijanme que como dije al principio no soy muy ducho en esto y estoy recurriendo a mis antiguas bases de programación en PC usando Basic, no se hasta donde llegará la compatibilidad. xD

AABHGA

  • Visitante
Re: lcd nokia en pbp
« Respuesta #32 en: 29 de Septiembre de 2006, 01:22:32 »
Miercoles se me olvidaba y no me dejó modificar, en esta parte del código:

Código: [Seleccionar]
ASCII = valor ascii de CHAR(C)
BASEMEM = (ASCII - 64) * 5

Faltó poner un condicional, ya que las mayúsculas van del 65 al 90, y las minúsculas van del 97 al 122, entonces sería algo así:

Código: [Seleccionar]
ASCII = valor ascii de CHAR(C)
IF ASCII => 65 AND ASCII <= 90 THEN
    BASEMEM = (ASCII - 64) * 5
ENDIF
IF ASCII => 97 AND ASCII <= 122 THEN
    BASEMEM = (ASCII - 96) * 5
ENDIF

Ten en cuenta que la almacenamiento en la eeprom debe comenzar en la posición 10 en adelante sin dejar espacios, y corrijo arriba la secuencia, sería de 10 a 14 la primera de 15 a 19 la segunda y así sucesivamente, para los números debes aplicar otra condiciona, y para los caracteres especiales como " # \ * / , " . ; : ' ", ahí ya te tocaría cuadrar las condicionales.

PD: Disculpen el doble post pero no me dejó corregir el anterior.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #33 en: 29 de Septiembre de 2006, 01:24:53 »
Este mmmm no mira los cmd que mando segun lei en la web de cucaracha son necesarios para inicializar, aun no me meto con los caracteres ya que para escribir un espacio por ejemplo debe ser 0x00, 0x00, 0x00, 0x00 entonces aun no se como definir eso, y concuerdo contigo con usar la eeprom o una externa para las letras.

Pero primero ver si esta bien inicializado  con ese codigo.

Apelo o apelamos a los masters del PBP!!!!! ¿Donde estan? no nos abandonen :D
"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."

AABHGA

  • Visitante
Re: lcd nokia en pbp
« Respuesta #34 en: 29 de Septiembre de 2006, 01:30:30 »
Por cierto, ese Mikrobasic tiene mas pinta de ser C que Basic, vaya cantidad de definiciones para hacer cualquier cosa, (lo mismo pienso del C) que para ser un lenguaje de "Alto Nivel" hay que definirle demasiadas pendejadas, de aprender algo así, aprendo Asembler y salgo ganando.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #35 en: 29 de Septiembre de 2006, 13:01:11 »
Pues pense en medio minimizar el codigo anterior y me quedo asi, jajaja no fue mucho pero si se redujo.

Ahora alguien de los que ya haya usado las librerias de MKB o la del Amigo Nocturno podria darme una explicada rapida sobre los caracteres, ¿porque son varias lineas para definir un solo caracter? Por ejemplo el espacio es 0x00, 0x00, 0x00, 0x00 porque todo eso es el espacio. Con esa ayuda podre ir pensando mas o menos como hacer los caracteres en PBP y donde guardarlos.

Insisto algun valiente que verifique si funciona la inicializacion del LCD con este o con el codigo anterior???
Código: QBasic/QuickBASIC
  1. '****************************************************************
  2. '*  Name    : Libreria LCD nokia3310                            *
  3. '*  Author  : Max E. Reyes Vera Juarez                          *
  4. '*  Notice  : Copyright (c) 2006 Protegido por leyes de Autor   *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 28/09/2006                                        *
  7. '*  Version : 0.1a                                              *
  8. '*  Notes   : Basado en la libreria de ANTON RIECKERT           *
  9. '*          : para MKB. Y en la pagina web de cucaracha         *
  10. '*          : http://webs.ono.com/usr008/cucaracha/             *
  11. '****************************************************************
  12.  
  13. '  PORTC.0   -  CS   - Habilitar Chip
  14. '  PORTC.1   -  RES  - Reset
  15. '  PORTC.4   -  SCLK - Entrada de Reloj Serie
  16. '  PORTC.5   -  DC   - Dato / Comando
  17. '  PORTC.6   -  SDA  - Entrada Dato Serie
  18.  
  19. TRISC = 0
  20.  
  21.  
  22. CS   VAR PORTC.0
  23. DC   VAR PORTC.5
  24. RES  VAR PORTC.1
  25. SDA  VAR PORTC.6
  26. SCLK VAR PORTC.4
  27.  
  28. CMD VAR BYTE
  29. B   VAR BYTE
  30. I   VAR BYTE
  31. x   VAR BYTE
  32. y   VAR BYTE
  33.  
  34. COLUMNA VAR BYTE
  35. FILA    VAR BYTE
  36.  
  37. LCD_INIT:
  38.  CS = 0
  39.  DC = 0
  40.  RES = 0
  41.  SDA = 0
  42.  SCLK = 0
  43.  PAUSEUS 250
  44.  DC = 1
  45.  CS = 1
  46.  PAUSE 15
  47.  RES = 0
  48.  PAUSE 300
  49.  RES = 1
  50.  PAUSE 100
  51. GOTO ENVIO_CMDs:
  52.  
  53.  
  54. ENVIO_CMDs:
  55.  FOR B = 0 TO 4
  56.     SELECT CASE B
  57.       CASE 0
  58.        CMD = $21
  59.        GOSUB ENVIO_CMD
  60.       CASE 1
  61.        CMD = $90
  62.        GOSUB ENVIO_CMD
  63.       CASE 2
  64.        CMD = $13
  65.        GOSUB ENVIO_CMD
  66.       CASE 3
  67.        CMD = $20
  68.        GOSUB ENVIO_CMD
  69.      CASE 4
  70.        CMD = $09
  71.        GOSUB ENVIO_CMD  
  72.     END SELECT
  73.  NEXT B  
  74. GOTO IR_x0y0
  75.  
  76. IR_x0y0:
  77.   Y = %01000000
  78.   x = %10000000
  79.  dc = 0
  80.  cs = 0
  81.   FOR I = 7 TO 0 STEP -1
  82.    SCLK = 0
  83.      IF X[i] = 0 THEN
  84.       SDA = 0
  85.      ELSE
  86.       SDA = 1
  87.      ENDIF  
  88.    SCLK = 1
  89.   NEXT I
  90.  
  91.   FOR I = 7 TO 0 STEP -1
  92.    SCLK = 0
  93.      IF Y[i] = 0 THEN
  94.       SDA = 0
  95.      ELSE
  96.       SDA = 1
  97.      ENDIF  
  98.    SCLK = 1
  99.   NEXT I
  100. GOTO LCD_CLEAR
  101.  
  102. LCD_CLEAR:
  103.  SDA = 0
  104.  DC  = 1
  105.  CS  = 0
  106.  FOR FILA = 1 TO 6              
  107.   FOR COLUMNA = 1 TO 84  
  108.    FOR B = 1 TO 8    
  109.       LOW SCLK
  110.       TOGGLE SCLK      
  111.    NEXT B
  112.   NEXT COLUMNA
  113.  NEXT FILA
  114. PAUSE 20
  115. CMD = $0C
  116. GOSUB ENVIO_CMD
  117. GOTO CONTINUE
  118.  
  119. ENVIO_CMD:
  120.  dc = 0
  121.  cs = 0
  122.   FOR I = 7 TO 0 STEP -1
  123.    SCLK = 0
  124.      IF CMD[i] = 0 THEN
  125.       SDA = 0
  126.      ELSE
  127.       SDA = 1
  128.      ENDIF  
  129.    SCLK = 1
  130.   NEXT I
  131. RETURN  
  132.  
  133. CONTINUE:
  134. '.............. HABER QUE MAS, FALTAN LAS LETRAS Y COMO ESCRIBIR EN LCD
  135.  
« Última modificación: 29 de Septiembre de 2006, 13:06:41 por navaismo »
"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 Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: lcd nokia en pbp
« Respuesta #36 en: 29 de Septiembre de 2006, 13:17:11 »
Intentaré explicarte lo de los caracteres. En este display los bytes se envían verticalmente uno tras otro, de manera que el primer byte que envíes representa la primera columna de la matriz de puntos, el segundo la segunda columna y así sucesivamente.

Pues bien, supongamos ahora que queremos componer la letra "K" en una matriz de 5 puntos de ancho por 7 de alto.
Código: [Seleccionar]
X   X
X  X
X X
XX
X X
X  X
X   X

Si vamos mirando columna a columna y las rotamos a la posición horizontal, nos queda algo así:
Código: [Seleccionar]
XXXXXXX
   X   
  X X 
 X   X
X     X

Ahora vamos a poner un 1 donde hay marca y un 0 donde no la hay
Código: [Seleccionar]
1111111
0001000
0010100
0100010
1000001

Por último, pasamos eso mismo a hexadecimal:
Código: [Seleccionar]
0111 1111 ... 0x7F
0000 1000 ... 0x80
0001 0100 ... 0x14
0010 0010 ... 0x22
0100 0001 ... 0x41

Y ya está, hemos llegado a la conclusión de que la K se dibuja con estos bytes: 0x7F,0x80,0x14,0x22 y 0x41. Si te fijas en la librería Fuente_5_7 esos son los que hay en la letra K.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: lcd nokia en pbp
« Respuesta #37 en: 29 de Septiembre de 2006, 13:22:46 »
Hola:

Esta mas claro que el agua Manolo  :mrgreen:

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #38 en: 29 de Septiembre de 2006, 13:25:24 »
Gracias por la explicacion maestro Nocturno, ¿entonces es necesario rotar la letra para sacar su valor? pero bueno como bien dice ahi se ve que coincide salvo por un error tipografico jeje pero muy buena la explicacion. Creo que con PBP va ser medio complicado pero lo intentare.
"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 navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #39 en: 29 de Septiembre de 2006, 13:51:43 »
Bueno, ya dandome una idea de  como  es que se usa, estaba viendo lo de empezar a crear las letras pero me surgen preguntas, dado que en PBP no he visto vectores tan grandes ¿tendria que hacer un vector para cada variable? y ¿como definir de un golpe dicho vector ? ya busque en la ayuda y no dice mucho o nada.

por ejemplo para el caracter de exclamacion ! se usa $00,$00,$2F,$00,$00 y solo he atinado a definirlo asi.

Código: [Seleccionar]
exclama VAR byte[4]  '  !
exclama[0]=$00
exclama[1]=$00
exclama[2]=$2F
exclama[3]=$00
exclama[4]=$00

y tendria que hacer eso con cada letra no? Bueno con eso veo que tendremos que usar u otro pic como de la familia 18 o una memoria externa para guardar el alfabeto.

Se podria usar la funcion lookup para imprimir las letras???

Y por ultimo insistiendo, algun valiente que tenga a mano el lcd y que me pueda decir si se inicializa correctamente con el codigo que he puesto
« Última modificación: 29 de Septiembre de 2006, 16:26:57 por navaismo »
"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 navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Libreria lcd nokia 3310 solucionado!!!! ( no por mi, snif snif)
« Respuesta #40 en: 29 de Septiembre de 2006, 17:22:50 »
 :cry: :8}

Bueno eso me pasa por querer hacer algo que ya esta hecho....Si ya esta hecho :-/ me meti a buscar mas informacion sobre esto de PBP y el lcd 3310 de nokia y cai en el foro de melabs y encontre esta rutina. Que al parecer funciona muy bien la hizo un amigo de grecia -creo- llamado Alexandros Zahariadis y le doy las gracias.

aqui les dejo el codigo

Código: QBasic/QuickBASIC
  1. ;=------------------------------=
  2. ;- coder: Alexandros Zahariadis -
  3. ;-        Thessaloniki- Greece  -
  4. ;- email: bitmaniac@yahoo.COM   -
  5. ;=------------------------------=
  6. ;PIC61F648A (20Mhz crystal) - 4Mhz IS ok,too
  7. 'NOKIA 3310 LCD MODULE PINOUT
  8. 'as viewed from the back (left -> right)
  9. '1 vcc  
  10. '2 sclk  portb.7
  11. '3 sda   portb.6
  12. '4 d/!c  portb.5
  13. '5 !cs   portb.4
  14. '6 gnd
  15. '7 Vout  
  16. '8 !rst  portb.3
  17. INCLUDE "modedefs.bas"
  18.  
  19. defINE OSC 20  
  20. CMCON = %00000111 ' Make PortA digital
  21. TRISA = %00000000
  22. TRISB = %00000000
  23.  
  24. Lcd_DC      var Portb.5
  25. Lcd_CS      var Portb.4
  26. Lcd_SDA     var Portb.6
  27. Lcd_RST     var Portb.3
  28. Lcd_CLK     var Portb.7
  29.  
  30. i           var Byte
  31. j           var Word
  32. k           var Byte
  33. b0          var byte
  34. PosX        var Byte
  35. PosY        var Byte
  36. FontCache   var Byte [6]
  37. LcdStr      var Byte [26]
  38. Lcd_Data    var Byte
  39.  
  40. Low Lcd_CS 'Chip selected
  41.  
  42. GOSUB Lcd_INIT
  43. GOSUB Lcd_Clear
  44.  
  45. 'set contrast
  46. Low Lcd_DC
  47. SHiftOUT Lcd_SDA , Lcd_CLK , MSBFIRST, [ $21,$a7,$20 ]
  48.  
  49. start:
  50. PosX=0:PosY=0:GOSUB Lcd_GotoXY
  51. FOR i=0 TO 13
  52. lookup i,["NOKIA LCD TEST"],j
  53. lcdstr(i)=j
  54. NEXT i
  55. GOSUB Lcd_SentString
  56. PosX=0:PosY=1:GOSUB Lcd_GotoXY
  57. FOR i=0 TO 13
  58. lookup i,["{} {} {} {} {}"],j
  59. lcdstr(i)=j
  60. NEXT i
  61. GOSUB Lcd_SentString
  62. PosX=0:PosY=2:GOSUB Lcd_GotoXY
  63. FOR i=0 TO 13
  64. lookup i,["{} GRAPHICS {}"],j
  65. lcdstr(i)=j
  66. NEXT i
  67. GOSUB Lcd_SentString
  68. PosX=0:PosY=3:GOSUB Lcd_GotoXY
  69. FOR i=0 TO 13
  70. lookup i,["{} {} {} {} {}"],j 'cars icons!
  71. lcdstr(i)=j
  72. NEXT i
  73. GOSUB Lcd_SentString
  74. PosX=0:PosY=4:GOSUB Lcd_GotoXY
  75. FOR i=0 TO 13
  76. lookup i,["84 X 48 PIXELS"],j
  77. lcdstr(i)=j
  78. NEXT i
  79. GOSUB Lcd_SentString
  80. PosX=0:PosY=5:GOSUB Lcd_GotoXY
  81. FOR i=0 TO 13
  82. lookup i,["ALEX BITMANIAC"],j
  83. lcdstr(i)=j
  84. NEXT i
  85. GOSUB Lcd_SentString
  86.  
  87. PAUSE 1000
  88.  
  89. start2:
  90. 'invert screen mode
  91. Low Lcd_DC
  92. Lcd_Data= %00001101:GOSUB Lcd_SentByte  ;invert
  93. ;Lcd_Data= %00001000:GOSUB Lcd_SentByte    ;blank
  94. pause 500
  95.  
  96. 'normal screen mode
  97. Low Lcd_DC
  98. Lcd_Data= %00001100:GOSUB Lcd_SentByte
  99. pause 3000
  100. ;GOSUB lcd_clear
  101. GOTO start2
  102.  
  103.  
  104. 'LCD ROUTINE
  105. Lcd_Init:
  106. 'RESET LCD
  107. Low Lcd_RST
  108. pause 20
  109. High Lcd_RST
  110.  
  111.   Low Lcd_CS : Low Lcd_DC
  112.   Lcd_Data= $21: GOSUB Lcd_SentByte             'LCD EXTENDED COMMANDS
  113.   Lcd_Data= $c8: GOSUB Lcd_SentByte             'SET LCD Vop (CONTRAST)
  114.   Lcd_Data= $06: GOSUB Lcd_SentByte             'SET TEMP COEFFICENT
  115.   Lcd_Data= $10: GOSUB Lcd_SentByte             'LCD BIAS MODE 1:48
  116.   Lcd_Data= $20: GOSUB Lcd_SentByte             'LCD STANDARD COMMANDS
  117.   Lcd_Data= $0c: GOSUB Lcd_SentByte             'LCD IN NORMAL MODE
  118. RETURN
  119.  
  120. Lcd_SentByte:
  121. SHiftOUT Lcd_SDA , Lcd_CLK , MSBFIRST, [ Lcd_Data ]
  122. RETURN
  123.  
  124. Lcd_SentChar:
  125. SELECT CASE lcd_data
  126.   CASE 48     '0
  127.     j = 156  
  128.   CASE 49     '1
  129.     j = 162
  130.   CASE 50     '2
  131.     j = 168
  132.   CASE 51     '3
  133.     j = 174
  134.   CASE 52     '4
  135.     j = 180
  136.   CASE 53     '5
  137.     j = 186
  138.   CASE 54     '6
  139.     j = 192
  140.   CASE 55     '7
  141.     j = 198    
  142.   CASE 56     '8
  143.     j = 204
  144.   CASE 57     '9
  145.     j = 210
  146.   CASE 32     'space
  147.     j = 216
  148.   CASE 43     '+
  149.     j = 222
  150.   CASE 45     '-
  151.     j = 228
  152.   CASE 46     '.
  153.     j = 234
  154.   CASE 42     '*
  155.     j = 240
  156.   CASE 58     ':
  157.     j = 246
  158.   CASE 124    'character '|' -> graphic!
  159. FOR i=0 TO 5
  160. LOOKUP2 i,[$7e,$95,$a1,$a1,$95,$7e],b0
  161. fontcache(i)=b0:NEXT i:GOTO jump
  162.   CASE 123   'character '{' -> car half left
  163. FOR i=0 TO 5
  164. LOOKUP2 i,[$18,$5c,$ac,$5e,$1d,$1d],b0
  165. fontcache(i)=b0:NEXT i:GOTO jump
  166.   CASE 125
  167. FOR i=0 TO 5 'character '}' -> car half right
  168. LOOKUP2 i,[$1d,$1d,$5f,$ac,$5c,$18],b0
  169. fontcache(i)=b0:NEXT i:GOTO jump
  170.  
  171. CASE ELSE    'letters A-Z -capitals
  172. j=(Lcd_Data-65) * 6
  173. END SELECT
  174. FOR i=0 TO 5
  175. READ j+i,fontcache(i)
  176. NEXT i
  177. jump:
  178. High Lcd_DC
  179. SHiftOUT Lcd_SDA , Lcd_CLK , MSBFIRST, [ FontCache(0),FontCache(1),FontCache(2),FontCache(3),FontCache(4),FontCache(5) ]
  180. RETURN
  181.  
  182. Lcd_SentString:
  183. FOR k=0 TO 13     ' step -1
  184. Lcd_Data=LcdStr(k)
  185. ;IF Lcd_Data=0 THEN RETURN
  186. pause 80
  187. GOSUB Lcd_SentChar
  188. NEXT k
  189. RETURN
  190.  
  191. Lcd_Contrast:
  192. Low Lcd_DC
  193. Lcd_Data=$C8:GOSUB Lcd_SentByte 'write data
  194. RETURN
  195.  
  196. Lcd_Clear:
  197. GOSUB Lcd_Home
  198. High Lcd_DC
  199. FOR i=1 TO 252
  200. Lcd_Data=0:GOSUB Lcd_SentByte   'write data
  201. Lcd_Data=0:GOSUB Lcd_SentByte   'write data
  202. NEXT i
  203. RETURN
  204.  
  205. Lcd_Home:
  206. PosX=0:PosY=0:GOSUB Lcd_GotoXY
  207. RETURN
  208.  
  209. Lcd_GotoXY:
  210. Low Lcd_DC
  211. Lcd_Data=%01000000 | PosY :GOSUB Lcd_SentByte   'Y
  212. Lcd_Data=%10000000 | PosX :GOSUB Lcd_SentByte   'X
  213. RETURN
  214.  
  215. ' Font DATA table
  216.  
  217. DATA $7E,$11,$11,$11,$7E,$00            '65 - A - 41
  218. DATA $7F,$49,$49,$49,$36,$00            '66 - B - 42
  219. DATA $3E,$41,$41,$41,$22,$00            '67 - C - 43
  220. DATA $7F,$41,$41,$22,$1C,$00            '68 - D - 44
  221. DATA $7F,$49,$49,$49,$41,$00            '69 - E - 45
  222. DATA $7F,$09,$09,$09,$01,$00            '70 - F - 46
  223. DATA $3E,$41,$49,$49,$7A,$00            '71 - G - 47
  224. DATA $7F,$08,$08,$08,$7F,$00            '72 - H - 48
  225. DATA $00,$41,$7F,$41,$00,$00            '73 - I - 49
  226. DATA $20,$40,$41,$3F,$01,$00            '74 - J - 4A
  227. DATA $7F,$08,$14,$22,$41,$00            '75 - K - 4B
  228. DATA $7F,$40,$40,$40,$40,$00            '76 - L - 4C
  229. DATA $7F,$02,$0C,$02,$7F,$00            '77 - M - 4D
  230. DATA $7F,$04,$08,$10,$7F,$00            '78 - N - 4E
  231. DATA $3E,$41,$41,$41,$3E,$00            '79 - O - 4F
  232. DATA $7F,$09,$09,$09,$06,$00            '80 - P - 50
  233. DATA $3E,$41,$51,$21,$5E,$00            '81 - Q - 51
  234. DATA $7F,$09,$19,$29,$46,$00            '82 - R - 52
  235. DATA $46,$49,$49,$49,$31,$00            '83 - S - 53
  236. DATA $01,$01,$7F,$01,$01,$00            '84 - T - 54
  237. DATA $3F,$40,$40,$40,$3F,$00            '85 - U - 55
  238. DATA $1F,$20,$40,$20,$1F,$00            '86 - V - 56
  239. DATA $3F,$40,$38,$40,$3F,$00            '87 - W - 57
  240. DATA $63,$14,$08,$14,$63,$00            '88 - X - 58
  241. DATA $07,$08,$70,$08,$07,$00            '89 - Y - 59
  242. DATA $61,$51,$49,$45,$43,$00            '90 - Z - 5A
  243. DATA $3E,$51,$49,$45,$3E,$00            '48 - 0 - 30
  244. DATA $00,$42,$7F,$40,$00,$00            '49 - 1 - 31
  245. DATA $42,$61,$51,$49,$46,$00            '50 - 2 - 32
  246. DATA $21,$41,$45,$4B,$31,$00            '51 - 3 - 33
  247. DATA $18,$14,$12,$7F,$10,$00            '52 - 4 - 34
  248. DATA $27,$45,$45,$45,$39,$00            '53 - 5 - 35
  249. DATA $3C,$4A,$49,$49,$30,$00            '54 - 6 - 36
  250. DATA $01,$71,$09,$05,$03,$00            '55 - 7 - 37
  251. DATA $36,$49,$49,$49,$36,$00            '56 - 8 - 38
  252. DATA $06,$49,$49,$49,$3E,$00            '57 - 9 - 39
  253. DATA $00,$00,$00,$00,$00,$00            '32 -   - 20
  254. DATA $08,$08,$3E,$08,$08,$00            '43 - + - 2B
  255. DATA $08,$08,$08,$08,$08,$00            '45 - - - 2D
  256. DATA $00,$60,$60,$00,$00,$00            '46 - . - 2E
  257. DATA $14,$08,$3E,$08,$14,$00            '42 - * - 2A
  258. DATA $00,$36,$36,$00,$00,$00            '58 - : - 3A

y el link que el nos regalo muy amablemente con fotos, como conectar el LCD y un programa en VB para conversion. Excelente trabajo

Matrix.zip, creo que al menos Yo estaba muy lejos de hacer eso, mmm solo queda ver si en si es una libreria como la de nocturna o cucaracha o la de MKB o solo se usa asi, voy a ver para que sirve el programa

ahora tengo que conseguir un lcd 3310 para ver si funciona conmigo. saludosssssss

       
Ahora si regresa mi volatil amor por PBP..... jajajaja toma eso MKB
« Última modificación: 29 de Septiembre de 2006, 17:42:20 por navaismo »
"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."

AABHGA

  • Visitante
Re: Libreria lcd nokia 3310 solucionado!!!! ( no por mi, snif snif)
« Respuesta #41 en: 29 de Septiembre de 2006, 18:18:56 »
:cry: :8}
ahora tengo que conseguir un lcd 3310 para ver si funciona conmigo. saludosssssss

Ahora si regresa mi volatil amor por PBP..... jajajaja toma eso MKB

Lol, ojalá no sea muy costosa y ¿eso que vuelve el amor? vamos que Basic es el mejor lenguaje de programación de alto nivel y PBP es el mejor editor de este lenguaje (en lo que se refiere a los pics).

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: lcd nokia en pbp
« Respuesta #42 en: 29 de Septiembre de 2006, 19:59:14 »
Hola:

Que bien por la libreria  :-/, gracias por tu tiempo Max, oye, si no seria mucha molestia, podrias poner el link de donde la sacaste? Para ver que mas comentan sobre ella.

Gracias, muy buen aporte.

PD1: a ver si Sanpic la puede probar con su LCD  :mrgreen:  :D

PD2: a la espera de que funcione.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: lcd nokia en pbp
« Respuesta #43 en: 29 de Septiembre de 2006, 20:02:35 »
Hola:

je je otra cosa que me olvide :twisted: , con la libreria en PBP es mas facil migrarla a Proton +  :P , a ver si me tomo ese trabajo cuando me consiga un LCD de esos.  :mrgreen:

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: lcd nokia en pbp
« Respuesta #44 en: 29 de Septiembre de 2006, 20:17:07 »
Hola Gio, si mira el Link es este Foro Melabs..NOKIA LCD y tambien ahi esta una libreria en Proton que es esta.

Y si espero que alguien la pruebe, porque no veo por donde uno pueda escribir lo que uno quiera

 :-/ :-/
"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."


 

anything