Autor Tema: inicio en lcd  (Leído 3908 veces)

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

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
inicio en lcd
« en: 17 de Julio de 2008, 20:43:10 »
como puedo visualizar una leyenda en un LCD 2X16. Como se utiliza el driver lcd.c del compilador ccsc en el posible programa. Existirá algún programa ejemplo?
MUchas gracias

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: inicio en lcd
« Respuesta #1 en: 17 de Julio de 2008, 21:01:47 »
Hola ncoliv, en la carpeta donde se instala el PICC CCS ejemplos de todo tipo.
Aca va un ejemplo sencillito:
Código: C
  1. #include <16F877.h>
  2. #fuses HS,NOWDT,NOPROTECT,NOLVP
  3. #use delay(clock=20000000)
  4.  
  5.  
  6. #include <lcd.c>
  7.  
  8.  
  9. void main() {
  10.  
  11.    lcd_init();
  12.    delay_ms(6);
  13.  
  14.  
  15.    while(TRUE)
  16.    {
  17.      
  18.  
  19.       printf(lcd_putc,"Hello ncoliv");
  20.       delay_ms(500);
  21.    }
  22. }

Saludos espero que te sirva
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio en lcd
« Respuesta #2 en: 17 de Julio de 2008, 23:21:25 »
Hola.

Habria que fijar la direccion de la lcd para que no se corra el mensaje y la lcd se "llene" de saludos!!!!  :-)
Código: C
  1. #include <16F877.h>
  2. #fuses HS,NOWDT,NOPROTECT,NOLVP
  3. #use delay(clock=20000000)  
  4. #include <lcd.c>  
  5. void main()
  6. {  
  7.   lcd_init();
  8.   delay_ms(6);
  9.   while(TRUE)  
  10.  {    
  11.    lcd_gotoxy(1,1);    
  12.    printf(lcd_putc,"Hello ncoliv");
  13.    delay_ms(500);  
  14.  }
  15. }

saludos
El papel lo aguanta todo

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio en lcd
« Respuesta #3 en: 17 de Julio de 2008, 23:55:25 »
Muchas gracias por las respuestas.¿ Seria muy dificil implmentar un programita que muestre el incremento de un registro cuando el pic f877a reciba un pulso externo por uno de sus pines?
Gracias nuevamente.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio en lcd
« Respuesta #4 en: 18 de Julio de 2008, 01:06:11 »
Hola.

No es complicado, debes asignar una variable unicamente y para mostrarla en la lcd usas la misma funcion printf
Código: C
  1. printf(lcd_putc,"Valor Registro = %u ", variable);

Revisa en la ayuda del CCS la funcion printf, para saber que letra colocar despues del simbolo %, ya que la letra varia si la variable es un entero(u) o un long(lu) o un hexadecimal(x) o un string(s) o un float(f) y hay mas.

Un codigo seria el siguiente (no lo he simulado ni lo he probado lo hice aqui aprovechando el que ya esta hecho, asi que revisalo)

Código: C
  1. #include <16F877.h>
  2. #fuses HS,NOWDT,NOPROTECT,NOLVP
  3. #use delay(clock=20000000)  
  4. #include <lcd.c>  
  5.  
  6. int8 pulsos=0;
  7.  
  8. #define in_pulsos pin_c0
  9.  
  10. void main()
  11. {    
  12.  lcd_init();  
  13.  lcd_putc("\fContador...");    
  14.  while(TRUE)  
  15.  {
  16.   while(!input_state(in_pulsos));//Espero hasta que el pulsador sea presionado  
  17.   delay_ms(300);//antirrebotes      
  18.   lcd_gotoxy(1,2);
  19.   printf(lcd_putc,"Variable= %u", pulsos++);  
  20.   delay_ms(1000);//una pulsacion por segundo    
  21.   }
  22. }

Saludos
El papel lo aguanta todo

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio en lcd
« Respuesta #5 en: 18 de Julio de 2008, 18:43:05 »
Gracias nuevamente. tengo el programa acrgado en el micro. LA conexión con el pic esta de acuerod a una pag que encontre al investigar, ( de cuatro para el bus de datos , puerto D y tres para el e, rs, rw)  . sucede que tengo encendido el LCD y no aparece ninún caracter, que puede estar pasando?  Los pines del LCD están dispuestos en dos filas de ocho columnas , tengo identificado los pines 1 y 2 y tbien el 15 y 16 estos últimos son positivo ( +5) y masa respectivamente. Tal disposición es standar para todos los LCD?. Tampoco se que controlador utiliza este  LCD. No tengo la hoja de características del LCD.
gracias.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: inicio en lcd
« Respuesta #6 en: 18 de Julio de 2008, 19:13:46 »
talvez si usas el puerto b tengas que colocar:
#define use_portb_lcd TRUE
antes de incluir la libreria, qeudaria asi:

#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) 
#define use_portb_lcd TRUE
#include <lcd.c>

y tendría que funcionar, ya que por defecto la lib de ccs te lleva el lcd al puerto d
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio en lcd
« Respuesta #7 en: 18 de Julio de 2008, 21:00:09 »
Estoy utilizando el puerto D del micro, la pregunta, sigue siendo si los pines del LCD son standares. No consigo visualización alguna. solo se ilumina el LCD.
Gracias

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio en lcd
« Respuesta #8 en: 18 de Julio de 2008, 23:12:58 »
Hola.

Revisa dentro de la libreria lcd.c la asignacion de pines para RW, E y RS ademas de los de D4, D5, D6 y D7. Si no corresponden puedes modificar la estructura para hacerlos coincidir.

Saludos
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: inicio en lcd
« Respuesta #9 en: 19 de Julio de 2008, 10:50:27 »
no te olvides tb colocar condensadores en la alimentacion uno de 100nF y por si las moscas de 10u tb a veces en fuentes de trafo ayuda mucho a suprimir picos, variaciones.
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio en lcd
« Respuesta #10 en: 20 de Julio de 2008, 18:54:44 »
Muchas gracias por las respuestas. Aún sigo sin observar nada en el LCD. Como puedo saber si un diplay está en condiciones, es decir no esta quemado. Lo que extraña es que al compilarlo no aparecen señales de error y al grabarlo los mensajes son todos satisfactortios ( trabajo con el picstart plus y con el mplab) .Con otros programas esta todo bien. Les mando elprograma que estoy probando, ademas de los que me enviaron Uds. por los que estoy muy agradecido.

//------Directivas para el compilador--------
#include <16f877a.h>                      //PIC utilizado
#fuses XT,NOWDT,NOPROTECT,NOLVP           //Configuramos los fuses
#use delay (clock=4000000)                //Oscilador a 4Mhz
#use fast_io(b)                           //Optimizamos E/S del PORTB
#use fast_io(c)                           //Optimizamos E/S del PORTC
#INCLUDE "lcd.c"                         //Incluyo LCD.C
//
//------Prototipos de funciones-----
void lcd_saludo_inicial(void);
//
//------------------------------------------------------------------------------
//------Programa principal----------
//------------------------------------------------------------------------------
void main(void) {
   //------Puertos y pines-------------
   #byte PORTB=0xF81
   #byte PORTC=0xF82
   #byte PORTD=0xF82
   //-----Inicializo el LCD y muestro el saludo inicial----------
   lcd_init();
   lcd_saludo_inicial();
}
//
//------------------------------------------------------------------------------
//FUNCIONES
//------------------------------------------------------------------------------
//Imprime saludo inicial.
void lcd_saludo_inicial(void) {
   Lcd_putc ("uControl.com.ar");   //Escribo en la primera fila
   delay_ms(2000);                 //Espero dos segundos
   lcd_gotoxy(4,2);                //columna 4, fila 2
   Lcd_putc( " LCD en CCS");       //Escribo en la segunda fila
   delay_ms(3000);                 //Espero tres segundos
   Lcd_putc( "\f");                //Limpio pantalla
}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio en lcd
« Respuesta #11 en: 20 de Julio de 2008, 23:05:23 »
Hola.

La manera de probarlo es con el contraste, el cual se controla con el potenciometro que va a VEE de la LCD, recorrelo de extremo a extremo y en uno de los extremos van a aparecer cuadritos negros en la primera fila de la LCD.

Saludos
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: inicio en lcd
« Respuesta #12 en: 21 de Julio de 2008, 12:49:27 »
otra forma de probarlo podría ser en una forma manual, si te sabes, o por lo menos puedes comprender un poquito de ingles (como mi caso) este pdf te puede servir, es muy util, aprendí muchas cosas de los lcd's con ese pdf

espero te sirva, un saludo.
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio en lcd
« Respuesta #13 en: 21 de Julio de 2008, 19:06:48 »
Gracias por los comentarios, solucione el problemita del lcd. continuaré incursionando en este apasionante tema. De nuevo gracias por su colaboración.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio en lcd
« Respuesta #14 en: 21 de Julio de 2008, 23:23:40 »
Hola.

Que bien que lo solucionaras, seria bueno que compartieras que hiciste y en que consistio el error.

Saludos
El papel lo aguanta todo