Anda di halaman 1dari 5

CIRCUITO CODIFICADOR

Explica detalladamente el funcionamiento del siguiente circuito codificador de teclado hexadecimal, 74C922.

Codificador 74C922
Con este dispositivo se puede controlar fcilmente y sin necesidad de ninguna librera un teclado 4X4, ampliable fcilmente a 2 teclados 4X4. Bsicamente el circuito consta de ocho entradas (x1 a x4, y1 a y4), donde conectaremos las cuatro filas y columnas del teclado. La salida en funcin de la tecla pulsada la tendremos en formato binario en las patillas A, B, C y D. Si miris el esquema de bloques del componente, veris que estas salidas van a travs de unas bsculas tipo D que hacen de memoria, con lo que el valor de la tecla pulsada se mantiene hasta que se pulsa otra y sobrescribe el antiguo valor. Adems dispone de una salida (DA) que se pone a nivel alto cada vez que se pulsa una tecla (ideal para el empleo de interrupciones). Otra ventaja de este componente electrnico es que est modelado en Proteus, con lo que podemos simular su funcionamiento junto con un Microcontrolador. El ejemplo ya hecho del display quedara de la siguiente manera:

El valor de la tecla pulsada lo leeremos a travs de las patillas RB4-RB7 y la salida DA la conectaremos a la patilla RB0/INT, para emplear la interrupcin por entrada de pulso externo. Si en vez de interrupciones utilizamos el sistema polling, es decir la comprobacin constante del estado de las patillas (RB4-RB7) a travs de un bucle infinito dentro de la funcin principal de otra cualquiera, con cuatro lneas seran suficientes para el control del teclado. El cdigo fuente del microcontrolador sera el siguiente:

01./*-----------------------------------------------------------*\ 02.| Control de un teclado 4X4 con con el codificador 74C922 | 03.| autor: biblioman | 04.| 05.\*-----------------------------------------------------------*/ 06. 07.#include <16F877.h> 08.//Configuracin de los fusibles. 09.#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG 10.#use delay(clock=4000000) //Frecuencia de reloj 4MHz 11.#byte puerto_B = 0x06 // Identificador para el puerto B. 12.#byte puerto_D = 0x08 // Identificador para el puerto C. 13. 14.#int_EXT

15.void EXT_isr(void){ 16. 17.switch( puerto_B & 0xF0 ) 18.{ 19. 20.case 0x20: 21.puerto_D = 0x3F; //0 22.break; 23.case 0xF0: 24.puerto_D = 0x06; //1 25.break; 26.case 0xE0: 27.puerto_D = 0x5B; //2 28.break; 29.case 0xD0: 30.puerto_D = 0x4F; //3 31.break; 32.case 0xB0: 33.puerto_D = 0x66; //4 34.break; 35.case 0xA0: 36.puerto_D = 0x6D;//5 37.break; 38.case 0x90: 39.puerto_D = 0x7D; //6 40.break; 41.case 0x70: 42.puerto_D = 0x07;//7 43.break; 44.case 0x60: 45.puerto_D = 0x7F; //8 46.break; 47.case 0x50: 48.puerto_D = 0x6F; //9 49.break; 50.case 0x30: 51.puerto_D = 0xF7; //A 52.break; 53.case 0x10: 54.puerto_D = 0x7C; //b 55.break; 56.case 0x00: 57.puerto_D = 0x58; //c 58.break; 59.case 0x40: 60.puerto_D = 0x5E; //d 61.break; 62.case 0x80: 63.puerto_D = 0x79; //E 64.break; 65.case 0xC0: 66.puerto_D = 0x71; //F

67.break; 68. 69.default: 70. 71.break; 72.} 73. 74.} 75. 76.void main() 77.{ 78.set_tris_b(0xFF); //Puerto B como entrada 79.set_tris_d( 0x80 );//RD6-RD0 -->como salida, RD7--> Entrada (No utilizado) 80. 81.enable_interrupts(GLOBAL);//habilito interrupcin global 82.enable_interrupts(INT_EXT);//habilito interrupcin externa 83. 84. 85. 86.puerto_D =0x80; //inicializo puerto D (RD6-RD0=0) 87. 88.while(True) 89.{ 90.//cdigo principal 91. 92.} 93. 94.}

Comentario
Dependiendo de cmo se conecten las filas y columnas del teclado al codificador 74C922 se tendr una combinacin de valores a la salida diferente, en funcin del cdigo que queramos emplear en el teclado. Lo ms fcil es que conectis el teclado al codificador como queris y simulis el circuito en Proteus antes de conectar el microcontrolador y hagis una tabla de verdad con los valores de la salida en funcin de la tecla pulsada. Para el ejemplo de figura la tabla sera la siguiente:

Tecla 0 1 2 3 4

Salida 74C922 0x20 0xF0 0xE0 0xD0 0xB0

5 6 7 8 9 A b c d E F

0xA0 0x90 0x70 0x60 0x50 0x30 0x10 0x00 0x40 0x80 0xC0

Ventajas y desventajas del uso de este componente para el control de teclados


Bajo mi punto de vista, estas son las ventajas y desventajas de utilizar este componente para controlar la salida de un teclado junto a un microcontrolador: Desventajas: la desventaja yo creo que es clara y es el tener que incluir ms componentes al circuito para hacer una cosa, que se puede implementar por software. Aunque estos componentes son muy baratos y se pueden conseguir fcilmente por Internet, el tamao de la placa inevitablemente tendr que ser un poco ms grande.

Ventajas: No se necesita ninguna librera externa para controlar el teclado. El .HEX generado al compilar es ms pequeo, por lo que dispondremos de ms memoria de programa en el PIC. Fcil implementacin del cdigo a travs de interrupciones. Posibilidad de ampliar el teclado a uno de 32 teclas, (en el datasheet viene el esquema de cmo hacerlo). Utilizacin de menos patillas en el PIC, se puede controlar un teclado de 32 teclas con solo cinco pines del PIC.

En fin un componente que no sustituye a la librera convencional, pero que en determinados circuitos ser interesante tener en cuenta.

Anda mungkin juga menyukai