TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: huntergti en 24 de Julio de 2007, 16:42:43
-
Buenas!! Necesito vuestra ayuda en grandes dosis, pues estoy desesperado. Os comento, quiero mostrar por el lcd el típico mensaje hola, sólo para saber como va el funcionamiento, tengo un entrenador en mi casa con el pic16f84a montado, compilo el programa hola.asm (con sus correspondientes librerias) que se encuentra en el cd ejemplo del libro ramma del pic16f84a, me da que todo es correcto, pero a la hora de programar el pic con el icprog, ejjjj me da error en la dirección 0000ah o algo así. El caso es que reinicio el entrenador (pic school) y programo el pic con otro programa mio que no tiene nada que ver con el lcd y me va perfecto, vuelvo a meter el.hex de hola y mismo error y que no sale nada por el lcd. Comentaros que me gustaría poder simularlo antes en algún programa por sino me va bien, tengo el pic simulator ide xo no se muy bien como va lo del lcd y lo pruebo y no sale nada (incluso con ejemplos propios del programa). también comentar que he intentado simularlo en el mplab (pues más o menos controlo el programa) pero la pestaña de view--> lcd pixel no puedo marcarla. Por favor decidme que puedo hacer, en que fallo, como programarlo paso a paso, un simulador de lcd para ver si mi programa va bien, en fin esas cosas. Por último comentar que programo en assembler y conozco c pero de momento solo sé utilizar el pic con código de ensamblador
Muchas gracias por todo, espero vuestras respuestas :-)
-
Hola huntergti. según comentas, ya tienes problemas desde el programador, por lo que deberias empezar a resolver desde allí. Sería buena idea que comentaras mejor que exactamentente sucede cuando intentas grabar el programa en el pic.
-
Voy a intentar explicar mejor, aunq yo mismo me lio xq no tiene ni pies ni cabeza. Primero abro el mplab, creo nuevo proyecto, añado en source files hola.asm(fichero que se encuentra en el cd que te dan con el libro ramma del pic 16f84a) y en header files 4bit_lcd.inc, retardos.inc y la cabcera del pic16f84a.inc. Compilo no me da errores y esas cosas, puesto que no se simularlo (si sabes de algún programa y me puedes explicar como va me sería de gran ayuda) paso directamente a programarlo en el pic. Abro el ic-prog, cargo mi fichero hexadecimal, borro el pic por si tenia algo, lo programo y me salta con un error en la memoria 000ah, creo q es :? .Para comprobar si esta bien o mal el programa, reseteo el pic, y le meto otro programa que se que esta bien (el programa consiste en que ilumine el display de distintas formas segun la entrada que tenga). Bueno pues ahora viene la parte más rara. Vuelvo a borrar el pic, le meto mi programa hola.hex y vuelve a darme el mismo error, entonces lo vuelvo a borrar y esta vez le meto el programa que ants me funcionaba y tachan me da error :x. No se porque hace eso, tampoco es que sea mi duda principal, puesto que lo que ya termina de enfadarme es lo siguiente. Pienso que lo he compilado mal el programa hola.asm asi que que utilizo el .hex que viene también en el cd que dan con el libro. supuestamente este debe funcionar correctamente y eso, pero tampoc hace nada, da error y el lcd no mustra nada. A lo mejor es cosa del icprog q lo tengo mal programado, no se, espero que puedan ayudarme. Perdón por tanto texto, pero espero que así tengan más datos y me den alguna solución.GRACIAS
-
Hola, tu pic es 16f84 ó 16f84a; en el mplab recordaste ir al menu Configure-Select Device y seleccionar el pic tal cual es el tuyo, en el icprog seleccionaste el pic correcto; revisaste que las librerias y el programa presente en le CD (no tengo el libro que dices y por eso no lo se) correspondan al pic que usas?????????
Recuerda que si tu Pic dice 16f84a, debe estar así en el icprog, en el MPLAB, y en el codigo del programa.
-
hola: huntergti
Yo tambien tengo el libro simule casi la mayoria de los ejemplos propuestos al finalizar cada tema no tuve muchos incovenientes. El archivo hola.HEX del CD esta bien y no tiene errores el problema esta en el icprog o en el grabador en le libro hay una parte que comenta esto mañana te lo recuerdo, cuando yo lo simule por primera vez me equivoque en el orden de los terminales del LCD porque al volteralo lo coloque en orden inverso.
el libro tiene una web:
http://www.pic16f84a.com/Proteus.htm
Alli estan todos los ejercicios propuestos por el autor.
Saludos
-
pudiera ser que se trate de la palabra de configuración como te han comentado. En el hola.asm que te da problemas, verfica que tenga el word configuration ( no es necesario activarlo desde aquí pero a la larga es mejor) y cuando cargues el hola.hex mira en el software programador (en tu caso icprog) que concuerde los bits que habias declarado.
por ejemplo: para el 16f84a
cp= off
wdte=off
/pwrte=on
selección clock externo= xt
sería 0x3FF1
-
ah se me olvida decirte que para simular la LCD, tienes el proteus o el PIC simulator IDE que son excelentes a este caso.
-
Hola. Icprog, tiene muchas configuraciones dependiendo del programador que usas. El error 0000ah, es que ni siquiera pudo inicializar la grabación, por ende, el icprog no te reconoció el programador (la placa en donde se conecta el pic) Para poder saber que configuración debes utilizar, debes preguntar al fabricante, o de donde sacaste el circuito para crearlo.
Saludos :-/ :-/
-
Hola:
Nunca vi el 0000ah deve ser algo adicional pero si el 0000h que es la verificacion que no pudo leer la primera direccion de la memoria de programa puede ser que el programador este mal pero ya pudiste programar con tu programa ilumine el display de distintas formas y comentas que te funciono por lo cual puede estar bien en http://www.ic-prog.com/index1.htm - Supported programmer types, estas los programadores recomendados con algunos circuitos de ejemplo.
Si ya programaste una ves lo del hola.hex no te deve causar problemas no parece logico el error a menos que tenga proteccion de codigo es mejor que los fusibles sean los adecuados __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
Me parece que el problema esta en el LCD puede tener poco contraste o esta mal alimentado o la conexcion del bus de datos y de control al pic no es la recomendada en tu entrenador, E-RA2, RS-RA0, D7:D4-RB7:RB4.
Te adjunto unos apuntes del error frecuente, y lo ficheros mas importantes del hola yo lo tengo en el CD como LCD_01
Espero ayudarte.
-
Ante todo muchas gracias por vuestras respuestas, me están ayudando y por lo menos sé q alguien puede echarme un cable. Luego pediros disculpas por tardar tanto en responder, pero he tenido un fin de semana ajetreado. Bueno deciros que lo de la configuración de palabra no es, puesto que cuando cargas el .hex por defecto pone las opciones que tiene el propio archivo, así que lo del cp descartado. Muy logrado lo que me has enviado fredyf, pero sigo en las mismas, Quizás deba aclararos un par de cosas que puedan ayudar. Lo primero es que yo me conecto al pic por el puerto de la impresora, eso puede afectar?? y segundo que utilizo windows xp, aunque ya tengo habilitada la opción esa que me da. En cuanto al error sigue apareciendo y ya dudo si hay q poner el icprog con windows api, invertir todas las opciones que da... Si me aconsejarais como configurar el pic con el puerto lpt1 lo agradeceria, indicándome que opciones marcar.
Comentarte fredyf que me he descargado el proteus pero que soy muy torpe y cuando simulo sigue sin aparecer nada, lo cual hace que me frustre más, aunque no sé si me has pasado el esquema eléctrico correcto, pues yo estoy utilizando el pic16f84a. Bueno dicho esto espero que podáis seguir ayudandome y que entre todos logremos que pueda hacer funcionar el lcd. Muchas gracias a todos :-)
-
Yo lo tengo con windows xp y lo programo por puerto serial.
A continuación es lo que dice el menú ayuda.
Configurar el Software
IC-Prog ha sido diseñado para funcionar con una gran variedad de programadores.
Se puede seleccionar el programador y varias opciones adicionales utilizando la opción de menú Ajustes / tipo Hardware.
Interfaz
IC-Prog puede controlar el programador utilizando acceso directo al puerto, o a través de la API de Windows (Application Programming Interface).
El uso de la opción API sólo es soportado en puertos serie. Use la API Windows bajo Windows NT.
El uso del puerto paralelo no es soportado actualmente bajo Windows NT y Windows 2000. El uso del puerto paralelo bajo Windows NT o Windows 2000 probablemente dará en error de permisos, "Permission".
Comunicación
Las siguientes señales pueden ser invertidas:
Data Out
Data In
Clock
MCLR
VCC
VPP
Prioridad del Proceso
Normal
Alta
Tiempo real
La prioridad del proceso habilita al IC-Prog para proveer mayor exactitud en la temporización de los pulsos de programación. Sin embargo, seleccionar una alta Prioridad de Proceso puede hacer que Windows funcione muy lento debido a que el CPU dedica mas tiempo de procesamiento al IC-Prog en lugar de a otros procesos.
Retardo I/O
Cuanto más rápida es la computadora utilizada mas alto debe ser el valor utilizado en el retardo I/O. Normalmente (P. Ej. en un PIII 650) un retardo I/O de 4 es suficiente.
Adjunte el archivo de ayuda completo.
Saludos :-/ :-/
-
Bueno, en primer lugar agradecer una vez más vuestras respuestas. Os comento que ya he conseguido simular con éxito el ejemplo de hola.asm, lo he conseguido con el programa pic ide simulator (antes no lo conseguía porque lo tenía mal configurado). Por desgracia sigo sin poder programar el pic y ya no se que probar, puesto que me he bajado el winpic800 y sigue dando error en la dirección 0000h :x. Verdaderamente no sé si el problema será que yo no tengo el cable para programarlo por el puerto serie y tengo que hacerlo por el puerto paralelo. Se os ocurre algo que pueda hacer?? Espero vuestras respuestas. Gracias una vez más :-/
-
pasate por: http://www.todopic.com.ar/foros/index.php?topic=1857.0
-
Hola:
Me parece es la respuesta correcta (creo que si no estas seguro de que tipo de programador usas en ajustes hardware puedes probrar algunos) gracias PalitroqueZ yo tenia dudas con el LPT1, yo tengo el JDM que es por comunicacion serial.
Sobre el proteus aqui hay un enlace sobre el tutorial seguro que te ayudara.
http://www.todopic.com.ar/foros/index.php?topic=10918.0
Te ajunto un archivo para solucionar el problema del video 11 parece que estos enlaces si estan bien.
-
Hola una vez más. Sé que soy un pesado, por no decir torpe. Os comento una vez más como me han ido mis avances con el pic (esto empieza a convertirse en un diario :P). Bueno hoy he probado lo que decía el link de Palitroquez, como no sigue sin funcionar, por lo que he marcado todo, desmarcado todo y nada de nada. Por cierto ya he quitado la casilla de verificación por lo que ya no es tan pesado (aunque se que si la pongo seguirá dando problemas de verificación). Puesto que no hay forma de que me salga, he decidido bajarme otras versiones de icprog, pero nada de nada. No sé en que fallaré así que he decidido todo lo que tengo marcado y que es lo que tengo. Empezaré por el ic prog, tengo puesto el Schaer programmer, retardo I/O 10, puerto lpt1, windows api, invert mlcr, invert vcc, en pestaña miscelánea prioridad normal, activar driver NT/XP/2000, lo demás no he tocado nada. Cuando cargo el programa por defecto se pone el pwrt y las otras sin marcar, el pic16f84a. Hasta ahi el ic prog. Lo programo en un micro pic trainer que tiene además del lcd un display y un bcd de 7segmentos. Bueno supongo que lo conocéis. Además también tengo integrado el micro pic trainer plus (pero este no lo utilizo, pues solo tiene el teclado matricial). Por supuesto para grabar levanto la pestaña que se pone sobre las patitas para enchufar el lcd, el display o el bcd. Pasemos al equipo que tengo, pentium 4 2,8 ghz, 1 giga de ram y 80 de disco duro. Si necesitáis más datos avisadme y os los doy, pero el caso es que quiero que me funcione el lcd. Por cierto, quizás deba tocar el lpt1 para que me funcione bien (es decir, meterme en el panel de control y tocar lo del puerto, puede ser??). En cuanto al proteus, el tutorial está genial pero me gustaría un ejemplo para ver como va en mplab ya que cuando simulo me da un mensaje que dice no se que de bussy. Pues esto es todo, muchas gracias por todo una vez más, espero que con más datos consigamos que me funcione. Si hace falta que me baje otro programador decidmelo, lo que sea con tal de ver por el lcd "HOLA". espero vuestras respuestas, espero que tengáis paciencia y no me dejéis como caso perdido :D
-
sigo sospechando del hardware programador, lo que puedes hacer en última opción es verificar si estan llegando los niveles de tensión correctos a los pines de grabación de datos que son mclr, vdd, datain, dataout y gnd
a mi me ocurría eso cuando usaba el epicwin y era que el cable daba falso contacto y no llegaban los voltajes requeridos.
-
Eso de verificar es hacer el test de hardware?? Si es eso ya lo he hecho, y cuando pongo que haga el vdd se me enciende la luz roja que tiene(la misma que cuando programa), en cuanto a los otros no se si lo hace bien, porque no se enchufa nada y no se si tiene que hacer algo el entrenador para que me funcione. Esta tarde intentare probarlo con el cable serie. SI se os ocurre algo más decidmelo. Gracias. Por cierto a ver si alguien me puede explicar lo del proteus ese mensaje que me da que dice no se que de bussy
-
Hola. Entiendo que vdd está conectada al led y también al pic. Aegurate que las tenciones lleguen al pic. No te guies por los led a la hora de chequear porque el problema lo podes tener despues del led.
Te fijaste en mi post anterior con la ayuda del icprog?. Acá dice que para xp solo se puede usar el puerto serie.
En el menú ajustes y luego probar hardware, se abre una ventana con las opciones de habilitar y desabilitar manualmente, las distintas tenciones que se necesita para programar el pic. Hacelo una por una.
Saludos. :-/ :-/
-
Pero no funciona el paralelo para programar el lcd o no funciona para programar el pic?? Lo digo porque el pic si me lo programa pero cuando uso el display. En cuanto a lo de probar las tensiones: como sé que cuando marco las casillas (vcc, mlcr, clock y data out) lo está haciendo bien?? tengo que tocar algo del pic para probarlo?? que necesito para medir las tensiones?? (perdonad mi torpeza :?)
-
Pero no funciona el paralelo para programar el lcd o no funciona para programar el pic?? Lo digo porque el pic si me lo programa pero cuando uso el display.
...
ahora si estoy confundido :shock:
-
Ya entiendo. El LCD no se programa, este tiene toda la programación necesaria para controlarse desde un microcontrolador. Por ejemplo con el pic. Busca en el buscador, como usar un LCD con el pic.
Saludos. :-/ :-/
-
Es cierto el LCD viene con uno o dos microcontroladores ya integrado en su placa y los 16 pines que tiene pertenecen a sus entradas, se puede decir que ya vienen programados. Este solo recibe comandos y datos deacuerdo a esto displayara el uC solo realiza un juego correcto de los datos y comandos para visualizar el caracter.
-
Entonces si es asi , me podríais proporcionar un ejemplo?? Muchas gracias una vez más por vuestras respuestas
-
Tengo librerias que debes incluir en el programa que desarrolles en el pic. Yo nunca las probé.
Espero que te sirvan. Agregue otros includes por si les sirven. No recuerdo de donde las saque, ya hace mucho tiempo que las tengo dando vueltas por mi PC.
Para incluirlas debes agregar la siguiente linea:
INCLUDE LCD_CXX.INC ;Como ejemploel LCD.
Ten encuenta que este, ya tiene designadas los pines para comunicarce al LCD, por ende tienes dos opciones, primero respetar esta conección o segundo, modificar el archivo lcd_cxx.inc, para hacerlo habre el archivo con cualquier procesador de texto, te recomiendo el notepad de windows.
http://www.todopic.com.ar/foros/index.php?topic=2942.0
Revisa este link. Tengo en una revista el manejo pasa a paso de un lcd. En cuanto lo puedo pasar a digital, lo subo. Dame un tiempito. Sigue investigando.
Te pido un gran favor, si al cabo de 5 días, no lo subí, mandame un mensage privado para hacerme recordar, ya que mi memoria es una RAM y cuando se desconecta por las noches, pues, se borra.
Saludos. :-/ :-/
-
Hola. Como lo prometido es deuda eh vuelto por aquí.
Eh termiinado de realizar un resumen del funcionamiento y manejo de un LCD. Como no eh podido pedirle permiso a la editorial de la revista que tengo, decidí crearlo yo, busqué por varios lados para hacer este resumen. Está explicado por mí, por lo que no entiendan, pregunten que no es molestia. Si encuentran algún error, haganmelo saber, que lo modificaré. Escucho sugerencias y reclamos.
Saludos. :-/ :-/
-
Leon espero que te haya llegado mi mensaje personal, si es así espero tu respuesta sino dímelo porque me urge mucho que me contestes. Gracias
-
Hola. Revisá tu e-mail.
Saludos. :-/ :-/
-
Buenas a todos. He tardado en contestar porque aparté el lcd, ya que debía seguir el proyecto, pero ahora ye me he vuelto a poner con él. Muchas gracias por tu documentación León, intentaré escribir el programa que detallas y ya te diré como ha salido y si me da fallos y no sé como continuar te lo enviaré a ver como lo ves. Por cierto si alguien puede aconsejarme un sensor de peso lo agradecería (me gustaría que la señal que devolviera fuera digital), y si además me puede facilitar documentación mejor. Una vez más muchas gracias a todos por sus respuestas
-
Buenas a todos. Leon tienes un correo que necesito que me contestes. Sigo enfrascado con el lcd y por lo menos puedo decir que he avanzado, ya que probé el programa timer0 y "funcionaba". El programa debía contar los impulsos que le llegaban por ra4. Bueno pos por fin me apareció algo en la pantalla, concretamente un 1 2, decidí aumentarlo por lo que bajé y subí la patita ra4, una vez subida se volvió loco, empezó a parpadear y mostrba signos raros. Puede ser que lo haya programado al desde el icprog?? Les pido paciencia y ahber si me pueden echar una mano que estamos cerca de conseguirlo :lol:.Alguno podría responder a mi anteiro post respecto al tema de sensor de peso?? Gracias
-
Ok. Lo recibi, dame unos días que estoy muy ocupado, por lo que vi superficialmente, me parece que el error esta en la configuración de los puertos. Lamentablemente estoy en una compu ajena y no puedo chequear nada. Lo que necesito es el diagrama del circuito. Ya que el error puede estar ahí y habrá que modificar el programa según el hardware.
Por la paciencia, vamos a tener toda la que sea necesaria, ya que alguna vez, todos estuvimos o estamos en tu cituación. El icprog, no tiene nada que ver, a menos que allas configurado mal la palabra de configuración. NOrmalmente, lo toma del programa en hex, pero si no está agregado, o está mal, está la posibilidad de hacerlo antes de programar. Fijate si la palabra de configuración, coincide con la que pusiste en el asembler.
No estaría mal que agreges el programa por aquí y el circuito para ver si otro forero encuetra primero la solución.
Saludos. :-/ :-/
-
hola a todos... miren yo programo en assembler y tengo hecha una rutina para manejo de LCD mediante 4bits... funciona muy bien y hasta ahora no tuve ningun problema...
si alguien necesita este material se los paso sin problema. saludos. 8)
-
Subilo, talvez se solucione el problema de nuestro nuevo amigo, ademá a otros les puede servir.
Saludos. :-/ :-/
-
amigo tengo varias pantallas LCD de celulares.........como puedo averiguar, como usarlas, o conseguir sus data sheet....???? gracias
-
Mira el código alfanumérico que tienen impreso en sus chips, o en su placa de circuito impreso, lo pones en google....y que tengas suerte :mrgreen:
Suerte!!! ;)
-
no me resulto amigo....................fue lo primero que ise
-
Bueno por fin he sacado un rato y siguiendo el consejo de León aquí publico mi código. Espero que puedan ayudarme. El problema es que cuando lo programo en el pic trainer con el icprog lo único que me aparece en la pantalla del lcd estando las patitas rao-ra2 a 1 es lo siguiente: "-". Espero que me ayuden a resolverlo y que de una vez por todas me salga aunque sea un simple hola. Muchas gracias, espero sus respuestas
; ZONA DE DATOS *********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; frec. = 4000 KHz.
LIST P=16F84A
INCLUDE <P16F84A.INC>
; ZONA DE CÓDIGO ********************************************************************
ORG 0
goto Inicio ; Programa principal
;configuracion de entrada/salida
ORG 5 ;Donde se situa el comienzo del programa principal.
Inicio
call UP_LCD ;CONFIGURA PORTA Y PORTB
call LCD_INI ;INICIA LCD CON 8 BITS DE BUS DE DATOS,2 LÍNEAS DE VISUALIZACIÓN Y CARACTERES DE 5X7 PUNTOS
call LCD_REG
movlw 0x0E ;DISPLAY VISBLE, CURSOR FORMA DE GUIÓN
call LCD_REG
call 0x07 ;DESPLAZAMIENTO DEL CURSOR
call LCD_REG
bsf PORTA,0 ;RS ACTIVADO PUESTO QUE ENVIAMOS CARACTERES
movlw 0x4C ;CARÁCTER L
call LCD_DATO
movlw 0x45 ;CARÁCTER E
call LCD_DATO
movlw 0x4F ;CARÁCTER O
call LCD_DATO
movlw 0x4E ;CARÁCTER N
call LCD_DATO
movlw 0x20 ;CARÁCTER ESPACIO
call LCD_DATO
bcf PORTA,0 ;APAGAMOS RS PUESTO QUE ENVIAREMOS UN COMANDO
movlw 0x80 ;PARA ENVIAR AL CURSOR A LA PRIMERA LINEA
call LCD_REG
Loop sleep ;Puesta en Standby
goto Loop ;Vuelta a standby
INCLUDE <LCD_CXX.INC>
END
-
Hola amigo:
Dento de la libreria LCD_Cxx.INC está incluida la configuracion de los puertos?
Pues si nol lo esta tendrás que iniciarlos antes del primer call UP_LCD dentro de la rutina Inicio.
Fermin
-
Hola de nuevo amigo:
La rutina LCD_Cxx.INC si es la que viene de la empresa de Microsystem, si incluye la configuracion de los puertos.
Pero me parece que habia que enviarle 3 veces la rutina call LCD_INI para que se configure el LCD del Trainer.
Fermin
-
Hoy no estoy fino :x
Perdon de nuevo, la libreria LCD_INI ya aincluye el envio de las 3 veces el comando para configurar el LCD. Se trata de la instruccion call LCD_REG.
Voy a seguir mirando a ver porque no te funciona.
Fermin
-
Te adjunto una rutina para sacar la palabra Hola por el LCD, espero que te sirva. Rendras que comprobar que las lineas de datos y las lineas de comando del LCD del puerto A son las correctas.
Me parece que si estas trabajando con el Trainer te debe de funcionar.
Saludos
bcf STATUS,RP0 ;Selecciona banco 0
call LCD_INI ;Secuencia de inicio del LCD
movlw b'00001111'
call LCD_REG ;Envía instrucción: LCD ON, Cursor ON y blink ON
movlw 'H'
call LCD_DATO ;Visualiza H
movlw 'o'
call LCD_DATO ;Visualiza o
movlw 'l'
call LCD_DATO ;Visualiza l
movlw 'a'
call LCD_DATO ;Visualiza a
movlw ' '
call LCD_DATO ;Visualiza blanco
Loop sleep ;Puesta en Standby
goto Loop ;Vuelta a standby
-
Bueno por fin he sacado un rato y siguiendo el consejo de León aquí publico mi código. Espero que puedan ayudarme. El problema es que cuando lo programo en el pic trainer con el icprog lo único que me aparece en la pantalla del lcd estando las patitas rao-ra2 a 1 es lo siguiente: "-". Espero que me ayuden a resolverlo y que de una vez por todas me salga aunque sea un simple hola. Muchas gracias, espero sus respuestas
; ZONA DE DATOS *********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; frec. = 4000 KHz.
LIST P=16F84A
INCLUDE <P16F84A.INC>
; ZONA DE CÓDIGO ********************************************************************
ORG 0
goto Inicio ; Programa principal
;configuracion de entrada/salida
ORG 5 ;Donde se situa el comienzo del programa principal.
Inicio
call UP_LCD ;CONFIGURA PORTA Y PORTB
call LCD_INI ;INICIA LCD CON 8 BITS DE BUS DE DATOS,2 LÍNEAS DE VISUALIZACIÓN Y CARACTERES DE 5X7 PUNTOS
call LCD_REG
movlw 0x0E ;DISPLAY VISBLE, CURSOR FORMA DE GUIÓN
call LCD_REG
call 0x07 ;DESPLAZAMIENTO DEL CURSOR
call LCD_REG
bsf PORTA,0 ;RS ACTIVADO PUESTO QUE ENVIAMOS CARACTERES
movlw 0x4C ;CARÁCTER L
call LCD_DATO
movlw 0x45 ;CARÁCTER E
call LCD_DATO
movlw 0x4F ;CARÁCTER O
call LCD_DATO
movlw 0x4E ;CARÁCTER N
call LCD_DATO
movlw 0x20 ;CARÁCTER ESPACIO
call LCD_DATO
bcf PORTA,0 ;APAGAMOS RS PUESTO QUE ENVIAREMOS UN COMANDO
movlw 0x80 ;PARA ENVIAR AL CURSOR A LA PRIMERA LINEA
call LCD_REG
Loop sleep ;Puesta en Standby
goto Loop ;Vuelta a standby
INCLUDE <LCD_CXX.INC>
END
call 0x07 ;DESPLAZAMIENTO DEL CURSOR
Esta instruccion no será la que te está dando problemas
Fermin
-
Pues parece ser el problema.
Muy bien Fer_TACA.
Saludos. :-/ :-/
-
De nada pa eso estamos para ayudarnos unos a otros :mrgreen:
Fermin
-
Aprovenchando que esta este hilo, tengo duas con respecto al LCD, seguro ustedes conoceran el libro de Enrique Palacios, el de microcontroladores. Mi duda es la siguiente, cuando estoy trabajando a 4 bits es necesario conectar los pines DB0-DB3 del LCD a tierra por que no pienso utilizarlos o los puedo dejar al aire, gracias por atenderme :mrgreen:
-
Hola Poseidon!
Al principio los dejaba al aire, y nunca tube problemas. Mas tarde, lei que era conveniente ponerlos a GND, y lo hago asi desde hace algunos meses. Por lo visto es algo que no esta de mas y es facil de implementar, asi que yo diria que no es mala idea poner D0...D3 a GND.
Saludos!
-
Y te acuerdas por que era conveniente ponerlos a tierra, crees que en algun momento de trabajo, el LCD muestre basura al dejar al aire los pines DB0-DB4. Los mando directamente a tierra o las mando a tierra con unas resistencias?
-
Teoricamente, si el LCD se inicializa en modo de 4 bits de datos, deberia ignorar cualquier cosa que pase en sus pines D0..D3. Pero estando al "aire", quizas sea posible que alguna descarga pueda dañar al LCD. Estando a GND eso no pasaria. Yo los pongo directo, sin R.
Saludos!
-
Buenas otra vez foreros. Muchas gracias a Fer_TACA por coregir ese error de código. Por desgracia no ha sido ese fallo lo que me impide ver por el lcd :( Aqui tenéis el nuevo código corregido, espero que esta vez esté bien. Por lo menos este código si lo muestra por el lcd el programa pic simulator ide, por eso mismo no entiendo por que no lo muestra el lcd de pic trainer.
; ZONA DE DATOS *********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; frec. = 4000 KHz.
LIST P=16F84A
INCLUDE <P16F84A.INC>
; ZONA DE CÓDIGO ********************************************************************
ORG 0
goto Inicio ; Programa principal
;configuracion de entrada/salida
ORG 5 ;Donde se situa el comienzo del programa principal.
Inicio
call UP_LCD ;CONFIGURA PORTA Y PORTB
call LCD_INI ;INICIA LCD CON 8 BITS DE BUS DE DATOS,2 LÍNEAS DE VISUALIZACIÓN Y CARACTERES DE 5X7 PUNTOS
movlw b'00001111'
call LCD_REG
movlw 0x0E ;DISPLAY VISBLE, CURSOR FORMA DE GUIÓN
call LCD_REG
movlw 0x07
call LCD_REG
bsf PORTA,0 ;RS ACTIVADO PUESTO QUE ENVIAMOS CARACTERES
movlw 0x4C ;CARÁCTER L
call LCD_DATO
movlw 0x45 ;CARÁCTER E
call LCD_DATO
movlw 0x4F ;CARÁCTER O
call LCD_DATO
movlw 0x4E ;CARÁCTER N
call LCD_DATO
movlw 0x20 ;CARÁCTER ESPACIO
call LCD_DATO
bcf PORTA,0 ;APAGAMOS RS PUESTO QUE ENVIAREMOS UN COMANDO
movlw 0x80 ;PARA ENVIAR AL CURSOR A LA PRIMERA LINEA
call LCD_REG
Loop sleep ;Puesta en Standby
goto Loop ;Vuelta a standby
INCLUDE <LCD_CXX.INC>
END
P.D: Yo creo que el problema viene a la hora de grabar con el icprog. Probad a programar mi código en vuestro pic trainer y si os funciona os pedíria que me enviaseis una especie de tutorial o documento detallándome cada paso y diciendome que casillas debo marcar en las opciones (teniendo en cuenta que hay varias pestañas). Una vez más muchas gracias. Creo que estamos cerca de conseguirlo, ánimo. Por cierto para que sirve la opción leer todo del icprog?? es que cuando le doy después de programar el código me aparece en el lcd símbolos raros y en el icprog se cambia el código de mi programa por otro :?
-
Hola. Lamentablemente no he podido estar con tu tema, ya que mi hija cumplio un añito y estaba en preparativos. Ahora tengo tiempo y me fijo. ¿Me podrías pasar un esquema de conecciones que tiene el pic con el lcd?
¿Me pasas el pic simulator ide? Subilo al foro.
El icprog, las pestañas inferiores que dicen buffer, son para cargar varios programas, por ejemplo: en el primero cargo el programa a grabar, lo programo y luego selecciono el buffer 2 y leo el pic, si hago alguna modificación, lo hago en el buffer 2. o puedes cargar varios programas e ir cargandolos.
Recuerda ferificar antes de grabar, los fusibles (WTD, RC, XT, etc). Recuerda que solo debes programar el pic.
Saludos. :-/ :-/
-
Hola huntergti, como no has chequeado el foro, o no me respondiste, te he mandado un e-mail.
Saludos. :-/ :-/
-
Que tal a todos, de vuelta por el foro para saber si me pueden ayudar con una duda que tengo.
El problemita es el siguiente: Estoy tratando de usar un LCD 2x16 con controlador HD44780A00(es el clasico), lo que pasa es que cuando coloco el pic (16f628A) y lo trabajo el LCD a 4bits solo aparece la primera linea y la segunda no aparece. Luego doy un reset y nuevamente sigue apareciendo la primera linea, luego de resetear el pic como 5 veces recien puede visulizarse el mensaje en las dos lineas. Saben a que se pueda deber esto, Seran los tiempós, es algo qeu me deja desconcertado. Cualquier ayuda sera bien recibida
P.D: Estoy utilizando las subrutinas del libro de "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de Enrique Palacios, claro que la adapte para el 16f628.
-
El display lcd necesita ser configurado en el arranque para saber como trabajara, que use una o las dos lineas es una de las instrucciones que se le dan...
Una vez que lo configures conviene que envies una instruccion de borrar pantalla (en realidad borra los valores espureos de la memoria del controlador interno), lo dejes reposar unos milisegundos y por fin alli podras empezar a utilizarlo...
Si pasas de un PIC a otro siempre ten en cuenta leer el datasheet de ambos a ver que diferencias o modulos tienen en sus pines, el codigo siempre es portable en los PICs, pero su hardware necesita a veces desactivarse para efectuar la misma funcion que en el anterior... :mrgreen: :mrgreen:
-
Que tal a todos, de vuelta por el foro para saber si me pueden ayudar con una duda que tengo.
El problemita es el siguiente: Estoy tratando de usar un LCD 2x16 con controlador HD44780A00(es el clasico), lo que pasa es que cuando coloco el pic (16f628A) y lo trabajo el LCD a 4bits solo aparece la primera linea y la segunda no aparece. Luego doy un reset y nuevamente sigue apareciendo la primera linea, luego de resetear el pic como 5 veces recien puede visulizarse el mensaje en las dos lineas. Saben a que se pueda deber esto, Seran los tiempós, es algo qeu me deja desconcertado. Cualquier ayuda sera bien recibida
P.D: Estoy utilizando las subrutinas del libro de "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de Enrique Palacios, claro que la adapte para el 16f628.
Hola poseidon20. Por lo que decis, no es problema de que funcione con los 4 bit de mas pesos, ya que si estarían mal, no podrías ver la primera línea. Tu problema deben ser 3:
1- Como te lo describe MGLSOFT
2- Ruido en el circuito.
3- Mal configuración a la hora de pasar a la segunda línea o no respetas los tiempos mínimos de espera para pasar un comando o carácter.
Saludos. :-/ :-/
-
Hola. En el post que tenía un artículo sobre los LCD llamado Los LCD inteligentes, había un error el cual era que para bajar a la segunda línea, el comando era 0x0C, y en realidad es 0xC0.
Sugiero que todos aquellos que bajaron mí artículo, descarguen este nuevo con el error corregido.
Saludos. :-/ :-/
-
te suguiero que bajes el programador winpic800 ya que yo tuve muchos problemas con el ic prog y acabe desechandolo
a continuacion te dejo un programa ya elaborado para que lo pruebes solo que esta configurado para pic 16f873 espero
te sirva