TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: diegogui en 27 de Abril de 2012, 00:03:48
-
Hola que tal.
Tengo un problema el LCD de 16x2 hay ocaciones en que caracteres extraños en la lcd y hasta invertidos y se queda trabada. Esto no pasa siempre pero muy frecuentemente, lo sufuciente para que me moleste, por eso les queria preguntar como se podria evitar esto. Si es problema de que el pic no se reinicie bien o si de plano es solo problema del LCD que no se inicialice bien.
En un principio no me hacia ese problema.
Que puede estar pasando????
Pongo el ejemplo que realice.
#include <inicializacion.h>
void main(void) {
lcd_init();
while(true)
{
lcd_putc("\fMENSAJE\n");
delay_ms(1000);
}
}
Archivo inicializacion.h
#include <16F877A.h>
#device adc=8
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT
#use delay(clock=4000000)
#define LCD_ENABLE_PIN PIN_B1 ////
#define LCD_RS_PIN PIN_B2 ////
#define LCD_RW_PIN PIN_B3 ////
#define LCD_DATA4 PIN_B4 ////
#define LCD_DATA5 PIN_B5 ////
#define LCD_DATA6 PIN_B6 ////
#define LCD_DATA7 PIN_B7
#define use_portb_lcd TRUE
#include <lcd.c>
#use fast_io(b)
#define d100 1000
#define d10 10
Saludos
-
Vamos a ver no hace mucho que me estoi pasando al C, pero por lo poco que entiendo,
porqué defines los pines del LCD en el archivo inicialización.h ?
Esos pines ya vienen definidos en el LCD.c , A menos que tu quieras cambiarlos de orden en el puerto B ........
-
Vamos a ver no hace mucho que me estoi pasando al C, pero por lo poco que entiendo,
porqué defines los pines del LCD en el archivo inicialización.h ?
Esos pines ya vienen definidos en el LCD.c , A menos que tu quieras cambiarlos de orden en el puerto B ........
Si cambie de ubicación los puertos por quistión de diseño de la plaqueta se dejo en el puerto B. Ahora no sé porque cuando desconecto y vuelvo a conectar el cable de R/W en algunas ocasiones aparece el texto. Que puede estar pasando?
-
Busca en el foro la librería flex_LCD en ella tienes al principio la configuración de los pines y es más facil de adaptar a las necesidades propias,sin tener que configurarlos en el archivo de inicialización, yo la estoy usando y los resultados son magníficos.
-
Busca en el foro la librería flex_LCD en ella tienes al principio la configuración de los pines y es más facil de adaptar a las necesidades propias,sin tener que configurarlos en el archivo de inicialización, yo la estoy usando y los resultados son magníficos.
Gracias por la sugerencia , baje la libreria flex_LCD para lcd12x2 y me funciono un lujo ,problema solucionado.
Tengo una pregunta mas estoy programando un pic16f877a y en algún lugar vi que se tiene que poner un 0 a un bit del trisE ya que con el seleccionas el modo de operacion del puerto D , esto es así y porque ?digamos que significa.
SAludos
-
Supongo te refieres al bit 4 de TRISE el cual según el datasheet configura el puerto D como I/O normales o como puerto paralelo.
Mira el datasheet pag. 50 y relativas alos puertos afectados.
Saludos
-
mejor modificas la libreria de puerto D a puerto B esmuy simple y no te complicas con la libreria flex_lcd
-
No sé que versión de CCS usas, pero las ultimas versiones traen una libreria en la que puedes definir los pines que quieras. A mí hace poco me pasó lo contrario, con la flex no funcionaba y con la del CCS sí.
La configuración que hice es esta:
#define LCD_ENABLE_PIN PIN_B3 //
#define LCD_RS_PIN PIN_B2 ////
#define LCD_RW_PIN PIN_B1 ////
#define LCD_DATA4 PIN_B4 ////
#define LCD_DATA5 PIN_B5 ////
#define LCD_DATA6 PIN_B6 ////
#define LCD_DATA7 PIN_B7
#include <LCD.c>
Saludos.
-
soy nuevo en esto de los pic, pido ayuda para implementar una lcd 2x16 con los pic
-
soy nuevo en esto de los pic, pido ayuda para implementar una lcd 2x16 con los pic
intentaste buscar en el foro lo que pides??? hay muchisima info al respecto