Autor Tema: flex_lcd.c funciona con 16f684??  (Leído 3030 veces)

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

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
flex_lcd.c funciona con 16f684??
« en: 27 de Marzo de 2010, 00:16:52 »
Hola, en primer lugar pedir perdón por iniciar otro hilo sobre lcd, lo he estado manejando bien hasta ahora, que con el pic16f684 no hya forma de hacerlo funcionar:
 Uso ccs 4.104; en la entrada A0 tengo un divisor resitivo con una LDR a masa y en el otro lado un potencimetro a VDD, y del punto de union entre ambos un cable a la patilla AN0, si al configuro la forma en que la tengo no necesito ni Vref+ ni VSS, las toma internas,no? el caso es que creo que la ADC la hace bien, pero intenté poner un lcd para mostrar el dato de la conversion y no hay forma de conseguirlo, tengo ls RW del lcd a masa, las conexiones recomprobadas pero no consigo que me saque el valor por pantalla, ni siquiera llega a mostrar el "inicio.." del principio...
Código: [Seleccionar]
#include <16f684.h>
#device adc=10
#FUSES NOWDT,NOMCLR,HS
#use delay (clock=8000000)
//#define USE_LCD_RW   0
#define LCD_DB4   PIN_C1
#define LCD_DB5   PIN_C2
#define LCD_DB6   PIN_C3
#define LCD_DB7   PIN_C4
#define LCD_RS    PIN_C0
#define LCD_RW    PIN_A4
#define LCD_E     PIN_A5

#INCLUDE "flex_lcd.c"
int16 valor,pwm;

void main()
{


setup_timer_2(T2_div_BY_1,224,1);
setup_ccp1(ccp_PWM);

lcd_init();
delay_ms(100);
lcd_putc("Inicio..");
delay_ms(2000);
lcd_putc("\f");
setup_adc(adc_clock_internal);
setup_adc_ports(sAN0|VSS_VDD);
set_adc_channel(0);
while(true) {
valor=read_adc();
delay_us(30);
if (valor<11)
   pwm=0;
if (valor> 12 && valor <100)
   pwm=400;
   if (valor>101&&valor<200)

   pwm=500;
if (valor>201&&valor<300)
   pwm=700;
if (valor>401&&valor<500)
   pwm=600;
   if (valor> 501 && valor <600)
   pwm=0;
   if (valor>601&&valor<700)

   pwm=700;
if (valor>701&&valor<800)
   pwm=8000;
if (valor>4801&&valor<900)
   pwm=900;
if (valor>901)
   pwm=1000;
set_pwm1_duty(pwm);
PRINTF(LCD_PUTC,"%Ld",valor);
delay_ms(200);

}



}

Me gustaria añadir que llevo ya muchas horas con esto, para avalar nada mas añadir que en españa son las 4 de la madrugada.... :5] :5]
Muchas gracias a todos y un saludo....

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: flex_lcd.c funciona con 16f684??
« Respuesta #1 en: 27 de Marzo de 2010, 11:24:54 »
HOLA amigo lo primero que veo ahi es que el tipo de oscilador que usas es HS  que usa los pines A4 Y A5,  y tambien estos mismos pines  estas utilizando para el LCD, tal vez sea uno de los problemas
se podria resolver usando el oscilador interno.

saludos

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: flex_lcd.c funciona con 16f684??
« Respuesta #2 en: 27 de Marzo de 2010, 21:29:01 »
Hola culebrasx, revisa este ejemplo a ver si te sirve de algo.

saludos.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: flex_lcd.c funciona con 16f684??
« Respuesta #3 en: 27 de Marzo de 2010, 21:44:49 »
No te funciona porque defines A5

y A5 corresponde al MCLR.

Saludos!

Desconectado culebrasx

  • PIC10
  • *
  • Mensajes: 39
Re: flex_lcd.c funciona con 16f684??
« Respuesta #4 en: 29 de Marzo de 2010, 11:15:41 »
He cambiado el pin_A5,
He definido NOMCLR, por lo que creo que esa patilla la podria utilizar como entrada salida,no? de todas formas la he cambiado.
SI defino HS, hace referencia al oscilador interno de alta velocidad,8MHz, por lo que tambien entiendo que esas patillas las podria utiliar como entrada salida,no?



NADA, creo que me habia cargado la pantalla, he probado con otra y funciona todo ok...

Como no se veia muy bien se subi un poco el voltaje (6V) y no se si sera eso...
Ahora tengo otro problemas con conversion de tipos..pero eso no corresponde con el titulo del hilo...muchas gracias a todos... ;-)

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: flex_lcd.c funciona con 16f684??
« Respuesta #5 en: 29 de Marzo de 2010, 14:27:42 »
Hola culebrasx, no has definido el oscilador interno , el HS hace referencia a un oscilador externo superior a 4Mhz.

en ese micro seria algo asi como:
Código: [Seleccionar]
#FUSES NOWDT,NOMCLR,INTRC    //
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.