Autor Tema: Problema - Pic 18f4550 con GLCD 128x64 SPI  (Leído 6209 veces)

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

Desconectado jlmt@hotmail.es

  • PIC10
  • *
  • Mensajes: 10
Problema - Pic 18f4550 con GLCD 128x64 SPI
« en: 13 de Julio de 2015, 13:34:58 »
Amigos necesito una ayuda urgente, tengo un proyecto de la universidad el cual he avanzado casi en su totalidad un simple sensor de temperatura mostrado en una glcd, simulacion perfecta ahora prueba, acabe de comprar la  pantalla y primer detalle que note esque los puertos no son iguales, bueno en realidad busque en internet y coloque los pines donde correspondian pero nada, sales puros simbolos nada correcto de lo que deberia mostrar encontre que indica que dice que es una pantalla spi, que en realidad no comprendo, quisiera saber si me podrian ayudar tengo entendido que es bibliotecas o bueno en realidad no comprendo.

Estoy usando
ccs 4.032
proteus 8

Video de la prueba fallida


adjunto los archivos de programacion y simulacion ademas de un video de lo que parece en mi pantalla, tb una imagen de los pines de mi pantalla


https://drive.google.com/folderview?id=0BwW1ZWthSbjEfjhNeHdBdGtHNG0zVjFkUjdOa291V3RVSTc5UnlXQXdBaHUxZ3E2U3N6Nnc&usp=sharing


PROGRAMACION

Citar
#include <18f4550.h>
#device ADC=10
#use delay (clock=20Mhz)
#fuses HS
#include <GLCD.c>
#include <Inicio_Normal.c>
#include <Inicio_Inver.c>
#include <Proceso_Tanque.c>
#Include <stdlib.h>

// funciones
void mostrar_imagen1(void)
{
int16 i=0;
int x=0,y=0,k=0;
for(i=0;i<1024;i++)
                  {
                  if(x==128)
                           {
                           x=0;
                           y=y+8;
                           }
                  for(k=0;k<8;k++)
                           {
                           if(bit_test(inicio_normal_bmp,k))
                           glcd_pixel(x,y+k,1);
                           else
                           glcd_pixel(x,y+k,0);
                           }
                  x++;
                  }
}

// funciones
void mostrar_imagen2(void)
{
int16 i=0;
int x=0,y=0,k=0;
for(i=0;i<1024;i++)
                  {
                  if(x==128)
                           {
                           x=0;
                           y=y+8;
                           }
                  for(k=0;k<8;k++)
                           {
                           if(bit_test(inicio_inver_bmp,k))
                           glcd_pixel(x,y+k,1);
                           else
                           glcd_pixel(x,y+k,0);
                           }
                  x++;
                  }
}

// funciones
void mostrar_imagen3(void)
{
int16 i=0;
int x=0,y=0,k=0;
for(i=0;i<1024;i++)
                  {
                  if(x==128)
                           {
                           x=0;
                           y=y+8;
                           }
                  for(k=0;k<8;k++)
                           {
                           if(bit_test(proceso_tanque_bmp,k))
                           glcd_pixel(x,y+k,1);
                           else
                           glcd_pixel(x,y+k,0);
                           }
                  x++;
                  }
}

// principal
void main()
            {
            char men1[]="Hola";
            int i=0;
            int32 x,x_old=500;
            float data=0,temperatura=0;
            set_tris_a(0b00000001);
            glcd_init(on);
            setup_adc(ADC_clock_internal);
            setup_ADC_ports(An0|VSS_VREF);
            set_ADC_channel(0);
           
            for(i=0;i<=1;i++)
                              {
                              mostrar_imagen1();
                              delay_ms(500);
                              mostrar_imagen2();
                              delay_ms(500);
                              }
                              Mostrar_imagen3();
                              glcd_rect(102,19,121,51,0,1);
                              while (true)
                                          {
                                          data=read_adc();
                                          temperatura=(150*data)/1023;
                                          x=(int32)temperatura;
                                          if (x_old!=x)
                                                         {
                                                         itoa (x,10,men1);
                                                         if (x<5 && x>=0)
                                                         glcd_rect(103,20,120,50,1,0);
                                                         else if (x<=150 && x>145)
                                                         glcd_rect(103,20,120,50,1,0);
                                                         else
                                                         {
                                                         glcd_rect(103,50-x/5,120,50,1,1);
                                                         glcd_rect(103,20,120,49-x/5,1,0);
                                                         }
                                                         glcd_rect(102,53,121,60,1,0);
                                                         glcd_text57(102,53,men1,1,1);
                                                         delay_ms(10);
                                                         }
                                                         x_old=x;
                                          }
            }
                                                         

Agradezco su ayuda

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #1 en: 13 de Julio de 2015, 17:55:21 »
Eso parece ser un error de la libreria, solucion:

Busca una libreria nueva par el driver del GLCD, o estudiate esa y el datasheet del driver del GLCD. Para que veas en que le esta errando o haciendo mal.

Desconectado jlmt@hotmail.es

  • PIC10
  • *
  • Mensajes: 10
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #2 en: 14 de Julio de 2015, 01:26:50 »
Voy progresando en la busqueda quizas ahora sea mas facil que me puedan ayudar algun programa dema que puedan ayudarme con la glcd 12864zw el driver que utiliza es el st7920, pero no estoy en conocimientos de como realizar las nuevas convinaciones de puertos o de cambios por favor agradeceria

http://www.ccsinfo.com/forum/viewtopic.php?t=32819&highlight=st7920

http://www.cypress.com/file/66861/download?token=8tUkGkB9&destination=file/66861

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #3 en: 14 de Julio de 2015, 05:24:02 »
Ahi esta claramente el driver del ST7920 creado por otra persona, y tambien da un ejemplo de como utilizarlo, aunque en su ejemplo maneja mas cosas, como un "reloj"

Código: C
  1. glcd_line (145, 16, 145+(int)(8*sin(theta)+.5), 16-(int)(8*cos(theta)+.5), OFF);
  2.     theta = (theta > 5.9) ? 0 : (theta += .3);
  3.     glcd_line (145, 16, 145+(int)(8*sin(theta)+.5), 16-(int)(8*cos(theta)+.5), ON);

Y lo demas lee el ADC y cuando esta por encima de 4V crea un rectangulo diciendo Warning, nada mas, ese es todo el ejemplo que dio.

Desconectado jlmt@hotmail.es

  • PIC10
  • *
  • Mensajes: 10
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #4 en: 14 de Julio de 2015, 14:56:32 »
Ahi esta claramente el driver del ST7920 creado por otra persona, y tambien da un ejemplo de como utilizarlo, aunque en su ejemplo maneja mas cosas, como un "reloj"

Código: C
  1. glcd_line (145, 16, 145+(int)(8*sin(theta)+.5), 16-(int)(8*cos(theta)+.5), OFF);
  2.     theta = (theta > 5.9) ? 0 : (theta += .3);
  3.     glcd_line (145, 16, 145+(int)(8*sin(theta)+.5), 16-(int)(8*cos(theta)+.5), ON);

Y lo demas lee el ADC y cuando esta por encima de 4V crea un rectangulo diciendo Warning, nada mas, ese es todo el ejemplo que dio.

Amigo disculpa que sea demasiado obvio pero no encuentro la convinacion de como colocarlos a los puertos asignados que tengo, de verdad pido disculpas pero serias tan amable de ayudarme a comprender xq solo encuentro unos puertos que son:
#define  rs  PIN_B2                    //COMMNAD/DATA SELECT
#define  rw  PIN_B4                    //READ/WRITE SELECT             
#define  e   PIN_B5                    //ENABLE SIGNAL                 
#define  rst PIN_C0                    //RESET SIGNAL 

pero no encuentro donde lee los datos ni nada, no comprendo y no logro poner a funcionar

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #5 en: 14 de Julio de 2015, 20:34:09 »
En tu titulo pusiste SPI, eso significa que son 3 lienas como maximo.
Ahi no veo que posea para lineas SPI, sino una entrada paralela de 8 pines, es muy distinto de SPI.

Si aun asi en el Proteus el GLCD soporta ambos, aunque no lo dice. segun el datasheet las conexiones son:

Pines LCD -> Pines SPI
RS  -> (CS*)
RW -> (SID*)
E    -> (SCLK*)

Sino busca un driver para paralelo y no SPI. y Rogar que el GLCD del proteus sea ese driver.

Desconectado Jonathan93

  • PIC10
  • *
  • Mensajes: 1
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #6 en: 16 de Julio de 2015, 09:30:05 »
Yo tambien he tratado de probar con todas las bibliotecas existentes en internet pero por nada del mundo logro que funcione. Alguna ayuda x favor

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #7 en: 16 de Julio de 2015, 09:57:56 »
Yo tambien he tratado de probar con todas las bibliotecas existentes en internet pero por nada del mundo logro que funcione. Alguna ayuda x favor

Lo que te voy a decir espero que no lo tomes a mal por que no es mi intencion. Mi intencion es que aprendas. Y te voy a contar que sucede desde mi punto de vista, como para que te pongas en mi lugar.

Creo que no me entendiste a mi, o no leiste bien lo que habia puesto, Yo no te dije que probaras todas las librerias del internet, es mas te dije exactamente busca otra libreria, o ESTUDIA esa y ESTUDIA el datasheet. Con estudiarlas logras 2 cosas, la primera es que sabes que estas haciendo, y segundo, al saber que estas haciendo, si ocurre un problema, te vas a dar una idea de como solucionarlo.
Una cosa es probar muchas soluciones que se te ocurrieron y ahi si pedir ayuda por que no ves la solucion, y otra cosa es poner pedazos de codigo que encontras de internet que ni siquiera sabes que hace y rogar que funcionen (Esto RARA vez suele funcionar). A eso fui con mi primer post.

Luego posteaste el link a esa libreria de SPI, yo abri el link, mire un poco la libreria y usa un SPI por software, es decir, es lo mas SIMPLE que podes encontrar por que ves cuando cambia la señal de clock,CS,etc (y podes compararlo con el datasheet) y si vos quisieras podrias haber usado el SPI por Hardware, lo cual complicaba un poquito mas el tema. Pero con esa libreria te era suficiente. Al menos por ahora.

Yo pense aqui que ya ibas a tener todo solucionado.

Pero a mi sorpresa cuando me decis que no sabes como conectarlo y me mostras una imagen de Proteus con un GLCD que realmente no se que driver usa , y encima con una conexion en paralelo.
Yo hasta ahora habia asumido que se estaba probando en fisico, es decir SPI y ese driver que nombraste que tenia el GLCD. Entonces abri el datasheet, busque los pines correspondientes al SPI ( por si ademas tenia para una conexion paralela) y los copie y pegue aca.

Para que se entienda. Tu post es sobre SPI, la libreria es de SPI (la que encontraste y supongamos que funciona), y estas tratando de simularlo en paralelo.
Que me queda pensar ami es que no conoces que es el modulo SPI ni una conexion en paralelo.

Yo no se cual es el driver que "simula" el Proteus, si acepta forma serial o no, ya que en sus pines no hay nada marcado.
Por lo cual debo suponer que es imposible simularlo a esa libreria.
Dejandote 2 opciones, o buscas una libreria que funcione con el Proteus o buscas una libreria que funcione para tu GLCD (Suponiendo que no admita datos de forma serial el Proteus)

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #8 en: 16 de Julio de 2015, 15:50:19 »
El proteus usa el driver KS0108 (glcd Ampire 128x64) entre otros para el manejo de la glcd paralelo.
El driver ST7920, no lo trae proteus para el manejo de glcd asi que no podras simularlo.  :?

Deberias ver en que se diferencia el uno del otro a ver que modificaciones debes realizar para que te funcione.
No obstante aqui puede haber una informacion que te puede servir, sino la haz visto  :mrgreen:

Saludos
« Última modificación: 16 de Julio de 2015, 16:01:19 por RALF2 »

Desconectado GGuerrer

  • PIC10
  • *
  • Mensajes: 1
Re:Problema - Pic 18f4550 con GLCD 128x64 SPI
« Respuesta #9 en: 05 de Octubre de 2016, 23:06:25 »
Esa pantalla yo la pongo a funcionar a la perfeccion con las librerias del CCS y tengo las librerias en XC8 y me funcionan perfectamente y me hice un proyecto para un GPS, por lo que la confucion es si la coneccion es SPI o paralela y de una te digo el datashhet de la pantalla te lo dice claramente y si la pantalla tiene un micro KS08 y KS07 con 20 pines te aseguro que esa GLCD es paralela


 

anything