matricial con eliminacin de rebote. Utilizar las pantallas matriciales LCD combinadas con teclados para el diseo de interfases de usuario avanzadas. Conocer y dominar las tcnicas de multiplea!e de m"ltiples teclas. #acer uso de perifricos eternos con re$uerimientos cr%ticos de temporizacin. Controlar perifricos eternos inteli&entes' realizando las operaciones de bus por medio de soft(are. Utilizar tcnicas de pro&ramacin estructurada en pro&ramas de m"ltiples mdulos de cdi&o fuente. #acer uso de macros para el diseo de estructuras de cdi&o repetitivas. Computadora personal con puerto paralelo' sistema operativo )indo(s *+' soft(are ,+L-. y )in+ic/00. Tar!eta de entrenamiento C+1+2C/33 41.0 51. +ro&ramador 6T1C-.10+27 48. 9uente de poder de 184 con borne redondo de :mm. Cable de cinta plana de 8/ pines con conector para breadboard. .readboard. Display LCD de 1; caracteres por 8 columnas <basado en #D==3/0>. / resistencias limitadoras de ??0 . Teclado matricial de ==. +otencimetro de 1@ . Cable UT+ cate&or%a :. Microcontroladores. Gua 3 9acultad: 2n&enier%a 6scuela: 6lectrnica -si&natura: ,icrocontroladores Lu&ar de e!ecucin: Laboratorio de microprocesadores' 6dif. ? 6lectrnica. Ab!etivo &eneral Ab!etivos espec%ficos ,ateriales y e$uipo 8 1. Construya el circuito $ue se le presenta en la fi&ura 1. DicBo circuito se conectarC a la tar!eta de entrenamiento con el dia&rama de pines $ue aparece en la fi&ura 8. 9i&ura 1 D Dia&rama de conein para el circuito en la breadboard. Figura 2 Organizacin de los pines de I/O de la tarjeta entrenadora. Microcontroladores. Gua 3 +rocedimiento ? +in 9uncin +in 9uncin 1 E7D / D1 8 4CC F D8 ? 4o 10 D? = 5G 11 D= : 5H) 18 D: ; 6 1? D; 3 D0 1= D3 Tabla 1 D Ar&anizacin de los pines en la pantalla LCD. 8. Una vez ensamblado el circuito' conecte el cable plano a la tar!eta entrenadora. Golicite a su instructor de laboratorio $ue verifi$ue su circuito <el circuito se encenderC mCs adelante>. ?. - continuacin e!ecute el pro&rama ,+L-.. 5epita los pasos de la &u%a I1 para crear un nuevo proyecto con el +2C1;9/33. =. -&re&ue un nuevo arcBivo de cdi&o fuente llamado J+rincipal.asmK <no olvide a&re&ar la etensin .asm cuando lo &uarde>. L copie el si&uiente pro&rama en el arcBivo. ;Programa de ejemplo para utilizacin de display LCD basado en HD44780 y ;teclado matricial con eliminacion de rebote list p!"#877 ;De#inicin del microcontrolador a usar $include %p!"#877&inc' ;Cabecera (ue de#ine los registros del )C* ;+its de con#iguracin del )C* c#g! e(u ,CP,-.. / ,D0+*1,-.. / ,234,056+L0,-.. / ,CPD,-.. / ,L7P,-5 c#g8 e(u ,+-D05,-.. / ,P2340,-5 / ,2D4,-.. / ,94,-:C ,,con#ig c#g! / c#g8 ;Declaracion de #unciones e;ternas< e;tern =nicializar,LCD e;tern 0scribir,Dato,LCD e;tern 0scribir,Cmd,LCD ;Declaracion de #unciones compartidas< global 3etardo ;Declaracion de constantes :el.ila0 e(u 0;!0 ;:eleccion de #ila 0 del teclado >3+0? :el.ila! e(u 0;!D ;:eleccion de #ila ! del teclado >3+!? :el.ila8 e(u 0;!+ ;:eleccion de #ila 8 del teclado >3+8? :el.ila@ e(u 0;0. ;:eleccion de #ila @ del teclado >3+4? ;Declaracion de datos en memoria )is,7ariables udata Conteo3etardo res ! ;7ariable (ue guarda el conteo de retardo Microcontroladores. Gua 3 = 7alor.ila0 res ! ;7ariables (ue almacenan el estado anterior de todo 7alor.ila! res ! ;el teclado 7alor.ila8 res ! 7alor.ila@ res ! ;Declaracion de macro para reAisar teclas indiAiduales ;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ;0sta macro genera codigo automatico para la reAision de una tecla ;indiAidual& ;6rgumentos< ; B .uncion< 0s la #uncion (ue se llama cuando se presiona la tecla& ; B 7alor< es el argumento con el (ue se llama la #uncion& ; B +it< es el numero de bit dentro del puerto con (ue se lee toda la ; #ila >P-346?& ; B 7alor.ila< 0s la Aariable con el Aalor anterior de toda la #ila& 3eAisar4ecla macro .uncionC 7alorC +itC 7alor.ila moAlD 7alor ;Carga el Aalor con (ue se llama la #uncion bt#ss P-346C +it ;7eri#ica si la tecla esta presionada goto EF@ ;:i esta presionadaC salta al #inal bt#ss 7alor.ilaC +it ;7eri#icia si estuAo presionada antes call .uncion ;:i #ue asiC recien se solto y enAia el carac& endm P3-1! code ;La seccin GP3-1!G de#ine a la pHgina 0 en el arcIiAo &LJ3 ; ;3utina principal ;BBBBBBBBBBBBBBBB ;0sta rutina se encuentra en la direccion 0;00000 >Aector de arran(ue? clr# P-34+ ;:e coloca el Aalor de los puertos a 0 antes de clr# P-34C ;establecerlos como salida clr# P-340 bs# :464*:C 3P0 ;:e selecciona el banco ! moAlD 0;0" ;:e establecen los canales del 6DC en modo digital moAD# 6DC-5! moAlD 0;0. ;P-346 se encarga de leer las #ilas del teclado moAD# 43=:6 moAlD 0;.. ;3+0C 3+!C 3+8 y 3+4 >5ota< se omite 3+@? controlan moAD# 43=:+ ;las #ilas del teclado >se dejan todos abiertas? bc# -P4=-5,301C 5-4,3+P* ;6ctiAa los pullBups del puerto + moAlD 0;.. ;4odo el P-34C se usa para datos desdeKIacia la LCD moAD# 43=:C ;>inicialmente como entrada? clr# 43=:0 ;P-340 se usa para las lineas de control de la LCD bc# :464*:C 3P0 ;:elecciona el banco 0 nueAamente Microcontroladores. Gua 3 : call =nicializar,LCD ;Procede a inicializar la LCD moAlD 0;0. moAD# 7alor.ila0 moAD# 7alor.ila! moAD# 7alor.ila8 moAD# 7alor.ila@ 3utina< ;:e procede a rastrear el teclado ;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB bs# :464*:C 3P0 ;6ctiAa la #ila 0 moAlD :el.ila0 moAD# 43=:+ bc# :464*:C 3P0 ;Procede a reAisar las teclas de la #ila mediante macros< 3eAisar4ecla 0scribir,Dato,LCDC L0LC 0C 7alor.ila0 3eAisar4ecla 0scribir,Dato,LCDC L!LC !C 7alor.ila0 3eAisar4ecla 0scribir,Dato,LCDC L8LC 8C 7alor.ila0 3eAisar4ecla 0scribir,Dato,LCDC L@LC @C 7alor.ila0 moA# P-346C D ;4oma el dato de la #ila completa y lo guarda moAD# 7alor.ila0 bs# :464*:C 3P0 ;6ctiAa la #ila ! moAlD :el.ila! moAD# 43=:+ bc# :464*:C 3P0 ;3eAisa las teclas de la #ila mediante macros< 3eAisar4ecla 0scribir,Dato,LCDC L4LC 0C 7alor.ila! 3eAisar4ecla 0scribir,Dato,LCDC LMLC !C 7alor.ila! 3eAisar4ecla 0scribir,Dato,LCDC L"LC 8C 7alor.ila! 3eAisar4ecla 0scribir,Dato,LCDC L7LC @C 7alor.ila! moA# P-346C D ;4oma el dato de la #ila completa y lo guarda moAD# 7alor.ila! bs# :464*:C 3P0 ;6ctiAa la #ila 8 moAlD :el.ila8 moAD# 43=:+ bc# :464*:C 3P0 ;3eAisa las teclas de la #ila mediante macros< 3eAisar4ecla 0scribir,Dato,LCDC L8LC 0C 7alor.ila8 3eAisar4ecla 0scribir,Dato,LCDC LNLC !C 7alor.ila8 3eAisar4ecla 0scribir,Dato,LCDC LFLC 8C 7alor.ila8 3eAisar4ecla 0scribir,Dato,LCDC LBLC @C 7alor.ila8 moA# P-346C D ;4oma el dato de la #ila completa y lo guarda Microcontroladores. Gua 3 ; moAD# 7alor.ila8 bs# :464*:C 3P0 ;6ctiAa la #ila @ moAlD :el.ila@ moAD# 43=:+ bc# :464*:C 3P0 ;3eAisa las teclas de la #ila mediante macros< 3eAisar4ecla 0scribir,Dato,LCDC LLC 0C 7alor.ila@ 3eAisar4ecla 0scribir,Cmd,LCDC 0;80C !C 7alor.ila@ 3eAisar4ecla 0scribir,Cmd,LCDC 0;C0C 8C 7alor.ila@ 3eAisar4ecla 0scribir,Cmd,LCDC 0;0!C @C 7alor.ila@ moA# P-346C D ;4oma el dato de la #ila completa y lo guarda moAD# 7alor.ila@ moAlD dL!0L ;1enera un retardo de !0ms entre rastreos call 3etardo goto 3utina ;3epite el proceso de #orma continua ; ;3utina de retardo Aariable ;BBBBBBBBBBBBBBBBBBBBBBBBBB ;0sta rutina genera un retardo segun la cantidad de milisegundos indicada ;en el acumulador& :i el acumulador Aale 0C el retardo es de 8M"ms& 3etardo< moAD# Conteo3etardo ;1uarda la cuenta de milisegundos en memoria 5ueAo,3etardo< moAlD dL8M0L 3etardo,!ms< addlD BdL!L ;3esta uno a la cuenta en el acumulador B ! clocO bt#ss :464*:C P ;7eri#ica si la cuenta llego a cero B ! clocO goto 3etardo,!ms ;Continua iterando mientras no termina B 8 clocO ;Calculo para el retardo interno< ;4 4 ; 5umero de iteraciones ; =ntrucciones por iteracion ; BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ; #recuencia de oscilador ;4 4 ; 8M0 ; 4 ; BBBBBBBBBBB ; 4)Hz ;4 !ms dec#sz Conteo3etardoC # ;Decrementa la cuenta de milisegundos goto 5ueAo,3etardo ;)ientras no sea ceroC repite return ;Cuando llega a ceroC retorna end Listado 1 D Cdi&o fuente del pro&rama a implementar. Microcontroladores. Gua 3 3 :. -&re&ue un se&undo arcBivo de cdi&o fuente llamado JLCD.asmK y copie el si&uiente pro&rama. ;)odulo para manejo de pantalla LCD list p!"#877 ;De#inicin del microcontrolador a usar $include %p!"#877&inc' ;Cabecera (ue de#ine los registros del )C* ;Declaracion de #unciones e;ternas< e;tern 3etardo ;Declaracion de #unciones compartidas< global =nicializar,LCD global 0scribir,Dato,LCD global 0scribir,Cmd,LCD P4-,C43L e(u P-340 ;:e establece el puerto de control como puerrto 0 P4-,D64-: e(u P-34C ;:e establece el puerto de datos como P-34C P4-,D=3 e(u 43=:C ;:e establece el puerto de direccion como 43=:C LCD,0 e(u 0 ;Pin de Iabilitacion de la LCD en 300 LCD,32 e(u ! ;Pin de escritura de la LCD en 30! LCD,3: e(u 8 ;Pin de seleccion de registro de la LCD en 308 P3-10 code ; ;3utina de inicializacion de la LCD ;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB =nicializar,LCD< bc# P4-,C43LC LCD,0 ;-peracion de lecturaKescritura desactiAada bc# P4-,C43LC LCD,3: ;6ccede registro de comando bc# P4-,C43LC LCD,32 ;0stablece operacion de escritura moAlD dL80L ;0spera 80ms a (ue la LCD inicialice internamente call 3etardo bs# :464*:C 3P0 ;Cambia el puerto de datos a salida clr# P4-,D=3 bc# :464*:C 3P0 moAlD 0;@0 ;0stablece la inter#ase de la LCD a 8 bits moAD# P4-,D64-: bs# P4-,C43LC LCD,0 ;Pulsa el pin de Iabilitacion para enAiarlo bc# P4-,C43LC LCD,0 moAlD dLML ;0spera Mms a (ue la LCD procese el comando call 3etardo bs# P4-,C43LC LCD,0 ;Pulsa de nueAo el pin de Iabilitacion para bc# P4-,C43LC LCD,0 ;enAiar el comando nueAamente moAlD dL!L ;0spera aIora !ms a (ue la LCD lo procese call 3etardo Microcontroladores. Gua 3 / bs# P4-,C43LC LCD,0 ;Pulsa el pin de Iabilitacion por tercera Aez bc# P4-,C43LC LCD,0 ;6 partir de este momento la inter#ase de datos esta inicializada a ;modo de 8 bits y es posible usar transacciones normales de bus para ;terminar de con#igurar la LCD& moAlD 0;@C ;0stablece el modo de display a 8 lineas y call 0scribir,Cmd,LCD ;#uente de M;!0 moAlD 0;0. ;0nciende el displayC el cursor y el parpadeo call 0scribir,Cmd,LCD moAlD 0;0! ;Limpia el display call 0scribir,Cmd,LCD moAlD 0;" ;0stablece (ue el cursor incrementara Iacia la call 0scribir,Cmd,LCD ;derecIa y (ue se moAera solo el cursor >no la ;pantalla? al escribir caracteres& return ; ;3utina de escritura de caracteres a la LCD ;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ;0sta #uncion enAia el caracter pasado en el acumulador a la pantalla LCD 0scribir,Dato,LCD< moAD# P4-,D64-: ;Coloca el dato recibido en el acumulador en el ;latcI del puerto >aun si esta como entrada? call 0sperar,LCD ;0spera a (ue la LCD termine la ultima operacion bs# P4-,C43LC LCD,3: ;6ccede registro de datos bc# P4-,C43LC LCD,32 ;0stablece operacion de escritura bs# :464*:C 3P0 ;Cambia el puerto de datos a salida clr# P4-,D=3 bc# :464*:C 3P0 bs# P4-,C43LC LCD,0 ;Pulsa el pin de Iabilitacion para enAiar el dato bc# P4-,C43LC LCD,0 return ; ;3utina de escritura de comandos a la LCD ;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ;0sta #uncion enAia el comando pasado en el acumulador a la pantalla LCD 0scribir,Cmd,LCD< Microcontroladores. Gua 3 F moAD# P4-,D64-: ;Coloca el dato recibido en el acumulador en el ;latcI del puerto >aun si esta como entrada? call 0sperar,LCD ;0spera a (ue la LCD termine la ultima operacion bc# P4-,C43LC LCD,3: ;6ccede registro de comando bc# P4-,C43LC LCD,32 ;0stablece operacion de escritura bs# :464*:C 3P0 ;Cambia el puerto de datos a salida clr# P4-,D=3 bc# :464*:C 3P0 bs# P4-,C43LC LCD,0 ;Pulsa el pin de Iabilitacion para enAiar el dato bc# P4-,C43LC LCD,0 return ; ;3utina de espera de la LCD ;BBBBBBBBBBBBBBBBBBBBBBBBBB ;0sta #uncion Aeri#ica el estado de la LCD Iasta (ue la misma termina la ;operacion 0sperar,LCD< bs# :464*:C 3P0 ;Cambia el puerto de datos a entrada moAlD 0;.. moAD# P4-,D=3 bc# :464*:C 3P0 bc# P-340C LCD,3: ;6ccede registro de comando bs# P-340C LCD,32 ;0stablece operacion de lectura bs# P-340C LCD,0 ;Habilita la transaccion sobre la LCD Ciclo0speraLCD< bt#ss P4-,D64-:C 7 ;7eri#ica si la LCD ya termino la operacion goto .inCiclo0spera ;:e mantiene repitiendo mientras no termine bc# P-340C LCD,0 ;4ermina la transaccion en la LCD bs# P-340C LCD,0 ;=nicia otra transaccion inmediatamente goto Ciclo0speraLCD ;3epite el proceso de espera .inCiclo0spera< bc# P-340C LCD,0 ;4ermina la transaccion sobre la LCD return end Listado 8 D Cdi&o fuente de la librer%a a implementar. ;. -&re&ue el arcBivo de de &uin de enlace <linMer script>' si&uiendo los pasos realizados en la Eu%a I1. Microcontroladores. Gua 3 10 3. Compile el pro&rama y verifi$ue $ue no se &eneren errores. /. +repare el pro&ramador conectando primero la cincBa plana al "ltimo conector del etremo' a continuacin conecte el pro&ramador al puerto paralelo de su +C. +repare la tar!eta conectando el cable de poder a la misma y lue&o conectando la cincBa $ue viene del pro&ramador al conector amarillo. 9inalmente encienda la fuente. F. 6!ecute a continuacin el pro&rama )in+ic/00. -se&"rese de $ue estC ele&ido el pro&ramador J6TT1LA) 4++ 2CG+K en el puerto paralelo correcto. 6!ecute la rutina de deteccin automCtica de dispositivo para $ue el soft(are $uede confi&urado. 10. Car&ue el arcBivo .Be &enerado al compilar el pro&rama y descCr&uelo en el +2C. Una vez terminado' corrobore $ue el pro&rama fue pro&ramado correctamente con la rutina de comprobacin del )in+ic/00. 11. -!uste el potencimetro de tal forma $ue se visualice correctamente la ima&en de la pantalla. 6l contraste correcto se da cuando desaparecen los cuadros ne&ros de fondo al reducirlo desde su valor mCimo <el "nico cuadro visible debe ser el cursor parpadeante>. 18. +resione las teclas superiores del teclado. NOue ocurre al presionarlasP 1?. -Bora presione las 8 teclas centrales de la "ltima fila. NOue accin toma el cursorP N- $ue se debeP 1=. +resione la tecla en el etremo inferior derecBo del teclado. NOu sucedeP NOu parte del pro&rama realiza a cabo ese procesoP 1:. Con la ayuda de la tabla de los aneos y las indicaciones de su instructor' ,odifi$ue su pro&rama para $ue al inicio muestre un mensa!e de saludo en la primera fila' mientras el cursor $ueda en la se&unda fila. 5ecompile el pro&rama y Ba&a las pruebas si&uiendo los procedimientos de las prCcticas anteriores. 1;. 9inalmente modifi$ue el pro&rama para $ue el cursor de!e de parpadear y se $uede fi!o. 13. Una vez terminadas las modificaciones al pro&rama y verificado todo funcionamiento' muestre sus resultados al instructor. 5ecuerde borrar el pro&rama del microcontrolador al finalizar. Microcontroladores. Gua 3 11 1/. -pa&ue la tar!eta de entrenamiento' desconecte el pro&ramador de la tar!eta y la +C' y apa&ue su computadora. De!e todo en orden en su puesto de traba!o y entre&ue los materiales a su instructor. NGe puede usar este sistema para interfases de comandos de usuarioP 6pli$ue. NOu otras aplicaciones podr%a dCrseleP NCuCl es el traba!o de los macros en este pro&ramaP NGerC posible usar los otros macros para otro tipo de tareasP NDe $ue manera podr%a implementarse la repeticin automCtica de teclas <$ue la tecla se repita al mantenerla presionada> en este sistemaP NOu cambios ser%an necesarios de Bacer en el cdi&o para lo&rarloP 2nvesti&ue otras 8 tecnolo&%as de pantalla LCD $ue eisten en el mercado. NOue diferencias tienen con las vistas en la prCctica y cuales son sus venta!as y desventa!asP 2nvesti&ue la sintais y funcionamiento de los macros en el len&ua!e ensamblador para +2C. #o!a tcnica del microcontrolador +2C1;9/33-: Bttp:HH((1.microcBip.comHdo(nloadsHenHDeviceDocH?F:/8b.pdf +alacios' 6nri$ue 1 5emiro' 9ernando y Lpez' Lucas. ,icrocontrolador +2C1;9/=: Desarrollo de proyectos. Ge&unda edicin. Coedicin -lfaome&a 5-1,-. #o!a tcnica del controlador LCD #D==3/0: Bttp:HH(((.sparMfun.comHdatasBeetsHLCDH#D==3/0.pdf Microcontroladores. Gua 3 -nClisis de resultados 2nvesti&acin complementaria 5eferencias biblio&rCficas 18 ,apa de comandos de la LCD. Microcontroladores. Gua 3 -neos 1? EVALUACION % 1-4 5-7 8-10 Nota CONOCIMIENTO 25 Explica deficienteente co opera la t!cnica de ultiplexaje de teclado Explica parcialente la t!cnica encionada. Explica claraente co opera la t!cnica de ultiplexaje de teclado. APLICACIN DEL CONOCIMIENTO 25 "o cre el prograa correctaente # posee uc$os errores. %re el prograa # se copila& pero no funciona #a en el dispositi'o. El prograa creado se copila # funciona correctaente en el dispositi'o. 25 El circuito arado presenta pro(leas # no opera. El circuito ensa(lado presenta algunos pro(leas. El circuito ensa(lado funciona correctaente. 2) "o $izo las odificaciones de los pasos *5 # *+ o las isas no son correctas. ,izo las odificaciones pero los resultados difieren de lo esperado. ,izo las odificaciones # producen los resultados correctos. ACTITUD 2.5 Es un o(ser'ador pasi'o. -articipa ocasionalente o lo $ace constanteente pero sin coordinarse con su copa.ero. -articipa propositi'a e integralente en toda la pr/ctica. 2.5 Es ordenado pero no $ace un uso adecuado de los recursos. ,ace un uso adecuado de lo recursos& respeta las pautas de seguridad& pero es desordenado. ,ace un anejo responsa(le # adecuado de los recursos confore a pautas de seguridad e $igiene. TOTAL *)) Alumno: Microcontroladores. Gua 3 Hoja de cotejo: !ocente: "ec#a: $L: 0u1a 23 4so de pantalla atricial 5%6 # teclado atricial con eliinacin de re(ote. %ue&to No: