Practica 24LC256 - LCD

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Mobile: 0-82659680 0-90552583

Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

PRACTICA #9

USO DE UNA MEMORIA EEPROM Y LCD


OBJETIVOS

 Aprender a guardar datos en una memoria EEPROM externa por comunicación I2C.
 Mostrar los datos y las direcciones de la memoria EEPROM externa en el LCD.

DESCRIPCION:

El presente proyecto hace uso del interruptor S1-S2, LCD y memoria EEPROM, por lo que vamos a
tener tres estados posibles.

1. Al estar ambos botones sin presionar se realizara una operación de LECTURA y se mostrara
en el LCD la dirección de la memoria y el dato que está leyendo.
2. Al presionar S1 se ejecuta la operación BORRAR, en esta etapa se borraran todos los datos
de cada dirección dejando los datos que vienen de fábrica, 0xFF.
3. Al presionar S2 se ejecuta la operación ESCRIBIR, se escribirá datos en cada dirección de la
memoria EEPROM.

Nota: El punto dos y tres puede tardar entre tres a cuatro minutos así que en el caso de ver
demora no desesperar, para comprobar que se terminó el proceso se puede verificar con los
LED, ya que van a estar apagados

DESARROLLO:

Para realizar el práctica planteado es necesario ubicar algunos JUMPER de tal manera que permita
el uso de los componentes necesarios para este práctica.
1/8 Página

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

1. El módulo Desarrollo PIC16F887 puede utilizar una de dos fuentes de alimentación.


 Fuente de alimentación USB desde PC a través del cable USB
 Fuente de alimentación EXT desde un Jack DC.

2. Para hacer uso de los pulsadores S1 y S2 tenemos que ubicar el JUMPER que esta alado
de los botones en la posición EN (Enable=Habilitado) para ambos pulsadores como se
muestra en la figura.

3. Para realizar la comunicación I2C es necesario dos resistencias pull-up conectadas a ambos
buses de comunicación, estas se habilitan ubicando ambos JUMPER en posición EN como
se muestra en la figura.
2/8 Página

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

4. En el módulo de desarrollo se dispone de un conector para colocar un LCD 2x16, a


la vez posee un potenciómetro que se utiliza para ajustar el contraste.

5. Circuito Implementado

3/8 Página

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

PROGRAMACION:

'*******************************************************************************
'******************* Ideas & Tecnología **************************
'******************* Módulo Desarrollo PIC16F887 I&T **************************
'******************* www.ideastechnology.com **************************
'
' * Nombre proyecto:
' EEPROM_LCD
' * Descripción:
' Hacer el uso de una memoria externa EEPROM por comunicación i2c a través
' del módulo desarrollo PIC16F887 I&T en donde están designado el chip select
' A0 = 0
' A1 = 0
' A2 = 0
' donde el byte de control es 0xA0
' * Configuraciones:
' Microcontrolador: PIC16F887
' Oscillator: INT_RC_OSC_NOCLKOUT, 8MHz
' Compilador: MikroBasic 3.2
'*******************************************************************************

program EEPROM_LCD

' Asignamos los pins del pic a usar al lcd


dim LCD_RS as sbit at RB2_bit ' PORTB.1 asignado al PIN RS de la LCD
LCD_EN as sbit at RB3_bit ' PORTB.3 asignado al PIN EN de la LCD
LCD_D4 as sbit at RB4_bit ' PORTB.4 asignado al PIN D4 de la LCD
LCD_D5 as sbit at RB5_bit ' PORTB.5 asignado al PIN D5 de la LCD
LCD_D6 as sbit at RB6_bit ' PORTB.6 asignado al PIN D6 de la LCD
LCD_D7 as sbit at RB7_bit ' PORTB.7 asignado al PIN D7 de la LCD

LCD_RS_Direction as sbit at TRISB2_bit


4/8

LCD_EN_Direction as sbit at TRISB3_bit


LCD_D4_Direction as sbit at TRISB4_bit
Página

LCD_D5_Direction as sbit at TRISB5_bit


LCD_D6_Direction as sbit at TRISB6_bit

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

LCD_D7_Direction as sbit at TRISB7_bit

' Declaramos variables globales


dim num_temp as byte
dim i as word
dim text as string[5]

' Proceso que escribimos en la eeprom y necesita dirección alta y baja


' más el dato a escribir
sub procedure escribe_eeprom(dim direccion_h, direccion_l, dato as byte)
I2C1_Start ' Empieza la comunicacion
I2C1_Wr(0xA0) ' Control de formato de byte
I2C1_Wr(direccion_h) ' Direccion en alta
I2C1_Wr(direccion_l) ' Direccion en baja
I2C1_Wr(dato) ' Dato a escribir en la eeprom
I2C1_Stop ' Detenemos la comunicacicon
Delay_ms(6)
end sub

sub function leer_eeprom(dim direccion_h, direccion_l as byte) as byte


I2C1_Start ' Empieza la comunicacion
I2C1_Wr(0xA0) ' Control de formato de byte
I2C1_Wr(direccion_h) ' Direccion en alta
I2C1_Wr(direccion_l) ' Direccion en baja
I2C1_Repeated_Start ' Re-iniciamos la comunicaion
I2C1_Wr(0xA1) ' Control de formato de byte + bit = 1 de lectura
result = I2C1_Rd(0) ' Obtenemos en dato de la direccion de memoria
I2C1_Stop ' Detenemos la comunicacion
Delay_ms(6)
end sub

main:

' Registro Oscilador de control


5/8

OSCCON = 0X75 ' Oscilador interno de 8mhz


Página

' Registro Puerta B


TRISB = 0X01 ' Portb.1 como entrada digital, los demás salidas

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

PORTB = 0X00
' Registro Puerta E
TRISE = 0X04 ' Porte.2 como entrada digital, los demás salidas
PORTE = 0X00

' Registro Puerta D


TRISD = 0X00 ' Portd como salida
PORTD = 0X00

' Selección de registro analógico. 1 analógico, 0 digitales


ANSEL = 0X00 ' AN<7:0>
ANSELH = 0X00 ' AN<13:8>

delay_ms(250)

I2C1_Init(100000) ' Fijamos la velocidad i2c a 100khz

Lcd_Init() ' Iniciamos la lcd


Lcd_Cmd(_LCD_CLEAR)
Lcd_Cmd(_LCD_CURSOR_OFF)
Lcd_Out(1,1,"memoria 000") ' Muestra el texto en la linea 1
Lcd_Out(2,1,"valor 000") ' Muestra el texto en la linea 2

num_temp = 0 ' valor que vamos a guardar en la memoria

while true ' ciclo infinito


i=0
' mostrara el valor de todas las localidades de memoria hasta cuando
' se halla presionado cualquiera de los dos botones
while Button(PORTE, 2, 1, 1) and Button(PORTB, 0, 1, 1)
WordToStr( i, text)
Lcd_Out(1,11,text) ' Escribimos la dirección de memoria en la lcd
WordToStr( leer_eeprom(hi(i),lo(i)), text)
Lcd_Out(2,11,text) ' Escribimos el valor que hay en la memoria en la lcd
6/8

delay_ms(250)
inc(i)
Página

if i=0x8000 then ' Recorremos hasta que el valor de la dirección de


i=0 ' de memoria no supere los 0x8000

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

end if
wend
'' ESCRIBIR EN LA EEPROM
if Button(PORTE, 2, 1, 0) then
for i=0 to 0x7FFF ' Recorremos todas las direcciones de memoria
escribe_eeprom(hi(i), lo(i), num_temp)
inc(num_temp) ' Incrementamos el valor a guardar en la memoria
PORTD = 0XFF ' Encendemos los leds indicando el trabajo
next i
PORTD = 0X00 ' Apagamos los leds indicando el terminado
end if
'' BORRAR LA ESPROM
if Button(PORTB, 0, 1, 0) then
for i=0 to 0x7FFF ' Recorremos todas las direcciones de memoria
' por defecto el valor de la eeprom es 0xFF
escribe_eeprom(hi(i), lo(i), 0xFF)
PORTD = 0XFF ' Encendemos los leds indicando el trabajo
next i
PORTD = 0X00 ' Apagamos los leds indicando el terminado
end if
wend
end.

'*******************************************************************************
'******************* Ideas & Tecnología **************************
'******************* Módulo Desarrollo PIC16F887 I&T **************************
'******************* www.ideastechnology.com **************************
'*******************************************************************************

7/8 Página

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology


Mobile: 0-82659680 0-90552583
Office: 0-45102623
Mail: [email protected]
Guayaquil – Ecuador

NOTA: Para un mejor entendimiento del funcionamiento de la práctica se recomienda leer todos
los comentarios puestos durante la programación, ahí se explica de manera detallada todo el
proceso.

Contáctenos:

: youtube.com/ideastecnology

: [email protected]

: facebook.com/ideastechnology

: twitter.com/ideastechnology

8/8 Página

:www.ideastechnology.com :Facebook.com/ideastechnology :twitter.com/ideastechnology : youtube.com/ideastecnology

También podría gustarte