Está en la página 1de 7

FACULTAD DE CIENCIAS DE LA ELECTRNICA

INTERFACES

DISPLAY 7 SEGMENTOS, LCD Y TECLADO MATRICIAL

PRESENTAN: GRUPO_2 ROBERT ULISES LOPEZ GARCIA 200710118 JERNIMO SNCHEZ LPEZ 200714240

OTOO 2012

Introduccin. Los diferentes lenguajes de programacin nos permiten gobernar el comportamiento de un sistema, el cual puede contener como ncleo un micro controlador. Resulta interesante saber el como a partir de un cdigo maquina es posible generar letras nmeros y cualquier otro smbolo comprensible para nosotros los humanos, adems no hay que olvidar los mltiples sistemas de visualizacin que se pueden emplear para ver nuestros datos, por todo lo anterior se ira desarrollando un sistema mnimo el cual permita comprender mejor nuestras aseveraciones. Marco terico: Qu es un Micro controlador? Un micro controlador (abreviado C, UC o MCU) es un circuito integrado programable, capaz de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios bloques funcionales, los cuales cumplen una tarea especfica. Un micro controlador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y perifricos de entrada/salida. Objetico: Se desea construir un sistema que permita visualizar los nmeros del 0 al 9 y las letras de la A a la F tanto en un display de 7 segmentos como en un LCD, ingresando dichos datos desde un teclado matricial y programado todo en un PIC16F877A. Desarrollo: En esta parte se mostraran los materiales a utilizar para lograr el sistema, as como su ensamble, todo lo anterior se muestra en una simulacin hecha en Proteus.

Como podemos observar, en la simulacin se muestran los componentes as como su ensamble, en lo que respecta al cdigo este fue generado y compilado en lenguaje C por comodidad y practicidad, solo por seguridad se ha omitido el cdigo, todo lo anterior para prevenir el plagio del trabajo en cuestin. Conclusin: El sistema diseado cumple satisfactoriamente con el objetivo planteado el cual consista en lograr el despliegue de datos en dos dispositivos visuales, el despliegue pudo hacerse por separado o simultneamente como hemos podido apreciar anteriormente, adems el sistema no presento fallas de ninguna clase durante las pruebas de evaluacin. Cdigo de programa #include <16F877A.h> #FUSES XT, NOWDT, NOPROTECT, NOLVP de proteccion, no bajo voltaje #use delay(clock=4000000) #use standard_IO(C) #use standard_IO(A) #byte PORTB=0x06 #byte PORTC=0x07 #bit a1=0x05.1 #define use_portd_lcd TRUE #include <LCD.c> #define Col_1 0b11111110 #define Col_2 0b11111101 #define Col_3 0b11111011 #define Col_4 0b11110111 // Puerto a utilizar para el LCD // Libreria del LCD //define lineas Puerto B //define lineas //define lineas //define lineas //oscilador, sin perro guardian, sin codigo

// Oscilador a 4MHz //libreria estandar c //libreria estandar a // Direccin del PortB

char var=0; void display(){ int8 PORTC;

PORTB=Col_1; if (PORTB==0b11101110) OUTPUT_c(0x06) ; if (PORTB==0b11011110) OUTPUT_c(0x66); if (PORTB==0b10111110) OUTPUT_c(0x07) ; // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal

PORTB=Col_2; if (PORTB==0b11101101) OUTPUT_c(0x5b); if (PORTB==0b11011101) OUTPUT_c(0x6d); if (PORTB==0b10111101) OUTPUT_c(0x7f); if (PORTB==0b01111101) OUTPUT_c(0x3f); // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal

PORTB=Col_3; if (PORTB==0b11101011) OUTPUT_c(0x4f); if (PORTB==0b11011011) OUTPUT_c(0x7d); if (PORTB==0b10111011) OUTPUT_c(0x6f); // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal

PORTB=Col_4; if (PORTB==0b11100111) OUTPUT_c(0x77); if (PORTB==0b11010111) OUTPUT_c(0x7c); if (PORTB==0b10110111) OUTPUT_c(0x39); if (PORTB==0b01110111) OUTPUT_c(0x5e); } // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal // verifica que linea del teclado ha sido pulsada //salida en Puerto C en valor hexadecimal

void Teclado(){ PORTB=Col_1; if(PORTB==0b11101110) var='1'; if(PORTB==0b11011110) var='4'; if(PORTB==0b10111110) var='7'; //si Puerto B es valor, variable de salida 1 //si Puerto B es valor, variable de salida 4 //si Puerto B es valor, variable de salida 7

PORTB=Col_2; if(PORTB==0b11101101) var='2'; if(PORTB==0b11011101) var='5'; if(PORTB==0b10111101) var='8'; if(PORTB==0b01111101) var='0'; //si Puerto B es valor, variable de salida 2 //si Puerto B es valor, variable de salida 5 //si Puerto B es valor, variable de salida 8 //si Puerto B es valor, variable de salida 0

PORTB=Col_3; if(PORTB==0b11101011) var='3'; //si Puerto B es valor, variable de salida 3

if(PORTB==0b11011011) var='6'; if(PORTB==0b10111011) var='9';

//si Puerto B es valor, variable de salida 6 //si Puerto B es valor, variable de salida 9

PORTB=Col_4; if(PORTB==0b11100111) var='A'; if(PORTB==0b11010111) var='B'; if(PORTB==0b10110111) var='C'; if(PORTB==0b01110111) var='D'; } //si Puerto B es valor, variable de salida A //si Puerto B es valor, variable de salida B //si Puerto B es valor, variable de salida C //si Puerto B es valor, variable de salida D

// INICIO void main(void){ bit_set(a1,0); set_tris_b(0b11110000); SET_TRIS_c(0x00); OUTPUT_c(0); //definimos como entrada // Definimos Parte alta entrada parte baja salida //definimimos como salida

lcd_init(); port_b_pullups(TRUE); PORTB=0x00; lcd_putc("\f"); lcd_gotoxy(5,1); printf(lcd_putc,"EQUIPO 2"); lcd_gotoxy(2,2); printf(lcd_putc,"TECLA NUMERO:");

// Iniciamos LCD

// Limpiamos LCD // Linea 1 y Columna 6 de salida //imprime en pantalla // Linea 2 y Columna 2 de salida //imprime en pantalla

while(TRUE){ Teclado();

// Bucle infinito

if (a1==1) { lcd_putc(var); lcd_putc("\b"); } else { display(); } } }

//si a1= 1 ejecuta lo siguiente

// Muestra tecla pulsada en lcd //(escribe encima de la ultima tecla mostrada)

También podría gustarte