Autor Tema: LCD con 16F877A no me funciona  (Leído 15506 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
LCD con 16F877A no me funciona
« en: 15 de Febrero de 2016, 10:58:02 »
Buen dia amigos, tengo un proyecto en el cual quiero hacer funcionar un LCD 16x2 en un pic 16F877A, en los puertos A y C hay conectada salidas (relay,led,etc)
Pero lo que quiero saber es donde tengo el problema de no poder leer el letrero en el LCD .

* prueba lcd 877.asm
(10.87 kB - descargado 232 veces)
* prueba lcd 877.asm
(10.87 kB - descargado 232 veces)


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD con 16F877A no me funciona
« Respuesta #1 en: 15 de Febrero de 2016, 13:13:44 »
Código: [Seleccionar]
CARRY    equ     1
C EQU 0
Z        equ     2

Por que ? si el .inc ya lo posee y haces STATUS, C o STATUS , Z

Código: ASM
  1. BANK0      MACRO
  2.       BCF   STATUS,RP0
  3.       BCF   STATUS,RP1
  4.       ENDM

Otro mas... tenes BANKSEL, ejemplo queres moverte el banco donde esta el PORTA. haces : BANKSEL PORTA , solo el compilador luego te genera esas instrucciones sea el micro que sea. Por si no lo sabias y recurriste a una macro para eso.


Respecto al LCD para mi que tenes mal la rutina de inicializacion. ( Luego descubri otras cosas mas abajo )
un HD44780 es distinto (si es que tenes eso).. mira como es la inicializacion:

https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
(Pagina 44)

Delay 15ms para 5V, 40ms para 3.3V
Enviar Function Set
Delay 4.1ms
Enviar Function Set
Delay 100us
Enviar Function Set
Enviar Function Set ( Este es el valido!, el cual toma el valor el LCD)
Display Off/On
Display Clear
Entry Mode

------------------------------------------------------------------------------------

Finalmente tenes un problema que la rutina "principal" (MENU), no posee un loop infinito. Lo que sucederia es que llamas a LCD_INIT, vuelve con return y ejecuta la demora de 1ms, y vuelve a ejecutar el return. Pero esta ves ya no hay guardado nada en el STACK. Asi que ojo con eso.
Ponele un GOTO $-1 despues del CALL INI_LCD

Sigo descubriendo mas errores:

Código: [Seleccionar]
      BCF      PORTE,E
E      EQU     22
Lo que se transforma en:

Código: [Seleccionar]
      BCF      PORTE,22 ????
« Última modificación: 15 de Febrero de 2016, 13:20:37 por KILLERJC »

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #2 en: 15 de Febrero de 2016, 15:07:35 »
si hay varias cosas que estan demas y no sirven a este proyecto porque lo copie y pegue de otro proyecto que fue en un curso hace varios años.
ahora me puse denuevo a hacer algo con pics y estoy un poco olvidado y desorientado jaajaj
voy a probar algunas cosas que me has aclarado y te vuelvo a consultar o informar si anda .
gracias !!!!
si quisieras seguir ayudandome por skype te de lo dejo : rubendariofigueredo y mi mail: rudafi@yahoo.com.ar

muchas gracias denuevo !!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD con 16F877A no me funciona
« Respuesta #3 en: 15 de Febrero de 2016, 15:23:52 »
No poseo skype, y respecto a seguirlo en otro lado, prefiero seguir en el foro. Asi de esa ta forma si existe un problema, las demas personas pueden verlo y encontrar soluciones a sus problemas tambien.

En resumen, te ayudo. Por aca .

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #4 en: 15 de Febrero de 2016, 15:31:46 »
si si esta perfecto, yo empece de cero denuevo, pero incluyendo los inc , pero no se despues de la inicializacion como debo seguir , envio denuevo reformado y los inc.
gracias


Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #5 en: 15 de Febrero de 2016, 15:39:34 »
cargue mal los archivos creo , perdon

* prueba lcd 877.asm
(5.55 kB - descargado 230 veces)
* prueba lcd 877.asm
(5.55 kB - descargado 230 veces)
* prueba lcd 877.asm
(5.55 kB - descargado 230 veces)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD con 16F877A no me funciona
« Respuesta #6 en: 15 de Febrero de 2016, 15:45:18 »
Solo decirte que esa libreria que tenes ( LCD_4bits ) es justamente una libreria para controlar al LCD con 4 bits y no 8 como tenias realizado. Y unicamente funciona a 4Mhz, si quisieras mas frecuencia deberias modificarlo ( especialmente cuando cambia el pin E ). Tenes que ademas definir el CBLOCK a un valor, ya que asi como esta inicia en 0x00

Tenes que tambien agregar o crear las librerias de retardo que no posee.

Terminado de modificar todo lo de arriba, que seguro ademas te va a llevar a modificar la parte de hardware en tu funcion principal:

Código: ASM
  1. MENU    
  2.  
  3.                 CALL            LCD_Inicializa

Cambialo por:

Código: ASM
  1. MENU    
  2.                 CALL    LCD_Inicializa 
  3.                                
  4.                 MOVLW   'A'
  5.                 CALL    LCD_Caracter
  6.                 MOVLW   'B'
  7.                 CALL    LCD_Caracter
  8.  
  9.                 GOTO    $-1

Es decir, una ves que tengas todo listo procedes en tu programa principal llamar a LCD_Inicializa, y luego para mandar una letra simplemente pones la letra en W y llamas a LCD_Caracter.
El GOTO al final hace que el micro se quede ahi para siempre, y solo verias "AB" en el LCD.

---------------------

Respecto a cargar los archivos, los tenes que cargar una sola ves, si te fijas estas cargandolo 3 veces en cada post

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #7 en: 15 de Febrero de 2016, 15:56:36 »
ah si si lo entiendo mejor ahora, los pines estan bien creo y estoy usando 4bits asi que eso tambien estaria bien
 ahora subo el diagrama denuevo y los retardos.inc

gracias

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #8 en: 16 de Febrero de 2016, 18:42:33 »
bueno ahi revisando una y otra vez pude ver algo en el lcd , pero no lo que quiero jajajaja se ven todos ceros
subo a ver si me ayudan.
Gracias
* prueba lcd 877.asm
(10.67 kB - descargado 225 veces)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD con 16F877A no me funciona
« Respuesta #9 en: 17 de Febrero de 2016, 20:26:55 »
VOLTIO, al final yo ya me perdi,

Estas usando la libreria ? o estas usando tus propias funciones?
Estas realmente a 4 bits ?, Usas el pin R/W o simplmente lo tenes siempre en escritura y solo esperas un tiempo ?

Todo eso queda en el aire, por que estas pasando varios archivos y luego pasas uno que no usa nada de eso.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re:LCD con 16F877A no me funciona
« Respuesta #10 en: 17 de Febrero de 2016, 21:48:03 »
en el foro abundan bastantes ejemplos de rutinas para manejar pantallas alfanumericas de 2x16 en modo 4 bits en asm.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #11 en: 18 de Febrero de 2016, 09:46:59 »
Buen dia , antes que nada muchas gracias por responder y tratar de ayudarme . El ultimo ejemplo que subi (el asm) es el que al final estoy usando y que en el visor me entrega todos ceros pero no puedo leer el mensaje y solo lo hace en una sola linea.Yo estimo que el problema puede estar en la rutina FUNC que es la que configura el lcd .
Gracias de nuevo
abrazo

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #12 en: 18 de Febrero de 2016, 10:17:07 »
algo que no mencione es que todo lo estoy haciendo con Proteus o sea no en real, el display que voy a usar es este:

http://www.aliexpress.com/store/product/LCM1602A-16x2-STN-blue-Compatibel-with-HD44780-1602-WH1602B-PC1602-D-LMB162A/1037651_1498652107.html

no se si sirve de algo pero lo queria comentar , disculpen.
gracias

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re:LCD con 16F877A no me funciona
« Respuesta #13 en: 22 de Febrero de 2016, 12:02:44 »
hola amigos disculpen alguno me puede ayudar ?? llegue hasta aca y no puedo hacerlo funcionar

gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LCD con 16F877A no me funciona
« Respuesta #14 en: 22 de Febrero de 2016, 12:45:43 »
Disculpa VOLTIO, no eh tenido tiempo de revisarlo, pero pienso que te convendria mas usar la libreria LCD_4bits/delay que pasaste que tiene una mejor rutina de inicializacion que tu programa. Ya te dije que la rutina estaba mal pero no la arreglaste, por ahora solo puede decir eso nomas. Aunque ya te di algunos pasos de como hacerlo con esa libreria.