Autor Tema: LCD con 16f684  (Leído 2419 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
LCD con 16f684
« en: 28 de Diciembre de 2007, 15:54:36 »
saludos amigos! estoy trabajando con un nuevo pic, que me dieron hace bastante tiempo, jejeje, un amigo me dijo que haga pruebas con el, y pues como ya estoy con algo de tiempo extra decidi meterle mano, jejeje, y pues pretendo hacer un reloj de tiempo real (o lo mejor que salga) :mrgreen: por software, usando el timer1 y un cristal de 32.768KHz; y beuno ver sobre la presición :mrgreen:

pero como sabran este micro solo tiene 14 patitas, de las cuales 12 estan destinadas a I/O, pero con algunas limitaciones, ya que el de MCLR solo puede ser entrada, si se usa OSC externo se pierden dos pines del puerto A, pero parece que es muy bueno, ya que tb tiene conversor A/D (8canales 10bits), 3 timers, 2 comparadores, 256B de eeprom, ECCP, 2K de flash, 128 de RAM y por si fuera poco oscilador interno de hasta 8MHz

bueno, me parece una joyita, jeje

y este bicho solo tiene 2 puertos A y C A0...A5 y C0...C5, no tiene puerto B :shock: que es donde va el LCD, ahora nose si habra una libreria para poder manejar un LCD HD44780 con PICs de este tipo de puertos, o si es que se puede modificar la libreria de 8 bits, para tb manejar un teclado matricial, aunque talvez sea mejor usar un teclado analogico, pero, de poder modificar una libreria como le hago?? cambio todos los pines que necesitaria?? o como??

un saludo, muchas gracias :mrgreen:
.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: LCD con 16f684
« Respuesta #1 en: 28 de Diciembre de 2007, 16:02:35 »
Hola amigo!

Aqui puedes ver como usar el Display LCD 2x16 en PORTD. Seguramente vas a poder cambiar un par de tonterias para usarlo en donde gustes.

Aqui esta explicado bien como modificar LCD.C

Esta es una imagen de la simulacion del LCD en el puerto D:



Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: LCD con 16f684
« Respuesta #2 en: 29 de Diciembre de 2007, 11:31:52 »
ok, muchas gracias enseguida lo reviso y veo como le hago :mrgreen:
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: LCD con 16f684
« Respuesta #3 en: 29 de Diciembre de 2007, 14:29:33 »
haber, nose si te fijaste pero este micro no tiene ningun puerto completo de 8 bits, solo estan del 0 al 5, osea 6 bits, que es suficiente para 4 bits de datos y 2 de control y el r/w a gnd, es correcto esto verdad??

ahora en la libreria esto esta bien?:

struct lcd_pin_map {
  BOOLEAN enable; // RC4
  BOOLEAN rs; // RC5
  BOOLEAN unused1;  // RC6
  BOOLEAN unused2;      // RC7
  int data : 4;    // RC0-RC3
} lcd;

en la siguiente parte estoy cambiando el puerto d por el c:

#if defined use_portb_lcd
...
#else
   //#locate lcd = getenv("sfr:PORTC")    // This puts the entire structure over the port
   #ifdef __pch__
    #locate lcd = 0xf82
   #else
    #locate lcd = 7
   #endif
   #define set_tris_lcd(x) set_tris_c(x)
#endif

despues viene esto, que cambios hago aca, porque no hice ningun cambio, me parece uqe es la dimension del LCD?:
#ifndef lcd_type
#define lcd_type 2           // 0=5x7, 1=5x10, 2=2 lines
#endif
#define lcd_line_two 0x40    // LCD RAM address for the second line
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};


y ahora para la funcion por ejemplo:
void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}
como hago para que el dato nibble (4 bits) se vaya a la parte menor del puerto?, roto? o que? creo que roto, no?
weno, seguire haciendo ello cuando vuelva, jeje, ya toy de salida, haber si lo logro...

que significa: int data : 4;
y esto?: lcd.data = n;
que coloca los datos desde el pin 4?

 un saludo :mrgreen:
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: LCD con 16f684
« Respuesta #4 en: 30 de Diciembre de 2007, 01:56:30 »
bueno despues de haber probado y no tener exito :( busqeu librerias para pics que no tengan puertos completos, y me tope con la libreria flex! :mrgreen: con la que me he solucionado el problema:

aca el link, esta muy buena, se puede definir al parecer cualquier Pin, a mi me ha dado con C0-C3 datos y C4, C5 y A1 control :)

un saludo y gracias.
.