Вы находитесь на странице: 1из 5

1 1

Laboratorio de microcontrolad ores


Daniel Salcedo Pea 26 de Noviembre de 2 2009
3

[Prctica 11: Pantallas LCD y


programacin en C]
En esta prctica se controlar una pantalla LCD utilizando el PIC16F877A. Adems se programar utilizando el lenguaje de programacin C.

Prctica 11: Pantallas LCD y programacin en C

1 2Introduccin 3El display LCD es un dispositivo compacto que permite mostrar al 4usuario informacin acerca del estado del sistema. La informacin puede 5ser desde el estado de una variable dentro del PIC, hasta el estado de 6los dispositivos controlados por nuestro sistema. Tiene la ventaja de que 7poseemos la variedad de caracteres del cdigo ASCII para mostrar en 8estos dispositivos. 9El lenguaje de programacin C es uno de los ms comunes en el 10mbito de la programacin, debe su popularidad a la versatilidad de su 11estructura, y a que histricamente es de los primeros lenguajes de 12programacin estructurada. 13Objetivo: 14Ser capaz de utilizar el microcontrolador PIC16F877A para controlar un 15display LCD de 16x2 caracteres, y mostrar en l, el valor de una variable 16que cuenta pulsos en el bit RB0. 17Adems, se debe poder utilizar el lenguaje C para programar el PIC. 18Desarrollo: 19Se utiliza un programa en C proporcionado por el profesor, el cual utiliza 20las libreras del compilador PCW para administrar el display LCD (lcd.c). 21Implementacin del programa: 22El cdigo utiliza las funciones de la librera lcd.c: 23 24 25 26 27 28 29 30

lcd_init();

Esta funcin inicializa el mdulo del display LCD. Configura los pines: o RD0: Seal E en el LCD o RD1: Seal RS en el LCD o RD2: Seal RW en el LCD o RD4-RD7: Bits de datos a imprimir.
lcd_gotoxy(1,1); Pgina 2 de 5

Daniel Salcedo Pea

Prctica 11: Pantallas LCD y programacin en C

1 2 3 4 5

Coloca el cursor en la posicin X, Y (en este caso en la posicin inicial) Mtodo para enviar la cadena "Contador= %03u" hacia el display LCD, donde %03u, toma el valor de la variable contador.
printf(lcd_putc, "Contador= %03u", contador);

6Nuestro programa configura el bit RB0 como entrada, y recibe por ah 7pulsos que lanzan la interrupcin por cambio en RB0. Al lanzarse la 8interrupcin, la variable contador aumenta su valor en 1. 9Constantemente se muestra en el display la leyenda Contador = y el 10valor del contador con 3 cifras. 11El cdigo completo se puede observar en anexo 1. 12Compilacin en PCW y simulacin en Proteus: 13Se compil el cdigo en el programa PCW, sin generar errores. El 14archivo .HEX que se gener se import en el programa Proteus para su 15simulacin utilizando el siguiente montaje:

16 17En la simulacin, al presionar el push-button, la variable contador 18aumenta y se muestra el nuevo valor en el display: 19 20

Daniel Salcedo Pea

Pgina 3 de 5

Prctica 11: Pantallas LCD y programacin en C

2Bibliografa 3 4 5 6 Documentacin tcnica del PIC16F87X de Microchip Documentacin del programa PCW o Documentacin de la librera lcd.c Documentacin tcnica del display TM162ADA7

Daniel Salcedo Pea

Pgina 4 de 5

Prctica 11: Pantallas LCD y programacin en C


1

1// PROGRAMA MANEJO DE LCD Y USO DE INTERRUPCIN EXTERNA 2// Contador ascendente de 0 a 255 3// Adaptacin al compilador C de MPLAB 4// DIRECTIVAS 5 6#include<16f877A.h> //Directiva del microcontrolador a utilizar 7#fuses XT, NOWDT, NOPROTECT, PUT //Activacin y desactivacin de fusibles 8#use delay(clock=4000000) //Directiva para establecer Frecuencia del cristal 9 10#include<lcd.c> //Directiva de la LCD 11#use fast_io(B) //Directiva Entrada/Salida del Puerto B 12#use fast_io(D) //Directiva Entrada/Salida del Puerto D 13 14#bit PB0=0x06.0 //Asignacin del pin B0 con el nombre PB0 15 16int contador=0; //Declaracin e inicializacin de variable contador 17 18//FUNCIONES 19inicializar(){ //Funcin inicializar 20 PB0=0; // Inicializa a 0 el Pin B0 21 set_tris_b(0x01); //Configuracin del Pin B0 como entrada 22 enable_interrupts(INT_EXT); //Habilitacin de la Interrupcin externa 23 enable_interrupts(GLOBAL); //Habilita la interrupcin en forma global en el 24Programa 25} 26 27#int_ext //Directiva para crear una funcin mientras se ejecuta la Interrupcin 28externa 29 atender(){ // Funcin a utilizar al ejecutar la interrupcin externa 30 contador ++; //Incremento en la variable contador 31 } 32 33 main(){ 34 inicializar(); 35 lcd_init(); 36 while(TRUE){ 37 lcd_gotoxy(1,1); 38 printf(lcd_putc, "Contador= %03u", contador); 39 delay_ms(200); //tiempo de espera para imprimir en todo el 40display 41 } 42 }

Anexo 1: Manejo LCD probado.c

Daniel Salcedo Pea

Pgina 5 de 5