Autor Tema: Problema con LCD en C18  (Leído 3595 veces)

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

Desconectado Lockon

  • PIC10
  • *
  • Mensajes: 3
Problema con LCD en C18
« en: 24 de Agosto de 2011, 11:40:33 »
Saludos a todos.

Mi problema es el siguiente, realice un programa para visualizar en un lcd alguna informacion que voy a necesitar en un proyecto. En la simulacion todo anda bien pero cuando lo implemento solamente me permite mostrar texto. Trato de visualizar un entero con la conversion de itoa que ofrece la libreria stdlib.h pero cuando le doy para visualizar no me aparece nada y se borra el texto tambien en la implementacion.

El LCD que ocupo es un WH2004A Winstar que tiene un controlador KS0066, ya lei en el foro sobre la inicializacion, efectivamente cambie los tiempos como aparecen en la hoja de datos del KS0066 y como Suky recomienda. Bueno tambien ocupo la libreria de Suky: flex_lcd_c18.c. Ya que la libreria XLCD.h de microchip no me funciona en la implementacion aun cambiando los tiempos. Ahora bien tampoco me muestra nada en la implementacion el lcd cuando ocupo el comando printf. Verdaderamente no se que mas estaria pasando.

Aqui pongo el codigo:


#include <p18f4680.h>
#include <delays.h>
#include <stdio.h>
#include <usart.h>
#include <stdlib.h>
#include "flex_lcd_c18.h"

#pragma config OSC = HS,FCMEN = OFF,IESO = OFF //CONFIG1H
#pragma config PWRT = ON,BOREN = OFF,BORV = 0 //CONFIG2L
#pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF//CONFIG3H
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
#pragma config CP0 = ON,CP1 = ON,CP2 = ON//CONFIG5L
#pragma config CPB = ON,CPD = ON//CONFIG5H
#pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON//CONFIG6L
#pragma config WRTB = ON,WRTC = ON,WRTD = ON//CONFIG6H
#pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON//CONFIG7L
#pragma config EBTRB = ON//CONFIG7H

void main()
{
   int h,r,t;
    char visual[10];

    //OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT &
    //USART_CONT_RX & USART_BRGH_HIGH,25); // 9600,8,n,1

    // Modificamos para utilizar función del usuario, o sea escribir en LCD.-
    //stdout =_H_USER;
    //printf("Var");

   //Incializa el LCD
   lcd_init();
   h=15;
   itoa(h,visual);   
   lcd_puts(visual);
   lcd_gotoxy(1,2);
   lcd_putrs("Sistema Embebido");
   lcd_gotoxy(1,3);
   lcd_putrs("Logica Difusa");


   while(1)
   {
      
   }   
}

Todo en la simulacion anda bien el problema es cuando lo implemento.

Ahora lo que se agrego a la libreria de Suky para trabajar con 4 lineas es lo siguiente:
En el archivo .h:
#define LCD_4X20     

En el archivo .c
#ifndef LCD_4X20
void lcd_gotoxy(int8 x, int8 y)
{
   int8 address;

   if(y != 1)
      address = lcd_line_two;
   else
      address=0;

   address += x-1;
   lcd_send_byte(0, 0x80 | address);
}
#else
void lcd_gotoxy(int8 x, int8 y)
{
   int8 address;
   
   switch(y)
   {
      case 1 : address=0x80; break;
      case 2 : address=0xC0; break;
      case 3 : address=0x94; break;
      case 4 : address=0xD4; break;
   }
   address += x-1;
   lcd_send_byte(0, address);
}
#endif

En cuanto a los tiempos el delay de 5ms se lo aumente a 15ms, para que en la inicializacion se dilate 45ms antes de encenderlo.









Desconectado zerovlc

  • PIC10
  • *
  • Mensajes: 28
Re: Problema con LCD en C18
« Respuesta #1 en: 25 de Agosto de 2011, 05:34:37 »
has probado a utilizar la siguiente instruccion para imprimir en pantalla del lcd

printf(lcd_putc,"aqui va el texto y como quieres mostrar un entero %d",variable);

Desconectado Lockon

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con LCD en C18
« Respuesta #2 en: 25 de Agosto de 2011, 12:32:39 »
Gracias Zerovlc por contestarme, efectivamente ya lo he probado y sigue sin darme en la implementacion, en proteus corre de maravilla. El lcd esta bien, lo he probado con CCS y con mikroC y todo anda bien, el problema esta ahorita con C18, será que esta bien inicializado con esos tiempos...

Desconectado zerovlc

  • PIC10
  • *
  • Mensajes: 28
Re: Problema con LCD en C18
« Respuesta #3 en: 31 de Agosto de 2011, 08:27:23 »
no se si usas un xtal de cuarzo pero puede ser que si no lo usas o no lo hayas por asi decirlo declarado que frecuencia de reloj tiene el pic no te haga bien los retardos,

supongo que este codigo lo habras utilizado para decirle al pic que reloj utilizas

#use delay (clock=4000000)         //Fosc=4Mhz

Desconectado Alumno

  • PIC10
  • *
  • Mensajes: 39
Re: Problema con LCD en C18
« Respuesta #4 en: 31 de Agosto de 2011, 18:57:44 »
Hola creo que tienes que colocar alguna lineas antes del void main, estas lineas se refieren a retardos que tine que hacer el micro para que funcione correctamente el LCD,esto esta en la pagina 85 del PDF libreria c18 == C:\MCC18\doc.
aqui hay un ejemplo http://www.todopic.com.ar/foros/index.php?topic=28440.0 con el pic18f4550 trabajando a 48MHZ == 12MHZ internos

Desconectado Lockon

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con LCD en C18
« Respuesta #5 en: 02 de Septiembre de 2011, 14:10:20 »
Efectivamente los retardos ya los incorpora la libreria de Suky (flex_lcd_c18.h), inclusive le di un mayor retardo poruqe el controlador KS0066 lo necesita, sin haberle dado este retardo no me inicializaba bien el lcd y no me aparecia nada en pantalla, mi problema es que solo puedo mandar a imprimir mensajes y no variables, cuando mando a imprimir variables primeramente las paso con la funcion itoa porque son enteros y despues visualizo con lcd_putrs. Pero no se porque se me borra todo y no me aparece mas nada.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Problema con LCD en C18
« Respuesta #6 en: 02 de Septiembre de 2011, 14:42:34 »
Si puedes manda tu archivo de simulacion par ver que falta.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problema con LCD en C18
« Respuesta #7 en: 02 de Septiembre de 2011, 14:52:35 »
Tendrías que buscar una librería para el LCD con KS0066 que sepas que funciona como para adecuarla  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado minitran

  • PIC10
  • *
  • Mensajes: 1
Re: Problema con LCD en C18
« Respuesta #8 en: 11 de Febrero de 2012, 09:11:56 »
Hola:
  He seguido al pie de la letra las anotaciones del libro de Suky y no hay forma. No consigo hacer funcionar el LCD con Proteus. Había programado en otros lenguajes como CCS y HI-TECH y nunca me había detendido con un problema de librarias. Esta es mi primera aplicación en C18 y ya me está dando guerra  :(.
Subo el ejemplo, y si alguien le puede echar un vistazo se lo agradecería.

Saludo