Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

GLCD y Jal Dudas al por mayor

Iniciado por YO, Marzo 21, 2012, 12:49:30 PM

Tema anterior - Siguiente tema

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

YO


Un ejemplo simple para probar el contador de direcciones:

-- **************************************
-- Dibujamos una lìnea de 8 bit
-- **************************************

    for 5 loop

GLCD_CS1 = 0
GLCD_CS2 = 1
GLCD_DI = 0 -- Seleccionamos contador 3
GLCD_RW = 0
GLCD_DATAPRT = 0x43
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

GLCD_DI = 0 -- Seleccionamos página 0
GLCD_RW  = 0
GLCD_DATAPRT = 0xB8
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

-- Encendemos el pixcel deseado
GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0xff --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0



-- **********************************
-- Dibujamos una lìnea en crecimiento
-- **********************************
-- En la direcciòn que dimos, para ver como funciona el contador
-- de direcciones
-- Solo enviaremos datos


-- Encendemos el pixcel deseado
GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x01 --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0


delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x03 --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x07 --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x0f --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x1f --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x3f --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0x7f --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

delay_100ms(3)

GLCD_DI = 1
GLCD_RW = 0
GLCD_DATAPRT = 0xff --
GLCD_E = 1
delay_100ms(1)
GLCD_E = 0

lcd_fill(0) -- Borramos la pantalla
  end loop


El efecto de èsto es similar al del medidor de señal del celular
Le bajè el tiempo de toma de datos y hasta acà no hay problema.   :D
Si hacemos un procedimiento para enviar datos, achicamos còdigo y lo podemos usar en la librerìa.
Sin saber que era imposible El fue y lo hizo

David Met

#46
Yo estuve, hasta recién, jugando con el GLCD.
Mirá lo que hice (vas a tener que compilarlo, o subir deirectamente el hex al pic):

include 16f877a

pragma target clock 20_000_000
pragma target OSC    hs
pragma target LVP disabled
pragma target WDT disabled

enable_digital_io()

-- ***************************************************
-- Definimos los puertos relacionados con el GLCD    (adaptalo al tuyo)
-- ***************************************************

var volatile byte GLCD_DATAPRT is portd
var volatile byte GLCD_DATAPRT_DIR is portd_direction

var volatile bit GLCD_RW is pin_b4
var volatile bit GLCD_CS1 is pin_b0
var volatile bit GLCD_E   is pin_b5
var volatile bit GLCD_DI  is pin_b2
var volatile bit GLCD_RST is pin_c0
var volatile bit GLCD_CS2 is pin_b1

var volatile bit GLCD_RW_DIRECTION is pin_b4_direction
var volatile bit GLCD_CS1_DIRECTION is pin_b0_direction
var volatile bit GLCD_E_DIRECTION is pin_b5_direction
var volatile bit GLCD_DI_DIRECTION is pin_b2_direction
var volatile bit GLCD_RST_DIRECTION is pin_c0_direction
var volatile bit GLCD_CS2_DIRECTION is pin_b1_direction

-- Incluimos las librerías --
include delay
include glcd_ks0108  --

-- Ahora inicializamos el glcd --
glcd_init()

-- Borramos la pantalla --
lcd_fill(0) -- Clear the display
var byte x, y
-- Dibujamos MF en el GLCD --
-- Dibujamos una línea vertical desde 3 hasta 49 --
y = 3
for 46 loop
glcd_write_pixel(5,y)
y = y + 1
end loop
-- Dibujamos una línea horizontal desde 5 hasta 15 --
x = 5
for 10 loop
glcd_write_pixel(x,49)
x = x + 1
end loop
-- Dibujamos una línea vertical desde 49 hasta 22 --
y = 49
for 27 loop
glcd_write_pixel(15,y)
y = y - 1
end loop

-- Dibujamos una línea oblícua desde 15;22 hasta 23;30
x = 15
y = 22
for 9 loop
glcd_write_pixel(x,y)
x = x + 1
y = y + 1
end loop

-- Dibujamos una línea oblícua desde 23;30 hasta 31;22
x = 23
y = 30
for 9 loop
glcd_write_pixel(x,y)
x = x + 1
y = y - 1
end loop

-- Dibujamos una línea vertical desde 22 hasta 49 --
Y = 22
for 27 loop
glcd_write_pixel(31,y)
y = y + 1
end loop

-- Dibujamos una línea horizontal desde 31 hasta 41
x = 31
for 10 loop
glcd_write_pixel(x,49)
x = x + 1
end loop

-- Dibujamos una línea vertical desde 49 hasta 30
y = 49
for 19 loop
glcd_write_pixel(41,y)
y = y - 1
end loop

-- Dibujamos una línea horizontal desde 41 hasta 55
x = 41
for 14 loop
glcd_write_pixel(x,30)
x = x + 1
end loop

-- Dibujamos una línea vertical desde 30 hasta 20
y = 30
for 10 loop
glcd_write_pixel(55,y)
y = y - 1
end loop

-- Dibujamos una línea horizontal desde 55 hasta 41
x = 55
for 14 loop
glcd_write_pixel(x,20)
x = x - 1
end loop

-- Dibujamos una línea vetical desde 20 hasta 13
y = 20
for 7 loop
glcd_write_pixel(41,y)
y = y - 1
end loop

-- Dibujamos una línea horizontal desde 41 hasta 66
x = 41
for 25 loop
glcd_write_pixel(x,13)
x = x + 1
end loop

-- Dibujamos una línea vertical desde 13 hasta 3
y = 13
for 10 loop
glcd_write_pixel(66,y)
y = y - 1
end loop

-- Dibujamos una línea horizontal desde 66 hasta 31
x = 66
for 35 loop
glcd_write_pixel(x,3)
x = x - 1
end loop

-- Dibujamos una línea oblicua desde 31;3 hasta 23;11
x = 31
y = 3
for 8 loop
glcd_write_pixel(x,y)
x = x - 1
y = y + 1
end loop

-- Dibujamos una línea oblicua desde 23;11 hasta 15;3
x = 23
Y = 11
for 8 loop
glcd_write_pixel(x,y)
x = x - 1
y = y - 1
end loop

-- Dibujamos una línea horizontal desde 15 hasta 5
x = 15
for 10 loop
glcd_write_pixel(x,3)
x = x - 1
end loop

-- Escribimos GRACIAS YO POR EL GLCD desde 56;5
ks0108_write_char(5,56,71) -- G
ks0108_write_char(11,56,82) -- R
ks0108_write_char(17,56,65) -- A
ks0108_write_char(23,56,67) -- C
ks0108_write_char(29,56,73) -- I
ks0108_write_char(35,56,65) -- A
ks0108_write_char(41,56,83) -- S

ks0108_write_char(50,56,89) -- Y
ks0108_write_char(56,56,79) -- O

ks0108_write_char(65,56,80) -- P
ks0108_write_char(71,56,79) -- O
ks0108_write_char(77,56,82) -- R

ks0108_write_char(86,56,69) -- E
ks0108_write_char(92,56,76) -- L

ks0108_write_char(101,56,71) -- G
ks0108_write_char(107,56,76) -- L
ks0108_write_char(113,56,67) -- C
ks0108_write_char(119,56,68) -- D
forever loop
asm sleep
end loop


Adjuntado está el hex.

Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

#47
Muy lindo el último efecto.

Se me ocurrió abrir un hilo explicando procedimiento por procedimiento cada librería de JAL en un tema nuevo ¿Qué te parece?
Yo empezaría por la librería glcd_ks0108

Luego, podemos seguir por las otras.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Buenìsimo David, buenìiiiiisimo  :\ :\ :\
El logo de Meteorologia Fàcil te quedò perfecto.

Es un "hola mundo" muy especial y te lo  agradezco  ok!

Me parece muy bien el hacer un hilo con la interpretaciòn de las librerìas.
Podrìamos hacer un comentario, seguido de algùn ejemplo simple, y ver si cumple las expectativas.

Estoy contento, estamos en carrera!!
Sin saber que era imposible El fue y lo hizo

David Met

#49
Me alegro que te haya gustado.
Acá subo una foto para que lo puedan ver todos. Anoche terminé muy tarde y no hice a tiempo


Mañana abro el nuevo hilo, o si prefieres, hazlo tu. A este hilo lo dejamos para seguir resolviendo problemas y dudas. ¿Te parece?
Abrazos.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

#50
Listo, nuevo hilo abierto.

En èste, como decìs, volcaremos las dudas e inquietudes que surjan.

   Saludos



Editado para agregar la url del nuevo sitio.
David.
Sin saber que era imposible El fue y lo hizo

YO

Hola a todos!

Estuve probando algunos gràficos, hice una pantalla con un logo, le dì un tiempo y quise mostrar otra imagen, hasta acà todo bien, pero cuando comencè a diseñar la segunda, se me complicò a poco de comenzar.
Como compilaba cada vez que terminaba una parte del dibujo, saltò un problema en la ùltima y el compilador mandò èsto :

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\PIC\jalv2\compiler\jalv2.exe" GLCD_2.JAL -s "C:\PIC\jalv2\lib" -no-clear
jal 2.4o (compiled May  8 2011)
generating p-code
2686 tokens, 163619 chars; 4648 lines; 13 files
generating PIC code pass 1
generating PIC code pass 2
writing result
Code area: 8767 of 8192 used (words)    <------<
GLCD_2.JAL:489: PIC image too big!        <------<
Data area: 89 of 352 used
Software stack available: 96 bytes
Hardware stack depth 2 of 8
1 errors, 0 warnings
BUILD FAILED: Mon Apr 30 18:48:55 2012

Evidentemente èsta forma de dibujar con : ks0108_write_char, consume mucho espacio, tendremos que buscar otra.

Lo que no entiendo es porquè, si eliminè todas las librerìas que no usaba, siempre tenìa la misma cantidàd de còdigo, serà que las mete despuès.

Segùn el ICPROG todavìa tenìa medio Pic vacio. 

   Saludos




Sin saber que era imposible El fue y lo hizo

David Met

Ese procedimiento, está más dedicado a la escritura de caracteres, o al menos eso me da la sensación.
Yo creo que lo mejor, para dibujar, es el procedimiento glcd_write_pixel(x,y)
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Perdòn, el procedimiento que utilicè  para dibujar era : glcd_write_pixel , con ks0108_write_char, puse algunas letras, pero muy pocas y se me acabò el espacio.

Espero que me deje poner dibujos y datos como los de temperatura, humedad, presiòn, (los de mi central)
Si no entra todo en un programa, va a estar complicado, ya que pensaba hacer distintas pantallas con dibujos representativos, pero no llegue ni a la segunda.  ???


Sin saber que era imposible El fue y lo hizo

David Met

Algo que aún no investigué, es si la pantalla de GLCD tiene memoria EEPROM o Flash disponible para el usuario. Si es así, se puede guardar los gráficos con un programa, y luego hacerlo ejecutar con el programa final. ¿Se entiende?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Winstar no te contestò ?
¡Que poca informaciòn para un producto tan especìfico!!  ???

Si los chinos pusieran un super de electrònica en cada barrio, seguro que al pasar por la caja aparte de las pilas te dirìan ; "lleva catalogo, lleva catalogo"  jajajajaja
Sin saber que era imposible El fue y lo hizo

HJ

Cita de: YO en Mayo 01, 2012, 11:20:41 AM
¡Que poca informaciòn para un producto tan especìfico!!  ???
Es todo un tema, hay varias empresas, y no me preguntes por que, pero que la información "clasificada" solo se le entrega a determinados clientes, me ha pasado con la gente de SIMCom que fabrican los módulos celulares SIM900, también con los de fabricantes de los chip de grabación de audio ISD, el chip lo fabricaba ChipCom, despues Winbond y ahora lo hace Nuvoton, y la información pública se reduce a unas 10 hoyas, mientras que para los clientes son como 500...

Así que puede estar por alli el tema de la poca información que se encuentra sobre los display Winstar.

Hace unos años, quise reciclar unos de esos display al vacío que venían en algunas viejas máquinas sumadoras, tengo varios, todos marca FUTABA, y la información que logre reunir fue realmente escasa. Y los correos que les envié, sospecho que ni los leyeron.

Saludos
HJ

David Met

No, aún no me contestaron y sospecho que no lo harán.
Voy a dejar pasar un mes o dos, y les voy a mandar un e-mail diciéndole que  les voy a comprar uno, pero que antes, necesito toda la información de los GLCD. Seguro que hasta me mandan un ejemplo de programa escrito en JAL ;D
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

HJ

#58
Hola a todos.
YO o David, el que pueda, que suba una imagen de la parte de atrás del GLCD donde se puedan leer todas las etiquetas y leyendas del mismo, ya que por lo que leí, el 12864A de Winstar puede tener 3 controladores  diferentes.
En la foto que David colocó al comienzo de este hilo el reflejo no me deja leer la etiqueta.

Saludos
HJ

Edito: No es por nada en particular, solo una curiosidad.

YO

Hola HJ!

Esta noche, cuando llegue a casa me fijo.

   Saludos!
Sin saber que era imposible El fue y lo hizo