You are on page 1of 5

1 1

Laboratorio de microcontrolad ores
Daniel Salcedo Peña 26 de Noviembre de 2 2009
3

[Práctica 11: Pantallas LCD y
programación en C]
En esta práctica se controlará una pantalla LCD utilizando el PIC16F877A. Además se programará utilizando el lenguaje de programación C.

2

y a que históricamente es de los primeros lenguajes de 12programación estructurada.1). 21Implementación del programa: 22El código utiliza las funciones de la librería lcd. Página 2 de 5 Daniel Salcedo Peña 2 . Configura los pines: o RD0: Señal E en el LCD o RD1: Señal RS en el LCD o RD2: Señal RW en el LCD o RD4-RD7: Bits de datos a imprimir. el cual utiliza 20las librerías del compilador PCW para administrar el display LCD (lcd. hasta el estado de 6los dispositivos controlados por nuestro sistema. Esta función inicializa el módulo del display LCD. lcd_gotoxy(1. el valor de una variable 16que cuenta pulsos en el bit RB0.Práctica 11: Pantallas LCD y programación en C 1 2Introducción 3El display LCD es un dispositivo compacto que permite mostrar al 4usuario información acerca del estado del sistema.c: 23 24 25 26 27 28 29 30 • 1 • lcd_init(). se debe poder utilizar el lenguaje C para programar el PIC. 18Desarrollo: 19Se utiliza un programa en C proporcionado por el profesor. 13Objetivo: 14Ser capaz de utilizar el microcontrolador PIC16F877A para controlar un 15display LCD de 16x2 caracteres. Tiene la ventaja de que 7poseemos la variedad de caracteres del código ASCII para mostrar en 8estos dispositivos. 17Además. debe su popularidad a la versatilidad de su 11estructura. La información puede 5ser desde el estado de una variable dentro del PIC. 9El lenguaje de programación “C” es uno de los más comunes en el 10ámbito de la programación.c). y mostrar en él.

11El código completo se puede observar en anexo 1. "Contador= %03u". sin generar errores. Al lanzarse la 8interrupción. donde %03u.HEX que se generó se importó en el programa Proteus para su 15simulación utilizando el siguiente montaje: 16 17En la simulación. toma el valor de la variable contador.Práctica 11: Pantallas LCD y programación en C 1 2 3 4 5 • 1 Coloca el cursor en la posición X. la variable contador 18aumenta y se muestra el nuevo valor en el display: 19 20 Daniel Salcedo Peña Página 3 de 5 2 . 9Constantemente se muestra en el display la leyenda “Contador =” y el 10valor del contador con 3 cifras. y recibe por ahí 7pulsos que lanzan la interrupción por cambio en RB0. printf(lcd_putc. 12Compilación en PCW y simulación en Proteus: 13Se compiló el código en el programa PCW. 6Nuestro programa configura el bit RB0 como entrada. al presionar el push-button. la variable contador aumenta su valor en 1. Y (en este caso en la posición inicial) Método para enviar la cadena "Contador= %03u" hacia el display LCD. contador). El 14archivo .

Práctica 11: Pantallas LCD y programación en C 1 1 2Bibliografía 3 4 5 6 • • • Documentación técnica del PIC16F87X de Microchip Documentación del programa PCW o Documentación de la librería lcd.c Documentación técnica del display TM162ADA7 Daniel Salcedo Peña Página 4 de 5 2 .

"Contador= %03u". //tiempo de espera para imprimir en todo el 40display 41 } 42 } Anexo 1: Manejo LCD probado. // Inicializa a 0 el Pin B0 21 set_tris_b(0x01). //Habilita la interrupción en forma global en el 24Programa 25} 26 27#int_ext //Directiva para crear una función mientras se ejecuta la Interrupción 28externa 29 atender(){ // Función a utilizar al ejecutar la interrupción externa 30 contador ++. //Configuración del Pin B0 como entrada 22 enable_interrupts(INT_EXT). 38 printf(lcd_putc. NOPROTECT.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 //Asignación del pin B0 con el nombre PB0 15 16int contador=0. 35 lcd_init(). //Incremento en la variable contador 31 } 32 33 main(){ 34 inicializar().1). NOWDT. //Habilitación de la Interrupción externa 23 enable_interrupts(GLOBAL).c Daniel Salcedo Peña Página 5 de 5 2 . //Declaración e inicialización de variable contador 17 18//FUNCIONES 19inicializar(){ //Función inicializar 20 PB0=0. 39 delay_ms(200). PUT //Activación y desactivación de fusibles 8#use delay(clock=4000000) //Directiva para establecer Frecuencia del cristal 9 10#include<lcd. 36 while(TRUE){ 37 lcd_gotoxy(1.Práctica 11: Pantallas LCD y programación en C 1 1// PROGRAMA MANEJO DE LCD Y USO DE INTERRUPCIÓN EXTERNA 2// Contador ascendente de 0 a 255 3// Adaptación al compilador C de MPLAB 4// DIRECTIVAS 5 6#include<16f877A.h> //Directiva del microcontrolador a utilizar 7#fuses XT. contador).