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=5360http://www.proactivecomponentsusa.com/searchparts.htmlPero 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.