Cómo usar una lcd en un puerto distinto al b o al d de un pic
1. Notas de aprendizaje By: Manuel Santos Machado.
¿Cómo usar una LCD en un puerto distinto al B o al D de un PIC?
¿Cómo configurar el lcd.c para usar una LCD en el puerto C de un PIC?
Como primer paso se deberá ingresar al fichero de la LCD, la cual contiene las configuraciones
necesarias para ser usada por defecto en el puerto B o D. Este fichero a configurar está en la
siguiente ruta:
C:Program Files (x86)PICCDrivers
Una vez dentro de la carpeta Drivers, buscar el fichero con el nombre LCD
Figura 1. Fichero a modificar
Debemos de abrir este fichero con un block de notas para editarlo. En este caso deseo usar el
puerto C para conectar la LCD y visualizar lo que deseo, previa programación claro. Lo que
debemos editar es lo siguiente (editaremos 3 campos)
1. Descomentar las líneas debajo de example of pin access, y en el campo de PIN_X, X
son los pines que vamos a usar; entonces escribo los que voy a usar (pines C) véase
Figura 2.
2. Notas de aprendizaje By: Manuel Santos Machado.
Figura 2. Primer campo a editar
2. Las siguientes líneas a configurar son las siguientes: (cambiar los campos portx, x es el
puerto a usar)
#if ((defined(use_portc_lcd)) && (use_portc_lcd==TRUE))
Figura 3. Segundo campo a editar
3. Notas de aprendizaje By: Manuel Santos Machado.
3. Finalmente editamos la línea de código sombreada (véase la Figura 4), la información
respecto al código hexadecimal asignado a cada puerto la podemos encontrar en la
opción View, luego Special Register y elegir el PIC para ver la información del
dispositivo, use el PIC 16F876 (esto dentro del compilador): (véase la Figura 5)
Figura 4. Tercer campo a editar
Figura 5. Información del código hex asignado a cada puerto
4. Notas de aprendizaje By: Manuel Santos Machado.
COMENTARIOS FINALES:
Una vez terminada la configuración en el block de notas, guardar este fichero con un nombre
similar al primero; usé LCDc.c De modo que al momento de llamar a la librería desde el
compilador lo relacionaras con mayor facilidad (solo es una recomendación).
Figura 6. Llamar a la librería de la LCD (ahora se llama lcdc)
ANEXO
Figura 7. Circuito Eléctrico
5. Notas de aprendizaje By: Manuel Santos Machado.
USO DE LA LCD EN EL PUERTO B DEL PIC 18F4550
8. Notas de aprendizaje By: Manuel Santos Machado.
PROGRAMA
#include <16F876.h>
#fuses XT,NOWDT
#use delay (clock=4000000)
#include <lcdc.c>
Int16 TFB; //tiempo flanco de subida
float AP; //valor final del ancho de pulso
int1 nuevopulso=0; //entra otro pulso
int1 cambio=0; //cambio de flanco de disparo
#int_ext
void function_ext_int(){ //funcion interrupcion
if (cambio==0){ //flanco de subida
set_timer1(0); //inicializa TMR1
ext_int_edge(0,H_TO_L); //configura para flanco de bajada
cambio=1; //control de cambio de flanco
} else{ //flanco de bajada
TFB=get_timer1(); //valor de TIMER1 para el flanco de bajada
ext_int_edge(0,L_TO_H); //configurar para flanco de subida
cambio=0; //control de cambio de flanco
if(nuevopulso==0){ //fin del pulso...
nuevopulso=1; //pulso a calcular
}
}
}
void main(){
lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //configuración TIMER1
ext_int_edge(0,L_TO_H); //configurar para flanco subida
cambio=0; //control de cambio de flanco
enable_interrupts(int_ext); //habilitación interrupción RB0
enable_interrupts(global); //habilitación general
do{
if(nuevopulso==1){ //¿pulso nuevo?
AP=TFB*1.0; //ancho de pulso en microsegundos de TIMER1
//a 4MHz el T=1us*Timer1
printf(lcd_putc,"nPulso = %6.1fuS ", AP); //visualiza medida
//en LCD