Upload
kathleensue
View
244
Download
0
Embed Size (px)
Citation preview
7/31/2019 Material Pract 2
1/19
REPBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DEL PODER POPULAR PARA LA DEFENSA
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA
DE LA FUERZA ARMADA NACIONAL
U.N.E.F.A. NCLEO ARAGUA SEDE MARACAY
COORDINACIN DE TELECOMUNICACIONES
LABORATORIO DE MICROPROCESADORES
Material terico de la Prctica N 2: MANEJO DEL DISPLAY 7 SEG, LCD Y EEPROM
CON EL PIC
Manejo de la memoria EEPROM del PIC
La memoria EEPROM (Electrically Erasable Programmable ROM) - ROM programable y
borrable elctricamente del PIC 16F876/77 tiene una capacidad de 256 x 8 bytes, al igualque el PIC 18F4550. El contenido de la EEPROM se puede cambiar durante elfuncionamiento (similar a la RAM), pero se queda permanentemente guardado despusde la prdida de la fuente de alimentacin (similar a la ROM). Por lo tanto, la EEPROM seutiliza con frecuencia para almacenar los valores creados durante el funcionamiento, quetienen que estar permanentemente guardados
Comandos usados para el manejo de la EEPROM del PIC:
EDATA: coloca una constante o cadena de caracteres directamente en la memoriaEEPROM del PIC, que pueden ser de 16 bits, 32 bits o punto flotante.
Los operadores constante 0, 1, n son los valores que se grabarn en la memoria. Este
comando no permite especificar la direccin, por lo que los valores sern colocados a
partir de la direccin 0.
Sintaxis:
EDATA constante 0, constante 1, constante n
Ejemplo N 1:
EDATA 20, %00000111, $0F,CLASE
7/31/2019 Material Pract 2
2/19
En el ejemplo N 1, los valores 20, 7, 15 y los caracteres ASCII C, L, A, S, E, son
guardados en la EEPROM del PIC a partir de la direccin 0.
En el ejemplo N 2, la cadena de caracteres CLASE, es colocado a partir de la direccin 0
de la EEPROM ocupando un byte por carcter y, como contiene 5, la cadena de caracteres
MICRO se grabar a partir de la direccin 5, ocupando igualmente 5 bytes. El prximo
texto o constante se grabar a partir de la direccin 10.
En el ejemplo N 3, se usa un identificador del texto, como una etiqueta. El nombre
TEXTO_CLASE se refiere a la direccin 0, a partir de la cual estn guardado los caracteres
CLASE y el nombre TEXTO_MICRO se refiere a la direccin 5, a partir de la cual estn
guardado los caracteres MICRO. Esto es para evitar que la bsqueda de caracteres no se
convierta en un proceso tedioso al tener que averiguar el principio y fin de varias cadenas
de textos guardadas en la memoria.
EWRITE: escribe informacin en la memoria EEPROM del PIC.
La direccin es una constante o variable que contiene la direccin donde ser guardada la
informacin que contiene VARIABLE.
Nota: La instruccin EDATA se emplea para almacenar informacin cuando se almacena el
programa, la instruccin EWRITE almacena los datos durante la corrida del programa.
Ejemplo N 2:
EDATA CLASEEDATA MICRO
Ejemplo N 3:
TEXTO_CLASE EDATA CLASETEXTO_MICRO EDATA MICRO
Sintaxis:
EWRITE direccin, [VARIABLE]
7/31/2019 Material Pract 2
3/19
En el ejemplo N 4, con un ciclo FOR se incrementa de uno en uno el valor de la variable
DIR, la cual represente la direccin. La variable VALOR, que representa la informacin que
ser guardada en la memoria EEPROM, se incrementa de dos en dos; es decir, se est
guardando en la EEPROM desde la direccin 0 hasta la 100, la informacin que contiene la
variable VALOR la cual ocupa un byte.
Escribir en la memoria EEPROM con el comando EWRITE, puede tomar aproximadamente
10ms por byte; a diferencia del proceso de lectura, el cual se hace casi de manera
instantnea.
EREAD: lee informacin de la memoria EEPROM del PIC.
Nombre_variable es una variable donde se guardar el valor almacenado en la direccin
especificada. La direccin puede ser una constante, variable o expresin.
En el ejemplo N 5, luego de guardar los valores de 40 y 1000 en las direcciones 0 y 1 de la
EEPROM con el comando EDATA, se lee y almacena el valor que est en la direccin 0 (40)
en VAR1, y se lee y almacena el valor que est en la direccin 1 (1000) en VAR2.
Sintaxis:
Nombre_variable = EREAD direccin
Ejemplo N 5:DIM VAR1 AS BYTEDIM VAR2 AS WORD
EDATA 40, 1000VAR1=EREAD 0
VAR2= EREAD 1
Ejemplo N 4:
DIM VALOR AS BYTE
DIM DIR AS BYTE
VALOR = 200
FOR DIR = 0 TO 100EWRITE DIR, [VALOR]
VALOR = VALOR + 2
NEXT
7/31/2019 Material Pract 2
4/19
Manejo de tablas para la asignacin de datos.
LOOKUPL
Busca el valor especificado por la direccin y lo almacena en la variable VALOR . Ladireccin puede ser una constante o variable. Los valores dentro del corchete pueden serconstantes o variables de hasta 16 bits, y permite hasta 85 valores.
En el ejemplo N 6, se ha creado una tabla con tres valores (10, 29, 31), los cualesmediante el incremento de la variable DIR en cada ciclo, se van almacenando en la
variable VAL a travs del comando LOOKUPL y es mostrado en el puerto C.Cabe destacar que el comando LOOKUPL es capaz de procesar cualquier tipo de variable oconstante.
Investigar los siguientes puntos:
1) Funcionamientos de una memoria EEPROM. Los buses de datos, direccin y controlnecesarios para realizar las operaciones de lectura y escritura. La forma como se
define su capacidad: cantidad de palabras y tamao de la palabra.
2)
Los distintos comandos para el manejo de tablas: LOOKUP, LOOKUPL, LOOKDOWN,LOOKDOWNL, y las diferencias entre cada uno de ellos.
Sintaxis:
VALOR = LOOKUPL direccin [valor1, valor2, valor3,]
Ejemplo N 6:
DIM VAL AS BYTE
DIM DIR AS BYTE
INICIO:
VAL= LOOKUPL DIR [10, 29, 31]
INC DIR
PORTC=VAL
GOTO INICIO
7/31/2019 Material Pract 2
5/19
Manejo del display 7 segmentos con el PIC
El display 7 segmentos es un conjunto de 7 leds conectados y posicionadosapropiadamente. Cada segmento esta designado con una letra. Existen 2 tipos de display 7
segmentos el nodo comn y el ctodo comn. La figura 1 muestra el orden de los 7segmentos en el Display.
Figura 1. Display 7 seg.
Un display lo empleamos para mostrar un nmero del 0 al 9, aunque tambin esposible mostrar caracteres alfanumricos. En la figura 2 se puede apreciar los segmentos
que se encienden para mostrar los nmeros del 0 al 9, y las letras a, b, c, d, e y f. Es posible
mostrar todo el alfabeto.
Figura 2. Segmentos activados de acuerdo al nmero y letra.
Ahora bien, cmo es posible manejar un display 7 seg con el PIC? Depende decmo lo conectemos al PIC. Supongamos que se conectan los pines RC0, RC1, RC2 y RC3 al
un decodificador BCD-7 seg, y luego este al display. Para mostrar los nmeros del 0 al 9
solo se igualan dichos valores al puerto C.
PORTC=%00000000 --------- Para mostrar el 0
7/31/2019 Material Pract 2
6/19
PORTC=%00000001 ---------- Para mostrar el 1PORTC=%00000010 ---------- Para mostrar el 2. Y as sucesivamente hasta el 9.
En los casos en que se requiera mostrar valores entre 10 y 99, es necesario usar 2
displays 7 segmentos ya que son 2 dgitos (conectando RC4, RC5, RC6 y RC7 al otrodisplay), considerando que los valores que se igualan al puerto C deben estar en BCD. Esto
quiere decir que se tiene que realizar una conversin de decimal a BCD.
PORTC=%00010000 -------- Para mostrar el 10
PORTC=%00010001 -------- Para mostrar el 11
PORTC=%10000010 -------- Para mostrar el 82
PORTC=%10011001 -------- Para mostrar el 99
Manejo del visualizador LCD con el PIC
Este componente est especficamente fabricado para ser utilizado con los
microcontroladores. Se utiliza para visualizar los diferentes mensajes en un visualizador
de cristal lquido miniatura. El modelo descrito aqu es el ms utilizado en la prctica por
su bajo precio y grandes capacidades. Puede visualizar mensajes en dos lneas con 16
caracteres cada una. Puede visualizar todas las letras de alfabeto, letras de alfabeto
griego, signos de puntuacin, smbolos matemticos etc. Tambin es posible visualizar
smbolos creados por el usuario. Entre otras caractersticas tiles es el desplazamiento
automtico de mensajes (a la izquierda y a la derecha). Una pantalla LCD puede visualizar
dos lneas con 16 caracteres cada una. Cada carcter consiste en 5x8 pxeles.
Figura 3. Pixeles de la LCD
7/31/2019 Material Pract 2
7/19
El contraste del visualizador depende del voltaje de alimentacin y de si los mensajes se
visualizan en una o dos lneas. Por esta razn, el voltaje variable 0-Vdd se aplica al pin
marcado como VO. Un potencimetro se utiliza con frecuencia para este propsito.
Memoria LCD
El visualizador LCD dispone de tres bloques de memoria:
DDRAM Display Data RAM (RAM de datos de visualizacin); CGRAM Character Generator RAM (generador de caracteres RAM); y CGROM Character Generator ROM (generador de caracteres ROM).
Memoria DDRAM
La memoria DDRAM se utiliza para almacenar los caracteres a visualizar. Tiene una
capacidad de almacenar 80 caracteres. Algunas localidades de memoria estn
directamente conectadas a los caracteres en el visualizador.
El principio de funcionamiento de la memoria DDRAM muy simple: basta con configurar el
visualizador para incrementar direcciones automticamente (desplazamiento a la
derecha) y establecer la direccin inicial para el mensaje que se va a visualizar (por
ejemplo 00 hex).
Luego, todos los caracteres enviados por las lneas D0-D7 se van a visualizar en el formato
de mensaje al que nos hemos acostumbrado - de la izquierda a la derecha. En este caso, la
visualizacin empieza por el primer campo de la primera lnea ya que la direccin inicial es
00hex. Si se enva ms de 16 caracteres, todos se memorizarn, pero slo los primeros 16
sern visibles. Para visualizar los dems, se debe utilizar el comando shift. Virtualmente,
parece como si el visualizador LCD fuera una ventana, desplazndose de la izquierda a la
derecha sobre las localidades de memoria con diferentes caracteres. En realidad, as es
cmo se cre el efecto de desplazar los mensajes sobre la pantalla.
7/31/2019 Material Pract 2
8/19
Si se habilita ver el cursor, aparecer en la localidad actualmente direccionada. En otras
palabras, si un carcter aparece en la posicin del cursor, se va a mover automticamente
a la siguiente localidad direccionada.
Como sugiere su nombre, la memoria DDRAMes un tipo de memoria RAM as que losdatos se pueden escribir en ella y leer de ella, pero su contenido se pierde
irrecuperablemente al apagar la fuente de alimentacin.
Memoria CGROM
La memoria CGROM contiene un mapa estndar de todos los caracteres que se pueden
visualizar en la pantalla. A cada carcter se le asigna una localidad de memoria:
7/31/2019 Material Pract 2
9/19
Las direcciones de las localidades de memoria CGROM corresponden a los caracteres
ASCII. Si el programa que se est actualmente ejecutando llega al comando enviar el
carcter P al puerto, el valor binario 0101 0000 aparecer en el puerto. Este v alor es el
equivalente ASCII del carcter P. Al escribir este valor en un LCD, se visualizar el smbolo
de la localidad 0101 0000 de la CGROM. En otras palabras, se visualizar el carcter P. Esto
se aplica a todas las letras del alfabeto (minsculas y maysculas), pero no se aplica a los
nmeros.
Como se muestra en el mapa anterior, las direcciones de todos los dgitos se desplazan
por 48 en relacin con sus valores (direccin del dgito 0 es 48, direccin del dgito 1 es 49,
direccin del dgito 2 es 50 etc.). Por consiguiente, para visualizar los dgitos
correctamente es necesario aadir el nmero decimal 48 a cada uno antes de enviarlos a
un LCD.
7/31/2019 Material Pract 2
10/19
Qu es un cdigo ASCII? Desde su aparicin hasta hoy en da, las computadoras han sido
capaces de reconocer solamente nmeros, y no las letras. Esto significa que todos los
datos que una computadora intercambia con un perifrico, reconocidos como letras por
los humanos, en realidad estn en el formato binario (el teclado es un buen ejemplo). En
otras palabras, a cada carcter le corresponde la combinacin nica de ceros y unos. El
cdigo ASCII representa una codificacin de caracteres basada en el alfabeto ingls. El
ASCII especifica una correspondencia entre los smbolos de caracteres estndar y sus
equivalentes numricos.
Memoria CGRAM
Adems de los caracteres estndar, el visualizador LCD puede visualizar smbolos definidos
por el usuario. Esto puede ser cualquier smbolo de 5x8 pxeles. La memoria
RAMdenominada CGRAM de 64 bytes lo habilita.Los registros de memoria son de 8 bits de anchura, pero slo se utilizan 5 bits ms bajos.
Un uno lgico (1) en cada registro representa un punto oscurecido, mientras que 8
localidades agrupados representan un carcter. Esto se muestra en la siguiente figura:
7/31/2019 Material Pract 2
11/19
Los smbolos estn normalmente definidos al principio del programa por una simple
escritura de ceros y unos de la memoria CGRAM as que crean las formas deseadas. Para
visualizarlos basta con especificar su direccin. Preste atencin a la primera columna en el
mapa de caracteres CGROM. No contiene direcciones de la memoria RAM, sino los
smbolos de los que se est hablando aqu. En este ejemplo visualizar 0 significa visualizar
sonrisa, visualizar 1 significa - visualizar ancla etc.
Conectar el visualizador LCD
Dependiendo de cuntas lneas se utilizan para conectar un LCD al microcontrolador, hay
dos modos de LCD, el de 8 bits y el de 4 bits. El propsito principal del modo de LCD de 4
bits es de ahorrar los valiosos pines de E/S del microcontrolador. Slo los 4 bits ms altos
(D4-D7) se utilizan para la comunicacin, mientras que los dems pueden quedarse
desconectados. Cada dato se enva al LCD en dos pasos - primero se envan 4 bits ms
altos (normalmente por las lneas D4-D7), y luego los 4 bits ms bajos. La inicializacinhabilita que el LCD conecte e interprete los bits recibidos correctamente.
Despus de enviar un carcter o un comando es importante dar al LCD suficiente tiempo
para hacer su tarea. Debido al hecho de que la ejecucin de un comando puede durar
aproximadamente 1.64mS, el LCD tarda como mximo 2mS en realizar su tarea.
Donde R7= 1k 1/4W y R6 = 10k 1/4W
Figura 4. Conexin de la LCD con el Microcontrolador
7/31/2019 Material Pract 2
12/19
Descripcin de pines de los mdulos LCD
A lo largo de un lado de una placa impresa pequea del visualizador LCD se
encuentran los pines que le permiten estar conectado al microcontrolador. Hay 14 pines
en total marcados con nmeros. Su funcin se muestra en la tabla que sigue:
Comandos bsicos del visualizador LCD
Todos los datos transmitidos a un visualizador LCD por las salidas D0-D7 sern
interpretados como un comando o un dato, lo que depende del estado lgico en el pin RS:
RS = 1 - Los bits D0 - D7 son direcciones de los caracteres a visualizar. El procesadorLCD direcciona un carcter del mapa de caracteres y lo visualiza. La direccin
DDRAM especifica la localidad en la que se va a visualizar el carcter. Esta
direccin se define antes de transmitir el carcter o la direccin del carcter
anteriormente transmitido ser aumentada automticamente.
RS = 0 - Los bits D0 - D7 son los comandos para ajustar el modo del visualizador.
7/31/2019 Material Pract 2
13/19
En la siguiente tabla se muestra una lista de comandos relacionados con la operacin del
LCD:
C O M A N D O R S R W D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
T I E M P O
D E
E J E C U C I
Borrar el visualizador 0 0 0 0 0 0 0 0 0 1 1.64mS
Poner el cursor al
nicio0 0 0 0 0 0 0 0 1 x 1.64mS
Modo de entrada 0 0 0 0 0 0 0 1 I/D S 40uS
Activar/desactivar el
isualizador0 0 0 0 0 0 1 D U B 40uS
Desplazar el
ursor/visualizador0 0 0 0 0 1 D/C R/L x x 40uS
Modo de
uncionamiento0 0 0 0 1 DL N F x x 40uS
stablecer la
direccin CGRAM0 0 0 1 Direccin CGRAM 40uS
stablecer la
direccin DDRAM0 0 1 Direccin DDRAM 40uS
eer la bandera
BUSY(ocupado)(BF)0 1 BF Direccin DDRAM -
scribir en la CGRAM
o en la DDRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0 40uS
eer la CGRAM o la
DDRAM1 1 D7 D6 D5 D4 D3 D2 D1 D0
7/31/2019 Material Pract 2
14/19
I/D 1 = Incremento (por 1) R/L 1 = Desplazamiento a la derecha
0 = Decremento (por 1) 0 = Desplazamiento a la izquierda
S 1 =Desplazamiento del visualizador activado
0 = Desplazamiento del visualizador desactivado
DL 1 =Bus de datos de 8 bits
0 = Bus de datos de 4 bits
D 1 = Visualizador encendido N 1 = Visualizar en dos lneas
0 = Visualizador apagado 0 = Visualizar en una lnea
U 1 = Cursor activado F 1 = Carcter de 5x10 puntos
0 = Cursor desactivado 0 = Carcter de 5x7 puntos
B 1 = Parpadeo del cursor encendido
0 = Parpadeo del cursor apagado
D/C 1 = Desplazamiento del visualizador
0 = Desplazamiento del cursor
QU ES UNA BANDERA DE OCUPADO (BUSY FLAG)?
En comparacin al microcontrolador, el LCD es un componente extremadamente lento.
Por esta razn, era necesario proporcionar una seal que, al ejecutar un comando,
indicara que el visualizador estaba listo para recibir el siguiente dato. Esta seal
denominada bandera de ocupado (busy flag) se puede leer de la lnea D7. El visualizador
est listo para recibir un nuevo dato cuando el voltaje en esta lnea es de 0V (BF=0).
Ejemplo del manejo de la LCD
7/31/2019 Material Pract 2
15/19
7/31/2019 Material Pract 2
16/19
COMANDOS ALTO NIVEL EL EN PARA MANEJO DE PUERTOS:
COUNTER: Cuenta el nmero de ciclos (0 1 0) que ocurren en un pin de entrada/salida
durante un perodo de tiempo especificado. Se utiliza para determinar frecuencias de
seales, trenes de pulsos generalmente de onda cuadrada. Sintaxis:
Variable= COUNTER Pin, Perodo
Pin: Variable, constante o expresin que indica cual pin de E/S ser utilizado, el mismo
ser convertido en entrada.
Perodo: Variable, constante o expresin de (0-65535ms) que especifica el tiempo durante
el cual, se har el conteo.
Variable: Variable que almacena el resultado de la cuenta.
PULSIN: Mide el ancho de un pulso presente en un pin y su valor en tiempo lo almacena
en una variable: Sintaxis:
Variable = PULSIN Pin, Estado
Pin: Es una variable constante que indica cual pin de E/S ser utilizado, el mismo ser
convertido en entrada.
Estado: (0,1) (Low/High) es el flanco requerido para empezar la cuenta.
Variable: Variable que almacena el resultado de la operacin.
7/31/2019 Material Pract 2
17/19
Nota: Para un resonador de 20 MHz, el conteo de PULSIN se realizar en intervalos de 2uS.
El rango de PULSIN ser entre 1 y 65535.
PULSEOUT: Genera un pulso de una duracin especificada en un terminal de E/S. Sintaxis:
PULSOUT Pin, Perodo, Estado Inicial
Pin: Es una variable constante que indica cual pin de E/S ser utilizado, el mismo ser
convertido en salida.
Perodo: Es una variable, constante o expresin de (4us 65535 us) que especifica la
cantidad de tiempo en us que durar el pulso.
RCIN: Se utiliza generalmente para medir perodos de tiempos muy cortos como la carga /
descarga de un circuito RC a travs de un pin de E/S. Sintaxis:
Variable = RCIN Pin, Estado
Pin: Es una variable constante que indica cual pin de E/S ser utilizado.
Estado: Es una variable constante de 1 bit (0 1) que especifica el estado en el cual
terminar el perodo de tiempo, nivel lgico cero nivel lgico uno.
Variable: Es una variable que almacena el tiempo en micro segundos, en el cual, ocurri el
cambio de estado de nivel del pin especificado. Resolucin para 20 MHz igual a 2us.
Cuando RCIN se ejecuta, se comienza a incrementar un contador. El contador se parar
tan pronto el estado del pin cambie de valor con respecto al valor especificado (0,1). RCIN
retornar un valor que ser almacenado por la variable.
7/31/2019 Material Pract 2
18/19
RCIN puede ser utilizado para medir el valor de resistencias o condensadores. Un uso muy
comn es leer el valor de un potencimetro resistivo. Cuando se desee utilizar este
comando, se debern realizar las siguientes acciones:
Colocar el pin de E/S como salida y con un nivel alto (1).
Esperar suficiente tiempo para que el condensador se cargue, aprox. 4 constantes de
tiempo = (4xRxC) seg.
Ejecutar el comando RCIN. El cual configurar al pin seleccionado como una entrada y
medir el voltaje del condensador sobre el pin, el cual, se estar descargando a travs de
la resistencia. El tiempo en que demora el pin de pasar de un estado lgico (1) al estado
lgico (0) se almacenar en la variable resultado, as conociendo este tiempo podemos
decir:
RCIN (units) = 600 x R (Kohm) x C (uF)
7/31/2019 Material Pract 2
19/19
Manejo del teclado matricial
La siguiente es una tabla cuyos valores sombreados indican la posicin en el LOOKUP que ocupar
el valor de la tecla.
Tabla 1. Coincidencias de pines del Puerto B
RB0 RB1 RB2 RB3RB4 0 4 8 12
RB5 1 5 9 13
RB6 2 6 10 14RB7 3 7 11 15
Ejemplo 1: Observe en la figura 1 que la tecla * coincide RB0 con RB4. Esto quiere decir, segn la
tabla 1, que el valor de * ocupar la posicin 0 en el LOOKUP. A su vez, la tecla 0 coincide RB0
con RB5; por lo que, segn la tabla 1, la tecla 0 ocupar la posicin 1 en el LOOKUP. As, elcomando quedara de la siguiente manera:
key=LookUp tecla,["*",0,"#",255,7,8,9,255,4,5,6,255,1,2,3,255]
Puede apreciar que en las posiciones 3, 7, 11 y 15 del LOOKUP est el valor de 255, esto es porque
la coincidencia con RB7 nunca ocurre ya que es un teclado de 4x3.
Figura 1. Conexin del teclado con el PIC
Esto significa, que independientemente de cmo conectemos el teclado al puerto B, lo que
cambian son los valores dentro del LOOKUP, siempre y cuando exista una coincidencia como las
mostradas en la tabla 1.