material pract 2

Upload: kathleensue

Post on 04-Apr-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

  • 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.