Autor Tema: Aporte: LCD sin libreria.  (Leído 4361 veces)

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

Desconectado Rodricity

  • PIC10
  • *
  • Mensajes: 43
Aporte: LCD sin libreria.
« en: 26 de Octubre de 2007, 14:25:07 »
 Bueno eso, me presento soy Rodrigo.

 Y dado a que no veo casi ejemplos usando compilador hitec, aca va uno, es usando hitec con el plugin para mplab.

 aca el programa en C:



#include <pic.h>

long a;

void strobe();
void pausa();
void escribir_lcd(char caracter);
void strobe_pause();

main()
{
   setup();               //Funcion de seteo de puertos
   PORTB = 0b1;         //funcion "Clear display"
   strobe();               //Strobe (E=1 ; pausa ; E=0)
   pausa();               //Pausa para el LCD
   PORTB = 0b1111;         //Activacion display, cursor en on, y blinking activado
   strobe();
   pausa();
   PORTB = 0b110000;         //Display configurado a 1 linea, 8 bits , matriz 5x8
   strobe();
   pausa();
   escribir_lcd('p');
   escribir_lcd('r');
   escribir_lcd('u');
   escribir_lcd('e');
   escribir_lcd('b');
   escribir_lcd('a');
   while(1);
}

void strobe()            //señal de strobe (Enable high y luego enable low)
{
   RC5 = 1;            //Se activa el enable...
   strobe_pause();         //Se hace una pequeña pausa
   RC5 = 0;            //Se baja el enable...
   strobe_pause();         //Se hace otro retardo pequeño
}

void pausa()               //Pausa de 2,3 mS
{
a=0;                  //Se inicia una variable en 0
while(a<400)               //Se hace un ciclo repetitivo.
   {
   a++;               //Se aumenta el valor de a
   }
}

void strobe_pause()               //Tiempo de enable en alto y bajo, 127 uS
{
   while(a<20)            
   {
   a++;
   }
}

void escribir_lcd(char caracter)
{
RC3=1;                  //Se activa pin conectado a RS
PORTB = caracter;               //Se configura puerto B con el valor del caracter
strobe();                  //Se hace un strobe
pausa();                  //una pausa
RC3=0;                  //Se baja RS
}

setup()                  //Funcion de seteo de puertos
{
   TRISA = 0xFF;            //Puerto A es entrada (el circuito mio es así)
   PORTA = 0x0;            //Se inicia en 0 (no se si es necesario en realidad)
   TRISB = 0x0;            //Puerto B salida
   PORTB = 0x0;            //puerto B en 0
   TRISC = 0x0;            //Puerto C salida
   PORTC = 0x0;            //Puerto C en 0
}



 La explicacion necesaria:

 Bueno, el funcionamiento del LCD es bastante simple, primero lo limpiamos, poniendo el pin DB0 del LCD en 1, y subiendo y bajando el enable, el cual debe tener un tiempo minimo, que segun el controlador que utilize el LCD varia, particularmente el que yo uso el tiempo minimo es de 500 nS.

 Otra cosa necesaria es seleccionar como se transmitira la informacion, si de a 4 u 8 bits, yo preferí 8 ya que es mas simple, si deciden hacerlo de a 4 bits deben enviar los 4 bits mas significativos, un strobe de enable y luego los 4 menos significativos.

 esto se configura en la funcion "function set" (vean la hoja de datos del controlador para mas informacion)

 Y por ultimo, recordar que para escribir caracteres en el LCD deben poner en alto el pin RS, que en mi circuito es el pin 3 del puerto C (RC3)

 La coneccion es puerto B -> D0 hasta D7 (Pines 7 a 14 del LCD)
 RC5 -> Enable (Pin 6 del LCD)
 RC4 -> Read / write (R/W) (Pin 5 del LCD)
 RC3 -> RS (pin 4 del LCD)

 Cualquier duda postear aca y veamos si les puedo ayudar...

 PD: creo que el LCD que tengo yo esta malo, ya que el contraste me regula de solamente la primera mitad, y cuando le envío algunos caracter (mas especificamente letras) me muestra lo que le de la gana el LCD...

 EL LCD que utilizo es de 16 x 1, nº de serie VT161A de la empresa Xiamen Vtronic (chino tenia que ser...)

 Lo simulé en proteus y funciona...
« Última modificación: 26 de Octubre de 2007, 14:29:49 por Rodricity »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Aporte: LCD sin libreria.
« Respuesta #1 en: 26 de Octubre de 2007, 16:18:13 »
vale buen aporte!  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Aporte: LCD sin libreria.
« Respuesta #2 en: 28 de Octubre de 2007, 23:37:24 »
Buen aporte. Se agradece =D


salu2 8) 8)