12-. Controlando un Modulo LCD Serialmente, Introduccin.
En la actualidad sabemos que un modulo LCD requiere de 8 lineas para el bus de datos y 3 lineas para el bus de control, por lo tanto tenemos un total de 11 lineas que se necesitan para controlar un modulo LCD. Esta cantidad de lineas son demasiadas para algunos proyectos electrnicos. Para el caso de un microcontrolador PIC1!8" que tan solo dispone de 13 lineas, le sobran dos lineas para ser aplicados a cualquier parte de nuestro proyecto que podr#an ser insu$cientes. Es por eso que aqu# presentamos una opcin en donde podr%s controlar un modulo LCD con solo tres lineas de un microcontrolador, dando as# mayor cobertura para el resto del proyecto, para el caso del microcontrolador PIC1!8" tendr#amos 1& lineas para nuestro proyecto. El siguiente diagrama electrnico 'ue dise(ado originalmente por el se(or )arc *imons en +ctubre del a(o 1,, para el microcontrolador PIC1C-". y modi$cado por ELEC/0+L+1I2, C.2. en !ebrero del 3&&1 para el microcontrolador PIC1!8". NOTAS IMPORTANTES ANTES DE COMENZAR: En el diagrama esquemtico, el circuito integrado 4094 no tiene planteado los pines de suministro de voltaje la cual bebern ser tomados en cuenta a la hora de montarlo en un protoboard para las respectivas pruebas. El circuito planteado en esta seccin, solamente tendr la capacidad de poder enviar un dato al modulo LC ! Escribir caracteres en la pantalla " # enviar alguna instruccin especi$ica de modulo% pero no tendr la capacidad de leer in$ormacin almacenada dentro del modulo LC. &ara utili'ar este circuito electrnico ! ()todo *erial " se requiere que la persona tenga un m+nimo de conocimientos del las $unciones de cada uno de los pines de control del modulo LC. Para entender este circuito electrnico primero comen4aremos con obser5ar que el microcontrolador PIC1!8" utili4a los pines 06&, 061 y 063 para trans'erir el dato serialmente y para controlar el bus de control del modulo LCD. 27ora e8plicaremos la teor#a b%sica que se requiere para escribir un car%cter el la pantalla del modulo LCD con este m9todo: El circuito integrado "&," es conocido como un integrado que recibe una in'ormacin en 'orma serial y es organi4ada en 'orma paralela desde ;1 7asta ;8 que representan las salidas. Este tipo de circuito integrado esta clasi$cado como un registro de despla4amiento y esta con'ormado por 8 !lip !lops interconectados serialmente. La in'ormacin que esta almacenada en los <ip <ops e8perimentan un corrimiento 7acia la derec7a o 7acia la i4quierda con cada pulso de relo=. >n bit almacenado en un <ip <op de la cadena se trans$ere o se despla4a ? Derec7a o I4quierda @ al <ip <op siguiente o adyacente. Por e=emplo, si nosotros queremos escribir el car%cterA2A en el modulo LCD, tenemos que saber que la representacin binaria del car%cterA2 B &1&&&&&1A, un programa interno en el microcontrolador ? dise(ado por el programador @ deber% tomar cada uno de los bits que con'orman el car%cterA2A comen4ando por el bit menos signi$cati5o. es decir, primero toma el A1A, seguidamente el A&A, A&A, A&A, A&A, A&A, A1A y $nalmente el ultimo bit A&A. Cada uno de estos bits son emitidos por el Pin del microcontrolador denominado 061 el cual esta conectado con el Circuito Integrado "&," en el Pin numero 3 denominado ADA. Cada 5e4 que se emita un 6it, el microcontrolador ?06&@ tambi9n emite un pulso de relo= al Pin Co. 3 del C.I. "&,". El 6it que esta presente en el Pin Co. 3 es tomado y colocado en los registros internos del CI "&,". Cuando la palabra completa de 8 6its se encuentra dentro de los registros del C.I. "&," se procede a emitir un pulso desde el microcontrolador ?063@ que esta conectado con el Pin Co. 1 del C.I. "&," ?*/0@, este pulso autori4a al C.I. "&," a colocar el dato completo de 8 bits en las salidas desde ;1 7asta ;8. 27ora tenemos nuestro car%cterA2A presente en las salidas del C.I. "&," lo cual quiere decir que ya se encuentra presente el car%cterA2A en el bus de datos del modulo LCD. El dato ser% le#do por el modulo LCD si su bus de control esta con$gurado para ello. +bser5emos en nuestro circuito que Pin 0DE del modulo LCD esta conectado a tierra y el Pin AEA del modulo LCD esta conectado directamente a 063 del microcontrolador, $nalmente el Pin A0*A esta conectado a un peque(o circuito con'ormado por un transistor. 27ora sabemos que para poder escribir un dato en la pantalla del modulo LCD tenemos que tener con$gurado el Pin 0DE B &, 0*B1 y el Pin denominado E del modulo LCD deber% colocarse en E B 1 durante "-& nano segundos y 5ol5erlo a colocar en E B & para que tome el dato presente en el bus para escribir el car%cter en el modulo LCD. 27ora aqu# 5iene la parte interesante de nuestro circuito en el cual le tenemos que decirle al modulo LCD que tome el car%cterA2A presente en el bus de datos. +bser5e primero que el Pin Co 8 del microcontrolador ?063@ esta conectado a dos partes di'erentes en el circuito, primero esta conectado al Pin Co 1 del C.I. "&,3 ?*/0@ y segundo esta conectado al modulo LCD en el Pin Co. denominado AEA, lo cual quiere decir que el Pin 063 del microcontrolador es utili4ado para dos 'unciones: La primera 'uncin del Pin Co. 8 del )icrocontrolador ?063@ es emitir un pulso para que sea recibido por el Pin CF. 1 del C.I. "&," ?*/0@ en el momento que la palabra completa de 8 bits se encuentre presente dentro del registro de despla4amiento. Esta palabra de 8 bits aparece en la salida del C.I. "&," en los pines desde ;1 7asta ;8 en el momento que */0 recibe el Pulso. La segunda 'uncin del Pin Co. 8 del )icrocontrolador ?063@ 5iene inmediatamente despu9s de 7aber reali4ado la primera 'uncin. En el momento que se e=ecuta la primera 'uncin, el dato esta presente en las salidas del C.I. "&," por ende el dato estar% presente en el bus de datos del modulo LCD. pero para poder escribir un car%cter en la pantalla del modulo, se tiene como condicin obligatoria que el Pin Co. del modulo LCD AEA deber% permanecer en EB1 durante "-& nano segundos, en este momento se debe 5ol5er a cambiar el estado logico de AEA a &, 7aciendo que el modulo capture el caracter A2A y lo escriba en la pantalla. Por otra parte, el Pin Co. " ?0*@ del bus de control del modulo LCD deber% estar colocado en A1A para escribir un car%cter en la pantalla. En nuestro circuito el Pin 0* del modulo LCD esta controlado por el Pin 06& del microcontrolador por medio de un peque(o circuito con'ormado por C1, ;1, 01 y 0". *e podr% obser5ar que 06& del microcontrolador tambi9n estar% encargado de emitir el tren de pulsos que requiere el C.I. "&," para capturar el dato en sus registros. *i queremos escribir un car%cter, primero debemos colocar 06& B 1 durante -&& micro segundos para que se cargue el condensador C1, permitiendo que el transistor ;1 se acti5e y coloque a 0* B 1. *eguidamente se en5#a el tren de pulsos que esta relacionado con los bits que con'orman el dato. Este tren de pulsos no altera el 5olta=e del capacitor C1 asegurandose de esta manera 0* B 1 durante un tiempo dentro el cual se debe acti5ar el Pin denominado AEA del modulo LCD para escribir el car%cter en la pantalla. *i queremos en5iar una instruccin al modulo LCD, primero debemos colocar 06& B & para que el condensador proceda a descargarse, desacti5ando el transistor ;1 y colocando a 0* B & y se procede de igual manera con el tren de pulsos que esta relacionado con los bits que con'orman a la instruccin. 12-. Programas necesarios para el Microcontrolador PIC16F!, come"aremos con la declaracin de constantes #ue ser$n utili"adas en el programa% El siguiente cdigo representa algunas constantes reser5adas del microcontrolador PIC1!8" y otras de asignacin personal. Estas instrucciones son para el ensamblador y las constantes tratadas ser%n usadas b%sicamente en todo nuestro programa. La seccin a4ul representa los registros de 'unciones especiales del microcontrolador, y $nalmente la seccin morada representa las constantes que de$nir%n los tiempos de las rutinas de tempori4acin. DECLARACION DE CONSTANTES. CODIGO: COMENTARIO &,-./ E01 0203 ireccin del puerto / .-4*/ E01 0203 Con$igurador del puerto / para 45,. *.6.1* E01 0207 ireccin del registro *.6.1*. C6--8 E01 0 /it del registro *.6.1* que in$orma si e9iste acarreo o no. -E.6-,: E01 020 Constante del tempori'ador : -E.6-,; E01 0200 Constante del tempori'ador ; 4<*.-1C. E01 0 /it de banderas Cloc=,ut E01 0 /it del puerto / para controlar el CL,C> del C4 4094 ata,ut E01 : /it del puerto / para controlar el 6., del C4 4094 *trobe,ut E01 ; /it del puerto / para controlar el *.-,/E del C4 4094 12.1-. &eser'a de Memoria &(M% El PIC1!8" tiene disponible 8 6ytes de memoria 02). La memoria comien4a desde la direccin &G&C ? Posicin numero D9cima /ercera del mapa de registros @ y termina en la posicin &G"! ? Posicin numero 8& del mapa de registros @. La instruccin +01 le indica al ensamblador donde debe comen4ar a reser5ar la memoria 02) que a continuacin declaramos. Para nuestro peque(o e8perimento, tan solo necesitamos seis bytes de memoria 02). RESERVA DE MEMORIA RAM CODIGO: COMENTARIO ,-? 020C 4nicio de los registros de 1so general C,<.: -E* : -E*E-@6 E 1< /4.E E (E(,-46 -6( &6-6 L6* @6-46/LE* C,<.:, C,<.;, /6<E-6*, ,1.&1.-E?, C,1<.E--E? 8 cont: C,<.; -E* : /6<E-6* -E* : cont: -E* : ,ut&ut-eg -E* : Counter-eg -E* : 12.2-. Con)guracin de los Puertos% El siguiente cdigo le dice al microcontrolador PIC1!8" que el puerto A2A con sus cinco lineas y el puerto A6A con sus oc7o lineas ser%n con$gurados como salidas para nuestro peque(o e8perimento. CONFIGURACION DE LOS PUERTOS: CODIGO: COMENTARIO ,-? 0200 /*A *.6.1*,B Cambio al banco : (,@LC bD:::::000D (,@CA .-4*/ Con$igura todo el puerto /como salida. /CA *.6.1*,B Cambio al banco 0 12.*-. Programa Principal% El programa principal en nuestro peque(o proyecto, lo 7emos di5idido en dos secciones de colores. La seccin en color a4ul representan las instrucciones necesarias para la iniciali4acin del modulo LCD. La seccin en color amarillo representa el programa que se encargara de escribir la palabra APC6 ELEC/0+CIC*A. En la columna de C+)EC/20I+ del programa, 7emos agregado una peque(a in'ormacin para que usted entienda que es lo que sucede cuando se e=ecuta la instruccin se(alada. PROGRAMA PRINCIPAL: CODIGO: COMENTARIO C6LL .E(&,; Llamada de subErrutina de tiempo de :B milisegundos. Esta *ubrrutina es solicitada en el momento que se enciende el circuito para esperar que el modulo LC estabilice sus voltajes internos. /*A /6<E-6*,4<*.-1C. (,@LC bD00::0000D Este comando carga en el acumulador del &4C:3AF4 el numero binario que representa el comando en el modulo LC para trabajar con un bus de datos de F /its. &osteriormente a esta instruccin se ejecuta una subrrutina llamada LC4 ! LC 4<*.-1CC4,<" que estar encargada de colocar el dato en el modulo LC ! /us de datos " # ejecuta la secuencia requerida para el bus de control del modulo LC. C6LL salidaLC Llamada de una subErrutina que estar encargada de colocar el dato en el modulo LC ! /us de datos " # ejecuta la secuencia requerida para el bus de control del modulo LC. C6LL .E(&,: (,@LC bD00:::000D Este comando carga en el acumulador del &4C:3AF4 el numero binario que representa el comando en el modulo LC para trabajar con 6ctivacin de dos lineas en el modulo LC. &osteriormente a esta instruccin se ejecuta una subrrutina llamada LC4 que $ue e9plicada en la instruccin numero ; de esta misma tabla. C6LL *6L46LC Llamada de una subErrutina que estar encargada de colocar el dato en el modulo LC ! /us de datos " # ejecuta la secuencia requerida para el bus de control del modulo LC. C6LL .E(&,: (,@LC bD0000:::0D Este comando carga en el acumulador del PIC1!8" el numero binario que representa el comando en el modulo LCD para traba=ar con encendido de la pantalla y el cursor en el modulo LCD. Posteriormente a esta instruccin se e=ecuta una subrrutina llamada LCDI que 'ue e8plicada en la instruccin numero 3 de esta misma tabla. C6LL *6L46LC Llamada de una subErrutina que estar encargada de colocar el dato en el modulo LC ! /us de datos " # ejecuta la secuencia requerida para el bus de control del modulo LC. C6LL .E(&,: (,@LC bD00000::0D Este comando carga en el acumulador del PIC1!8" el numero binario que representa el comando en el modulo LCD para traba=ar con el despla4amiento del cursor a la derec7a Posteriormente a esta instruccin se e=ecuta una subrrutina llamada LCDI que 'ue e8plicada en la instruccin numero 3 de esta misma tabla. C6LL *6L46LC Llamada de una subErrutina que estar encargada de colocar el dato en el modulo LC ! /us de datos " # ejecuta la secuencia requerida para el bus de control del modulo LC. C6LL .E(&,: /CA /6<E-6*, 4<.-1C. (,@LC G&G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC GCG Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G/G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC GEG Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC GLG Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC GEG Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G.G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G-G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G,G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G<G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G4G Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC GCG Coloca el carcter 6*C44 en C C6LL *6L46LC -utina para escribir un carcter en el LC. (,@LC G*G Coloca el carcter 6*C44 en C C4CL, ?,., C4CL, 12.!-. Su+rrutinas% 12.!.1-. Su+rrutina para la comunicacion con el modulo LCD. Esta subrrutina que la 7emos llamado *2LID2LCD que consiste en en5iar un dato de oc7o bits por el pin de datos de 'orma sincrona ? >no detras del otro@ controlados por el pulso de relo=. Despues de transmitir el dato se aplica la se(a del strobe para que el dato completo del CI "&," pase a sus salidas y el LCD lo capture. /odo este proceso se 7ace tomando en cuenta los tiempos de carga y descarga del capacitor y el tiempo de respuesta del modulo LCD. SUBRRUTINA DE TIEMPO ( SALIDALCD) CODIGO: COMENTARIO *6L46LC (,@CA ,1.&1.-E? /CA &,-./,CL,CL,1. /.A** /6<E-6*,4<*.-1C. /*A &,-./,CL,C>,1. (,@LC .:40 (,@CA C,<.: L,6C6&L,,& ECA*H C,<.:,: ?,., L,6C6&L,,& /*A &,-./,CL,C>,1. (,@LC .F (,@CA C,1<.E--E? /CA &,-./,CL,C>,1. /CA &,-./,6.6,1. -LA ,1.&1.-E?,: /.A*C *.6.1*,C6--8 /*A &,-./,6.6,1. /*A &,-./,CL,C>,1. ECA*H C,1<.E--E?,: ?,., <E2.,1. /CA &,-./,CL,C>,1. /*A &,-./,*.-,/E,1. /CA &,-./,*.-,/E,1. -E.LC 0 12.!.2-. Su+rrutina de , microsegundos. Esta subrrutina de tiempo es solicitada cuando se e=ecuta una instruccin o un dato para dar el tiempo necesario que requiere el modulo LCD para $nali4ar el proceso. Esta subFrrutina denominada /E)P+1 tiene una curacin de -8 microsegundos basados en un cristal de " )74. SUBRRUTINA DE TIEMPO ( TEMPO1 ) CODIGO: COMENTARIO .E(&,: (,@LC -E.6-,: (,@CA C,<.: C4CL,.: <,& ECA*H C,<.:,: ?,., C4CL,.: -E.1-< 12.!.*-. Su+rrutina de 1,.*- milisegundos. Esta subrrutina de tiempo es utili4ada solamente cuando se enciende la pantalla para la estabili4acion de los 5olta=es. Esta subFrrutina denominada /E)P+3 tiene una duracion de 1-.3H milisegundos basados en un cristal de " )74. SUBRRUTINA DE TIEMPO ( TEMPO2 ) CODIGO: COMENTARIO .E(&,; (,@LC -E.6-,; (,@CA C,<.; C4CL,.; C6LL .E(&,: ECA*H C,<.;,: ?,., C4CL,.; -E.1-< Estas son todas las instrucciones que usted necesita para controlar un modulo LCD con un microcontrolador PIC1!8". La in'ormacin presentada en esta seccin 7a sido probada que 'unciona correctamente. CURRICULUM VITAE I. - DATOS PERSONALES 6pellidos @6LL66-E* (6<*4LL6 <ombres I,*E C6-L,* omicilio (an'ana J= J lote :3 <ueva 6lian'a Chaclaca#o .el)$ono 7B74B;: Aecha de nacimiento 70 de octubre de :9B7 Lugar de nacimiento Kuaral Estado civil Casado <acionalidad &eruano II.- DATOS PERSONALES Libreta electoral 03L374F: Libreta militar ;:B7L04B79 /revete 0,ELF0L0 4&** B7:070:@L(I003 III.- DATOS ACADMICOS Educacin primaria CE& *alvador del solar Kuaral Educacin secundaria ?1E 6ndr)s de los -e#es Kuaral Educacin t)cnica *E<6.4 4nstituto .)cnico &eruano E6lemn IV.- CURSOS SEMINARIOS Cursos Aundamentos de electrotecnia ,rgani'ador .ecsup Aecha del ;; julio al :3 de septiembre de :99B Lugar .ecsup Curso Electrodo -evestido nivel bsico ,rgani'ador Cia. ,E-L4>,< Aecha el ;9 de ma#o al 0; de julio de :99B Lugar C46. ,E-L4>,< Cursos *oldadura semi bsico ,rgani'ador Cia. ,E-L4>,< Aecha del 0B de junio al 09 de junio de :99B Lugar Cia. ,E-L4>,< *eminario iseMo # tecnolog+a de matrices ,rgani'ador 1niversidad el Callao Aecha del ;3 al 70 de junio de :9F9 Lugar (inisterio industria .urismo e integracin V.- EXPERIENCIA LABORAL Empresa MARVEG S.A. ivisin (atriceria &eriodo 0; de agosto de :9LB N ;B de junio de :9L3 Cargo Ie$e e .aller Aunciones iseMo # $abricacin de matrices .rabajo en maquina herramientas Empresa MATRI ANDINOS S.A. ivisin &roduccin &eriodo 04 de julio de :9L3 N:B de mar'o de :9LL Cargo Ie$e e &lanta Aunciones iseMo # $abricacin de moldes .rabajas en maquinas Kerramientas (anejo de personal Empresa MECNICA DE PRECISIN DURAN S.A. ivisin (atriceria &eriodo 0; de abril de :9LL N :F de octubre de :9LL Cargo .ornero matricero Aunciones .rabajo de (aquinas Kerramientas (oldes de in#eccin, *oplado, corte Empresa PER! PLAST S.A. ivisin (aestran'a &eriodo :L de noviembre de :9LL N07 de enero de :9F7 Cargo (atricero Aunciones iseMo # $abricacin de moldes (antenimientos de moldes. Empresa SANNER S.A. ivisin (atriceria &eriodo 0: de $ebrero de :9F7 N 70 de diciembre de :9F3 Cargo Ie$e de .aller Aunciones iseMo # $abricacin de moldes iseMo # $abricacin de dispositivos. Empresa INDUSTRIAL EPEN S.A. ivisin (atriceria &eriodo 09 de enero de :9FL N7: de diciembre de :9FL Cargo matricero Aunciones iseMo # $abricacin de matrices .rabajo de maquinas herramientas. Empresa EL"O PERUANA S.A. ivisin &roduccin &eriodo ;4 de junio de :9FL N 70 de octubre de :990 Cargo maestro matricero Aunciones iseMo # $abricacin de moldes de in#eccin # soplado .rabajo de maquinas # herramientas Empresa LABORATORIO VITA S.A. ivisin &roduccin &eriodo 0; de noviembre de :990 N ;B de julio :99: Cargo Ie$e de &lanta Aunciones iseMo # $abricacin de moldes de in#eccin # e9truccion .rabajo de maquinas # Kerramientas (antenimiento de moldes ! montaje # desmontaje" Empresa PLASTO S.A. ivisin &roduccin &eriodo 03 de agosto de :99: N :L de $ebrero de :997 Cargo matricero Aunciones iseMo # $abricacin de moldes de in#eccin # e9truccion .rabajo de maquinas # Kerramientas (antenimiento de moldes ! montaje # desmontaje" Empresa BASA- BA"ELITA # ANEXOS S.A. ivisin &roduccin &eriodo :3 de julio de :997 N 7: de mar'o de :993 Cargo matricero Aunciones iseMo # $abricacin de moldes de in#eccin .rabajo de maquinas # Kerramientas (antenimiento de moldes ! montaje # desmontaje" Empresa MAPESA MATRICES PERUANAS S.6. ivisin &roduccin &eriodo 0: de abril de :993 N 7: de agosto de :99L Cargo Ie$e de 1nidad de moldes Aunciones iseMo # $abricacin de moldes *upervisin de moldes en &roduccin .rabajo de maquinas # Kerramientas (anejo de personal (antenimiento de moldes ! montaje # desmontaje" Empresa BASA BA"ELITA # ANEXOS S.6. ivisin &roduccin &eriodo 0: de septiembre de :99LE :; julio de ;00; Cargo Ie$e de (atriceria Aunciones iseMo # $abricacin de moldes *upervicion de moldes en &roduccion .rabajo de maquinas # Kerramientas (anejo de personal (antenimiento de moldes ! montaje # desmontaje" Empresa INDUVAL ivisin matriceria &eriodo 0: de agosto de ;00;E :: de octubre ;007 Cargo (atricero Aunciones Aabricacin de moldes *upervicion de moldes .rabajo de (aquinas # Kerramientas VI.- REFERENCIAS LABORALES *rO KEL(1. >6.H?-6/E- .el$. 99::3:09 ingO 6<4EL K46L?, .el$. 43:37L ing.O I1L4, HE?6--6 .el$. 993BF0;7 Lima 0B de octubre de ;007 ---------------------------------- $%&' C. V())(*(+'&