SlideShare una empresa de Scribd logo
1 de 9
Universidad de Guadalajara<br />Centro Universitario de Ciencias e Ingeniería<br />Departamento de Electrónica<br />Taller de Sistemas Digitales III<br />ET214<br />Practica #3<br />Teclado matricial<br />Objetivo:crear un programa que muestre los números del 0 al 9 por medio de un teclado matricial hacia un display de 7 segmentos<br />Aguayo Adame Gilberto<br />Codigo:399392827 <br />Carrera: cel<br />Para realizar esta pequeña aplicación utilizamos un teclado matricial de 4 x 4, es decir de cuatro filas y cuatro columnas, que nos da un total de 16 teclas, para manipular el teclado mediante el microcontrolador es necesario tener líneas de entrada y líneas de salida, en este caso las líneas de entrada están conectadas a las filas, y las líneas de salida están conectadas a las columnas. <br />Para que el teclado funcione hay que activar las columnas de manera alternada, después de activar una de las columnas hay que verificar si se ha activado alguna de las filas, el que una de las filas esté activada implica que una de las teclas ha sido presionada y si una de las teclas ha sido presionada hay que determinar qué tecla fue, la tecla presionada corresponde a la intersección de la columna activada y la fila activada, en el caso de que ninguna de las filas esté activa se asume que ninguna tecla de la columna activada fue presionada, por lo que se procede a activar una columna diferente.<br />  <br />DESCRIPCIÓN: <br />La mayoría de los teclados se leen por una técnica de exploración consistente en ir leyendo consecutivamente las filas o las columnas de éste. Hay circuitos especializados en esta tarea, pero es fácil hacer que un microcontrolador lea estos teclados matriciales (los ordenadores compatibles PC incluyen un pequeño microcontrolador que hace esta tarea y envía las teclas pulsadas a la unidad central). La disposición en matriz de los teclados responde a la necesidad de leer gran cantidad de conmutadores con pocas líneas de entrada, piénsese en que si se necesitase una línea por cada tecla del teclado de un PC, serían necesarios más de 100 líneas. El esquema muestra un esquema de un típico teclado matricial 4x4 y la conexión directa a un puerto del microcontrolador. Las resistencias de pull-up no son necesarias en el caso de que el teclado se conecte a puertos con pull-up interna (P1, P2 y P3). ”<br />Programa<br />#include <REG52.H>/*Biblioteca que contiene la declaracion de los Registros de Proposito General para el 8952 */<br />#include <stdio.h>/*Funciones I/O */<br />#include <string.h>/*Funciones de cadena*/<br />void delay_mili(int);<br />void check();<br />void deco_teclas();<br />void mem_display();<br />int set_num=1,band=0,i,selec_disp=1,rotar=0,n=0,retorna=1;<br />unsigned char Arreglo[4]={0,0,0,0};<br />unsigned char Columna[4]={0x10,0x20,0x40,0x80};<br />unsigned char Tabla1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xA2,0xB2};<br />main (void)<br />{<br />while(1)<br />{<br />mem_display();<br />    check();<br />    if (retorna==1)<br />{<br />        deco_teclas();<br />        }<br />}<br />}<br />void mem_display()<br />{<br />    P0 = Tabla1[n];<br />    delay_mili(10);<br />    <br />}<br />void check()<br />{<br />     if(rotar<4)<br />     {<br />          P3 = ~(Columna[rotar]);<br />          rotar++;<br />          retorna=1; <br />     }<br />     else<br />     {<br />      rotar=0;<br />  retorna=0;<br /> }<br />}<br />void deco_teclas()<br />{<br />     switch(P3)<br />     {<br />       case 0xB7: //Tecla 0<br />  if(set_num==1)<br />  {<br />   n = 0x00;<br />  }<br />  break;<br />          case 0x7B: //Tecla: 1<br />  if(set_num==1)<br />  {<br />   n = 0x01;<br />  }<br />  break;<br />  case 0xBB: //Tecla: 2<br />  if(set_num==1)<br />  {<br />   n = 0x02;<br />  }<br />  break;<br />          case 0xDB: //Tecla: 3<br />          if(set_num==1)<br />  {<br />   n = 0x03;<br />  }<br />  break;<br />          case 0x7D: //Tecla: 4<br />  if(set_num==1)<br />  {<br />   n = 0x04;<br />  }<br />  break;<br />          case 0xBD: //Tecla: 5<br />  if(set_num==1)<br />  {<br />   n = 0x05;<br />  }<br />  break;<br />          case 0xDD: //Tecla: 6<br />  if(set_num==1)<br />  {<br />   n = 0x06;<br />  }<br />  break;<br />          case 0x7E: //Tecla: 7<br />  if(set_num==1)<br />  {<br />   n = 0x07;<br />  }<br />      break;<br />          case 0xBE: //Tecla: 8<br />  if(set_num==1)<br />  {<br />   n = 0x08;<br />  }<br />  break;<br />          case 0xDE://Tecla: 9<br />  if(set_num==1)<br />  {<br />   n = 0x09;<br />  }<br />  break;<br />          case 0xD7://Tecla #<br />  if(set_num==1)<br />  {<br />   n = 0x09 + 1;<br />  }<br />  break;<br />          case 0x77://Tecla *<br />  if(set_num==1)<br />  {<br />   n = 0x09 + 2;<br />  }<br />  break;<br /> <br />}<br />}<br />void delay_mili(int tiempo)<br />{<br />unsigned int i,t;<br />while(tiempo)<br />{<br />for(i=1;i<=82;i++)<br />{<br />t++;<br />}<br />tiempo--;<br />}<br />}<br />
Tecladomatricial
Tecladomatricial
Tecladomatricial
Tecladomatricial
Tecladomatricial
Tecladomatricial
Tecladomatricial
Tecladomatricial

Más contenido relacionado

La actualidad más candente

Líneas+de+código
Líneas+de+códigoLíneas+de+código
Líneas+de+códigoUCAM
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlJose Selman
 
Corrección evaluación periódica unificada
Corrección evaluación periódica unificadaCorrección evaluación periódica unificada
Corrección evaluación periódica unificadaCbazttyan Rojas
 
Enunciados De Puertas LóGicas
Enunciados De Puertas LóGicasEnunciados De Puertas LóGicas
Enunciados De Puertas LóGicasIreneFdC
 
Problemas propuesto 1 al12
Problemas propuesto 1 al12Problemas propuesto 1 al12
Problemas propuesto 1 al12YO Por Que
 
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexores
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexoresElectrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexores
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexoresSANTIAGO PABLO ALBERTO
 
Fundamentos de Electrónica Digital
Fundamentos de Electrónica DigitalFundamentos de Electrónica Digital
Fundamentos de Electrónica DigitalAngeleins
 
Gabrielgonzalez
GabrielgonzalezGabrielgonzalez
Gabrielgonzalezgabrieling
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScripttovi27
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesAbrirllave
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
Practica calificada
Practica calificadaPractica calificada
Practica calificadaYO Por Que
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos cCarlos
 
Expo_Int
Expo_IntExpo_Int
Expo_IntRogDer
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFresyMetal
 

La actualidad más candente (20)

Líneas+de+código
Líneas+de+códigoLíneas+de+código
Líneas+de+código
 
If
IfIf
If
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
3.tercer ejercicio emu8086
3.tercer ejercicio emu80863.tercer ejercicio emu8086
3.tercer ejercicio emu8086
 
Manual
ManualManual
Manual
 
5.quinto ejercicio emu8086
5.quinto ejercicio emu80865.quinto ejercicio emu8086
5.quinto ejercicio emu8086
 
Problemas condicionales
Problemas condicionalesProblemas condicionales
Problemas condicionales
 
Corrección evaluación periódica unificada
Corrección evaluación periódica unificadaCorrección evaluación periódica unificada
Corrección evaluación periódica unificada
 
Enunciados De Puertas LóGicas
Enunciados De Puertas LóGicasEnunciados De Puertas LóGicas
Enunciados De Puertas LóGicas
 
Problemas propuesto 1 al12
Problemas propuesto 1 al12Problemas propuesto 1 al12
Problemas propuesto 1 al12
 
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexores
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexoresElectrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexores
Electrónica digital: Capitulo 5 circuitos MSI: multiplexores y demultiplexores
 
Fundamentos de Electrónica Digital
Fundamentos de Electrónica DigitalFundamentos de Electrónica Digital
Fundamentos de Electrónica Digital
 
Gabrielgonzalez
GabrielgonzalezGabrielgonzalez
Gabrielgonzalez
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScript
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Practica calificada
Practica calificadaPractica calificada
Practica calificada
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Expo_Int
Expo_IntExpo_Int
Expo_Int
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.com
 

Destacado

Ativ 2 1-apres_projeto_ailtonjoselemos
Ativ 2 1-apres_projeto_ailtonjoselemosAtiv 2 1-apres_projeto_ailtonjoselemos
Ativ 2 1-apres_projeto_ailtonjoselemosAilton Jose Lemos
 
地形と地下地質から復元した古環境
地形と地下地質から復元した古環境地形と地下地質から復元した古環境
地形と地下地質から復元した古環境Archaeo-GIS Workshop
 
Personal Coach Stress Management
Personal Coach Stress ManagementPersonal Coach Stress Management
Personal Coach Stress ManagementAndrea Palma Silva
 
Tecnologia coreana
Tecnologia  coreanaTecnologia  coreana
Tecnologia coreanamaria emilia
 
Presentatie unilin, KGIGROEP 2011
Presentatie unilin, KGIGROEP 2011Presentatie unilin, KGIGROEP 2011
Presentatie unilin, KGIGROEP 2011Quietroom Label
 
Enfermedad Glomerular
Enfermedad GlomerularEnfermedad Glomerular
Enfermedad Glomerularguested2b0d8
 
Apresentação linguagem comunicação digital 1
Apresentação linguagem comunicação digital 1Apresentação linguagem comunicação digital 1
Apresentação linguagem comunicação digital 1rodrigo martins
 
Comunicação individual
Comunicação individual Comunicação individual
Comunicação individual Luiz Antônio
 
Envio e configuração da carta de correção eletrônica
Envio e configuração da carta de correção eletrônicaEnvio e configuração da carta de correção eletrônica
Envio e configuração da carta de correção eletrônicaJairo G. Silva
 
Previous papers tet-tet-paperiisocial
Previous papers tet-tet-paperiisocialPrevious papers tet-tet-paperiisocial
Previous papers tet-tet-paperiisocialVamshi Krishna
 
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...Fundacion Vivir Saludablemente
 
10XMLM bemutató
10XMLM bemutató10XMLM bemutató
10XMLM bemutatóTommas01
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26gongwujugongwuju
 

Destacado (20)

Ativ 2 1-apres_projeto_ailtonjoselemos
Ativ 2 1-apres_projeto_ailtonjoselemosAtiv 2 1-apres_projeto_ailtonjoselemos
Ativ 2 1-apres_projeto_ailtonjoselemos
 
地形と地下地質から復元した古環境
地形と地下地質から復元した古環境地形と地下地質から復元した古環境
地形と地下地質から復元した古環境
 
飢餓300
飢餓300飢餓300
飢餓300
 
Ejercicio diapositivas
Ejercicio diapositivasEjercicio diapositivas
Ejercicio diapositivas
 
Personal Coach Stress Management
Personal Coach Stress ManagementPersonal Coach Stress Management
Personal Coach Stress Management
 
Tecnologia coreana
Tecnologia  coreanaTecnologia  coreana
Tecnologia coreana
 
Presentatie unilin, KGIGROEP 2011
Presentatie unilin, KGIGROEP 2011Presentatie unilin, KGIGROEP 2011
Presentatie unilin, KGIGROEP 2011
 
Enfermedad Glomerular
Enfermedad GlomerularEnfermedad Glomerular
Enfermedad Glomerular
 
Ativ 3 1socializa2-pitec
Ativ 3 1socializa2-pitecAtiv 3 1socializa2-pitec
Ativ 3 1socializa2-pitec
 
Apresentação linguagem comunicação digital 1
Apresentação linguagem comunicação digital 1Apresentação linguagem comunicação digital 1
Apresentação linguagem comunicação digital 1
 
Quebradas (aula 02 de abril 2013) pos-aula
Quebradas   (aula 02 de abril 2013) pos-aulaQuebradas   (aula 02 de abril 2013) pos-aula
Quebradas (aula 02 de abril 2013) pos-aula
 
Comunicação individual
Comunicação individual Comunicação individual
Comunicação individual
 
Envio e configuração da carta de correção eletrônica
Envio e configuração da carta de correção eletrônicaEnvio e configuração da carta de correção eletrônica
Envio e configuração da carta de correção eletrônica
 
Previous papers tet-tet-paperiisocial
Previous papers tet-tet-paperiisocialPrevious papers tet-tet-paperiisocial
Previous papers tet-tet-paperiisocial
 
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...
El abrazo en el Tango con sistema Tangobica.Uso y efectos en la Salud y Biene...
 
10XMLM bemutató
10XMLM bemutató10XMLM bemutató
10XMLM bemutató
 
Cead atividade
Cead   atividadeCead   atividade
Cead atividade
 
Quebradas (aula 26 de março 2013)
Quebradas   (aula 26 de março 2013)Quebradas   (aula 26 de março 2013)
Quebradas (aula 26 de março 2013)
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26
 
Curriculum oficial
Curriculum   oficialCurriculum   oficial
Curriculum oficial
 

Similar a Tecladomatricial

Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioSANTIAGO PABLO ALBERTO
 
DDAA FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)
DDAA   FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)DDAA   FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)
DDAA FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)Fernando Marcos Marcos
 
Arduino uno 2 estudiantes
Arduino uno 2 estudiantesArduino uno 2 estudiantes
Arduino uno 2 estudiantesCiraBringas2
 
PRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoPRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoLuis Leandro Carlo
 
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...Fernando Marcos Marcos
 
53692670 arduino-programacion
53692670 arduino-programacion53692670 arduino-programacion
53692670 arduino-programacionCesar Castelo
 
Arreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionalesArreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionalesMarco Garay
 
Teclado matricial - sistemas empotraddos
Teclado matricial - sistemas empotraddosTeclado matricial - sistemas empotraddos
Teclado matricial - sistemas empotraddosjoseManuel308081
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PFernando Marcos Marcos
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Evelyn Anayansi
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificadorEver Omar Nolasco
 

Similar a Tecladomatricial (20)

Equipo7 Arduino
Equipo7 ArduinoEquipo7 Arduino
Equipo7 Arduino
 
Arduino: Teclado matricial
Arduino: Teclado matricialArduino: Teclado matricial
Arduino: Teclado matricial
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
 
Arduino Basico.pptx
Arduino Basico.pptxArduino Basico.pptx
Arduino Basico.pptx
 
Matrices
MatricesMatrices
Matrices
 
Proyecto3
Proyecto3Proyecto3
Proyecto3
 
Microcontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR StudioMicrocontroladores: Introducción al AVR Studio
Microcontroladores: Introducción al AVR Studio
 
DDAA FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)
DDAA   FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)DDAA   FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)
DDAA FPGA - Unidad Aritmetica Logica (Procesador de Numeros Enteros y Logicos)
 
Arduino: Teclado matricial
Arduino: Teclado matricialArduino: Teclado matricial
Arduino: Teclado matricial
 
Arduino uno 2 estudiantes
Arduino uno 2 estudiantesArduino uno 2 estudiantes
Arduino uno 2 estudiantes
 
PRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduinoPRIMER Proyecto alarma arduino
PRIMER Proyecto alarma arduino
 
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
 
53692670 arduino-programacion
53692670 arduino-programacion53692670 arduino-programacion
53692670 arduino-programacion
 
Computacion v studio 2010 - 02
Computacion   v studio 2010 - 02Computacion   v studio 2010 - 02
Computacion v studio 2010 - 02
 
Arreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionalesArreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionales
 
Teclado matricial - sistemas empotraddos
Teclado matricial - sistemas empotraddosTeclado matricial - sistemas empotraddos
Teclado matricial - sistemas empotraddos
 
Cerradura Electrónica
Cerradura ElectrónicaCerradura Electrónica
Cerradura Electrónica
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador
 

Tecladomatricial

  • 1. Universidad de Guadalajara<br />Centro Universitario de Ciencias e Ingeniería<br />Departamento de Electrónica<br />Taller de Sistemas Digitales III<br />ET214<br />Practica #3<br />Teclado matricial<br />Objetivo:crear un programa que muestre los números del 0 al 9 por medio de un teclado matricial hacia un display de 7 segmentos<br />Aguayo Adame Gilberto<br />Codigo:399392827 <br />Carrera: cel<br />Para realizar esta pequeña aplicación utilizamos un teclado matricial de 4 x 4, es decir de cuatro filas y cuatro columnas, que nos da un total de 16 teclas, para manipular el teclado mediante el microcontrolador es necesario tener líneas de entrada y líneas de salida, en este caso las líneas de entrada están conectadas a las filas, y las líneas de salida están conectadas a las columnas. <br />Para que el teclado funcione hay que activar las columnas de manera alternada, después de activar una de las columnas hay que verificar si se ha activado alguna de las filas, el que una de las filas esté activada implica que una de las teclas ha sido presionada y si una de las teclas ha sido presionada hay que determinar qué tecla fue, la tecla presionada corresponde a la intersección de la columna activada y la fila activada, en el caso de que ninguna de las filas esté activa se asume que ninguna tecla de la columna activada fue presionada, por lo que se procede a activar una columna diferente.<br />  <br />DESCRIPCIÓN: <br />La mayoría de los teclados se leen por una técnica de exploración consistente en ir leyendo consecutivamente las filas o las columnas de éste. Hay circuitos especializados en esta tarea, pero es fácil hacer que un microcontrolador lea estos teclados matriciales (los ordenadores compatibles PC incluyen un pequeño microcontrolador que hace esta tarea y envía las teclas pulsadas a la unidad central). La disposición en matriz de los teclados responde a la necesidad de leer gran cantidad de conmutadores con pocas líneas de entrada, piénsese en que si se necesitase una línea por cada tecla del teclado de un PC, serían necesarios más de 100 líneas. El esquema muestra un esquema de un típico teclado matricial 4x4 y la conexión directa a un puerto del microcontrolador. Las resistencias de pull-up no son necesarias en el caso de que el teclado se conecte a puertos con pull-up interna (P1, P2 y P3). ”<br />Programa<br />#include <REG52.H>/*Biblioteca que contiene la declaracion de los Registros de Proposito General para el 8952 */<br />#include <stdio.h>/*Funciones I/O */<br />#include <string.h>/*Funciones de cadena*/<br />void delay_mili(int);<br />void check();<br />void deco_teclas();<br />void mem_display();<br />int set_num=1,band=0,i,selec_disp=1,rotar=0,n=0,retorna=1;<br />unsigned char Arreglo[4]={0,0,0,0};<br />unsigned char Columna[4]={0x10,0x20,0x40,0x80};<br />unsigned char Tabla1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xA2,0xB2};<br />main (void)<br />{<br />while(1)<br />{<br />mem_display();<br /> check();<br /> if (retorna==1)<br />{<br /> deco_teclas();<br /> }<br />}<br />}<br />void mem_display()<br />{<br /> P0 = Tabla1[n];<br /> delay_mili(10);<br /> <br />}<br />void check()<br />{<br /> if(rotar<4)<br /> {<br /> P3 = ~(Columna[rotar]);<br /> rotar++;<br /> retorna=1; <br /> }<br /> else<br /> {<br /> rotar=0;<br /> retorna=0;<br /> }<br />}<br />void deco_teclas()<br />{<br /> switch(P3)<br /> {<br /> case 0xB7: //Tecla 0<br /> if(set_num==1)<br /> {<br /> n = 0x00;<br /> }<br /> break;<br /> case 0x7B: //Tecla: 1<br /> if(set_num==1)<br /> {<br /> n = 0x01;<br /> }<br /> break;<br /> case 0xBB: //Tecla: 2<br /> if(set_num==1)<br /> {<br /> n = 0x02;<br /> }<br /> break;<br /> case 0xDB: //Tecla: 3<br /> if(set_num==1)<br /> {<br /> n = 0x03;<br /> }<br /> break;<br /> case 0x7D: //Tecla: 4<br /> if(set_num==1)<br /> {<br /> n = 0x04;<br /> }<br /> break;<br /> case 0xBD: //Tecla: 5<br /> if(set_num==1)<br /> {<br /> n = 0x05;<br /> }<br /> break;<br /> case 0xDD: //Tecla: 6<br /> if(set_num==1)<br /> {<br /> n = 0x06;<br /> }<br /> break;<br /> case 0x7E: //Tecla: 7<br /> if(set_num==1)<br /> {<br /> n = 0x07;<br /> }<br /> break;<br /> case 0xBE: //Tecla: 8<br /> if(set_num==1)<br /> {<br /> n = 0x08;<br /> }<br /> break;<br /> case 0xDE://Tecla: 9<br /> if(set_num==1)<br /> {<br /> n = 0x09;<br /> }<br /> break;<br /> case 0xD7://Tecla #<br /> if(set_num==1)<br /> {<br /> n = 0x09 + 1;<br /> }<br /> break;<br /> case 0x77://Tecla *<br /> if(set_num==1)<br /> {<br /> n = 0x09 + 2;<br /> }<br /> break;<br /> <br />}<br />}<br />void delay_mili(int tiempo)<br />{<br />unsigned int i,t;<br />while(tiempo)<br />{<br />for(i=1;i<=82;i++)<br />{<br />t++;<br />}<br />tiempo--;<br />}<br />}<br />