Microcontroladores El Teclado matricial M.C. M.C. Carlos E. Canto Quintal Microcontroladores Teclado matricial Los teclados matriciales son ensamblados en forma de matriz , como se ilustar en la figura. figura. 0 1 2 3 4 5 6 7 8 9 A B C D E F Renglón 0 Renglón 1 Renglón 2 Renglón 3 Columna 3 Columna 2 Columna 1 El diagrama muestra un teclado como una matriz de 4X4 - 16 teclas configuradas en 4 columnas y 4 renglones. renglones. Cuando no se ha oprimido ninguna tecla, tecla, (todos (todos las teclas abiertas) abiertas) no hay conexió conexión entre renglones y columnas . Cuando se oprime una tecla se hace una conexió conexión entre la columna y el rengló renglón de la tecla. tecla. Columna 0 M.C. M.C. Carlos E. Canto Quintal Microcontroladores Decodificador de teclado Muchos teclados comerciales ya traen incluido su decodificador, decodificador, que escanena el teclado y si, si, una tecla es presionada, presionada, regresa un número que identifica la tecla. tecla. Otra alternativa es adquirir por separado un chip decodificador y conectarlo al teclado. teclado. El decodificador mostrado tiene 8 entradas; entradas; las 4 entradas “X” son conectadas a las 4 columnas del teclado y las 4 entradas “Y “son conectadas al los 4 renglones. renglones. No se muestran los capacitores que gobiernan la rapidez a la que se escanea el teclado. teclado. Cuando se oprime una tecla el código de 4 bits de la tecla ( con 16 teclas, teclas, los códigos está están entre 0000 y1111 en binario) binario) aparecerá aparecerá en las 4 líneas de salida y la línea de dato disponible (DA) se pone en BAJO. Si se conecta a una línea de interrupció interrupción el microporcesador será será interrumpido cuando se oprima alguna tecla. tecla. La Rutina de Servicio de la Interrupció Interrupción, entonces lee los 4 bits y procesa el dato . El chip del decodificador se encarga de eliminar el rebote de las teclas, teclas, lo que libera al programador de esta responsabilidad, responsabilidad, esto es una ventaja al usar un chip decodificador. decodificador. M.C. M.C. Carlos E. Canto Quintal Microcontroladores DECODIFICADOR DE TECLADO MATRICIAL HEXADECIMAL X4 X3 X2 X1 FF E E D D C C Y4 B B A A 99 88 Y3 77 66 55 44 Y2 33 22 11 00 Y1 Q1 Q2 Q3 Q4 DA INT OE Decodificador de teclado de 4X4 M.C. M.C. Carlos E. Canto Quintal Microcontroladores MM74C922 • MM74C923 16-Key Encoder • 20-Key Encoder M.C. M.C. Carlos E. Canto Quintal Microcontroladores Conexión de un LCD y un Teclado Matricial de 16 teclas al µ8051 +Vcc 4.7 KΩ 3 2 1 0 7 6 5 4 B A 9 8 F E D C ren0 ren1 ren2 P3.0 P3.1 P3.2 ren3 Col 0 Col 1 Col 2 Col 3 P3.3 P3.4 P3.5 P1.7 P1.6 P1.5 P1.4 DB7 DB6 DB5 DB4 RS 10 KΩ E R/W P1.3 P1.4 P3.6 P3.7 M.C. M.C. Carlos E. Canto Quintal Microcontroladores Tareas básicas a realizar para un teclado matricial Checar Checarsisise se se seoprimió oprimió alguna algunatecla tecla No regresar Se Seoprimió oprimióalguna alguna Tecla Tecla?? Si Rastrear Rastrearrenglones renglones Para Paraencontrar encontrarlalacolumna columna de delalatecla teclaoprimida oprimida Descifrar Descifraroodecodificar decodificar que quetecla teclase seoprimió oprimió Se Secargan cargan ceros cerosaa todos los renglones todos los renglonesen en elel Puerto PuertoCC, ,se seleen leen las lascolumnas columnasyyse se pregunta preguntasisison sonpuros puros unos unos Se Secarga carga cero ceroaa los los renglones uno renglones unoaauno uno hasta hastaque quese seencuentre encuentre lalacolumna donde columna dondeestá estálala tecla oprimida tecla oprimida Una Unavez vezidentificada identificadalala columna y conociendo columna y conociendoelel renglón renglónse seaplica aplicaelel algoritmo para algoritmo paraobtener obtenerelel binario binariode delalatecla tecla oprimida oprimida M.C. M.C. Carlos E. Canto Quintal Microcontroladores ¿Cómo saber que tecla se oprimió? 0 1 2 3 RENGLÓN 0 4 5 6 7 RENGLÓN 1 8 9 A B RENGLÓN 2 C D E F RENGLÓN 3 COLUMNA 3 COLUMNA 2 TECLA = 4xRi + Cj Donde: Tecla=la tecla oprimida en binario Ri= # del renglón escaneado Cj= #.de la columna donde se encontró la tecla Ejemplo,si Ejemplo se oprimió la tecla 6, ésta se encuentra en el renglón 1 y columna 2, entonces: Tecla=4x1+2=6 COLUMNA 1 COLUMNA 0 M.C. M.C. Carlos E. Canto Quintal Microcontroladores Diagrama de flujo del programa del teclado matricial Inicio Inicio ret SI rastreo de renglón i rastreo de renglón i Renglones ÅScan Renglones ÅScan mandar mandarceros ceros aalos losrenglones renglones leer leerlas lascolumnas columnas leer leerlas lascolumnas columnas columnas columnas enen1’s? 1’s? columnas columnas enen1’s? 1’s? NO contador contadordederenglón renglónaa00 RiÅ0 RiÅ0 Inicializar Inicializarrastreo rastreo dederenglones renglones ScanÅ11111110 ScanÅ11111110 columna columna0=0 0=0?? NO SI SI RiRiÅ ÅRi+1 Ri+1 colÅ colÅ00 SI Desplaza Scan Desplaza Scan A la izquierda A la izquierda Ri=4? Ri=4? TeclaÅ4*Ri TeclaÅ4*Ri+col +col ret NO columna columna1=0 1=0?? NO columna columna2=0 2=0?? SI SI ColÅ ColÅ11 colÅ colÅ22 NO columna columna3=0 3=0?? SI ColÅ ColÅ33 M.C. M.C. Carlos E. Canto Quintal Microcontroladores SCAN_REN: MOV P3,#0F0H MOV A,P3 CJNE A,#0F0H,SCAN_REN RET MOV R0,#00 MOV P3,#0FEH MOV A,P3 ANL A,#0F0H CJNE A,#0FH,SCAN_COL INC R0 M.C. M.C. Carlos E. Canto Quintal Microcontroladores RR A (Rotate Right the Accumulator) Esta instrucció instrucción rota el contenido del acumulador hacia la derecha: cada bit es desplazado una localidad hacia la derecha, donde el bit 0 se va al bit 7. M.C. M.C. Carlos E. Canto Quintal Microcontroladores RL A (Rotate Left the Accumalator) Esta instrucció instrucción rota el contenido del acumulador hacia la izquierda: Cada bit es desplazado una localidad hacia la izquierda , tal que el bit 7 se va al bit 0 M.C. M.C. Carlos E. Canto Quintal Microcontroladores RRC A (Rotate Right through the Carry ) Esta instrucció instrucción rota el contenido del acumulador hacia la derecha a travé través del Acarreo ( C ) : Cada bit es desplazado una localidad hacia la derecha , donde el bit 0 se va al bit de acarreo (C) del PSW, mientras que el acarreo se va al bit 7 (esto es: si el acarreo tení tenía 1 antes de la ejecució ejecución de RRC A, entonces el bit 7 del acumulador contendrá contendrá un 1 despué después de la ejecució ejecución del RRC A. M.C. M.C. Carlos E. Canto Quintal Microcontroladores Otra alternativa • • • • Mientras no se oprima ninguna tecla el programa escanea renglón 0, renglón1, renglón 2, renglón 3 y se regresa de nuevo al renglón 0 continuamente. cuando se oprime una tecla, el número de esa tecla es puesto en R0. Ya que el número de la tecla presionada será almacenada en R0, R0 inicialmente es 0. Cada tecla es escaneada y sino es la tecla oprimida, R0 es incrementado, de esa forma cuando la tecla oprimida es encontrada , R0 contendrá el número de la tecla. la bandera de propósito general F0, será usada por la subrutina de scaneo de las columnas, para indicar cuando una tecla se oprimió o no en esa columna. Si al regresar de la subrutina F0 es “1”, significa que la tecla fue encontrada.. M.C. M.C. Carlos E. Canto Quintal