TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: morgan19 en 06 de Noviembre de 2011, 00:26:30
-
hola amigos como estan, tengo un problemilla y me gustaria saber si alguno me podria colaborar. Bueno lo que ocurre es que estoy montando un circuito con pic y un displaylcd, en la simulacion de proteus todo funciona al 100% pero el montaje no me funciona la pantalla, exactamente me salen son los cuadritos, si muevo el contraste pues oscurecen y viceversa. ¿cual podria ser mi error?, les agradezco toda su ayuda y atencion mil gracias!
-
problema en la rutina de inicializacion
-
problema en la rutina de inicializacion
hola jhozate gracias por tu respuesta, pero si en proteus la simulacion funciona bien, puede haber problema en la rutina?
-
pon el esquematico real y el codigo y ahi si vemos que podria estar pasando
-
pon el esquematico real y el codigo y ahi si vemos que podria estar pasando
la imagen del esquematico la adjunte y :D el codigo es en c y es el siguiente:
////////////////////////////////////////////////////////
// //
// //
// //
////////////////////////////////////////////////////////
#include<16F877A.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#include<lcd.c>
#use fast_io(A)
/////////////////////////////////////////////////////////////////////
int16 valor, Voltaje, K, Vdif;
int8 dig1,dig2,dig3,aux;
/////////////////////////////////////////////////////////////////////
void iniConversorAD(){
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
set_tris_A(0xFF);
set_adc_channel(0);
delay_us(10);
}
void IniPantallaLCD(){ //se visualiza la pantlla inicial con vp vrms y vdc
lcd_init();
lcd_putc("\f");
lcd_putc(" MEDICIONES");
lcd_putc("\n INDUSTRIALES");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("Inicializando:");
lcd_gotoxy(1,2);
lcd_putc("...........");
delay_ms(1000);
lcd_putc("\f");
//visualizacion del lcd
}
void Descompone(int16 Dato){ //Convertir dato a 3 digitos
Dig1= Dato/100;
aux = Dato%100;
Dig2= aux/10;
Dig3= aux%10;
Dig1+= '0'; // Suma cero ascci
Dig2+= '0'; // para correcta visualizacion
Dig3+= '0'; // en el lcd
}
void ProcesarSenal(){ //procesar la señal lectura que tiene puerto a
int32 K32;
K= read_adc();
delay_ms(10);
K32=K;
Voltaje=14640*K32/10000;
}
void vdiferen(){
vdif=Voltaje;
Descompone(vdif);
}
void Visualiza(){ //Rutina para la visualizacion
//en el. Cada voltaje en la
//respectiva posicion
vdiferen();
lcd_gotoxy(1,1);
lcd_putc("V. DIFERENCIAL:");
lcd_gotoxy(4,2);
lcd_putc(Dig1);
lcd_putc(".");
lcd_putc(Dig2);
lcd_putc(Dig3);
}
void main(){
iniconversorAD();
IniPantallaLCD();
while(true){
delay_ms(50);
Procesarsenal();
Visualiza();
delay_ms(1000);
}
}
-
has ajustado el potenciometro de contraste del lcd???
-
has ajustado el potenciometro de contraste del lcd???
hola qiqe, sip efectivamente, de igual manera si lo ajusto o se oscurecen los cuadritos o se desvanecen
-
Como bien ha dicho jhozate muchas veces los problemas de los lcds están en los retardos que hay en las rutinas de inicialización porque no todos los displays tienen la misma espera entre instrucción e instrucción.
Hace tiempo me pasó algo similar y probé mandar al lcd los comandos de la rutina de inicialización paso a paso mirando el datasheet de mi lcd.
http://www.todopic.com.ar/foros/index.php?topic=20248.0;
Saludos a todos.
Jukinch
-
y el esquematico? Me suena mas a que el problema podria estar en el oscilador o que hayas puesto el lcd en el puerto que no es.
-
y el esquematico? Me suena mas a que el problema podria estar en el oscilador o que hayas puesto el lcd en el puerto que no es.
mira este es el esquematico
-
prueba definiendo los pines a usar antes de incluir la libreria
#define LCD_RS_PIN PIN_b6
#define LCD_RW_PIN PIN_b4
#define LCD_ENABLE_PIN PIN_c2
#define LCD_DATA0 PIN_C1
#define LCD_DATA1 PIN_C0
#define LCD_DATA2 PIN_a2
#define LCD_DATA3 PIN_a1
#include <lcd.c>
-
prueba definiendo los pines a usar antes de incluir la libreria
#define LCD_RS_PIN PIN_b6
#define LCD_RW_PIN PIN_b4
#define LCD_ENABLE_PIN PIN_c2
#define LCD_DATA0 PIN_C1
#define LCD_DATA1 PIN_C0
#define LCD_DATA2 PIN_a2
#define LCD_DATA3 PIN_a1
#include <lcd.c>
ok jhozate lo probare y te aviso si me funciono o no muchas gracias por la ayuda, apenas pueda quemar el pic y probar posteo
-
apenas pueda quemar el pic
:D :D por favor no le hagas eso...programalo mejor :mrgreen: