ERROR pic16f628a y lcd16x2

Necesito ayuda, tengo un pic16F628A y un LCD de 16x2, estoy empezando con esto del mundo pic, la cuestion es que hice un programita para mostrar 2 palabras en el lcd y no consigo que lo muestre, me muestra solo la 1º linea del lcd con (cuadrados negros, matriz de punto) y en la segunda linea nada, ya probe varias opciones que hay en la red pero nada, adjunto el codigo e imagenes del problema, espero me puedan ayudar pronto.

si alguien tiene alguna idea de como hacerlo o ya lo hizo le funcioono por favor se agradece, tiro todo lo que tengo y arranco de cero porque estoy mareado de hacer tantas conecciones en la protoboard!!!


Gracias de antemano......


/////////////////////////////////////////Aqui el codigo que uso//////////////////////////////

define lcd_dreg portb
define lcd_dbit 4
define lcd_rsreg portb
define lcd_rsbit 3
define lcd_ereg portb
define lcd_ebit 2
define lcd type 0

trisb=0


pause 500
lcdout $fe, 1
lcdout $fe, 1,"hola"
lcdout $fe, $c0,"micropic"
pause 1000
lcdout $fe, 1,"segundo"
lcdout $fe, $c0,"hola"
end


//////////////////////////////////////////////////////////////////////////////////////////////


subi imagenes de la falla y del circuito, saludos.........
 

Adjuntos

  • displaymal.png
    displaymal.png
    13 KB · Visitas: 4
  • circuito.png
    circuito.png
    26 KB · Visitas: 8
Última edición por un moderador:
si alguien tiene alguna idea de como hacerlo o ya lo hizo le funcioono por favor se agradece, tiro todo lo que tengo y arranco de cero porque estoy mareado de hacer tantas conecciones en la protoboard!!!
Saludos userlong
Por la sintaxis del programa parece que es para PICBasic del MicroCode Studio.
Pero la instrucción LCD_Type es para Proton y está mal escrita, sin embargo no afecta al programa.
Por qué no será tomada como configuración del LCD.
Algo por lo que muchos programas fallan, es por la falta de la palabra de configuración (Fuses)
Y parece que siempre será un tema a tratar por todos los que apenas comienzan. ;)
Si ya verificaste bien las conexiones del PIC a la pantalla, y no funciona, el problema puede ser qué...
.- El compilador toma los valores de la palabra de configuración del archivo 16F628A.INC
Que por default son: xt_osc, wdt_on, mclr_on, lvp_off, protect_off
.- Si el programa lo quieres hacer funcionar con el oscilador interno, esté no funcionara.
.- Si tienes sin conexión el pin 4 RA5-MCLR/Vpp tampoco funcionara, o lo hará mal.
.- Este pin va hacia VDD +5V por medio de una R de 4.7K o 10K, o directamente a VDD.
.- En el foro existen muchos ejemplos, busca un poco y veras muchos que usan este PIC y funcionan.

Por si existen dudas sobre la palabra de configuración y la sintaxis para el programa.
Adjunto dos ejemplos. Uno para MicroCode y otro para Proton.
Los dos funcionan bien, y están creados para usar el oscilador interno.

Suerte.
 

Adjuntos

  • 16F628A LCD.rar
    23.2 KB · Visitas: 9
Hola a todos!!
tengo un problemilla intentando hacer algo muy basico como comunicar el 16f628a con un lcd 16x2

Lo que pasa es que la pantalla solo sale la primera linea con cuadraditos, y ya esta, no hay mas respuesta

tenia problemas para configurar el reloj interno del pic (me volvia loco con los fuses!!!!!)
asi que le coloque un rem en el codigo y los configure directamente en el icprog. tambien le coloque un led para comprobar que el pic estubiera bien grabado y que el tema del oscilador estaba solucionado.

adjunto aqui el codigo, foto del problema, y cableado

espero que me podais hechar un cable!!

un saludo

Código:
'DEFINE INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF ESTE FUNCIONA
'DEFINE INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_ON,LVP_OFF,MCLRE_OFF

CMCON = 7 'convierete el porta a digital
'Define CONF_WORD = 0x3f50
'CONF_WORD = 0x3f10
'Define CLOCK_FREQUENCY = 4
' DEFINICIÓN DE REGISTROS PARA EL LCD
DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 4     'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTA 'UTILIZAR EL REGISTRO  DE CONTROL/DATOS EN EL PUERTO B
DEFINE LCD_RSBIT 0    'EN EL BIT B.1
DEFINE LCD_EREG PORTA 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 1     'EN EL BIT B.2
'DEFINE LCD_BITS 4

TRISB = 0  'ESTABLECER EL PUERTO B COMO SALIDA
pause 1000  'PAUSE DE MEDIO SEGUNDO

loop:

Lcdout $fe, 1  'LIMPIAR VISOR
Lcdout $fe, $82, "prueba"  'ESCRIBIR EN LA PRIMER LÍNEA
'LCDOUT $FE, $C0       'ESCRIBIR EN LA SEGUNDA LÍNEA
'Lcdout $fe, $c0, "1234567890"
'Lcdout $fe, $0c  'APAGAR EL CURSOR
High PORTB.3
pause 1000
low portb.3
pause 1000
gosub loop

End

y esta es la configuracion de los fuses



le he colocado tambien un pause entre linea y linea, segun he leido por ahi, pero nada, hace la pausa y luego los cuadraditos negros....

sera tema del contraste???? le he puesto un potenciometro que tenia por ahi, pero no han habido buenos resultados.....

el potenciomentro ha de ser de 10K? como debo conectarlo?
uffff
 

Adjuntos

  • 311596_4246423207835_577239044_n.jpg
    311596_4246423207835_577239044_n.jpg
    171.3 KB · Visitas: 13
  • 314043_4246421447791_957778540_n.jpg
    314043_4246421447791_957778540_n.jpg
    125.4 KB · Visitas: 15
  • 406371_4246484889377_1283227069_n.jpg
    406371_4246484889377_1283227069_n.jpg
    124.5 KB · Visitas: 9
Última edición por un moderador:
hola,los cuadritos en pantalla te salen porque no hay comunicacion con el pic,si le sacas el pic de la protoboard veras que queda igual...seguro que tienes un error de programacion pero en eso no te puedo ayudar porque yo uso otro lenguaje para ello saludos.
 
Amigo, ademas de chequear el tema contraste del display.
En la declaracion:
"DEFINE LCD_RSREG PORTA 'UTILIZAR EL REGISTRO DE CONTROL/DATOS EN EL PUERTO B
DEFINE LCD_RSBIT 0 'EN EL BIT B.1
DEFINE LCD_EREG PORTA 'UTILIZAR EL ENABLE EN EL PUERTO B"
Habilitas el puerto A para el control de RS y E, sin embargo el comentario describe al puerto B.
Quizas exista una confusion de cableado?.
 
Unifique los temas por ser del mismo tipo.

Saludos.

gracias y perdon, ya habia leido este tema, y tienes razon, mejor todo juntito!
Un saludo



Amigo, ademas de chequear el tema contraste del display.
En la declaracion:
"DEFINE LCD_RSREG PORTA 'UTILIZAR EL REGISTRO DE CONTROL/DATOS EN EL PUERTO B
DEFINE LCD_RSBIT 0 'EN EL BIT B.1
DEFINE LCD_EREG PORTA 'UTILIZAR EL ENABLE EN EL PUERTO B"
Habilitas el puerto A para el control de RS y E, sin embargo el comentario describe al puerto B.
Quizas exista una confusion de cableado?.

Gracias por tu respuesta, el cableado esta bien, he hecho tantos cambios y no consigo hallar el problema....
cambie al puerto a para el RS y E tanto en el codigo como en el cableado, lo que no cambie fueron los comentarios.

gracias de nuevo!



hola,los cuadritos en pantalla te salen porque no hay comunicacion con el pic,si le sacas el pic de la protoboard veras que queda igual...seguro que tienes un error de programacion pero en eso no te puedo ayudar porque yo uso otro lenguaje para ello saludos.

Gracias por tu respuesta Daniel, pero si saco el pic de la protoboard, deja de funcionar todo, logicamente, el led ya no parpadea pues no tiene el pic, pero el lcd, tambien se apaga
 
Última edición:
SOLUCIONADO!!

madre mia, me da hasta verguenza decir lo que pasaba....... pero puede ser que mi experiencia le sirva a alguien

estaba mal conectado el lcd!!
el orden de los pins desde el lado de los componentes es: 14,13,12,11,10,......2,1,16,15

Seguro que hay alguna razon por la cual este orden, o quizas se perdio algun capitulo de Barrio Sesamo??

Saludos!
 
Atrás
Arriba