Sunteți pe pagina 1din 7

OBJETIVO

Mediante una matriz de leds de 5x7, una memoria EEPROM y el PIC16F877A, mostrar los caracteres de los nombres y primer apellido de los integrantes del equipo.

INTRODUCCION

En esta práctica se programó el PIC para que muestre el nombre y primer apellido de cada integrante del equipo, donde el primer carácter del nombre y apellido están en mayúscula y lo demás en minúsculas y dejando un espacio entre el nombre y el apellido utilizando una memoria EEPROM que tiene grabados los caracteres del alfabeto en mayúsculas y minúsculas.

El PIC16F877A cuenta con 5 puertos (RA, RB, RC, RD y RE) que pueden ser utilizados como entrada o salida de datos, como se muestra en el siguiente diagrama:

(RA, RB, RC, RD y RE) que pueden ser utilizados como entrada o salida de datos,

DESARROLLO

El diagrama genereal de esta practica queda como se muestra en el siguiente diagrama:

practica queda como se muestra en el siguiente diagrama: Mediante tres push button conectados a los

Mediante tres push button conectados a los pines RB0, RB1 Y RB2 nos permitirán activar los pines ejecutando el programa previamente cargado al PIC para visualizar el nombre y apellido de cada integrante en la matriz de leds.

Entre los pines 13 y 14 se conectó un cristal de 4MHz que permitirá realizar la oscilación de la señal puesto el microcontrolador no cuenta con un oscilador interno para para realizar la función de selección de frecuencia.

Por otra parte, se colocaron flip-flops tipo JK para un conteo rápido de ciclos de

Por otra parte, se colocaron flip-flops tipo JK para un conteo rápido de ciclos de reloj, la salida de este conteo se colocaron en las entradas del decoder, esto se realizó con el fin de hacer que cada entrada de datos dieran un corrimiento para el encendido de los leds.

datos dieran un corrimiento para el encendido de los leds. En lo que respecta al timer,

En lo que respecta al timer, se configuro para que diera una frecuencia de reloj mayor a 60 Hz.

el encendido de los leds. En lo que respecta al timer, se configuro para que diera

Direcciones de las letras en la memoria EEPROM

DIRECCION

CARACTER

17

R

35

j

0

A

18

S

36

k

1

B

19

T

37

l

2

C

20

U

38

m

3

D

21

V

39

n

4

E

22

W

40

o

5

F

23

X

41

p

6

G

24

Y

42

q

7

H

25

Z

43 r

 

8

I

26

a

44 s

9

J

27

b

45 t

 

10 K

28

c

46 u

11 L

 

29

d

47 v

 

12 M

30

e

48 w

13 N

 

31

f

49 x

 

14

O

32

g

50

y

15 P

 

33

h

51

z

16 Q

34

i

Se programó el microcontrolador en el programa MICROBASIC PRO con el siguiente código.

main:

portb = 0x23

portb = 0x22

trisa = 255

delay_ms(200)

delay_ms(200)

trisb = 0

portb = 0x1A

portb = 0x33

trisc = 0

delay_ms(200)

delay_ms(200)

trisd = 0

portb = 0x27

delay_ms(200)

end if

while (true)

portb = 0x1D

if porta = 2 then

delay_ms(200)

portb = 255

portb = 0x2B

portb = 0x03

portc = 0

delay_ms(200)

delay_ms(200)

portd = 0

portb = 0x28

portb = 0x1A

delay_ms(200)

delay_ms(200)

if porta = 1 then

portb = 0x27

 

portb = 255

delay_ms(200)

portb = 0x00

portb = 0x22

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x25

portb = 0x11

portb = 0x1E

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x1E

portb = 0x2E

portb = 0x25

delay_ms(200)

delay_ms(200)

delay_ms(200)

if porta = 4 then

portb = 0x2B

portb = 255

delay_ms(200)

 

portb = 0x0E

portb = 0x27

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x0C

portb = 0x2C

portb = 0x1A

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x1A

portb = 0x22

portb = 0x27

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x2B

portb = 0x2B

portb = 0x1D

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x2D

portb = 0x22

portb = 0x1E

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x22

portb = 0x2C

portb = 0x33

delay_ms(200)

delay_ms(200)

delay_ms(200)

portb = 0x27

delay_ms(200)

portb = 255

end if

portb = 0x1E

delay_ms(200)

delay_ms(200)

wend

portb = 0x33

portb = 0x07

delay_ms(200)

delay_ms(200)

end.

portb = 0x1E

end if

delay_ms(200)

CONCLUSIONES

Es necesario saber en qué dirección de memoria está grabado cada carácter para que al momento de programar el microcontrolador muestre correctamente y en orden los nombres de los integrantes.

Como el PIC16F877A no cuenta con un oscilador interno es necesario un cristal externo entre los pines 13 y 14.

Para grabar los números hexadecimales correspondientes a cada carácter, se deben de colocar de manera correcta en las direcciones de memoria al momento de programarlos, de otra manera, aunque el circuito este bien construido, no se mostraran de manera correcta los caracteres en la matriz de leds.

Se debe tener en cuenta que la memoria tiene una configuración para la lectura de datos y otra para la escritura, por lo que se debe configurar de manera correcta para que los datos no se modifiquen o se pierdan y se tengan que volver a grabar los datos nuevamente en la memoria.

La configuración de los push button en el PIC indica que cada que se presionen se activara en alto y como consecuente iniciara el programa cargado en la pic dependiendo que botón se presione.

En el momento en que se programó el PIC se escribieron los valores de las direcciones en hexadecimal para que se muestren los caracteres, sin embargo cuando no se realiza el direccionamiento adecuado puede surgir el problema de que se muestre un carácter que no es.

El PIC cuenta con unos pines de activación (chip enable), escritura (Write enable) y lectura de datos (Read data) deben ir conectados a voltaje o tierra (activos en bajo) esta configuración se realizara dependiendo de cómo se usara el PIC ya que en estos pines se verifica la activación del PIC como tal.

Al momento de programar el PIC se debe de asignar que pines se utilizaran como entrada de datos y cuáles serán utilizados como salida de datos.

REFERENCIAS

M. MORRIS MANO, “LOGICA DIGITAL Y DISEÑO DE COMPUTADORES”, ED. Prentice Hall (1989).

MICROCHIP 16F877A, Datasheet, 2003, MICROCHIP TECHONOLOGY INC.