Autor Tema: Hacer libreria para lcd en xc8  (Leído 174 veces)

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

Desconectado Jorge Dion Gonzalez

  • PIC10
  • *
  • Mensajes: 1
Hacer libreria para lcd en xc8
« en: 16 de Julio de 2020, 22:55:07 »
Hola buenas, la verdad esta es la primera vez que busco ayuda en este foro asi que iré al grano, en lo personal no me gusta usar librerias que ya estan hechas ya que considero que te inutilizan, es decir, te hacen depender de ellas y va haber ocasiones en que tengas q controlar algo y no va a haber librerias para ello (claro no lo digo con el afan de ofender a alguien, si a ti te gusta usar librerias no hay problema, eso ya es de cada quien) Antes de decirle mi conlicto quiero ponerlos en contexto, yo uso el pic18f4550 y el compilador xc8 para programar, yo ya habia hecho una libreria para la lcd que funciona muy bien y diran ¿porque pides ayuda si ya tienes una libreria q funciona? pues es simple, como todos sabran un puerto tiene 8 pines, y cuando usas un lcd en modo 4 bits pues usas 6 pines pues yo quiero usar los otros dos pines restantes como salidas sin embargo dicha libreria me genera un problema y dicho problema es que cada que se envia un comando tienes que estar limpiando el puerto constantemente y si quiero usar los otros dos pines restantes para encender 2 led por ejemplo pues los leds parecen que estan intermitentes ademas de que no encienden casi nada, ya trate de mil formas resolver ese problema y no he podido asi que llegue a la conclusión de que tendre que manejar el lcd pin por pin y no por el puerto ya que cuando lo manejo con todo el puerto pues todo el puerto se modifica (espero explicarme en esa parte) pero no se como mandar cada dato bit por bit por ejemplo si quiero mandar el comando 0x80 pues tengo que mandar en nible alto y despues el bajo pero como podria hacerle para que dicho valor se refleje en puerto bit, por bit? espero que se me haya entendido y espero sus respuestas

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7856
Re:Hacer libreria para lcd en xc8
« Respuesta #1 en: 16 de Julio de 2020, 23:07:09 »
Citar
a trate de mil formas resolver ese problema y no he podido asi que llegue a la conclusión de que tendre que manejar el lcd pin por pin y no por el puerto ya que cuando lo manejo con todo el puerto pues todo el puerto se modifica (espero explicarme en esa parte) pero no se como mandar cada dato bit por bit por ejemplo si quiero mandar el comando 0x80 pues tengo que mandar en nible alto y despues el bajo pero como podria hacerle para que dicho valor se refleje en puerto bit, por bit? espero que se me haya entendido y espero sus respuestas

Pone las funciones que manejan los puertos, que deberian ser aproximadamente 1. De alli decinos que pines deseas usar como salidas, yo te cambio las salidas para que no tengas problemas.
Generalmente requiere algunas OR y ANDs.

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 190
Re:Hacer libreria para lcd en xc8
« Respuesta #2 en: 17 de Julio de 2020, 02:45:53 »
hola, es como estás diciendo, tenés que tener completo control del/los pin/es involucrados, eso se logra manipulando los bits uno a uno de los bytes asociados a cada puerto en particular. Estas operaciones de encender o apagar un bit, sin alterar los demás lo podés aprender viendo el siguiente enlace, creo que el xc8 facilita las cosas con aquello de byte.1=0, ó 1 empleando esa notación, tambien lo explica en el enlace que dejo.

https://www.avrfreaks.net/forum/tut-c-bit-manipulation-aka-programming-101?page=all

Conozco una librería muy útil, al momento de comprender como funciona el control de un lcd, siendo que los pines que lo controlan no pertenecen al mismo puerto, mirala y estudia el caso y la adoptas, o tomás ideas de allí, el primer enlace lo hace con delays, el segundo es a todas las librerias propuestas....
Aunque éstas url, sean para AVR, es un C muy ansi, asi que perfectamente aplicable al xc8, 100% didactico.

http://web.alfredstate.edu/faculty/weimandn/programming/lcd/ATmega328/LCD_code_gcc_4d.html

http://web.alfredstate.edu/faculty/weimandn/programming/lcd/ATmega328/LCD_code_index.html