Está en la página 1de 4

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"# $$ Con%guracion en &exadecimal
set_tris_x !'!!!!1!1!"# $$ Con%guracion en (inario
set_tris_x 1!"# $$ Con%guiracion en Decimal

Despues de #a&er con<gurado 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"# $$ (it 1 * + en ni,el alto- los dem.s en 'a/o
out)ut_x !'!!!!1!1!"# $$ (it 1 * + en ni,el alto- los dem.s en 'a/o
out)ut_x 1!"# $$ (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 <las 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 <las 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 <la 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 o7recido sin ninguna garant8a4 Mini9o'ot se
reser,a todos los derec:os * no se :ace res)onsa'le )or el uso ;ue a este codigo se le d<4 Puedes
modi%carlo- co)iarlo- distri'uirlo- solo te )edimos ;ue mantengas este enca'e=ado )ara res)etar los
derec:os de autor4 Att> Mini9o'ot4 5$

?include @1678774:A $$Arc:i,o de de%niciones del MCB

?FB161 CDD6(BE $$De'ugger Mode F Desacti,ado
?FB161 CDL3P $$LoGF3oltage Programming F Desacti,ado
?FB161 CD(9D2CDB0 $$(roGnFout 9eset F Desacti,ado
?FB161 CDCPD $$Data 66 Memor* Code Protection F Desacti,ado
?FB161 CDP9D06C0 $$Program Memor* 2rite Protected F Desacti,ado
?FB161 PB0 $$PoGer B) 0imer F Acti,ado
?FB161 CD2D0 $$2atc:Dog0imer F Desacti,ado
?FB161 H0 $$Dscillator @I 4 M:=
?FB161 CD290 $$Flas: Program Memor* 2rite F Desacti,ado

?use dela*clocJI4!!!!!!" $$Frecuencia del cristal )ara el c.lculo de los retardos

?de%ne use_)ort'_J'd 09B6 $$&a'ilitamos la lectura del 0eclado )or el Puerto (
?include @K(D4x44cA $$Li'reria )ara el mane/o del teclado

?de%ne Bno !'11111!!1
?de%ne Dos !'1!1!!1!!
?de%ne 0res !'!!11!!!!
?de%ne CarA !'!!!!1!!!
?de%ne Cuatro !'!!!11!!1
?de%ne Cinco !'!!!1!!1!
?de%ne 1eis !'!!!!!!1!
?de%ne Car( !'!!!!!!11
?de%ne 1iete !'!1111!!!
?de%ne Dc:o !'!!!!!!!!
?de%ne Cue,e !'!!!11!!!
?de%ne CarC !'!1!!!11!
?de%ne Asterisco !'!!11!11!
?de%ne Cero !'11!!!!!!
?de%ne Cumeral !'!!!!1!!1
?de%ne CarD !'!!1!!!!1

,oid Con%gura" L $$Con%gura el microcontrolador )ara el :ardGare
J'd_init"# $$Funcion )ara iniciali=ar el uso del teclado
)ort_'_)ullu)s09B6"# $$&a'ilita las 9esistecias PullFu) del Puerto (
out)ut_c!x!!"# $$Lim)ia el )uerto C
set_tris_c!x!!"# $$Puerto C como salidas
M
,oid main" L $$Programa )rinci)al
c:ar C# $$Declaracion de la 3aria'le NCO de ti)o c:ar
Con%gura"# $$Llama ala 7uncion Con%gura
G:ile09B6" L
C I J'd_getc"# $$6scanea * regresa el ,alor de la tecla )resionada- si ninguna tecla es )resionada
regresa un ,alor nulo PQ
sGitc: C " L $$1elecciona * saca el ,alor de la tecla )resionada

case R!R>
out)ut_cCero"#
'reaJ#
case R1R>
out)ut_cBno"#
'reaJ#
case RSR>
out)ut_cDos"#
'reaJ#
case R+R>
out)ut_c0res"#
'reaJ#
case RAR>
out)ut_cCarA"# 'reaJ#
case R4R>
out)ut_cCuatro"# 'reaJ#
case RTR>
out)ut_cCinco"# 'reaJ#
case R6R>
out)ut_c1eis"# 'reaJ#
case R(R>
out)ut_cCar("# 'reaJ#
case R7R>
out)ut_c1iete"# 'reaJ#
case R8R>
out)ut_cDc:o"# 'reaJ#
case RUR>
out)ut_cCue,e"# 'reaJ#
case RCR>
out)ut_cCarC"# 'reaJ#
case R5R>
out)ut_cAsterisco"# 'reaJ#
case R?R>
out)ut_cCumeral"# 'reaJ#
case RDR>
out)ut_cCarD"# 'reaJ#
de7ault>
'reaJ#M
M
M $$Fin Programa )rinci)al


Detalles del Codigo en C

#DEFINE ID CAD6CA
De<ne es una directiva 8ue se utiliza simplemente para reemplazar el /denti<cador 9/D: con 9'AD3@A:
?de%ne D6 !'!!11!11!
out)ut_cCarA" FFA 6s lo mismo ;ue FFA out)ut_c!'!!!!1!!!"

)ort_'_)ullu)s "
3sta ;uncin #a&ilita o des#a&ilita las resistencias de %ullAup en las entradas del puerto B.

6/em)lo>
portB&Bpullups6TR137C 44.a&ilita
portB&Bpullups6)AD237C 44Desa&ilita

También podría gustarte