Sunteți pe pagina 1din 3

Lectura de un teclado matricial 4x4 con el PIC16F877A

Descripcin: Tutorial para leer un teclado matricial 4x4 conectado al puerto B y visualizar en un display 7 segmento conectado al puerto A.
Diagrama de conexin

Materiales

1 Display 7 segmentos 1 Resistencia de ! "#ms 1 Resistencia de 1!$ "#ms 1 Resistencia de 1!! "#ms 1 %us# Button normalmente a&ierto 1 'apacitor electrol(tico de 47!u) a 1*v + 'apacitor cer,mico ++p) 1 'rystal cuarzo 4-.z 1 -icrocontrolador %/'1*)077 %rogramador %/' 12B -ini%/'

Introduccin

3l microcontrolador %/'1*)077 cuenta con diversos puertos de entrada4salida denominados como A5 B5 '5 D y 3. 3l puerto ' tiene 0 l(neas &idireccionales disponi&les 6R'!5 R'15 R'n5 #asta R'775 8ue pueden ser usadas independientemente. 3l TR/2 ' es el registro de control asociado al puerto '5 un 1 en el Bit 9x: del registro TR/2 ' indica 8ue ser, usado como entrada la l(nea asociada del %uerto. 1n ! en el &it 9x: de TR/2 indica 8ue ser, usado como salida.

%odemos escri&ir de tres ;ormas so&re el TR/2 9x:: set_tris_x !x!a"# set_tris_x !'!!!!1!1!"# set_tris_x 1!"# $$ Con%iguracion en &exadecimal $$ Con%iguracion en (inario $$ Con%iguiracion en Decimal

Despues de #a&er con;igurado el TR/2 pasamos al registro de control %"RT 9x:5 este controla la salida o lectura del puerto asociado al registro TR/25 en este registro se escri&e de igual manera 8ue en el TR/2 pero al escri&ir un 1 indicamos un nivel alto en la salida asociada del %uerto y un ! indica 8ue el pin esta en nivel &a<o.

out)ut_x !x!a"# out)ut_x !'!!!!1!1!"# out)ut_x 1!"#

$$ (it 1 * + en ni,el alto- los dem.s en 'a/o $$ (it 1 * + en ni,el alto- los dem.s en 'a/o $$ (it 1 * + en ni,el alto- los dem.s en 'a/o

0eclado Matricial 4x4

1n teclado matricial es un arreglo de &otones conectados en ;ilas y columnas5 de tal manera 8ue se pueden leer varios &otones con el m(nimo n=mero de entradas re8ueridas. 1n teclado matricial 4>4 solamente ocupa 4 l(neas de un puerto para leer las ;ilas y otras 4 l(neas para las columnas5 de este modo se pueden leer 1* teclas utilizando solamente 0 entradas 6un solo puerto7 de un microcontrolador. 3l ;uncionamiento &,sico del teclado matricial consiste en rastrear la unin entre una ;ila y una columna5 mediante un algoritmo 8ue desci;ra cual tecla ;ue presionada.

Codigo en C CC1_PC2 344114 " $5 6l siguiente cdigo es li're )ara uso )ersonal * es o%recido sin ninguna garant7a4 Mini8o'ot se reser,a todos los derec9os * no se 9ace res)onsa'le )or el uso :ue a este codigo se le d;4 Puedes modi%icarlo- co)iarlo- distri'uirlo- solo te )edimos :ue mantengas este enca'e<ado )ara res)etar los derec9os de autor4 Att= Mini8o'ot4 5$ >include ?16%87749@ $$Arc9i,o de de%iniciones del MCA >FA161 BCD6(AD $$De'ugger Mode E Desacti,ado >FA161 BCL3P $$LoFE3oltage Programming E Desacti,ado >FA161 BC(8C2BCA0 $$(roFnEout 8eset E Desacti,ado >FA161 BCCPD $$Data 66 Memor* Code Protection E Desacti,ado >FA161 BCP8C06C0 $$Program Memor* 2rite Protected E Desacti,ado >FA161 PA0 $$PoFer A) 0imer E Acti,ado >FA161 BC2D0 $$2atc9Dog0imer E Desacti,ado >FA161 G0 $$Cscillator ?H 4 M9< >FA161 BC280 $$Flas9 Program Memor* 2rite E Desacti,ado >use dela* clocIH4!!!!!!" $$Frecuencia del cristal )ara el c.lculo de los retardos >de%ine use_)ort'_I'd 08A6 $$&a'ilitamos la lectura del 0eclado )or el Puerto ( >include ?J(D4x44c@ $$Li'reria )ara el mane/o del teclado >de%ine Ano !'11111!!1 >de%ine Dos !'1!1!!1!! >de%ine 0res !'!!11!!!! >de%ine CarA !'!!!!1!!! >de%ine Cuatro !'!!!11!!1 >de%ine Cinco !'!!!1!!1! >de%ine 1eis !'!!!!!!1! >de%ine Car( !'!!!!!!11 >de%ine 1iete !'!1111!!! >de%ine Cc9o !'!!!!!!!! >de%ine Bue,e !'!!!11!!! >de%ine CarC !'!1!!!11! >de%ine Asterisco !'!!11!11! >de%ine Cero !'11!!!!!! >de%ine Bumeral !'!!!!1!!1 >de%ine CarD !'!!1!!!!1 ,oid Con%igura " K $$Con%igura el microcontrolador )ara el 9ardFare I'd_init "# $$Funcion )ara iniciali<ar el uso del teclado

)ort_'_)ullu)s 08A6"# $$&a'ilita las 8esistecias PullEu) del Puerto ( out)ut_c !x!!"# $$Lim)ia el )uerto C set_tris_c !x!!"# $$Puerto C como salidas L ,oid main " K $$Programa )rinci)al c9ar C# $$Declaracion de la 3aria'le MCN de ti)o c9ar Con%igura "# $$Llama ala %uncion Con%igura F9ile 08A6" K C H I'd_getc "# $$6scanea * regresa el ,alor de la tecla )resionada- si ninguna tecla es )resionada regresa un ,alor nulo OP sFitc9 C " K $$1elecciona * saca el ,alor de la tecla )resionada case Q!Q= out)ut_c 'reaI# case Q1Q= out)ut_c 'reaI# case QRQ= out)ut_c 'reaI# case Q+Q= out)ut_c 'reaI# case QAQ= out)ut_c case Q4Q= out)ut_c case QSQ= out)ut_c case Q6Q= out)ut_c case Q(Q= out)ut_c case Q7Q= out)ut_c case Q8Q= out)ut_c case QTQ= out)ut_c case QCQ= out)ut_c case Q5Q= out)ut_c case Q>Q= out)ut_c case QDQ= out)ut_c de%ault= 'reaI#L Cero"# Ano"# Dos"# 0res"# CarA"# 'reaI# Cuatro"# 'reaI# Cinco"# 'reaI# 1eis"# 'reaI# Car("# 'reaI# 1iete"# 'reaI# Cc9o"# 'reaI# Bue,e"# 'reaI# CarC"# 'reaI# Asterisco"# 'reaI# Bumeral"# 'reaI# CarD"# 'reaI#

L L $$Fin Programa )rinci)al

Detalles del Codigo en C #DEFINE ID CAD6BA De;ine es una directiva 8ue se utiliza simplemente para reemplazar el /denti;icador 9/D: con 9'AD3?A: >de%ine D6 !'!!11!11! out)ut_c CarA" EE@ 6s lo mismo :ue EE@ out)ut_c !'!!!!1!!!" )ort_'_)ullu)s " 3sta ;uncin #a&ilita o des#a&ilita las resistencias de %ull@up en las entradas del puerto B.

6/em)lo= portA&Apullups6TR137B 44.a&ilita portA&Apullups6)AC237B 44Desa&ilita

S-ar putea să vă placă și