TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: perkantronico en 01 de Noviembre de 2009, 17:34:54
-
Hola que tal ¡¡, Primero que todo felicitar a todos por los aportes, ya que de verdad son bastante utiles al responder a problemas simples o complejos.
Bueno, estoy trabajando con el PIC 16F877A y quiero probar un LCD 2x16. esta pantalla es de un teclado de una alarma.
es el modelo HMC16202SG-LY-12-1 (http://s4.subirimagenes.com/otros/previo/thump_3487694hmc16202sgly121.jpg)
he buscado por todos lados el datasheet y mas, lo solicite en algunas paginas donde lo ofrecen
http://www.elektronika.cz/inshop/scripts/detail.asp?ItemID=5360
http://www.proactivecomponentsusa.com/searchparts.html
Pero han respondido que no lo tienen o no disponen de el por lo pronto.
Entonces me dispuse a conectarlo como lo haria con un JHD162A o un lcd estandar, dado que tambien tiene 16 PINES,
la conexion es la siguiente:
LCD PIC
Vss--> Tierra
Vcc--> 5v
Vee--> potenciometro de 10 K (Regulador)
RS---> D1
RW--> Tierra
E----> D0
D4--> D4
D5--> D5
D6--> D6
D7--> D7
Utilizo la libreria Flex_lcd ((http://picmania.garcia-cuervo.net/picc.php#FLEXLCD))
con la siguiente modificacion para utizar el puerto D del PIC:
--------------------------------------------------------------------------------------------------
#define LCD_DB4 PIN_D4
#define LCD_DB5 PIN_D5
#define LCD_DB6 PIN_D6
#define LCD_DB7 PIN_D7
#define LCD_RS PIN_D1
#define LCD_RW PIN_D2
#define LCD_E PIN_D0
-----------------------------------------------------------------------------------------------
para probar el funcionamiento utilizo el mismo codigo de la Pag.
(http://picmania.garcia-cuervo.net/experimentos.php#EXP-6) escribiendo en LCD , ejemplo en CCS pic
-----------------------------------------------------------------------------------------------
#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include "flex_lcd.c"
char Keypress=' ';
#int_rda
void serial_isr() {
Keypress=0x00;
if(kbhit()){
Keypress=getc();
}
}
void main() {
enable_interrupts(global);
enable_interrupts(int_rda);
printf("\r\n\LCD driver monitor\r\n");
lcd_init();
do {
if(Keypress!=0x00){
lcd_putc(Keypress);
putc(Keypress);
Keypress=0x00;
}
} while (TRUE);
}
-------------------------------------------------------------------------------------------
Luego el display solo responde prendiendo y apagando de manera difusa, como raro prende los cuadros completos
y luego se apagan de a poco. (tambien pasa cuando vario el potenciometro)
y cuando pasa eso, escribo en el teclado y este no responde.
otra cosa en todo momento el lcd NO RESPONDE a lo enviado.
ademas he probado con varias rutinas pero tampoco nada ...
Ojala alguien haya ocupado este LCD, y si no es el LCD ayuda para hacer funcionar el ¡¡maldito Bicho¡¡ por el Puerto D del PIC
Saludos.
-
bueno antes que nada te recomendaria que hicieras primero simulaciones ya sea en proteus o algun soft con el cual simules tus Pic`s,
y algo si cuando te salgan los cuadros incompletos es que tu LCD ya se murio
-
psss raro esa libreria no falla...revisa bien las conexiones de pronto se paso algo...cuando aparecen esos cuadros es posible q este muerto o sea un problema de inicializacion pero no creo q este ultimo sea el caso
-
Sep..Toda la razon, probe simulando en Proteus y cierto funciono Ok.
Ahora lo hice con el micro, de forma fisica, y sigue igual, no Funka para nada y salen cuandrados medios raros.
murio al parecer.
Gracias por las sugerencias.
Pd: Aunque si alguien tuviera el Datasheet, para sacarme las dudas si se conecta igual que uno standar.
-
si pudieses subir un video para ver como reacciona tu lcd y para ver tu cableado
-
Hola darck_khronos
Aqui te van algunas imagenes (Ojala sirvan) y un video de demostracion.
Simulacion.
http://sube.la/viewer.php?file=v8794k4911pzzd8q10vr.jpg
Circuito
http://sube.la/viewer.php?file=hzqcfwugpv47cqots9e.jpg
http://sube.la/viewer.php?file=vreum0sgranjs8wxtg.jpg
El Problema
http://sube.la/viewer.php?file=ybyj3t631kguh1x8dnzy.jpg
http://sube.la/viewer.php?file=xzu2tz6jp3kz9b46gl.jpg
Video.
basicamente indica cuando cargo el programa, y el LCD no responde ni el teclado como deberia hacerlo
Segun el Programa. Ademas al inicio y cuando muevo el potenciometro aparece el problema.
Eso.
-
Ah¡¡...y Este es codigo...
---------------------------------------------------------------------------------------------------
#include "E:\Proyectos CCS\PROYECTO 2\Lcd_puertoD\Prueba_FLEX\prueba_1.h"
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#define LCD_DB4 PIN_D4
#define LCD_DB5 PIN_D5
#define LCD_DB6 PIN_D6
#define LCD_DB7 PIN_D7
#define LCD_RS PIN_D0
#define LCD_RW PIN_D1
#define LCD_E PIN_D2
#include "flex_lcd.c"
char Keypress=' ';
#int_rda
void serial_isr() {
Keypress=0x00;
if(kbhit()){
Keypress=getc();
}
}
void main() {
enable_interrupts(global);
enable_interrupts(int_rda);
printf("\r\n\LCD driver monitor\r\n");
lcd_init();
lcd_putc(" Prueba LCD ");
do {
if(Keypress!=0x00){
lcd_putc(Keypress);
putc(Keypress);
Keypress=0x00;
}
} while (TRUE);
}
--------------------------------
Y en la Libreria activada el
#define USE_LCD_RW 1
-
te comento que a mi una vez me salia lo mismo...y en definitiva el lcd estaba muerto..