cómo usar una lcd en un puerto distinto al b o al d de un pic

8
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)\PICC\Drivers 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.

Upload: manuel-santos-m

Post on 14-Apr-2017

302 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Cómo usar una lcd en un puerto distinto al b o al d de un pic

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)\PICC\Drivers

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.

Page 2: Cómo usar una lcd en un puerto distinto al b o al d de un pic

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

Page 3: Cómo usar una lcd en un puerto distinto al b o al d de un pic

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

Page 4: Cómo usar una lcd en un puerto distinto al b o al d de un pic

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

Page 5: Cómo usar una lcd en un puerto distinto al b o al d de un pic

Notas de aprendizaje By: Manuel Santos Machado.

USO DE LA LCD EN EL PUERTO B DEL PIC 18F4550

Page 6: Cómo usar una lcd en un puerto distinto al b o al d de un pic

Notas de aprendizaje By: Manuel Santos Machado.

Page 7: Cómo usar una lcd en un puerto distinto al b o al d de un pic

Notas de aprendizaje By: Manuel Santos Machado.

Page 8: Cómo usar una lcd en un puerto distinto al b o al d de un pic

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