Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: H3lltronik en 22 Mayo 2018, 06:56 am



Título: PIC16F877A Y LCD
Publicado por: H3lltronik en 22 Mayo 2018, 06:56 am
Saludos, de nuevo yo.

Esta vez intento que realizar un programa que muestre un texto cualquiera en el LCD usando C embebido, el problema es que no muestra lo que debe mostrar.
Este es mi codigo:
Código:
#define LCD_ENABLE_PIN PIN_D7
#define LCD_RS_PIN PIN_D5
#define LCD_RW_PIN PIN_D6

#define LCD_DATA0 PIN_B0
#define LCD_DATA1 PIN_B1
#define LCD_DATA2 PIN_B2
#define LCD_DATA3 PIN_B3
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <16f877a.h>
#use delay (clock = 4M)
#include <lcd.c>

#byte TRISB = 0x86
#byte TRISD = 0x88


void main(){

   TRISB = 0x00;
   TRISD = 0x00;

   lcd_init();
   delay_ms(1000);
   printf(lcd_putc,"NO FUNCIONA ESTA COSA");

}

Y este es el circuito de la simulacion:

(https://i.imgur.com/VNeGSMN.png)

Se supone deberia mostrar "NO FUNCIONA ESTA COSA" pero en lugar de eso me da esos simbolos extraños y cosas raras.

No comprendo que es lo que estoy haciendo mal! Nunca habia usado realmente C y ahora tengo problemas con el LCD, espero que alguien pueda ayudarme :C


Título: Re: PIC16F877A Y LCD
Publicado por: srWhiteSkull en 22 Mayo 2018, 11:17 am
http://www.zilogic.com/releases/current/zdev-user-manual/_lcd.html


Título: Re: PIC16F877A Y LCD
Publicado por: PalitroqueZ en 22 Mayo 2018, 16:09 pm
varias consideraciones,

- necesitas preformatear a la funcion lcd_putc dentro de printf, como limpiar o indicarle la fila donde se mostraran los caracteres alfanumericos,

printf(lcd_putc,"\fNO FUNCIONA ESTA COSA");

- la pantalla lcd puede mostrar 16 caracteres, por lo que se truncará el texto que pretendes mostrar.

- en proteus no hace falta colocar cristales, elimina e cristal con los condensadores, asi como tambien el potenciometro de contraste de la pantalla lcd

- en proteus hay que configurar la frecuencia del cristal en las propiedades del micro, asi como tambien la word configurations o fuses de programación.

- por alguna extraña razón, la libreria lcd.c que viene con el compilador CCS no funciona bien con el proteus, no siendo asi, probando el montaje en físico. hay otra libreria que es mucho mejor (mas flexible y funciona en simulación y en fisico) se llama flex_lcd_c.c esta libreria la puedes buscar en google, asi como las instrucciones de utilizarla.



Título: Re: PIC16F877A Y LCD
Publicado por: H3lltronik en 22 Mayo 2018, 19:04 pm
PalitroqueZ de verdad te lo agradezco mucho! lo unico que hice fue cambiar la libreria que estaba usando por la que mencionaste y parece estar funcionando correctamente ahora  :D