Ayuda con LCD 16x2 y 16F628A

Buenas foreros, necesitaria vuestra ayuda para resolver un problema que me trae de cabeza, estoy intentando hacer unos esquemas con un 16F628A y no consigo hacer funcionar el LCD 16x2, el caso es que con un 16F84A me funciona a la perfeccion pero cuando sustituyo el pic habiendo previamente hecho los cambios necesarios de un 16F84A al 16F628A no consigo hacerlo funcionar, simplemente sale una raya negra, problema en el LCD no es, ya que funciona perfecto, esta claro que es el esquema o la config de fuses pero no consigo averiguar donde esta el problema, os adjunto el esquema y la config que uso en el 16F628A es :
XT, WDT ON, PWRTE OFF, MCLRE OFF, BODEN OFF, LVP OFF, CP OFF.

los 2 pic esta programados asi:
'' lcd 16x2 con 16F628A
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTA
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisa=0
trisb=0
pause 500
inicio:
lcdout $FE, 1
lcdout $FE, 1, "Prueba con 16F628A"
lcdout $fe, $C0, "abcdefghijklmnop"
pause 2000
goto inicio
end

y este el esquema.
lcd16x2.jpg
A ver si me podeis echar una mano.

Nada ya esta solucionado, he cambiado todas las conexiones al puerto B y he dejado el A al margen con este simple cambio.

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisb=0
y ya esta arreglado.
Saludos.
Por cierto me podeis decir como definir los fuses en picbasic pro?
 
Última edición:
Hola, me podrias decir que configuracion tienes de windows-picbasic pro y de mplab o que entorno utilizas para zafar de las 30 lineas del micro code studio? Saludos
 
A que configuracion te refieres? si es la de MPlab con pic basic pro para evitar el error al compilar tienes que usar el bat en lugar del exe.
MPlab con PBP pulsas project wizard eliges pic, seleccionas picbasicpro y en location pones C:\PBP\PBPMPLAB.BAT en lugar de C:\PBP\PBPW.EXE, pulsas siguiente, guardas el proyecto nuevo en la carpeta de pbp, todo a siguiente hasta finalizar y cuando ya hayas creado el proyecto pulsas en el icono new file, que se abra una ventana llamada untituled, escribes la primera linea comentada y la guardas con la extenxion bas, añades ese fichero bas que has creado al proyecto pulsando con el derecho en source files/add file y añades el bas y ya esta, escribes tu programa, cuando hayas terminado de crearlo pulsas el icono save save file para guardar los cambios y al icono compile y ya esta.
Si tienes proteus, para ver si funciona el programa pulsas en debugger/select tool/y eliges el programa proteus VSM y se abre una ventana dentro de MPlab para proteus, cargas un proyecto de proteus y añades al pic el hex que acabas de crear, le das a run arriba a la derecha (circulito verde) y triangulitos azules para iniciar la simulacion, asi ves los resultados.
Saludos.
 
Última edición:
Por cierto me podeis decir como definir los fuses en picbasic pro?
Código:
@ Device   PIC16F628A
@ Device   Intrc_Osc
@ Device   WDT_Off
@ Device   Pwrt_off
@ Device   Mclr_off
@ Device   BOD_Off
@ Device   LVP_Off
@ Device   CPD_Off
@ Device   Protect_Off

Para el primer problema era suficiente con declarar el puerto A como Digital con el registro :
CMCon=7
 
Buenas foreros, necesitaria vuestra ayuda para resolver un problema que me trae de cabeza, estoy intentando hacer unos esquemas con un 16F628A y no consigo hacer funcionar el LCD 16x2, el caso es que con un 16F84A me funciona a la perfeccion pero cuando sustituyo el pic habiendo previamente hecho los cambios necesarios de un 16F84A al 16F628A no consigo hacerlo funcionar, simplemente sale una raya negra, problema en el LCD no es, ya que funciona perfecto, esta claro que es el esquema o la config de fuses pero no consigo averiguar donde esta el problema, os adjunto el esquema y la config que uso en el 16F628A es :
XT, WDT ON, PWRTE OFF, MCLRE OFF, BODEN OFF, LVP OFF, CP OFF.

los 2 pic esta programados asi:
'' lcd 16x2 con 16F628A
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTA
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisa=0
trisb=0
pause 500
inicio:
lcdout $FE, 1
lcdout $FE, 1, "Prueba con 16F628A"
lcdout $fe, $C0, "abcdefghijklmnop"
pause 2000
goto inicio
end

y este el esquema.
Ver el archivo adjunto 58183
A ver si me podeis echar una mano.

Nada ya esta solucionado, he cambiado todas las conexiones al puerto B y he dejado el A al margen con este simple cambio.

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisb=0
y ya esta arreglado.
Saludos.
Por cierto me podeis decir como definir los fuses en picbasic pro?

Hola Amigo, bien no se a que te refieres con "aparace solo una raya negra", quizas este demasiado saturado el contraste del LCD?
Quita la linea de codigo referida:
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
Conecta el pin R/W del LCD a GND, y prueba.-
 
Por cierto me podeis decir como definir los fuses en picbasic pro?
Código:
@ Device   PIC16F628A
@ Device   Intrc_Osc
@ Device   WDT_Off
@ Device   Pwrt_off
@ Device   Mclr_off
@ Device   BOD_Off
@ Device   LVP_Off
@ Device   CPD_Off
@ Device   Protect_Off

Para el primer problema era suficiente con declarar el puerto A como Digital con el registro :
CMCon=7

Lubeck gracias por responder, pero no me funciona esa declaracion de fuses
me dice esto la venta build del output
ERROR: Unable to execute mpasmwin.Warning[207] C:\PBP\LCD1.ASM 109 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 109 : Illegal opcode (PIC16F628A)
Warning[207] C:\PBP\LCD1.ASM 118 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 118 : Illegal opcode (Intrc_Osc)
Warning[207] C:\PBP\LCD1.ASM 127 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 127 : Illegal opcode (WDT_Off)
Warning[207] C:\PBP\LCD1.ASM 136 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 136 : Illegal opcode (Pwrt_off)
Warning[207] C:\PBP\LCD1.ASM 145 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 145 : Illegal opcode (Mclr_off)
Warning[207] C:\PBP\LCD1.ASM 154 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 154 : Illegal opcode (BOD_Off)
Warning[207] C:\PBP\LCD1.ASM 163 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 163 : Illegal opcode (LVP_Off)
Warning[207] C:\PBP\LCD1.ASM 172 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 172 : Illegal opcode (CPD_Off)
Warning[207] C:\PBP\LCD1.ASM 181 : Found label after column 1. (Device)
Error[122] C:\PBP\LCD1.ASM 181 : Illegal opcode (Protect_Off)
 
Buenas foreros, necesitaria vuestra ayuda para resolver un problema que me trae de cabeza, estoy intentando hacer unos esquemas con un 16F628A y no consigo hacer funcionar el LCD 16x2, el caso es que con un 16F84A me funciona a la perfeccion pero cuando sustituyo el pic habiendo previamente hecho los cambios necesarios de un 16F84A al 16F628A no consigo hacerlo funcionar, simplemente sale una raya negra, problema en el LCD no es, ya que funciona perfecto, esta claro que es el esquema o la config de fuses pero no consigo averiguar donde esta el problema, os adjunto el esquema y la config que uso en el 16F628A es :
XT, WDT ON, PWRTE OFF, MCLRE OFF, BODEN OFF, LVP OFF, CP OFF.

los 2 pic esta programados asi:
'' lcd 16x2 con 16F628A
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTA
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisa=0
trisb=0
pause 500
inicio:
lcdout $FE, 1
lcdout $FE, 1, "Prueba con 16F628A"
lcdout $fe, $C0, "abcdefghijklmnop"
pause 2000
goto inicio
end

y este el esquema.
Ver el archivo adjunto 58183
A ver si me podeis echar una mano.

Nada ya esta solucionado, he cambiado todas las conexiones al puerto B y he dejado el A al margen con este simple cambio.

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

trisb=0
y ya esta arreglado.
Saludos.
Por cierto me podeis decir como definir los fuses en picbasic pro?



buen dia respecto a tu problema , yo lo que haria seria editar los define correspondientes a : XT, WDT ON, PWRTE OFF, MCLRE OFF, BODEN OFF, LVP OFF, CP OFF.

y pondria lo que te dijieron mas arriba cmcon = 7
esto lo que hace es apagar los comparadores del puerto A. Para simularlo en proteus no tendrias problema. saludos
 
EL problema es que el picbasic pro con mplab no comprende la instruccion @device y por eso me da error, y mi problema radica justo ahi, la unica manera que tengo de cambiar los fuses es mediante la pestaña configure/configuration bits en el mplab que me de el valor correspondiente a una configuracion deseada y ponerle mediante hexadecimal ese valor en el programador a la hora de quemar el pic.
Por ejemplo supongamos que deseo cambiar los fuses con MPLAB, voy al menu configure/configuration bits y selecciono XT, WDT ON, PWRTE OFF, ect ect que tiene tiene un hipotetico valor de 3F6D me quedo con ese valor y en el programa para grabar el pic, pickit2 programmer yo uso como valor 3F6D (es el mismo valor que se deberia usar en program configuration word al editar las propiedades del pic en proteus) que es lo que me dio MPlab para configurar los fuses, pues en la configuracion de bits de pickit 2 programmer cambio los valores hasta tener 3F6D y los fuses quedaran configurados como queria, ( lo marcado en los recuadros azules) es la unica manera que tengo de configurar fuses con PBP y MPlab porque no encuentro la forma de declararlos en el codigo que estoy programando para despues compilarlo.
No se si me he explicado.
7.jpg
imagen de MPlab

6.jpg
Imagen de la configuracion de bits en pickit 2 programmer.

4.jpg
configuracion del pic en proteus.

Adjunto imagenes de lo que os digo para que tengais una mejor idea.

Bueno menudo rollo me acabo de pegar para explicar como hago para declarar la config del pic XD.
Pero es la unica manera que de momento puedo usar porque no consigo meter la config en el codigo.
A ver si me echais una mano para poder implementar la config en el codigo.
 
Última edición:
Atrás
Arriba