Manejar teclado matricial y mostrar en lcd

Gracias..!! Saint_ eres magnifico respondiste de inmediato te lo agradesco ya puedo continuar con el codigo, la verdad me estaba ahogando con ese vaso de agua
 
Saludos amigos.

Estoy haciendo un proyecto con el PIC18F2520, el cual tiene 3 puertos, (A,B y C) pero el problema con eso es que utilizo una pantalla LCD con un teclado 4x3 y ambos usan el puerto B.
Entonces me gustaría saber cómo modificar alguna de las dos librerías (lcd.c o kbd.c)
La que sea mas sencilla.

Necesito cualquiera de las dos en el puerto A o C.
La verdad no tengo inconvenientes con que sea otro puerto, sólo que uno se quede por defecto y otro sí cambiarlo.

Espero que me puedan ayudar.

Intenté usar la librería flex_lcd416a.c y solo modifiqué esto:
Código:
// Flex_LCD416.c

// These pins are for my Microchip PicDem2-Plus board,
// which I used to test this driver.
// An external 20x4 LCD is connected to these pins.
// Change these pins to match your own board's connections.

#define LCD_DB4 PIN_C4
#define LCD_DB5 PIN_C5
#define LCD_DB6 PIN_C6
#define LCD_DB7 PIN_C7

#define LCD_RS PIN_C0    //PIN_C4
#define LCD_RW PIN_C1
#define LCD_E PIN_C2    //PIN_C6
Pero una vez intentándolo en proteus, sólo prende la LCD pero no muestra nada.

Por cierto, mi programa es este: (igual y tengo algún fallo)
PHP:
#include <18F2520.h>
#fuses NOBROWNOUT, INTRC, NOMCLR
#use delay(internal=8M)
#include <flex_lcd416a.c>



void main(){
lcd_init();
for(;{
printf(lcd_putc,"Electronica");
delay_ms(2000);
lcd_putc("\f");
delay_ms(2000);
}
}
Lo hago sencillo, pues si no funciona así, para qué intento seguirle.
 
Última edición por un moderador:
Saludos amigos.

Estoy haciendo un proyecto con el PIC18F2520, el cual tiene 3 puertos, (A,B y C) pero el problema con eso es que utilizo una pantalla LCD con un teclado 4x3 y ambos usan el puerto B.
Entonces me gustaría saber cómo modificar alguna de las dos librerías (lcd.c o kbd.c)
La que sea mas sencilla.

Necesito cualquiera de las dos en el puerto A o C.
La verdad no tengo inconvenientes con que sea otro puerto, sólo que uno se quede por defecto y otro sí cambiarlo.

Espero que me puedan ayudar.

Lo hago sencillo, pues si no funciona así, para qué intento seguirle.
Buenas
Yo modificaría la librería lcd420 para el puerto C y poder conectar mi teclado matricial al puerto B y así ahorrar hardware puesto que el puerto B tienes las resistencias Pull-Up.
Si quieres ahorrar pines y hardware(resistencias) podrías conectar ambos periféricos por puerto B.
Adjunto Simulación :
 

Adjuntos

Buenas a todos, me a servido de mucha ayuda los aportes e tomado uno como referencia ya que me solicitaron el uso de assembler para trabajar con el PIC16F887, pero presento un problema al querer adaptar lo que se muestra en un display a un LCD, ya que debo poder mostrar ese numero seleccionado en binario en un LCD. adjunto lo que tengo para ver quien pueda ayudarme con eso. Gracias de antemano.
 

Adjuntos

En vez de usar un oscilador RC, es mejor que uses el oscilador interno.
La pantalla la puedes direccionar por un puerto y el display de 7 segmentos por otro puerto.
El decodificador 7448 no debe ir conectado a la pantalla, sino al display de 7 segmentos.
Pero con el PIC no es necesario que lo uses, porque también se puede controlar directamente, aunque se usarán más pines.

Para controlar la pantalla necesitas rutinas especiales, así como lo estás haciendo no es correcto.

PD. Ese display de 7 segmentos a 4 bits, nunca lo he visto comercialmente.
 
Hola, gracias por responder, si bueno mi error fue dejarle los display a la simulación, los deje como guía para luego apartarlos al lcd, solo debe ir conectado el lcd, pero ese es mi error ya veo que no se trabajan igual según lo que me mencionas y es donde tengo mi falla ya que no se trabajar con el LCD, debo hacer algún tipo de configuración dentro del .ASM para activar el LCD, o debo modificar el código como tal? por que de ser así por eso ando perdido :cry:
 
Pues sí, por lo tanto primero debes estudiar cómo funciona cada dispositivo.

Adjunto un ejemplo de cómo implementar lo que deseas hacer.

Suerte.
hola, luego de adaptarlo quiero realizar la acción de decirle al LCD que muestre el valor en binario no consigo como hacer que el muestre dicho valor, investigando usan agregar la palabra "Bin" para que el mande el valor en binario pero tanto con ese como en otros que e conseguido investigando un poco son usados en css o usan mucho lenguaje C, y no assembler para realizar la acción por eso estoy desorientado con esta opción del LCD.
 
Bin no es una opción que tenga la pantalla o el lenguaje ensamblador.
Seguramente es el nombre que una persona le puso a su rutina de conversión a Binario.

Para eso se necesita crear una subrutina que compare bit por bit un numero.

Me parece que se te va a complicar aunque es muy sencillo, así que adjunto el programa con la subrutina para convertir de BCD a Binario.

Nota: Requiere de la librería "LCD_4Bits.inc" del programa adjunto en el post #428
 

Adjuntos

Última edición:
Arriba