Autor Tema: LCD en un PIC 16F877A  (Leído 32003 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
LCD en un PIC 16F877A
« en: 15 de Abril de 2010, 15:39:41 »
LCD con PIC 16F877A Hola a todos. Recien me inicio con esto de los PIC, lamentablemente a la fuerza, y con poco tiempo pot r temas laborales. PEro debo hacer algo para la presentar en un y necesito si alguien podria pasarme informacion de como conectar un LCD al 16F877A con alguna programa para correr con el MPLAB y bajar al PIC para hacer funcionar el LCD. COn eso ganaria mucho tiempo, ya que luego tengo mucho soft por desarrollar pues debo hacer mostrar diferentes menues en el LCD que estaran en esperando el ingreso por un teclado. Desde ya muchas gracias Si alguien tiene como debo conectarlo pin a pin, y alguna rutina que muester algo con las librerias necesarias r e en el LCD se lo agradecere. De esa manera podria chequear todo el hardware y comenzar a modificar el software.
El display que tengo es este:
http://www.winstar.com.tw/products_detail_ov.php?lang=es&ProID=23

Pero si es necesario cambiarlo por otro no tengo problemas.

Gracias

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: LCD en un PIC 16F877A
« Respuesta #1 en: 15 de Abril de 2010, 15:44:13 »
Bienvenido al foro.

En primer lugar deberias de indicar que tipo de lenguaje de programacion vas a utilizar.
¿El bus de datos para el LCD que sera de 4 bits o de 8 bits?
Deberias ser un poco mas descriptivo con los recursos que quieres utilizar ya que si vas a tener que usar y/o utilizar mas cosas por ampliacion de software debes de tener todo en cuenta.

Has utilizado el buscador del foro?

Una opcion seria conectar el puerto B a la linea de datos.

F.
Todos los días se aprende algo nuevo.

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
Re: LCD en un PIC 16F877A
« Respuesta #2 en: 15 de Abril de 2010, 16:00:12 »
Gracias Fer_TACA por tu respuesta.
Para serte sincero no tengo mucha idea. Solo usare un teclado de numerico se que vienen de 0 al 9 y alguna tecla mas. Creo que son de 16 teclas.
Ademas de eso podre usar algunas lineas mas de datos pero no sera mucho mas de 8 o 10.
Si tenes algo de info, del metodo mas sencillo, menos complicado y mas facil de entender como para poder arrancar el display, de esa manera sabre que mi programador funciona bien, que el hardware del display va bien y que al menos la cosa va quieriendo.
Despues veria en el camino como voy avanzando.
Estimo que si el bus de datos del display es de 8 bits el software sera algo mas sencillo.
Espero no te molester aconsejarme.

Gracias

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
Re: LCD en un PIC 16F877A
« Respuesta #3 en: 15 de Abril de 2010, 16:01:02 »
Ahh olvide, programare en lenguaje ensamblador usando las instrucciones del PIC con el MPLAB.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: LCD en un PIC 16F877A
« Respuesta #4 en: 15 de Abril de 2010, 16:06:45 »
Una configuracion de conexion entre pic y LCD podria ser el adjunto.
Voy a ver si en el subfore de Asm hay algo que te pueda servir

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: LCD en un PIC 16F877A
« Respuesta #5 en: 15 de Abril de 2010, 16:12:22 »
Hola de nuevo:

Mira aqui:

http://www.todopic.com.ar/foros/index.php?topic=12918.0

Hay ejemplos que aunqe son para el 16F876 te pueden servir para ir empezando.
Echale un vistazo al foro de "Almacen de Asembler" que eguro que vas a encontrar bastante info para empezar en lo que vas a necesitar.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: LCD en un PIC 16F877A
« Respuesta #6 en: 15 de Abril de 2010, 16:48:32 »
Bueno encontre algunas rutinitas para el control del LCD, creo que te serviran para empezar.

F.
Todos los días se aprende algo nuevo.

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
Re: LCD en un PIC 16F877A
« Respuesta #7 en: 15 de Abril de 2010, 16:56:59 »
Gracias por la informacion.

Vere si con esto puedo ir arrancando.

Gracias

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: LCD en un PIC 16F877A
« Respuesta #8 en: 15 de Abril de 2010, 16:58:33 »
 :mrgreen: ;-)
Todos los días se aprende algo nuevo.

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: LCD en un PIC 16F877A
« Respuesta #9 en: 15 de Abril de 2010, 22:56:02 »
.


Ese mismo display fue en el cual probé las rutinas que adjunto en este mensaje (una es para usar el LCD en modo 8 bits y la otra para 4). Están en ASM y de seguro funcionan. Por cualquier cosa que no se entienda, no tema en preguntar  :smiley:
Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
Re: LCD en un PIC 16F877A
« Respuesta #10 en: 16 de Abril de 2010, 12:51:56 »
Gracias mtristan.
Vere con todo esto a hasta donde puedo llegar. Soy MUY novato en esto y necesito lamentablemente resolver esto y con poco tiempo disponible.
Gracias pro la data.
Por casualidad diagramas del hardware (conexionado) tenes algo?
Si no creo que con la info que esta en lo que enviaste me puedo arreglar sumoado a lo enviado por Fer_TACA.
Debo lograr algo con todo eso.

Seguramente cuando pueda meter mano me encontarre con algun problema y estare molestando con preguntas.

Mil Gracias

Desconectado daniloarg007

  • PIC10
  • *
  • Mensajes: 11
Re: LCD en un PIC 16F877A
« Respuesta #11 en: 22 de Abril de 2010, 11:48:50 »
Comence con unas pruebas sencillas para probar mi hardware y mi programador.
Hice un programita que simplemente encienda un led y lo apague (parpadeo constante) en el pin 0 del puerto A.
El led enciende y apaga.
La consulta es por que con el MPLAB que es con lo que hice todo al simular con MPLAB SIM en el menu Debugger, y poner View - Special Functions Registers. Ahi no veo en ningun momento que cambie de 0 a 1 la pata 0 del PortA.
Alguien sabe por que no lo puedo ver alli. Que hago mal? Seguramente algo de lo mucho que no entiendo y estoy aprendiendo del MPLAB.

Gracias

PD: Por las dudas copio el programa que estoy utilizando.

__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF ; Configuración para el programador


LIST p=16F877A
INCLUDE <P16F877A.INC>

ORG 0x00          ;Inicio de programa

N EQU 0x00
cont1 EQU 0x20
cont2 EQU 0x21

BCF STATUS,RP0       ;Accede a banco 0
BCF STATUS,RP1
CLRF PORTA       ;Limpia PORTA
BSF STATUS,RP0       ;Accede a banco 1
CLRF TRISA       ;Configura todos las patitas de PORTA como salidas
BCF STATUS,RP0       ;Regresa a banco 0

Encled
BSF PORTA,0       ;La línea RA0 de PORTA toma el valor de 1, se enciende el LED
CALL Retardo       ;Llamada a la rutina de retardo
BCF PORTA,0       ;La línea RA0 de PORTA toma el valor de 0, se apaga el LED
CALL Retardo       ;Llamada a la rutina de retardo
GOTO Encled       ;Va a la etiqueta Encled

Retardo          ;Rutina de retardo
MOVLW N
MOVWF cont1
Rep1
MOVLW N
MOVWF cont2
Rep2
DECFSZ cont2,1
GOTO Rep2
DECFSZ cont1,1
GOTO Rep1
RETURN          ;Retorno a la llamada de rutina de retardo.

END          ;Fin de programa

Desconectado andyta

  • PIC10
  • *
  • Mensajes: 28
Re: LCD en un PIC 16F877A
« Respuesta #12 en: 22 de Abril de 2010, 12:27:38 »
cumu es daniloarg007!

No te preocupes, no es problema del MPLAB, lo que pasa es que el pic 16f877a por defecto tiene configurado el puerto A como salidas /entradas analogicas, si movieras tu programa a otro puerto funcionaria normal sin ningun error, o tambien puedes configurarlo como salidas /entradas digitales de la siguiente forma:
; te ubicas en el BANCO_1
   BCF   ADCON1,0
   BSF   ADCON1,1
   BSF   ADCON1,2
   BCF   ADCON1,3
Te recomiendo que leas el datasheet la parte del conversor analogico digital, para entrar mas en detalle.
Si buscas en foro puedes encontrar ejemplitos en asm, te van a ayudar bastante.
Me parece bien que empieces desde lo basico para despues intentar hacer funcionar el LCD.

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: LCD en un PIC 16F877A
« Respuesta #13 en: 22 de Abril de 2010, 19:12:10 »
.

Hola de nuevo. Me disculpo por la demora. Se me pasó por alto el esquema de conexión del LCD:



Uploaded with ImageShack.us

El potenciómetro está para regular el contraste del LCD. Si no ves nada en la pantalla al energizarlo, ajusta el potenciómetro.
Los pines 15 y 16 sirven para energizar la luz de fondo del LCD (backlight), que no es más que una especie de LED. No es necesario conectar estos pines si no se quiere la luz de fondo. En caso de requerirla, simplemente conectá el 16 a GND y el 15 a VDD a través de una resistencia de 10ohms (podés aumentar este valor si querés que brille menos).

De los dos archivos que subí el que se corresponde con esta conexión es LCD8BITS.INC. Como recién estás empezando, quizá tengas dudas sobre cómo usar el archivo, así que cuando tengas algo más de experiencia y quieras hacer andar el LCD, no dudes en preguntar por acá.
Saludos.





When you see a good move, look for a better one (Emanuel Lasker)

Desconectado 1Rivan

  • PIC10
  • *
  • Mensajes: 1
Re: LCD en un PIC 16F877A
« Respuesta #14 en: 04 de Junio de 2010, 23:36:08 »
por casualidad de casualidades, yo tambien soy nuevo en este foro,  pero tengo aproximadamente un año de  programar en pic , y el ultimo programa que realice tiene una subrutina que controla una lcd de  16 columnas y 2 filas, por medio de  un bus de datos  de 4 pines, y al realizarlo    por recomendacion de un amigo busque la hoja tecnica del controlador del modulo, en el cual se haya la informacion nescesaria para usar la lcd, la secuencias de inicializacion y diversos comandos de control del texto. Asi que te recomiendo que la descarges, ademas cuando programes un pic, primero conocelo, dale una leida a la hoja tecnica del pic (lo mas actualizada posible) porqu hai encontras ejemplos para poder configurar tu pic,  el primer   programa q hice para un pic lo hice en microcode de mecanique, el cual posee instrucciones sencillas para controlr d la lcd, pero ultimamante me he dedicado a estudiar las tecnicas de programcion del asm del mplab. pero puesdes encontrar mas informacion en la web. 
1Ri√an