Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
// 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
#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);
}
}
BuenasSaludos 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.
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.
#include <24FJ32GA002.h>
#Fuses NOWDT, NOPROTECT
#USE delay(internal=4M)
#define LCD_E PIN_B0
#define LCD_RS PIN_B11
#define LCD_DB4 PIN_B12
#define LCD_DB5 PIN_B13
#define LCD_DB6 PIN_B14
#define LCD_DB7 PIN_B15
#include <lcd1.c>
#include <kbd.c>
int segundos;
int minutos;
int Horas;
int Cantidad_personas;
int i;
char K;
int cont1=0;
void configuracion(void)
{
setup_timer1(TMR_INTERNAL|TMR_DIV_BY_8);
ENABLE_INTERRUPTS(INTR_GLOBAL);
ENABLE_INTERRUPTS(INT_TIMER1);
set_timer1(3036);
}
void Mensaje_Reposo(){
lcd_init();
i=10;
for (i =10;i>=-32;i--){
lcd_gotoxy(i,1);
printf(lcd_putc, "%02i:%02i - %c personas - Menu Principal", Horas, minutos, K);
delay_ms(500);
lcd_putc("\f");
}
}
void LeerTeclado(){
kbd_init();
K=kbd_getc();
}
#INT_TIMER1 //RUTUNA PARA CONTAR SEGUNDOS
void INTERRUPCIONTM1(){
set_timer1(3036);
CONT1++;
if(CONT1==4){
segundos++;
CONT1=0;
}
if(segundos==60){
minutos++;
segundos=0;
}
if(minutos==60){
Horas++;
minutos=0;
}
if(Horas==24){
Horas=0;
}
}
void Main(){
set_tris_b(0);
kbd_init();
configuracion();
while(true){
LeerTeclado();
Mensaje_Reposo();
}
}
Si hubieras leído esta parte en la librería kbd.c, comprenderías el por qué no funcionó tu programa:La verdad, pareciera que la librería no sirviera para este tipo de PIC.
#if defined use_portb_kbd
#byte kbd = getenv("SFR:PORTB")
#else
#byte kbd = getenv("SFR:PORTD")
#endif