Vous êtes sur la page 1sur 7

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA

Ingeniera en Comunicaciones y Electrnica


LABORATORIO DE MICROPROCESADORES PRCTICA 8: TECLADO MATRICIAL

GRUPO 6CM1

ALUMNO Hernndez Lpez Audomaro


Profesor: M. en C. Armando Martnez Ros

Fecha de realizacin de la prctica:

lunes 23 de mayo de MMXII

OBJETIVO
Desarrollar un programa para leer un teclado matricial

MATERIAL Y DISPOSITIVOS USADOS Protoboard PIC 18F4550 Tablilla de desarrollo LEDs y resistores Dip-switch Teclado matricial 4x4 Cable USB y conector tipo B Software MPLab y HID Bootloader

DESARROLLO DE LA PRCTICA

La prctica requiri la implementacin de notas musicales (escogidas libremente por el estudiante) que involucraran la utilizacin de retardos, ciclos, y ms dentro del contexto del microprocesador. El nmero de notas a programas (establecer en el teclado) era de mnimo siete, que a pesar de no especificarse en el PDF de la prctica enviado por el docente, este ltimo coment lo del mnimo durante las sesiones de clase.

Para lo anterior, fue fundamental y definitorio para el cdigo a construir, el proceso de establecimiento del algoritmo, que vino a ilustrar la manera en que se deba codificar y depurar el cdigo mismo. Se puede observar el diagrama de flujo en la pgina siguiente.

ALGORITMO / DIAGRAMA DE FLUJO

Inicio

PuertoD-->Entrada/Salida Puerto B-->Salida

Anlisis 1era columna PortD-->0110

Tecla oprimida en columna

SI

Retardo de nota correspondiente

NO Anlisis 2a col PortD-->0101

Tecla oprimida en columna

SI

Retardo de nota correspondiente

NO

Anlisis 3ra col PortD-->0011

NO

Tecla oprimida en columna

SI

Retardo de nota correspondiente

NO

A continuacin, el cdigo en C correspondiente a la prctica. Solo se incluyen fragmentos representativos del programa (prototipos, funciones, etc)

/************* DECLARACION DE LOS PROTOTIPOS *******************************/ void YourHighPriorityISRCode(void); void YourLowPriorityISRCode(void); void reta(int); void EEPROM_Write(unsigned char address,unsigned char databyte); //******************************************************************************** ********

void main (void) { ADCON1 |= 0x0F; TRISB=0x00; TRISD=0xF0; mInitAllSwitches();

// Default all pins to digital

while (1) { // ***************************************Columna 1 PORTDbits.RD0=0; PORTDbits.RD1=1; PORTDbits.RD2=1; PORTDbits.RD3=0; if (PORTD==0xE6) { PORTBbits.RB7=1; reta(3620); PORTBbits.RB7=0; reta(3620); } else if (PORTD==0xD6) { PORTBbits.RB7=1; reta(2560); PORTBbits.RB7=0; reta(2560); } else if (PORTD==0xB6) { PORTBbits.RB7=1; reta(2000); PORTBbits.RB7=0; reta(2000); } else if (PORTD==0x76) { PORTBbits.RB7=1; reta(110); PORTBbits.RB7=0; reta(1105); }

// ********************************************Columna 2 PORTDbits.RD0=0; PORTDbits.RD1=1; PORTDbits.RD2=0; PORTDbits.RD3=1; if (PORTD==0xEA) { PORTBbits.RB7=1; reta(3200); PORTBbits.RB7=0; reta(3200); } else if (PORTD==0xDA) { PORTBbits.RB7=1; reta(2500); PORTBbits.RB7=0; reta(2500); } else if (PORTD==0xBA) { PORTBbits.RB7=1; reta(1810); PORTBbits.RB7=0; reta(1815); } else if (PORTD==0x7A) { PORTBbits.RB7=1; reta(1270); PORTBbits.RB7=0; reta(1270); } // ************************************************Columna 3 PORTDbits.RD0=0; PORTDbits.RD1=0; PORTDbits.RD2=1; PORTDbits.RD3=1; if (PORTD==0xEC) { PORTBbits.RB7=1; reta(2940); PORTBbits.RB7=0; reta(2940); } else if (PORTD==0xDC) { PORTBbits.RB7=1; reta(2150); PORTBbits.RB7=0; reta(2150); } else if (PORTD==0xBC) { PORTBbits.RB7=1; reta(1430); PORTBbits.RB7=0; reta(1430); } else if (PORTD==0x7C) {

PORTBbits.RB7=1; reta(1220); PORTBbits.RB7=0; reta(1220); } } } void reta (int x)*****************************************Retardo de 1 microsegundo { int y; T0CON=0x00; for(y=0;y<=x;y++) { TMR0H=0xFF; TMR0L=0xF4; // Esta configuracin permite establecer la funcin "reta" en 1 microseg, lo que facilita su implementacin INTCONbits.TMR0IF=0; T0CONbits.TMR0ON=1; while (INTCONbits.TMR0IF==0) {} } } /********************************************************************************* /

DIAGRAMA ELCTRICO

DIAGRAMA A BLOQUES

Teclado Matricial

Bocina 0.25 W

18F4550 PORTD

18F4550 PORTB

Amplificador 2N222

CONCLUSIONES Y OBSERVACIONES
Esta prctica nos da la bienvenida a la programacin de microprocesadores (en este caso de la familia 18FXXXX) mediante lenguaje C, que siendo de alto nivel, permite un desarrollo ms fluido del proyecto, sacrificando cierta eficiencia del cdigo que afortunadamente no es notoria para esta demostracin. Adems, la programacin en C nos permiti una notoria reduccin lneas y una depuracin ms sencilla al momento del anlisis de cada funcin y condicin, por lo que todo deriva en un cdigo ms ameno y entendible. Por otro lado, es preciso mencionar que los retardos implementados para la nota de salida correspondiente a cada tecla, no son congruentes con alguna nota musical en particular, sino sirven como demostracin para ejecutar diferentes tonos para cada tecla.

Para finalizar, fue interesante todo lo elaborado para la adecuada realizacin de la prctica, el trabajar con elementos de diferentes asignaturas en un solo trabajo (Microprocesadores, Seales, Dispositivos, por mencionar algunas), as como los cuidados y el anlisis necesarios llevados a cabo para cumplir eficientemente con lo requerido por la prctica.

Vous aimerez peut-être aussi