Sunteți pe pagina 1din 33

Introduccin Antes de aparecer los mdulos LCD (son las siglas en ingls de "Pantalla de Cristal Lquido "Liquid Crystal

Display"). nuestros diseos electrnicos utilizaban los Displays de siete segmentos para poder mostrar la informacin, adems de su gran limitacin de poder mostrar los caracteres alfa numricos y smbolos especiales, tambin consuman demasiada corriente y ocupaban demasiado espacio fsico. Posteriormente aparecieron otros tipos de displays mas complejos que podan mostrar algunos caracteres y smbolos; pero tenan de igual manera mucho consumo de corriente y espacio fsico desperdiciado. Finalmente aparecieron los mdulos LCD o pantallas de cristal liquido (ver grafico 1) la cual tiene la capacidad de mostrar cualquier carcter alfa numrico. Se trata de un sistema elctrico de presentacin de datos formado por 2 capas conductoras trasparentes y en medio un material especial cristalino (cristal lquido) que tienen la capacidad de orientar la luz a su paso. Cuando la corriente circula entre los electrodos transparentes con la forma a representar (por ejemplo, un segmento de un nmero) el material cristalino se reorienta alterando su transparencia. El material base de un LCD lo constituye el cristal lquido, el cual exhibe un comportamiento similar al de los lquidos y unas propiedades fsicas anisotrpicas similares a las de los slidos cristalinos. Las molculas de cristal lquido poseen una forma alargada y son ms o menos paralelas entre s en la fase cristalina. Segn la disposicin molecular y su ordenamiento, se clasifican en tres tipos: nemticos, esmticos y colestricos. La mayora de cristales responden con facilidad a los campos elctricos, exhibiendo distintas propiedades pticas en presencia o ausencia del campo. El tipo ms comn de visualizador LCD es, con mucho, el denominado nemtico de torsin, trmino que indica que sus molculas en su estado desactivado presentan una disposicin en espiral. La polarizacin o no de la luz que circula por el interior de la estructura, mediante la aplicacin o no de un campo elctrico exterior, permite la activacin de una serie de segmentos transparentes, los

cuales rodean al cristal lquido. Segn sus caractersticas pticas, pueden tambin clasificarse como: reflectivos, transmisivos y transreflectivos.

Estos dispositivos ya vienen con su pantalla y toda la lgica de control pre-programada en la fabrica y lo mejor de todo es que el consumo de corriente es mnimo y no se tendrn que organizar tablas especiales como se hacia anteriormente con los displays de siete segmentos. Las aplicaciones de los mdulos LCD son infinitas ya que podrn ser aplicados en la informtica, comunicaciones, telefona, instrumentacin, robtica, automviles, equipos industriales, etc. Todo queda a su imaginacin la gran cantidad de aplicaciones que tiene un modulo LCD.

Grafico 1. Mdulo LCD Diversidad de algunos mdulos LCD En la actualidad los mdulos LCD existen una gran variedad de versiones clasificados en dos grupos. El primer grupo esta referido a los mdulos LCD de caracteres ( solamente se podrn presentar caracteres y smbolos especiales en las lneas predefinidas en el modulo LCD) y el segundo grupo esta referido a los mdulos LCD matriciales ( Se podrn presentar caracteres, smbolos especiales y grficos). Los mdulos LCD varan su tamao fsico dependiendo de la marca; por lo tanto en la actualidad no existe un tamao estndar para los mdulos LCD.

La siguiente imagen muestra las dimensiones de una configuracin tpica de un modulo LCD de dos lneas por 16 caracteres por cada lnea incluyendo los detalles de la matriz de como esta conformado un carcter

Grfico 2. Dimensiones de configuracin Otro patrn importante es el tamao de los caracteres donde las dimensiones de la matriz que forma los caracteres tienen longitudes diferentes. La siguiente imagen muestra la matriz utilizada para poder representar un smbolo o un carcter alfa numrico en un modulo LCD. Esta matriz define algunos aspectos importantes del carcter o el smbolo que estn mostrando. Los aspectos que define esta matriz son: Matriz de punto para un Aspectos importantes que define la matriz de solo carcter en un modulo puntos para un solo carcter en un modulo LCD LCD 1-. Altura del carcter definida por dos variables: Alto de cada punto que conforma la matriz y longitud de separacin entre cada punto que conforma la matriz. 2-. Ancho del Carcter definido por dos variables: Ancho de cada punto que conforma la matriz y longitud de separacin entre cada punto que conforma la matriz.

3-. Calidad grfica del carcter ( A mayor cantidad de puntos dentro de la matriz, mayor ser la calidad visual del carcter presentado por el modulo LCD.

Los primeros mdulos LCD tenan los caracteres de color negro y el fondo de la pantalla era de color verdoso claro. Posteriormente se crearon otros colores en donde los caracteres eran de color plata y as sucesivamente fueron variando los colores en el fondo y en los caracteres incluyendo una luz posterior para los mdulos LCD denominada Back Light diseada especialmente para mejorar la visualizacin de la pantalla sobre todo en lugares muy oscuros. Identificacin de los pines de conexin de un modulo LCD no matricial Los pines de conexin de un modulo LCD han sido estandarizados por lo cual en la mayora de ellos son exactamente iguales siempre y cuando la lnea de caracteres no sobrepase los ochenta caracteres por lnea. Por otro lado es de suma importancia localizar exactamente cual es el pin Numero 1 ya que en algunos mdulos se encuentra hacia la izquierda y en otros mdulos se encuentra a la derecha. Pin N-. 1 2 3 4 5 6 7 8 9 10 Sismologa Nivel VSS VCC Vee = Vc RS R/W E DB0 DB1 DB2 DB3 0/1 0/1 1 0/1 0/1 0/1 0/1 I/O Funcin I I I I/O I/O I/O I/O 0 Vlts. Tierra ( GND ). + 5 Vlts. DC. Ajuste del Contraste. 0= Escribir en el modulo LCD. 1= Leer del modulo LCD 0= Entrada de una Instruccin. 1= Entrada de un dato. Habilitacin del modulo LCD BUS DE DATO LINEA 1 ( LSB ). BUS DE DATO LINEA 2 BUS DE DATO LINEA 3 BUS DE DATO LINEA 4

11 12 13 14 15 16

DB4 DB5 DB6 DB7 A K

0/1 0/1 0/1 0/1 -

I/O I/O I/O I/O -

BUS DE DATO LINEA 5 BUS DE DATO LINEA 6 BUS DE DATO LINEA 7 BUS DE DATO LINEA 8 (MSB). LED (+) Back Light LED (-) Back Light.

Interpretacin del significado de los Pines del Modulo LCD El Pin numero 1 y 2 estn destinados para conectarle los 5 Voltios que requiere el modulo para su funcionamiento y el Pin numero 3 es utilizado para ajustar el contraste de la pantalla; es decir colocar los caracteres mas oscuros o mas claros para poderse observar mejor. Observe la siguiente imagen de cmo deben estar conectados los tres primeros pines. La resistencia representada como R3 es un potencimetro variable que puede oscilar entre 10 K y 20 K indiferentemente.

Grfico 3. Configuracin de pines del mdulo LCD El Pin numero 4: denominado "RS" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son los Pines del 7 al 14 ). Este bus es utilizado de dos maneras, ya que usted podr colocar un dato que representa una instruccin o podr colocar un dato que tan solo representa un smbolo o un carcter alfa numrico; pero para que el modulo LCD

pueda entender la diferencia entre un dato o una instruccin se utiliza el Pin Numero 4 para tal fin. Si el Pin numero 4 = 0 le dir al modulo LCD que esta presente en el bus de datos una instruccin, por el contrario, si el Pin numero 4 = 1 le dir al modulo LCD que esta presente un smbolo o un carcter alfa numrico. El Pin numero 5: denominado "R/W" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son los Pines del 7 al 14 ). Tambin es utilizado de dos maneras, ya que usted podr decirle al modulo LCD que escriba en pantalla el dato que esta presente en el Bus; por otro lado tambin podr leer que dato esta presente en el Bus. Si el Pin numero 5 = 0 el modulo LCD escribe en pantalla el dato que esta presente el Bus; pero si el Pin numero 5 = 1 significa que usted necesita leer el dato que esta presente el bus del modulo LCD. El Pin numero 6: denominado "E" que significa habilitacin del modulo LCD tiene una finalidad bsica: conectar y desconectar el modulo. Esta desconexin no estar referida al voltaje que le suministra la corriente al modulo; la desconexin significa tan solo que se har caso omiso a todo lo que este presente en el bus de datos de dicho modulo LCD. En la mayora de los circuitos electrnicos modernos que incluyan elementos electrnicos como Microcontroladores, Memorias y Mdulos LCD, utilizan el mismo bus de datos. Esto es para no tener un bus de datos independientemente por cada elemento electrnico, esto implicara que los circuitos electrnicos sean mucho mas grandes por la cantidad de conexiones necesaria a cada uno de los elementos. Ahora como los Microcontroladores, memorias y mdulos LCD utilizan el mismo bus de datos, deber existir en cada uno de ellos un Pin de habilitacin "E" que permita desconectar y conectar cuando sea necesario. Por ejemplo si usted necesita trabajar con la memoria RAM para obtener o escribir cierta informacin, ser necesario que deshabilite el modulo LCD para que no presente basura en la pantalla, o se ejecuten instrucciones no deseadas. Los Pines desde el numero 7 hasta el numero 14 representan 8 lneas que se utilizan para colocar el dato que representa una instruccin para el modulo LCD o un carcter alfa numrico. El Bus de datos es de 8 Bits de longitud y el Bit menos significativo esta

representado en el Pin numero 7, el Pin mas significativo esta representado en el Pin numero 14 Los Pines 15 y 16: estarn destinados para suministrar la corriente al Back Light. Es importante conocer que no todos los mdulos LCD disponen del Back Light aunque tenga los pines de conexin en el circuito impreso. Tiempos mnimos requeridos para que una instruccin o un dato puedan ser ejecutados. Los Pines de control ( E, RS y E/W ) estn estrechamente relacionados ya que por medio de ellos podemos especificar si queremos ejecutar una instruccin o leer / escribir un dato en la pantalla o la memoria RAM; sin embargo existe una condicin importante que deber tomarse en cuenta referida directamente al tiempo necesario que se necesita para cambiar de un estado a otro en los pines de control. ( E, RS y R/W ). En el caso de que este tiempo sea mas pequeo que el tiempo mnimo requerido, entonces el modulo LCD no tendr el tiempo suficiente para responder a las instrucciones solicitadas por el usuario y por consecuencia se perdern los datos o instrucciones segn sea el caso. En otras palabras, las personas suelen cometer un error comn cuando se esta intentando hacer funcionar un modulo LCD en el cual no consideran la velocidad de proceso del microprocesador o el microcontrolador especficamente en los pines de control ( E, RS y R/W ), esto quiere decir que si usted tuviera conectado un modulo LCD a un microcontrolador que tiene una velocidad de proceso demasiado alta en los pines de control, cuando se ejecuta una solicitud de cualquier tipo ( escritura / lectura e Instruccin. ), el modulo LCD no tendr la capacidad de entender la solicitud hecha por el microcontrolador ya que esta se ejecuto demasiado rpida. Para ello los programas o los circuitos electrnicos que manejan un modulo LCD debern respetar los siguientes diagramas de tiempo: Diagrama de tiempo para una Instruccin: Para enviarle una instruccin al modulo, primero hay que colocar la instruccin en el bus de datos ( Pines del 7 al 14 ). Una vez que esta presente la instruccin en el bus de datos se procede a ejecutar el diagrama de tiempo requerido para una instruccin en los pines de

control. Este diagrama de tiempo es muy sencillo de entender, tan solo usted deber colocar el Pin RS = 0, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deber permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instruccin.

Grfico 4. Diagrama de tiempos para una instruccin. Diagrama de tiempo para escribir un dato: Para escribir un dato en el modulo LCD, primero hay que colocar el dato en el bus ( Pines del 7 al 14 ). Una vez que esta presente el dato en el bus se procede a ejecutar el diagrama de tiempo requerido para escribir un dato en los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan solo usted deber colocar el Pin RS = 1, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deber permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instruccin.

Grfico 5. Diagrama de tiempos para escribir un dato Diagrama de tiempo para leer un dato Para leer un dato de la pantalla o la memoria RAM en el modulo LCD, los pines de control debern estar colocados como sigue: Pin RS = 1, Pin R/W = 1 y el Pin E = 0. Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin a cambiar de estado para que la pantalla pueda entender la instruccin. E =1. El nuevo estado de este Pin "E" deber permanecer por lo menos 450 ns antes de volver

Grfico 6. Diagrama de tiempo para leer un dato

Nota importante: Ntese que en los tres diagramas de tiempos el Pin denominado como "E" tiene que estar previamente en el estado lgico "CERO", posteriormente se cambia el estado lgico a "UNO" la cual permanecer por lo menos unos 450 nano segundos y finalmente vuelve al estado lgico" CERO ", en el preciso momento que el Pin "E" del modulo LCD tiene el flanco de bajada, es cuando se ejecuta la instruccin o el dato presente en el bus de control. Bus de Datos de 4 y 8 Bits de Longitud El Bus de datos de un modulo LCD puede ser configurado para trabajar con 4 Bits y con 8 Bits. Para los diseos electrnicos que estn limitados por la cantidad de lneas utilizadas en el Bus de datos, podrn utilizar un bus de datos con una longitud de 4 Bits; sin embargo si este no fuera su caso, podr utilizar el bus de datos completo de 8 Bits. Las seales de control ( RS - R/W - E ) y los diagramas de tiempo explicados anteriormente, trabajan igual sea para un bus de datos de 4 Bits o de 8 Bits. Sin embargo, si usted esta interesado en trabajar el bus de datos con una longitud de 8 Bits, deber saber que cuando se enciende el modulo LCD la configuracin para 8 Bits entra por defecto; es decir que no necesitara programarse, pero la configuracin del bus de datos con una longitud de 4 Bits requiere una secuencia cuidadosa de instrucciones previas inmediatamente despus de encender el modulo LCD. La longitud escogida para trabajar el bus de datos deber hacerse en el principio de la programacin del modulo LCD. En la siguiente imagen se puede observar la inicializacin de un modulo LCD para trabajar con un bus de datos de 8 (izquierda) y 4 Bits (Derecha).

Grfico 7. Inicializaciones para bus de datos de 4 u 8 bits Inicializacin del modulo LCD Todo modulo LCD deber inicializarse, esta inicializacin indicara como deber operar la pantalla. La inicializacin representan las instrucciones que debern ser ejecutadas por el modulo LCD antes de su funcionamiento normal. Las instrucciones que estn dentro de la inicializacin solamente se ejecuta despus que se enciende el modulo LCD y no podrn ser cambiadas posteriormente. Por ejemplo tenemos algunos parmetros que pueden ser ejecutados en la inicializacin antes de comenzar a funcionar nuestro modulo LCD: Seleccin de la longitud del bus de datos ( 4 Bits / 8 Bits ). Activar el numero de lneas que se visualizaran el el modulo LCD. Encender el Modulo LCD. Las siguientes instrucciones tambin podrn ser colocadas en la inicializacin, con la diferencia que podrn ser cambiadas en cualquier parte del programa. Mantener el mensaje fijo y desplazar el cursor.

Desplazar el mensaje y mantener el cursor fijo. Hacer que el carcter sealado parpadee o no. Conjunto de Instrucciones bsicas de un modulo LCD: La siguiente tabla representa el conjunto de instrucciones de un modulo LCD, en ella se muestran toda la informacin necesaria que se requiere para cada instruccin, pero posteriormente se da una explicacin mas amplia de algunas de ellas. TABLA N-. 1: INSTRUCCIONES BASICAS CODIGO Tiempo Instruccin R/ DB DB DB DB DB DB DB DB Descripcin de RS . W 7 6 5 4 3 2 1 0 ejecucin Borra la pantalla Borrar Pantalla 0 0 0 0 0 0 0 0 0 1 retorna y el 1.64 mS.

cursor a la direccin 0 ( Home ) Retorna el

Cursor Home

cursor 0 0 0 0 0 0 0 0 1 * inicio

al 1.64 mS.

( Direccin de 0 0 0 0 0 0 0 1 I/D S o) Donde I/D=0 Decremente la posicin del cursor, I/D=1 incrementa la posicin del cursor,. S=0 El texto 40 uS.

Modo

entrada de caracteres

de

la

pantalla no se desplaza, S=1 El texto de pantalla la se

desplaza en el momento que escribe se un

carcter Donde D=0 Pantalla apagada, D=1 Pantalla encendida, C=0 Cursor Apagado y encendido de pantalla. la 0 0 0 0 0 0 1 D C B apagado, C=1 Cursor encendido, B=0 Intermitenci a del cursor apagado, B=1 Intermitenci a del cursor encendido. Cursor and Display Shift 0 0 0 0 0 1 S/C R/L * * 40 uS. 40 uS..

Funtion Set Set RAM address Set DD RAM address Ready busy CG

DL N

40 uS.

ACG

40 uS.

ADD

40 uS.

flag 0

BF AC

1 uS.

& address Write data to CG or 1 DD RAM Read data to CG or 1 DD RAM La tabla numero dos, esta referida a las nomenclaturas utilizadas en la tabla numero uno Tabla 2: NOMENCLATURAS Nomenclatur Variable = 1 Variable = 0 a I/D=1 Incrementa el Cursor en I/D=0 Decrementa el Cursor en I/D una posicin una posicin. D D=1 Pantalla Encendida D=0 Pantalla Apagada. C C=1 Cursor Encendido. C=0 Cursor Apagado. B=1 Intermitencia del cursor B=0 Intermitencia del cursor B encendida. apagado S/C S/C=1 Mover todo el texto. S/C=0 Mover el cursor. R/L=1 Mover todo el texto a R/L=1 Mover todo el texto a la R/L la izquierda. derecha. DL DL=1 Bus de datos de 8 Bits. DL=0 Bus de datos de 4 Bits. S S=1 Desplazamiento del texto. S=0 No desplazamiento del texto BF=1 Operacin Interna en BF=0 No puede aceptar BF progreso. instruccin F F=1 Matriz para el carcter de F=0 Matriz del carcter de 5 x 7 1 Leer el Dato 40 uS. 0 Escribir el Dato 120 uS.

5 X 10 dots Dost N=1 Activacin de dos lneas. N=0 Activacin de 1 lnea

La tabla numero tres, esta referida a las abreviaturas utilizadas en la tabla numero uno Tabla 3: ABREVIATURAS Abreviatura DD RAM Display Data RAM CG RAM Generador de Caracteres RAM ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES. Bajo la denominacin de PIC16F877 se hace referencia a microcontroladores PIC de la gama media, que se identifica por tener como memoria de programa una de tipo FLAH y una serie de recursos semejante a los modelos ms potentes, como por ejemplo los PIC16C73/4, teniendo esots ultimos el incoveniente de que su memoria de programa es de tipo EPROM. RECURSOS FUNDAMENTALES Procesador de arquitectura RISC avanzada. Juego de 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en un ciclo de instrucciones, menos las de salto que tardan dos. Frecuencia de 20 MHz. Hasta 8K palabras de 14 bits para la Memoria de Codigo, tipo FLASH. Hasta 368 bytes de Memoria de Datos RAM. Hasta 256 bytes de Memoria de Datos EEPROM. Encapsulados compatibles con los PIC16C73/74/76/77. Hasta 14 fuentes de interrupcion internas y externas. Pila con 8 niveles. Modos de direccionamiento directo, indirecto y relativo.

Perro guardia (WTD) Codigo de proteccion programable. Modo SLEEP de bajo consumo. Programacin serie en circuito con dos patitas. Voltaje de alimentacin comprendido entre 2 y 5.5V. Bajo consumo (menos de 2mA a 5V y MHz.

DISPOSITIVOS PERIFERICOS Timer0: temporizador-contador de 8 bits con predivisor de 8 bits. Timer1: temporizador-contador de 16 bits predivisor. Timer2: temporizador-ontador de 8 bits con predivisor y postdivisor. Dos modulos de Captura-Comparacion-PWM Conversor A/D de 10 bits. Puerto Serie Sincrono (SSP) con SPI en I2C. USART Puerta Paralela Esclava (PSP)

El PIC16F84 es un microcontrolador, una especie de "ordenador en miniatura" (con muchas comillas) que podremos programar. En su interior posee un microprocesador, una memoria RAM (volatil) donde guardaremos las variables, una memoria EEPROM (no volatil) donde guardaremos nuestro programa, un Timer o contador que nos facilitar algunas tareas, y alguna cosilla mas... Algunas caractersticas mas representativas son:

1Kbyte de memoria EEPROM para nuestro programa 68 bytes (de 8 bits) de memoria RAM 64 bytes de memoria EEPROM para datos (no vtiles)

Solo 35 instrucciones 13 pines de entrada/salida (un puerto de 8 bits + otro de 5 bits)

Timer/contador de 8 bits

1. Descripcin de sus pines RA0, RA1, RA2, RA3 y RA4: son los pines del puerto A RB0, RB1, RB2, RB3, RB4, RB5, RB6 y RB7: son los pines del puerto B. MCLR: Pin de reseteo del pic, cuando se pone a "0" el pic se resetea. Vdd y Vss: pines de alimentacin (Vdd 5V y Vss a masa) OSC1/CLKIN y OSC2/CLKOUT: son para el oscilador Los tipos de osciladores mas usados son el XT (cristal de cuarzo) y el RC (resistencia y condensador) el modo de conexionado es el siguiente:

Oscilador XT C1=C2=33pF Crystal = 4MHz

Oscilador RC C1 alrededor de 20pF 5K O = R1 = 100K

2. Organizacin de la memoria En primer lugar tenemos que distinguir claramente entre tres tipos de memoria:

Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podr ser leida por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra.

Dos: la memoria RAM en cuyos registros se irn almacenando los

valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra.

Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratar aqu por ser una memoria mas difcil de emplear.

2.1 La memoria EEPROM o memoria de programa El espacio marcado como "User memory Space" es el espacio de memoria donde ir nuestro programa, comprende las direcciones de memoria desde la 0000h hasta la 3FFh (3FFh en decimal es 1023, mas la direccin 0000h hacen 1024 direcciones, es decir, 1Kbyte) "Reset Vector" es la primera direccin a la que se dirige el pic al encenderlo o al resetearlo. "PC" y los "Stack Level" son empleados por el pic y nosotros no tenemos acceso a ellos.

2.2 La memoria RAM La memoria RAM no solo se usa para almacenar nuestras variables, tambin se almacenan una serie de registros que configuran y controlan el PIC. Podemos observar en la imagen que esta memoria esta dividida en dos bancos, el banco 0 y el banco 1, antes de acceder a un registro de esta memoria tenemos que preguntarnos en que banco estamos, generalmente se trabaja en el banco 0, ya veremos mas adelante como cambiamos de banco de memoria. Fijndonos en el banco 1, las direcciones desde la 00h hasta la 0Bh estn ocupadas por registros del pic, por lo que tendremos que empezar a guardar nuestras variables a partir de la direccin 0Ch. Podremos acceder al resto de registros para cambiar la configuracin o el estado del pic. Faltara aadir a este cuadro el registro mas utilizado de todos, el acumulador (W) o registro de trabajo. No se trata de un registro propiamente dicho ya que no tiene direccin

pero se usa constantemente para mover datos y dar valore a las variables (registros). Por ejemplo, si queremos copiar la informacin del registro 0Ch en el registro 0Dh no podremos hacerlo directamente, deberemos usar una instruccin para cargar el valor del registro 0Ch en el acumulador y despus otra instruccin para cargar el valor del acumulador en el registro 0Bh. 3. Registros internos A continuacin se explican todos los registros de configuracin y control de la memoria RAM. Estos registros se usan para controlar los pines del pic, consultar los resultados de las operaciones de la ALU (unidad aritmtica lgica), cambiar de banco de memoria... entre otras cosas. En BANCO "0"

INDF (direccionamiento indirecto): Direccin 00h, sirve para ver el dato de la direccin a la que apunta el registro FSR (dir. 04h) que veremos mas adelante TMR0 (Timer/contador): Direccin 01h, Aqu se puede ver el valor en tiempo real del Timer/contador. Tambin se puede introducir un valor y alterar as el conteo. Este conteo puede ser interno (cuenta ciclos de reloj) o externo (cuneta inpulsos introducidos por RA4).

PCL (Parte baja del contador de programa): Direccin 02h, Modificando este registro se modifica el contador de programa, este contador de programa es el que seala al pic en que direccin (de EEPROM) tiene que leer la siguiente instruccin. Esto se utiliza mucho para consultar tablas (ya veremos mas adelante)

STATUS: Direccin 03h, este es uno de los registros mas importantes y el que mas vas a utilizar. Hay que analizar el funcionamiento de este registro bit a bit:
o

CARRY, Direccin STATUS,0 (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operacin anterior ha rebasado la capacidad de un byte. Por ejemplo, si sumo dos nmeros y el resultado no cabe en 8 bit el CARRY se pone a "1", Pasa lo mismo cuando resto dos nmeros y el resultado es un nmero negativo. Se puede usar para saber si un nmero es mayor que otro

(restndolos, si hay acarreo es que el segundo era mayor que el primero). Una vez que este bit se pone a "1" no se baja solo (a"0"), hay que hacerlo por programa si queremos volverlo a utilizar.
o

DC (digit carry), Direccin STATUS,1 (bit 1): lo mismo que el anterior pero esta vez nos avisa si el nmero no cabe en cuatro bits. Z (zero), Direccin STATUS,2 (bit 2): Se pone a "1" si la operacin anterior ha sido cero. Y pasa a "0" si la operacin anterior no ha sido cero. Se usa para comprobar la igualdad entre dos nmeros (restndolos, si el resultado es cero ambos nmeros son iguales) PD (Power - Down bit), Direccin STATUS,3 (bit3) se pone a "0" despus de ejecutar la instruccin SLEEP*, se pone a "1" despus de ejecutar la instruccin CLRWDT* o despus de un power-up*. TO (Timer Up), Direccin STATUS,4 (bit4) se pone a "0" cuando se acaba el tiempo del WATCHDOG*, Se pone a "1" despues de ejecutar las instrucciones, CLRWDT* o SLEEP* o despues de un power-up*. RP0 y RP1 (seleccin de banco), Direccin STATUS,5 y STATUS,6. Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la seleccin del banco se hace mediante RP0 (STATUS,5), si est a "0" nos encontramos en el banco 0, y si est a "1" nos encontramos en el banco 1. IRP, Direccin STATUS,7, En este PIC no se usa para nada.

FSR (Puntero), Direccin 04h, se usa para direccionamiento indirecto en combinacin con el registro INDF (dir. 00h): se carga la direccin del registro que queremos leer indirectamente en FSR y se lee el contenido de dicho registro en INDF.

PORTA (Puerto A), Direccin 05h. Con este registro se puede ver o modificar el estado de los pines del puerto A (RA0 - RA4). Si un bit de este registro est a "1" tambin lo estar el pin correspondiente a ese bit. El que un pin est a "1" quiere decir que su tensin es de 5V, si est a "0" su tensin es 0V. Correspondencia:
o

RA0 ==> PORTA,0

o o o o

RA1 ==> PORTA,1 RA2 ==> PORTA,2 RA3 ==> PORTA,3 RA4 ==> PORTA,4

PORTB (Puerto B), Direccin 06h igual que PORTA pero con el puerto B Correspondencia:
o o o o o o o o

RB0 ==> PORTB,0 RB1 ==> PORTB,1 RB2 ==> PORTB,2 RB3 ==> PORTB,3 RB4 ==> PORTB,4 RB5 ==> PORTB,5 RB6 ==> PORTB,6 RB7 ==> PORTB,7

Direccin 07h, No utilizada por este PIC. EEDATA, Direccin 08h. En este registro se pone el dato que se quiere grabar en la EEPROM de datos EEADR, Direccin 09h. En este registro se pone la direccin de la EEPROM de datos donde queremos almacenar el contenido de EEDATA PCLATH, Direccin 0Ah. Modifica la parte alta del contador de programa (PC), el contador de programa se compone de 13 bits, los 8 bits de menor peso se pueden modificar con PCL (dir. 02h) y los 5 bits de mayor peso se pueden modificar con PCLATH

INTCON (controla las interrupciones), Direccin 0Bh. Se estudia bit a bit:


o

RBIF (Flag de interrupcin por cambio de PORTB) Direccin INTCON,0 (bit 0) se pone a "1" cuando alguno de los pines RB4, RB5, RB6, o RB7 cambia su estado. Una vez que est a "1" no pasa a "0" por si mismo: hay que ponerlo a cero por programa.

INTF (Flag de interrupcin de RB0) Direccin INTCON,1. Si est a "1" es que ha ocurrido una interrupcin por RB0, si est a "0" es que dicha interrupcin no ha ocurrido. Este bit es una copia de RB0. TOIF (Flag de interrupcin por desbordamiento de TMR0) Direccin INTCON,2. Cuando TMR0 se desborda este Flag avisa poniendose a "1". Poner a "0" por programa. RBIE (Habilita la interrupcin por cambio de PORTB) Direccin INTCON,3. Si est a "1" las interrupciones por cambio de PORTB son posibles. INTE (Habilita la interrupcin por RB0) Direccin INTCON,4. Si lo ponemos a "1" la interrupcin por RB0 es posible TOIE (Habilita la interrupcin por desbordamiento de TMR0) Direccin INTCON,5. Si este bit esta a "1" la interrupcin por desbordamiento de TMR0 es posible. EEIE (Habilita la interrupcin por fin de escritura en la EEPROM de datos) Direccin INTCON,6. Cuando este bit est a "1" la interrupcin cuando acaba la escritura en la EEPROM de datos es posible. GIE (Habilita las interrupciones globalmente) Direccin INTCON,7. Este bit permite que cualquier interrupcin de las anteriores sea posible. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente.

4. Registros internos (continuacin) Ahora vamos con el banco 1, solo un comentario antes de empezar: recuerdas la tabla de registros internos que veamos en el punto 2.2? (ver tabla) ves que los registros del banco 0 y los del banco 1 tienen direcciones distintas, en realidad podemos utilizar las mismas direcciones para referirnos a registros que estn en uno u otro banco. El pic las diferenciar sin problemas gracias al bit de seleccin de banco (RP0). Por ejemplo, la direccin 05h se refiere a PORTA si estamos en el banco 0 y a TRISA si estamos en el banco 2.

Sabiendo esto vamos con los registros del BANCO 1:


INDF, Direccin 00h, Igual que en el Banco 0 OPTION, Direccin 01h, (configuracin del prescaler, Timer, y alguna cosa mas) Se estudia bit a bit
o

PS0, PS1 y PS2 (Bits del 0 al 2) Configuracin del preescaler: El preescaler es un divisor de pulsos que est a la entrada del Timer-contador. El prescaler divide el nmero de pulsos que le entran al timer-contador o al Wachtdog. El factor de divisin es el siguiente (segn los valores de PS2, PS1 y PS0 respectivamente

PSA, Direccin OPTION,3. Bit de asignacin de prescaler: si est a "1" el prescaler se asigna a WDT (Wachtdog), si est a "0" se asigna al TMR0 TOSE, Direccin OPTION,4. Bit de seleccin del tipo de flanco para TMR0. A "1" se incrementa TMR0 por flanco descendente de RA4, a "0" se incrementa TMR0 por flanco ascendente de RA4.

TOCS, Direccin OPTION,5. Selecciona la entrada de reloj de TMR0. A "1" la entrada de reloj de TMR0 es por flanco de la patilla RA4, a "0" la entrada de reloj de TMR0 es por ciclo de reloj interno. INTEDG, Direccin OPTION,6. Tipo de flanco para la interrupcin por RB0: A "1" la interrupcin ser por flanco ascendente, a "0" la interrupcin ser por flanco decendente. RBPU, direccin OPTION,7. Carga Pull-Up en puerto B. A "0" todas las salidas del puerto B tendrn una carga de pull-Up interna.

PCL, Direccin 02h, igual que en el banco 0 STATUS, Direccin 03h, Igual que en el banco 0 FSR, Direccin 04h, Igual que en el banco 0 TRISA, Direccin 05h, Configura el puerto A como entrada o salida. Si un bit de este registro se pone a "0" el pin correspondiente en el puerto A ser una salida, por el contrario, si se pone a "1" el pin correspondiente en el puerto A ser una entrada.

TRISB, Direccin 06h, Igual que el anterior pero con el puerto B Direccin 07h, No usada en este pic EECON1, Direccin 08h, Controla la lecturo y escritura en la EEPROM de datos. Se estudia bit a bit:
o

RD, Direccin EECON1,0 (bit 0) A "1" iniciamos el ciclo de lectura, cuando acaba el ciclo se pone a "0" el solito WR, Direccin EECON1,1 (bit 1) A "1" indicamos que comienza el ciclo de escritura, cuando acaba el ciclo se pone a "0" l solito WREN, Direccin EECON1,2 (bit 2) si lo ponemos a "1" se permite la escritura, a "0" no se permite. WRERR, Direccin EECON1,3 (bit 3) error de escritura, si est a "1" indica que no se ha terminado el ciclo de escritura. EEIF, Direccin EECON1,4 (bit 4) interrupcin de ciclo de escritura de la EEPROM, si est a "1" indica que el ciclo de escritura ha terminado, hay que ponerlo a "0" por programa. Bits del 5 al 7 no se utilizan.

EECON2, Direccin 09h, Se utiliza para la escritura en la EEPROM de datos como medida de seguridad: para poder guardar algo en la EEPROM hay que cargar el valor 55h en este registro.

PCLATH, Direccin 0Ah, Igual que en el banco 0 INTCON, Direccin 0Bh, Igual que en el banco 1

5. Set de Instrucciones del PIC16F84 Para entender mejor cada instruccin se explica a continuacin el significado de algunos parmetros:

f: Registro al que afecta la instruccin W: Acumulador (Working register) b: Nmero de bit (hay instrucciones que afectan a un solo bit) k: constante (un nmero) d: seleccin de destino del resultado de la instruccin, puede ser "0" o "1", si es "0" el resultado se guarda en el acumulador (W) y si es "1" se guyarda en el registro f al que afecta la instruccin.

5.1 Instrucciones orientadas a registros:

ADDWF f,d Suma W y el registro f, el resultado lo guarda segn d (si d=0 se guarda en W y si d=1 se guarda en f). ANDWF f,d Realiza la operacin AND lgica entre W y f, el resultado lo guarda segn d. CLRF f Borra el registro f (pone todos sus bits a cero). CLRW - Borra el acumulador. COMF f,d Calcula el complementario del registro f (los bits que estan a "0" los pone a "1" y viceversa. Resultado segn d. DECF f,d Decrementa f en uno (le resta uno). Resultado segn d. DECFSZ f,d Decrementa f y se salta la siguiente instruccin si el resultado es cero. Resultado segn d. INCF f,d Incrementa f en uno (le suma uno). Resultado segn d.

INCFSZ f,d Incrementa f y se salta la siguiente instruccin si el resultado es cero (cuando se desborda un registro vuelve al valor 00h). Resultado segn d. IORWF f,d Realiza la operacin lgica OR entre W y f. Resultado segn d. MOVF f,d Mueve el contenido del registro f a W si d=0 (si d=1 lo vuelve a poner en el mismo registro) MOVWF f mueve el valor de W a f. Por ejemplo, si queremos copiar el valor del registro "REG1" al registro "REG2" (ya veremos como ponerles nombres a los registros) MOVF MOVWF REG1,0 REG2 ;mueve ;mueve el el valor valor de de REG1 W a escribiremos: a W REG2

Lo que va despus del ; son comentarios


NOP - No hace nada, solo pierde el tiempo durante un ciclo. RLF f,d Rota el registro f hacia la izquierda a travs del bit CARRY (todos los bits se mueven un lugar hacia la izquierda, el bit 7 de f pasa al CARRY y el bit CARRY pasa al bit 0 de f). Resultado segn d.

RRF f,d Lo mismo que RLF pero hacia la derecha. SUBWF f,d Resta f y W (f - W). Resultado segn d. SWAPF f,d intercambia los 4 primeros bit de f por los otros cuatro. Resultado segn d. XORWF f,d Realiza la operacin lgica XOR (OR exclusiva) entre W y f. Resultado segn d.

5.2 Instrucciones orientadas a bits:


BCF f,b Pone a "0" el bit b del registro f BSF f,d Pone a "1" el bit b del registro f BTFSC f,b Se salta la siguiente instruccin si el bit b del registro f es "0" BTFSS f,b Se salta la siguiente instruccin si el bit b del registro f es "1"

5.3 Instrucciones orientadas a constantes y de control:

ADDLW k Le suma el valor k al acumulador (W). ANDLW k Operacin lgica AND entre W y el valor k (resultado en W). CALL k Llamada a subrutina cuyo inicio esta en la direccin k CLRWDT - Borra el registro Watchdog GOTO k Salta a la direccin k de programa. IORLW k Operacin lgica OR entre W y el valor k (resultado en W) MOVLW k carga el acumulador con el valor k. Por ejemplo, si queremos cargar el valor MOVLW 2Ah 2AH en ;carga el el registro acumulador "REG1" con el escribiremos: valor 2Ah

MOVWF REG1 ;mueve el valor de W a "REG1"


RETFIE - Instruccin para volver de la interrupcin RETLW k carga el valor k en W y vuelve de la interrupcin RETURN - vuelve de una subrutina. SLEEP - El pic pasa a modo de Standby

PROCESADOR RISC CON ARQUITECTURA HARVARD Esta arquitectura aplicada por Microchip en sus microcontroladores se caracteriza por la indenpendencia entre la memoria de codigo y la de datos. Asi, tantota capacidad como el tamao de los buses de cada memoria se adaptan estrictamente a las necesidades del diseo, facilitando el trabajo en paralelo de las dos memorias, lo que permite obtener altas cotas de rendimiento. La filosofia RISC se hace patente en el reducido numero de instrucciones que forman su repertorio. Solo consta de 35 instrucciones, que se ejecutan en un ciclo, equivalente a cuatro periodos de reloj, excepto las de salto que necesitan dos ciclos. ARQUITECTURA

ORGANIZACIN DE LA MEMORIA DE PROGRAMA La memoria FLASH enla que se graba el programa de aplicacin en los PIC16F877, puede tener una capacidad de 4K u 8K palabras de 14 bits cada una. Dicha memoria esta dividida en paginas de 2K palabras y est direccionada con el PC, que tiene unntamao de 13 bits.

La Pila, que tiene 8 niveles de profundidad, es transparente para el usuario, es decir, funciona automticamente y no dispone de instrucciones para guardar o sacar de ella informacin. Con la instruccin CALL y con las interrupciones el valor PC se salva en el nivel superior. Con las instrucciones RETURN, RETFIE y RETLW el valor contenido en el nivel superior de la Pila se carga en el PC. Al poseer la Pila slo 8 niveles le corresponde al programador preocuparse por los anidamientos en las subrutinas para no sobrepasar dicho valor. El vextor de Reset ocupa la direccion 0000h y el vector de interrupcion la 0004h. ORGANIZACIN DE LA MEMORIA DE DATOS RAM La memoria de datos tiene posiciones implentadas en RAM y otras en EEPROM. En la seccion RAM, se alojan los registros operativos fundamentales ene. Funcionamiento del procesador y en el manejo de todos sus perifericos, ademas de registros que el programador puede usar para informacin de trabajo propia de la aplicacin. La RAM estatica consta de 4 bancos con 128 bytes cada uno. En las posiciones iniciales de cada banco se ubican los Registros Especificos que gobiernan al procesador y sus recursos. En la figura tal xxxxxxx Para seleccionar el banco al que se se desea acceder en la RAM se emplean los bits 5 y 6 del Registro de Estado, denominados RP1 y RP0 respectivamente, segn el codigo siguiente:

PATITAS DE PROPOSITO GENERAL OSC1/CLKIN (9): entrada del cristal de cuarzo o del oscilador externo. OSC2/CLKOUT (10): salida del cristal de cuarzo. En modo RC la patita OSC2 saca la cuarta parte de la frecuencia que se introduce por OSC1, que determina el ciclo de instruccin.

VSS (8-19): conexin a Tierra. VDD (20): entrada de la alimentacin positiva. MCLR#/VPP/THV (1): entrada de RESET o entrada del voltaje de programacin o voltaje alto en el modo set.

PUERTA A RA0/AN0 (2): puede actuar como linea digital de E/S o como entrada analogica al conversor AD (canal 0) RA1/AN1 (3): igual que la RA0/AN0 RA/AN2/VREF- (4): puede ser linea digital de E/S, entrada analogica o entrada del voltaje negativo de referencia. RA3/AN3/VREF+ (5): linea digital de E/S, entrada analogica o entrada del voltaje positivo de referencia. RA4//T0CK (6): linea digital de E/S o entrada del reloj del Timer0. salida con colector abierto RA5/SS#/AN4 (7): linea digital de E/S, entrada analogica o seleccin como esclavo de la puerta sincrona. PUERTA B RB0/INT (21): linea digital de E/So entrada de peticin de interrupcion externa. RB1 (22): linea digital de E/S. RB2 (23): linea digital de E/S. RB3/PGM (24): linea digital de E/S o entrada del voltaje bajo para programacin. RB4 (25): linea digital de E/S. RB5 (26): linea digital de E/S. RB6/PGC (27): linea digital de E/S. En la programacin serie recibe las seales de reloj.

RB7/PGD (28): linea digital de E/S. En la programacin serie actua como entrada de datos.

PUERTA C RC0/T1OSO/T1CK ():linea digital de E/S o salida del oscilador del Timer1 o como entrada de reloj del Timer1. RC1/T1OSI/CCP2():linea digital de E/S o entrada al oscilador del Timer1 o entrada al modulo Captura2/salida Comparacion2/salida de PWM2. RC2/CCP1(): E/S digital. Tambien puede actuar como entrada Captura1/Salida Comparacion1/salida de PWM1. RC3/SCK/SCL(): E/S digital o entrada de reloj serie sincrona/salida de los modos SPI e I2C. RC4/SD/SDA(): E/S digital o entrada de datos en modo SPI o I/O datos en modo I2C. RC5/SDO(): E/S digital o salida de datos en modo SPI RC6/TX/CK(): E/S digital o . patita del transmisor del USART asincrono o como reloj del sincrono. RC7/RX/DT(): E/S digital o receptor del USART asincrono o como datos en el sincrono. PUERTA D RD0/PSP0-RD7/PSP7: las 8 patitas de esta puerta pueden actuar como lineas de E/S digitales o como lineas para la transferencia de informacin en la comunicacin de la puerta paralela esclava. PUERTA E Slo tiene 3 patitas.

RE0/RD#AN5: E/S digital o seal de lectura para la puerta paralela esclava o entrada analogica (canal 5). RE/WR#/AN6: E/S digital o seal de escritura en la puerta paralela esclava o entrada analogica al conversor A/D (canal 6). RE2/CS#/AN7: E/S digital o activacion/desactivacion de la puerta paralela esclava o entrada analogica (canal 7).

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