carteleletronico

49
Cingolani Ariel Jorge UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA TECNOLOGIA ELECTRONICA Índice Introducción ------------------------------------------------------------------------ 3 Descripción ------------------------------------------------------------------------ 4 Programa en assembler -------------------------------------------------------- 8 Diagrama de flujo ------------------------------------------------------------------- 23 Diagrama del circuito ------------------------------------------------------------ 24 Presentación del proyecto terminado -------------------------------------- 25 Problemas en la realización del proyecto -------------------------------- 27 Apéndice A ------------------------------------------------------------------------- 28 Apéndice B ------------------------------------------------------------------------- 30 Apéndice C ------------------------------------------------------------------------- 32 Apéndice D ------------------------------------------------------------------------- 34 Conclusión ------------------------------------------------------------------------- 36

Transcript of carteleletronico

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Índice

Introducción ------------------------------------------------------------------------ 3

Descripción ------------------------------------------------------------------------ 4 Programa en assembler -------------------------------------------------------- 8

Diagrama de flujo ------------------------------------------------------------------- 23

Diagrama del circuito ------------------------------------------------------------ 24

Presentación del proyecto terminado -------------------------------------- 25

Problemas en la realización del proyecto -------------------------------- 27

Apéndice A ------------------------------------------------------------------------- 28 Apéndice B ------------------------------------------------------------------------- 30

Apéndice C ------------------------------------------------------------------------- 32

Apéndice D ------------------------------------------------------------------------- 34 Conclusión ------------------------------------------------------------------------- 36

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Introducción El proyecto consiste en un cartel electrónico programable de matrices de “leds”. Mediante un teclado de PC-AT se podrán ir ingresando los distintos caracteres, el cual se podrán ir visualizando en la pantalla. Esta compuesta de ocho matrices de “leds” 7x5 cátodo común, lo cual formara una matriz de 7 filas por 80 columnas. El tamaño máximo de caracteres del mensaje es de 128, que pueden ser desde números del 0-9, y letras desde A-Z minúsculas y mayúsculas. Dispondrá de un microcontrolador PIC 16F873, el cual posee 4K de memoria de programa, 192 bytes de memoria de datos, 128 bytes de memoria RAM, además de puertos de entrada/salida, etc. Este se utilizara para manejar todos los componentes del proyecto como la memoria, las matrices, los codificadores, etc. Se pueden visualizar dos tipos de mensajes, uno mensaje giratorio y otro de a frases instantáneas. Se utilizara una memoria EEPROM de 2K byte, en ella se irán guardando los distintos mensajes ingresados. Posee 8 lugares de memoria, 4 para cada modo. Una vez apagado se volverá a mostrar el ultimo mensaje ingresado.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Descripción El objetivo del trabajo es poder visualizar dos tipos de mensajes, un mensaje giratorio y otro que va aparecer de a frases instantáneas. Los mensajes se guardaran en la memoria I2C EEPROM (24C16), para poder ser utilizados nuevamente, la conexión y funcionamiento se describe en el Apéndice C. La cantidad máxima de caracteres que se pueden escribir es de 128. El control del cartel se hará mediante un teclado de PC-AT, la descripción de este es detallado en el Apéndice A. Los caracteres que se pueden visualizar son mayúsculas de la (A) a la (Z), minúsculas de la (a) a la (z) y los números del (0) al (9). El control se va a realizar mediante el microcontrolador PIC 16F873, (Apéndice D), que será el encargado de manejar la memoria I2C EEPROM, el teclado, los decodificadores y las matrices de “leds”. Diseño Hardware En el presente se describe el proceso que se ha llevado a cabo en el diseño lógico, eléctrico de la placa que contiene el “Display” objeto del trabajo. El “hardware” que se quiere construir es un Cartel luminoso. Su tamaño vendrá impuesto por el de las matrices de “leds” que se van a usar en su construcción. Una descripción detallada de estas matrices puede encontrarse en el Apéndice B de este trabajo. Para el diseño inicial se utilizo 8 matrices, no se utilizo mas matrices por razón de costo, de forma que se tendrá el control sobre 280 “leds” (7 x 5 x 8) por lo que quedaran 13 señales digitales que son controladas por el microcontrolador PIC 16F873. El montaje final queda por tanto con 40 columnas y 7 filas. El control de las matrices es multiplexado, de forma que las matrices se controlan por filas y por columnas. Además se debe tener en cuenta la conexión de los “leds” en la matriz, que es de cátodo común. El diseño debe ser seguro. Esto quiere decir que ante una manipulación incorrecta el estado de los componentes no se vea alterado, ni destruido. Diseño lógico y eléctrico Diseño lógico

Teniendo en cuenta las restricciones anteriores se comienza el diseño lógico del circuito de control. En primer lugar se debe escoger la forma en que se va a realizar el control sobre las matrices, teniendo en cuenta que se va a crear un “display” lineal. Lo ideal sería poder controlar individualmente cada uno de los 280 “leds”, pero para ello serían necesarias 47 señales de control, una por cada columna (40) y uno por cada fila (7). El número es excesivo, así que se tendrá que plantear otro esquema de control. Se plantearon dos soluciones, codificar las columnas o las filas, de forma que en un momento dado sólo por una columna o por una fila pudiera pasar corriente, permitiendo eso sí el control individual de los “leds” de la fila o columna por la que pasará corriente. De las dos opciones se ha escogido la codificación de las 40 columnas, con lo que en un instante determinado, sólo en 1 columna de las 40, se puede iluminar alguno de los 7 “leds” que la componen. A continuación se procede a la codificación de todas las señales de control necesarias. Para codificar las 40 columnas se necesitan 6 señales de control. Lo normal sería

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

usar un decodificador de 6 a 48, pero al hacer el diseño físico con una herramienta beta, se usarán componentes más sencillos que seguro estarán disponibles. En vez de decodificadores 6 a 48, se usarán decodificadores 3 a 8, y en vez de un sólo decodificador se necesitarán 5 para codificar las 40 columnas. Esto no es suficiente para mantener una sola columna activa, así que es necesario introducir un segundo nivel de codificación, en este caso, lo que se codifica son las señales “enable” de los decodificadores anteriores para que sólo 1 de los 5 anteriores este activo en un momento dado. Con un decodificador 3 a 8 es suficiente para controlar los 5. Para el primer nivel de codificación introducido se necesitan 3 señales de control que se conectaran a las entradas A, B y C de los 5 decodificadores. Los 5 comparten las mismas señales. Para el segundo nivel de codificación se necesitarán 3 señales, para las entradas A, B y C del decodificador. Las salidas de este decodificador se conectan con las entradas “enable” de los 5 decodificadores anteriores. El resto de entradas se conectan a GND. Por otro lado se necesitan 7 señales, una por cada fila del “Display”. Una vez que se conoce el número de señales necesarias para el diseño se debe realizar la conexión con los componentes, para ello se debe tener en cuenta el nivel lógico de las señales. En primer lugar recordar que para iluminar un “led” es necesario introducir una señal lógica alta (‟1‟) por el ánodo y tener una señal lógica baja (‟0‟) por el cátodo. Por tanto, dado que los cátodos están unidos por las columnas y son estas las que se han codificado, se situará la salida de cada decodificador conectado a la columna de la matriz. La salida será activa a nivel bajo así que será el decodificador 74138. Para el decodificador de las señales “enable” al ser ésta activa a nivel alto, se usará el decodificador 74238. El resultado de las conexiones entre componentes y el diseño lógico inicial se puede ver en la figura 1. Diseño eléctrico

Con la solución anterior se ha resuelto el problema lógico de control usando un total de 13 señales, si bien, ahora se debe resolver el problema eléctrico, es decir el tema de corrientes, resistencias y voltajes. Para ello, en primer lugar se elige la tecnología de los componentes auxiliares (decodificadores, ...) que se necesitarán, en este caso se uso tecnología TTL. La forma que se ha escogido de control es por columnas y cada una esta conectada a la salida de un decodificador. Cada decodificador debe manejar como máximo 7 “leds” por lo que se ha decidido introducir entre los cátodos y el codificador un par “darlington” que es capaz de manejar hasta 550 mA. El circuito integrado que proporciona estos “darlington” es el ULN2003. El uso del par “darlington” provoca que se cambie el nivel de la señal lógica de control. Antes, para que el “led” se encendiera debía entrar un ‟0‟ y este era proporcionado directamente por el decodificador, en cambio, ahora es el “darlington” el que se lo proporciona pero éste requiere de un ‟1‟ a su entrada por lo que se deben de cambiar los 5 decodificadores con salidas a nivel bajo por decodificadores con salida a nivel alto (74238). En la figura 2 se ve el conexionado. Por otro lado las señales que controlan las filas como máximo alimentan a un “led”, por lo que fue necesario colocar entre las filas y el puerto B del PIC un 74HC241 que es un amplificador de corriente. En la figura 3 se muestra el puerto B del PIC conecto con el 74HC241 y las filas de los “leds”.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

A1

B2

C3

E1

6

E2

4

E3

5

Y0

15

Y1

14

Y2

13

Y3

12

Y4

11

Y5

10

Y6

9

Y7

7

U174ALS138

A1

B2

C3

E1

6

E2

4

E3

5

Y0

15

Y1

14

Y2

13

Y3

12

Y4

11

Y5

10

Y6

9

Y7

7

U274ALS138

CO

L 0

1

CO

L 0

2

CO

L 0

3

CO

L 0

4

CO

L 0

5

CO

L 0

6

CO

L 3

7

CO

L 3

8

CO

L 3

9

CO

L 4

0

A1

B2

C3

E1

6

E2

4

E3

5

Y0

15

Y1

14

Y2

13

Y3

12

Y4

11

Y5

10

Y6

9

Y7

7

U374HC238

FILA 01SEÑAL 01

FILA 02SEÑAL 02

FILA 03SEÑAL 03

FILA 04SEÑAL 04

FILA 05SEÑAL 05

FILA 06SEÑAL 06

FILA 07SEÑAL 07

SEÑAL 08SEÑAL 09SEÑAL 10

SEÑAL 11SEÑAL 12SEÑAL 13

FIGURA 1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

CO

L 01

CO

L 02

CO

L 03

CO

L 04

CO

L 05

CO

L 06

CO

L 3

7

CO

L 3

8

CO

L 3

9

CO

L 4

0

FIGURA 2

1B

11

C1

6

2B

22

C1

5

3B

33

C1

4

4B

44

C1

3

5B

55

C1

2

6B

66

C1

1

7B

77

C1

0

CO

M9

U1ULN2003A

1B

11

C1

6

2B

22

C1

5

3B

33

C1

4

4B

44

C1

3

5B

55

C1

2

6B

66

C1

1

7B

77

C1

0

CO

M9

U2ULN2003A

A1

B2

C3

E1

6

E2

4

E3

5

Y0

15

Y1

14

Y2

13

Y3

12

Y4

11

Y5

10

Y6

9

Y7

7

U374HC238

A1

B2

C3

E1

6

E2

4

E3

5

Y0

15

Y1

14

Y2

13

Y3

12

Y4

11

Y5

10

Y6

9

Y7

7

U474HC238

CO

L 0

1

FILA 01

SEÑAL 01

FILA 02

SEÑAL 02 FILA 03SEÑAL 03

FILA 04

SEÑAL 04

FILA 05

SEÑAL 05

FILA 06

SEÑAL 06

FILA 07

SEÑAL 07

1A02

1A14

1A26

1A38

2A011

2A113

2A215

2A317

1OE1

2OE19

1Y018

1Y116

1Y214

1Y312

2Y09

2Y17

2Y25

2Y33

U1

74ALS241

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB425

RB3/PGM24

RB223

RB122

RB0/INT21

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

MCLR/Vpp/THV1

U2

PIC16F873

FIGURA 3

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Programa en assembler

List p=16F873 INCLUDE "P16F873.INC" ;Definiciones de registros internos errorlevel -302 Doble_DATAIN EQU 0x20 ASCII EQU 0x21 BANDERAS EQU 0x22 SALTO EQU 0x23 GIRAR EQU 0x24 CONTADOR2 EQU 0x25 #DEFINE BANDERAS_CAPS BANDERAS,0 Nbits EQU 0x26 Nbytes EQU 0x27 NO_ROTAR EQU 0x28 KeyRtn EQU 0x29 DATAIN EQU 0x2a #DEFINE KBD_CLK PORTB,0 #DEFINE KBD_DATO PORTC,0 #DEFINE BIT_ACTUAL DATAIN,7 STATUS_TEMP EQU 0x2b W_TEMP EQU 0x2c CUENTAS EQU 0x2d CARACTER EQU 0x2e RESTADOR EQU 0x2f RESTADOR1 EQU 0x30 TIEMPO EQU 0x31 SAL EQU 0x32 saltar EQU 0x33 Delay_Cont EQU 0x34 #DEFINE banco_0 bcf STATUS,5 ; Banco 1 de RAM #DEFINE banco_1 bsf STATUS,5 ; Banco 0 de RAM cblock 0x35 Direccion,Dato,Banderas,Copia,restador,retardo,valor,cont,fila,fila1,GIRAR1,cuanto,memoria,comp endc org 0x00 goto INICIO org 0x04 MOVWF W_TEMP SWAPF STATUS,W MOVwf STATUS_TEMP CALL LEER_TECLADO bcf INTCON,INTF SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE TABLA0 addwf 02h,1 RETLW 0xFE RETLW 0xFF RETLW 0xFD RETLW 0xFC RETLW 0xA9 RETLW 0 RETLW 0 RETLW 0x50 ;q RETLW 0x86 ;1 RETLW 0 RETLW 0 RETLW 0 RETLW 0x7e ;z

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 0x59 ;s RETLW 0x01 ;a RETLW 0x6d ;w RETLW 0x8A ;2 RETLW 0 RETLW 0 RETLW 0X0b ;c RETLW 0x73 ;x RETLW 0x10 ;d RETLW 0x15 ;e RETLW 0X94 ;4 RETLW 0X8F ;3 RETLW 0 RETLW 0 RETLW 0x83 ;ESPACIO RETLW 0x67 ;v RETLW 0x1a ;f RETLW 0x5e ;t RETLW 0x55 ;r RETLW 0X9A ;5 RETLW 0 RETLW 0 RETLW 0x40 ;n RETLW 0x06 ;b RETLW 0x23 ;h RETLW 0x1e ;g RETLW 0x79 ;y RETLW 0XA0 ;6 RETLW 0 RETLW 0 RETLW 0 RETLW 0x3a ;m RETLW 0x2c ;j RETLW 0x62 ;u RETLW 0XA6 ;7 RETLW 0XAB ;8 RETLW 0 RETLW 0 RETLW 0 RETLW 0x31 ;k RETLW 0x28 ;i RETLW 0x45 ;o RETLW 0XB7 ;0 RETLW 0XB1 ;9 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0x36 ;l RETLW 0 RETLW 0x4b ;p RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0X0A RETLW 0 RETLW 0 RETLW 0x08 RETLW 0 RETLW 0 RETLW 0 RETLW 0

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0x08 ;borrar Tabla addwf 02h,1 nop RETLW 3Fh ;A RETLW 48h RETLW 48h RETLW 48h RETLW 3Fh RETLW 00h RETLW 7Fh ;B RETLW 49h RETLW 49h RETLW 49h RETLW 3Eh RETLW 00h RETLW 3Eh ;C RETLW 41h RETLW 41h RETLW 41h RETLW 22h RETLW 00h RETLW 7Fh ;D RETLW 41h RETLW 41h RETLW 41h RETLW 3Eh RETLW 00h RETLW 7Fh ;E RETLW 49h RETLW 49h RETLW 49h RETLW 41h RETLW 00h RETLW 7Fh ;F RETLW 48h RETLW 48h RETLW 48h RETLW 40h RETLW 00h RETLW 3Eh ;G RETLW 41h RETLW 49h RETLW 49h RETLW 2Eh RETLW 00h RETLW 7Fh ;H RETLW 08h RETLW 08h RETLW 08h RETLW 7Fh RETLW 00h RETLW 41h ;I RETLW 41h RETLW 7Fh RETLW 41h RETLW 41h RETLW 00h RETLW 02h ;J RETLW 01h RETLW 41h RETLW 7Eh RETLW 40h RETLW 00h RETLW 7Fh ;K RETLW 08h RETLW 14h RETLW 22h

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 41h RETLW 00h RETLW 7Fh ;L RETLW 01h RETLW 01h RETLW 01h RETLW 01h RETLW 00h RETLW 7Fh ;M RETLW 20h RETLW 18h RETLW 20h RETLW 7Fh RETLW 00h RETLW 7Fh ;N RETLW 10h RETLW 08h RETLW 04h RETLW 7Fh RETLW 00h RETLW 3Eh ;O RETLW 41h RETLW 41h RETLW 41h RETLW 3Eh RETLW 00h RETLW 7Fh ;P RETLW 48h RETLW 48h RETLW 48h RETLW 30h RETLW 00h RETLW 3Eh ;Q RETLW 41h RETLW 45h RETLW 42h RETLW 3Dh RETLW 00h RETLW 7Fh ;R RETLW 48h RETLW 4Ch RETLW 4Ah RETLW 31h RETLW 00h RETLW 32h ;S RETLW 49h RETLW 49h RETLW 49h RETLW 26h RETLW 00h RETLW 40h ;T RETLW 40h RETLW 7Fh RETLW 40h RETLW 40h RETLW 00h RETLW 7Eh ;U RETLW 01h RETLW 01h RETLW 01h RETLW 7Eh RETLW 00h RETLW 7Ch ;V RETLW 02h RETLW 01h RETLW 02h RETLW 7Ch RETLW 00h RETLW 7Eh ;W RETLW 01h RETLW 0Eh RETLW 01h RETLW 7Eh

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 00h RETLW 63h ;X RETLW 14h RETLW 08h RETLW 14h RETLW 63h RETLW 00h RETLW 70h ;Y RETLW 08h RETLW 07h RETLW 08h RETLW 70h RETLW 00h RETLW 43h ;Z RETLW 45h RETLW 49h RETLW 51h RETLW 61h RETLW 00h NOP TABLA1 addwf 02h,1 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0xA9 RETLW 0 RETLW 0 RETLW 0x61 ;Q RETLW '1' RETLW 0 RETLW 0 RETLW 0 RETLW 0x97 ;Z RETLW 0x6d ;S RETLW 0x01 ;A RETLW 0x85 ;W RETLW '2' RETLW 0 RETLW 0 RETLW 0X0d ;C RETLW 0x8b ;X RETLW 0x13 ;D RETLW 0x19 ;E RETLW '4' RETLW '3' RETLW 0 RETLW 0 RETLW 0x9d ;espacio RETLW 0x7f ;V RETLW 0x1f ;F RETLW 0x73 ;T RETLW 0x67 ;R RETLW '5' RETLW 0 RETLW 0 RETLW 0x4f ;N RETLW 0x07 ;B RETLW 0x2b ;H RETLW 0x25 ;G RETLW 0x91 ;Y RETLW '&' RETLW 0 RETLW 0 RETLW 0 RETLW 0x49 ;M RETLW 0x37 ;J RETLW 0x79 ;U RETLW '7' RETLW '8' RETLW 0

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 0 RETLW 0 RETLW 0x3d ;K RETLW 0x31 ;I RETLW 0x55 ;O RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0 RETLW 0x43 ;L RETLW 0 RETLW 0x5b ;P Tabla1 addwf 02h,1 nop RETLW 02h ;a RETLW 15h RETLW 15h RETLW 0Eh RETLW 00h RETLW 7Fh ;b RETLW 11h RETLW 11h RETLW 0Eh RETLW 00h RETLW 0Eh ;c RETLW 11h RETLW 11h RETLW 11h RETLW 00h RETLW 0Eh ;d RETLW 11h RETLW 11h RETLW 7Fh RETLW 00h RETLW 0Eh ;e RETLW 15h RETLW 15h RETLW 0Ch RETLW 00h RETLW 08h ;f RETLW 3Fh RETLW 48h RETLW 00h RETLW 18h ;g RETLW 25h RETLW 25h RETLW 1Eh RETLW 00h RETLW 7Fh ;h RETLW 10h RETLW 10h RETLW 0Fh RETLW 00h RETLW 11h ;i RETLW 5Fh RETLW 01h RETLW 00h RETLW 02h ;j RETLW 01h RETLW 11h RETLW 5Eh RETLW 00h RETLW 7Fh ;k RETLW 04h RETLW 0Ah RETLW 11h RETLW 00h RETLW 41h ;l RETLW 7Fh

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 01h RETLW 00h RETLW 1Fh ;m RETLW 10h RETLW 0Ch RETLW 10h RETLW 0Fh RETLW 00h RETLW 1Fh ;n RETLW 08h RETLW 10h RETLW 0Fh RETLW 00h RETLW 0Eh ;o RETLW 11h RETLW 11h RETLW 11h RETLW 0Eh RETLW 00h RETLW 1Fh ;p RETLW 14h RETLW 14h RETLW 08h RETLW 00h RETLW 08h ;q RETLW 14h RETLW 14h RETLW 1Fh RETLW 00h RETLW 1Fh ;r RETLW 08h RETLW 10h RETLW 00h RETLW 09h ;s RETLW 15h RETLW 15h RETLW 12h RETLW 00h RETLW 10h ;t RETLW 7Eh RETLW 11h RETLW 00h RETLW 1Eh ;u RETLW 01h RETLW 01h RETLW 1Fh RETLW 00h RETLW 1Ch ;v RETLW 02h RETLW 01h RETLW 02h RETLW 1Ch RETLW 00h RETLW 1Eh ;w RETLW 01h RETLW 06h RETLW 01h RETLW 1Eh RETLW 00h RETLW 11h ;x RETLW 0Ah RETLW 04h RETLW 0Ah RETLW 11h RETLW 00h RETLW 1Dh ;y RETLW 05h RETLW 05h RETLW 1Eh RETLW 00h RETLW 11h ;z RETLW 13h RETLW 15h

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

RETLW 19h RETLW 00h RETLW 80h ;espacio RETLW 80h RETLW 00h RETLW 21h ;1 RETLW 7Fh RETLW 01h RETLW 00h RETLW 23h ;2 RETLW 45h RETLW 49h RETLW 31h RETLW 00h RETLW 41h ;3 RETLW 51h RETLW 69h RETLW 46h RETLW 00h RETLW 0Ch ;4 RETLW 14h RETLW 24h RETLW 7Fh RETLW 04h RETLW 00h RETLW 72h ;5 RETLW 51h RETLW 51h RETLW 51h RETLW 4Eh RETLW 00h RETLW 1Eh ;6 RETLW 29h RETLW 49h RETLW 49h RETLW 06h RETLW 00h RETLW 40h ;7 RETLW 47h RETLW 48h RETLW 70h RETLW 00h RETLW 36h ;8 RETLW 49h RETLW 49h RETLW 49h RETLW 36h RETLW 00h RETLW 30h ;9 RETLW 49h RETLW 49h RETLW 4Ah RETLW 3Ch RETLW 00h RETLW 3Eh ;0 RETLW 45h RETLW 49h RETLW 51h RETLW 3Eh RETLW 00h INICIO clrf PORTB clrf PORTA bsf STATUS,RP0 MOVLW b'00000001' MOVWF TRISB movlw b'00000110' movwf ADCON1 MOVLW b'00000000' MOVWF TRISA MOVLW b'11111111' MOVWF TRISC

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

MOVLW b'10000111' MOVWF OPTION_REG movlw b'10000000' ; La velocidad para la EEPROM sera de 100 Kc. movwf SSPSTAT movlw .9 movwf SSPADD bcf STATUS,RP0 movlw b'00101000' movwf SSPCON clrf BANDERAS clrf cuanto clrf PCLATH clrf Nbits clrf Nbytes clrf fila clrf GIRAR1 clrf fila1 clrf DATAIN clrf NO_ROTAR clrf saltar clrf SALTO movlw 0x02 movwf GIRAR clrf Direccion clrf valor MOVLW b'10010000' MOVWF INTCON movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR borrar clrf INDF incf FSR,F decfsz RESTADOR goto borrar GOTO LAZO_LECTURA mal decf fila decf Direccion decf Direccion CLRF KeyRtn CLRF ASCII CLRF Nbytes goto Ru12 Cambiar clrf RESTADOR Cambiar1 incf RESTADOR movlw 0x02 subwf cont,1 btfsc STATUS,Z goto Cam btfsc STATUS,C goto Cambiar1 Cam movf RESTADOR,0 sublw 0x14 btfss STATUS,C goto mal btfsc STATUS,Z goto LIMPIAR movwf RESTADOR Cambiar2 call ROTO1 clrf 0x4E decfsz RESTADOR goto Cambiar2 goto LIMPIAR

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Ru12 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR bor clrf INDF incf FSR,F decfsz RESTADOR goto bor clrf PCLATH movf fila,0 movwf fila1 clrf cont clrf Direccion movf GIRAR1,0 addwf Direccion,1 Ru121 call Recibir_Byte movf Dato,0 movwf saltar xorlw 0x01 btfss STATUS,Z goto Ru112 incf PCLATH incf Direccion call Recibir_Byte incf Direccion Ru32 incf cont call ROTO1 movf Dato,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto Ru32 clrf PCLATH decfsz fila1 goto Ru121 goto Cambiar Ru112 incf Direccion call Recibir_Byte incf Direccion movf Dato,0 xorlw 0x97 btfsc STATUS,Z incf PCLATH Ru312 incf cont call ROTO1 movf Dato,0 call Tabla movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 clrf PCLATH decfsz fila1,1 goto Ru121 goto Cambiar A12 bsf STATUS,RP1 ;Pasamos al banco 2 movf EEADR,0 ;Siguiente dirección EEPROM bcf STATUS,RP1 movwf cuanto movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR Aor1 clrf INDF incf FSR,F decfsz RESTADOR goto Aor1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

CLRF KeyRtn CLRF ASCII CLRF Nbytes bsf INTCON,GIE clrf PCLATH clrf cont A121 bsf STATUS,RP1 call EE_Read bsf STATUS,RP1 movf EEDATA,0 bcf STATUS,RP1 xorlw 0xFF ,RP1 movf EEDATA,0 bcf STATUS,RP1 movwf CUENTAS A32 call ROTO1 movf CUENTAS,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf CUENTAS movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto A32 bsf STATUS,RP1 ;Pasamos al banco 2 incf EEADR,F ;Siguiente dirección EEPROM bcf STATUS,RP1 clrf PCLATH goto A121 escribir1 movf GIRAR1,0 xorlw 0x00 btfsc STATUS,Z goto LIMPIAR2 movf fila1,0 xorlw 0x07 btfsc STATUS,Z goto LIMPIAR2 incf fila1 goto SIGUE escribir2 CLRF KeyRtn CLRF ASCII CLRF Nbytes movlw 0xFF bsf STATUS,RP1 movwf EEDATA Z goto escribir3 movf GIRAR,0 xorlw 0x04 btfsc STATUS,Z clrf GIRAR clrf GIRAR clrf GIRAR1 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR Aor123 clrf INDF incf FSR,F decfsz RESTADOR goto Aor123 goto LIMPIAR escribir3 movlw 0x01 movwf GIRAR clrf GIRAR1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR Aor124 clrf INDF incf FSR,F decfsz RESTADOR goto Aor124 goto LIMPIAR lim1 CLRF KeyRtn CLRF ASCII CLRF Nbytes clrf comp bsf INTCON,GIE goto muestra escribir bcf INTCON,GIE MOVF KeyRtn,W xorwf comp btfsc STATUS,Z goto lim1 MOVF KeyRtn,W movwf comp MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto INICIO movf GIRAR1,0 xorlw 0x00 btfss STATUS,Z goto escribir2 incf GIRAR1 movf cuanto,0 bsf STATUS,RP1 ;Pasamos al banco 2 movwf EEADR ;Siguiente dirección EEPROM bcf STATUS,RP1 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR Aor12 clrf INDF incf FSR,F decfsz RESTADOR goto Aor12 goto LIMPIAR2 Rn1 incf PCLATH movf CUENTAS,0 bsf STATUS,RP1 movwf EEDATA bcf STATUS,RP1 call EE_Write bsf STATUS,RP1 ;Pasamos al banco 2 incf EEADR,F ;Siguiente dirección EEPROM bcf STATUS,RP1 Rn3 call ROTO1 movf CUENTAS,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf CUENTAS,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto Rn3 clrf PCLATH goto LIMPIAR2 escribir21 bsf INTCON,GIE

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

movf GIRAR,0 xorlw 0x03 btfsc STATUS,Z goto escribir31 movf GIRAR,0 xorlw 0x04 btfsc STATUS,Z clrf GIRAR clrf GIRAR CLRF KeyRtn CLRF ASCII CLRF Nbytes goto GIRATORIO1 escribir31 CLRF KeyRtn CLRF ASCII CLRF Nbytes movlw 0x01 movwf GIRAR goto repro1 lim CLRF KeyRtn CLRF ASCII CLRF Nbytes clrf comp bsf INTCON,GIE goto muestra1 escr bcf INTCON,GIE MOVF KeyRtn,W xorwf comp btfsc STATUS,Z goto lim MOVF KeyRtn,W movf comp MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto INICIO MOVF KeyRtn,W xorlw 0x04 btfsc STATUS,Z goto escribir21 MOVF KeyRtn,W xorlw 0x0C btfsc STATUS,Z goto escribir MOVF KeyRtn,W xorlw 0x16 btfsc STATUS,Z goto escr1 MOVF KeyRtn,W xorlw 0x1E btfsc STATUS,Z goto escr1 MOVF KeyRtn,W xorlw 0x26 btfsc STATUS,Z goto escr1 MOVF KeyRtn,W xorlw 0x25 btfsc STATUS,Z goto escr1 CLRF KeyRtn CLRF ASCII CLRF Nbytes goto muestra1 escr1 movf GIRAR,0 xorlw 0x03 btfsc STATUS,Z goto fase10 goto fase20

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

muestra1 CLRWDT clrf fila1 DECFSZ Nbytes,W goto Bis4 goto escr Bis4 clrf comp movf GIRAR,0 xorlw 0x02 btfsc STATUS,Z goto LAZO_LECTURA movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto fase1 movf GIRAR,0 xorlw 0x00 btfsc STATUS,Z goto fase2 Bis3 movlw 0x05 movwf retardo movlw 0x10 movwf RESTADOR1 Bis2 movlw 0x23 movwf PORTA movlw 0x28 movwf RESTADOR movlw 0x75 movwf FSR Bis1 rlf INDF,0 movwf PORTB call RETARDO decf FSR,F decfsz RESTADOR,1 goto Bis1 decfsz RESTADOR1,1 goto Bis2 goto muestra1 muestra CLRWDT DECFSZ Nbytes,W goto Ais4 goto escribir Ais4 movf GIRAR,0 xorlw 0x02 btfsc STATUS,Z goto LAZO_LECTURA movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto fase1 movf GIRAR,0 xorlw 0x00 btfsc STATUS,Z goto fase2 Ais3 movlw 0x05 movwf retardo movlw 0x10 movwf RESTADOR1 Ais2 movlw 0x23 movwf PORTA movlw 0x28 movwf RESTADOR movlw 0x75 movwf FSR Ais1 rlf INDF,0 movwf PORTB call RETARDO decf FSR,F decfsz RESTADOR,1 goto Ais1 decfsz RESTADOR1,1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

goto Ais2 goto muestra fase1 DECFSZ Nbytes,W goto fase1 fase10 MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto INICIO MOVF KeyRtn,W xorlw 0x16 btfsc STATUS,Z goto fase11 MOVF KeyRtn,W xorlw 0x1E btfsc STATUS,Z goto fase12 MOVF KeyRtn,W xorlw 0x26 btfsc STATUS,Z goto fase13 MOVF KeyRtn,W xorlw 0x25 btfsc STATUS,Z goto fase14 goto fase1 fase11 movlw 0x03 movwf GIRAR movlw 0x00 movwf memoria bsf STATUS,RP1 clrf EEADR bcf STATUS,RP1 goto A12 fase12 movlw 0x03 movwf GIRAR movlw 0x02 movwf memoria movlw 0x08 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase13 movlw 0x03 movwf GIRAR movlw 0x04 movwf memoria movlw 0x10 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase14 movlw 0x03 movwf GIRAR movlw 0x06 movwf memoria movlw 0x18 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase2 DECFSZ Nbytes,W goto fase2 fase20 MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto INICIO

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

MOVF KeyRtn,W xorlw 0x16 btfsc STATUS,Z goto fase21 MOVF KeyRtn,W xorlw 0x1E btfsc STATUS,Z goto fase22 MOVF KeyRtn,W xorlw 0x26 btfsc STATUS,Z goto fase23 MOVF KeyRtn,W xorlw 0x25 btfsc STATUS,Z goto fase24 goto fase2 fase21 movlw 0x04 movwf GIRAR movlw 0x08 movwf memoria movlw 0x20 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase22 movlw 0x04 movwf GIRAR movlw 0x0A movwf memoria movlw 0x28 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase23 movlw 0x04 movwf GIRAR movlw 0x0C movwf memoria movlw 0x30 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 fase24 movlw 0x04 movwf GIRAR movlw 0x0E movwf memoria movlw 0x38 bsf STATUS,RP1 movwf EEADR bcf STATUS,RP1 goto A12 LAZO_LECTURA Vis CLRWDT DECFSZ Nbytes,W goto Vis4 goto SIGUE1 Vis4 movf GIRAR,0 xorlw 0x02 btfsc STATUS,Z goto LAZO_LECTURA Vis3 movlw 0x05 movwf retardo movlw 0x10 movwf RESTADOR1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Vis1 rlf INDF,0 movwf PORTB call RETARDO decf FSR,F decfsz RESTADOR,1 goto Vis1 decfsz RESTADOR1,1 goto Vis2 goto Vis F1 movlw 0x09 addwf KeyRtn,1 return F2 movlw 0x0C addwf KeyRtn,1 return F3 movlw 0x65 subwf KeyRtn,1 return SIGUE1 bcf INTCON,GIE MOVF KeyRtn,W xorlw 0x04 btfsc STATUS,Z call F2 MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z call F3 MOVF KeyRtn,W xorlw 0x05 btfsc STATUS,Z call F1 MOVF KeyRtn,W xorlw 0x06 btfsc STATUS,Z call F1 MOVF KeyRtn,W subwf SALTO btfsc STATUS,Z goto LIMPIAR1 MOVF KeyRtn,W movwf SALTO SUBLW 0x0d BTFSC STATUS,C goto LIMPIAR MOVF KeyRtn,W SUBLW 0x67 BTFSC STATUS,C goto SIGUE goto LIMPIAR SIGUE MOVLW 0x0e subwf KeyRtn,0 BTFSC BANDERAS_CAPS goto TBL_MAY TBL_MIN CALL TABLA0 movwf CUENTAS xorlw 0xB7 btfsc STATUS,Z xorlw 0x03 btfsc STATUS,Z goto Rn1 movf GIRAR,0 xorlw 0x04 btfsc STATUS,Z

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

goto Rn1 goto FIN_TABLA TBL_MAY incf PCLATH clrf BANDERAS CALL TABLA1 movwf CUENTAS xorlw 0x97 btfss STATUS,Z clrf PCLATH clrf saltar movf CUENTAS,0 goto FIN_TABLA retardo2 movlw 0xff movwf Delay_Cont call Delay_var ;Temporiza 1 segundo return retardo1 movlw 0x10 movwf Delay_Cont call Delay_var ;Temporiza 1 segundo return Delay_var: bcf INTCON,T0IF ;Desconecta el flag de rebosamiento movlw d'248' ;Complemento hex. de 195 movwf TMR0 ;carga el TMR0 Intervalo btfss INTCON,T0IF ;Rebasamiento del TMR0 ?? goto Intervalo ;Todavía no decfsz Delay_Cont,F ;Decrementa contador de intervalos goto Delay_var ;Repite el intervalo de 50 mS return FIN_TABLA movf CUENTAS,0 xorlw 0xA9 btfsc STATUS,Z goto FIN_TABLA1 movf CUENTAS,0 xorlw 0x0A btfsc STATUS,Z goto ENTER movf CUENTAS,0 xorlw 0xFC btfsc STATUS,Z goto ESCAPE xorlw 0xFE btfsc STATUS,Z goto ejecutar movf CUENTAS,0 xorlw 0xFF btfsc STATUS,Z goto ejecutar1 goto CARACTER_ASCII FIN_TABLA1 comf BANDERAS,W andlw 0x01 movwf BANDERAS btfsc BANDERAS_CAPS nop btfsc BANDERAS_CAPS goto LIMPIAR nop goto LIMPIAR ESCAPE goto INICIO ejecutar NOP CLRF KeyRtn CLRF ASCII CLRF Nbytes

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

bsf INTCON,GIE decf GIRAR goto fase1 ejecutar1 NOP CLRF KeyRtn CLRF ASCII CLRF Nbytes bsf INTCON,GIE clrf GIRAR goto fase2 repro bsf INTCON,GIE CLRF KeyRtn CLRF ASCII CLRF Nbytes movf GIRAR,0 xorlw 0x00 btfsc STATUS,Z goto ENTER movf GIRAR,0 xorlw 0x04 btfsc STATUS,Z goto GIRATORIO1 movf GIRAR,0 xorlw 0x03 btfsc STATUS,Z goto repro1 movlw 0xFF movwf Dato call Enviar_Byte call retardo1 incf Direccion movlw 0xFF movwf Dato call Enviar_Byte call retardo1 repro1 clrf Direccion goto R12 Viss3 DECFSZ Nbytes,W goto viss31 goto esc1 viss31 movlw 0x05 movwf retardo movlw 0xFF movwf RESTADOR1 Viss2 movlw 0x23 movwf PORTA movlw 0x28 movwf RESTADOR movlw 0x75 movwf FSR Viss1 rlf INDF,0 movwf PORTB call RETARDO decf FSR,F decfsz RESTADOR,1 goto Viss1 decfsz RESTADOR1,1 goto Viss2 call Recibir_Byte movf Dato,0 xorlw 0xFF btfss STATUS,Z goto R12 movlw 0x03 movwf RESTADOR1 V1 call retardo2 decfsz RESTADOR1 goto V1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

goto repro1 esc1 MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto INICIO goto viss31 Cambia incf Direccion clrf RESTADOR Cambia1 incf RESTADOR movlw 0x02 subwf cont,1 btfsc STATUS,Z goto Ca btfsc STATUS,C goto Cambia1 Ca movf RESTADOR,0 sublw 0x14 btfss STATUS,C goto Viss3 btfsc STATUS,Z goto Viss3 movwf RESTADOR Cambia2 call ROTO1 clrf 0x4E decfsz RESTADOR goto Cambia2 goto Viss3 R12 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR bor1 clrf INDF incf FSR,F decfsz RESTADOR goto bor1 clrf PCLATH clrf cont R121 call Recibir_Byte movf Dato,0 xorlw 0xFF btfsc STATUS,Z goto Cambia ,Z goto R112 incf PCLATH incf Direccion call Recibir_Byte incf Direccion R32 incf cont call ROTO1 movf Dato,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto R32 clrf PCLATH goto R121 R112 incf Direccion

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

call Recibir_Byte incf Direccion movf Dato,0 xorlw 0x97 btfsc STATUS,Z incf PCLATH R312 incf cont call ROTO1 movf Dato,0 call Tabla movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto R312 clrf PCLATH decfsz fila1,1 goto R121 ENTER NOP CLRF KeyRtn CLRF ASCII CLRF Nbytes bsf INTCON,GIE movlw 0xFF movwf Dato call Enviar_Byte call retardo1 movf GIRAR,0 xorlw 0x00 btfsc STATUS,Z goto GIRATORIO1 movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto ENTER1 goto LIMPIAR ENTER1 incf Direccion movf Direccion,0 movwf GIRAR1 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR borr1 clrf INDF incf FSR,F decfsz RESTADOR goto borr1 clrf fila goto LIMPIAR BOR movf fila,0 xorlw 0x00 btfsc STATUS,Z movlw 0x28 movwf RESTADOR borr clrf INDF incf FSR,F decfsz RESTADOR goto borr clrf Direccion goto LIMPIAR BORRAR movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto BOR

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

movlw 0x09 movwf RESTADOR clrf cont movf Direccion,0 movwf valor xorlw 0x02 btfsc STATUS,Z goto BORRAR1 movf Direccion,0 movwf valor xorlw 0x00 btfsc STATUS,Z goto BORRAR1 BORRAR2 movlw 0x02 subwf valor,1 incf cont movf valor,0 xorlw 0x00 btfsc STATUS,Z goto BORRAR3 decfsz RESTADOR,1 goto BORRAR2 goto BORRAR3 BORRAR1 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR borrar1 clrf INDF incf FSR,F decfsz RESTADOR goto borrar1 clrf Direccion goto LIMPIAR BORRAR3 decf cont,1 movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR borrar3 clrf INDF incf FSR,F decfsz RESTADOR goto borrar3 movf valor,0 movwf Direccion Ru1 call Recibir_Byte movf Dato,0 movwf saltar xorlw 0x01 btfss STATUS,Z goto Ru11 incf PCLATH incf Direccion call Recibir_Byte incf Direccion Ru3 call ROTO1 movf Dato,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto Ru3 clrf PCLATH decfsz cont,1 goto Ru1 goto LIMPIAR

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Ru11 incf Direccion call Recibir_Byte incf Direccion movf Dato,0 xorlw 0x97 btfsc STATUS,Z incf PCLATH Ru31 call ROTO1 movf Dato,0 call Tabla movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf Dato,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto Ru31 clrf PCLATH decfsz cont,1 goto Ru1 goto LIMPIAR CARACTER_ASCII Run1 movf GIRAR,0 xorlw 0x04 btfsc STATUS,Z goto LIMPIAR2 movf GIRAR,0 xorlw 0x03 btfsc STATUS,Z goto LIMPIAR2 incf fila movf saltar,0 call retardo1 incf Direccion movf CUENTAS,0 movwf Dato call Enviar_Byte call retardo1 incf Direccion movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto Ru12 Run3 call ROTO1 movf CUENTAS,0 call Tabla1 movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf CUENTAS,1 movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto Run3 clrf PCLATH goto LIMPIAR movf GIRAR,0 xorlw 0x01 btfsc STATUS,Z goto Ru12 Run31 call ROTO1 movf CUENTAS,0 call Tabla movwf CARACTER ;W contains table data - put it in 15h movwf 0x4E incf CUENTAS,1 movf CARACTER,0

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

xorlw 0x00 btfss STATUS,Z goto Run31 goto LIMPIAR ROTO1 movf 74h,0 movwf 75h movf 73h,0 movwf 74h movf 72h,0 movwf 73h movf 71h,0 movwf 72h movf 70h,0 movf 66h,0 movwf 67h movf 65h,0 movwf 66h movf 64h,0 movwf 65h movf 63h,0 movwf 64h movf 62h,0 movwf 63h movf 61h,0 movwf 62h movf 60h,0 movwf 61h movf 5Fh,0 movwf 60h movf 5Eh,0 movwf 5Fh movf 5Dh,0 movwf 5Eh movf 5Ch,0 movwf 5Dh movf 5Bh,0 movwf 5Ch movf 5Ah,0 movwf 5Bh movf 59h,0 movwf 5Ah movf 58h,0 movwf 59h movf 57h,0 movwf 58h movf 56h,0 movwf 57h movf 55h,0 movwf 56h movf 54h,0 movwf 55h movf 53h,0 movwf 54h movf 52h,0 movwf 53h movf 51h,0 movwf 52h movf 50h,0 movwf 51h movf 4Fh,0 movwf 50h movf 4Eh,0 movwf 4Fh return grabar movf 50h,0 movwf 51h movf 4Fh,0 movwf 50h movf 4Eh,0

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

movwf 4Fh movf 4Dh,0 movwf 4Eh return restar CLRF KeyRtn CLRF ASCII CLRF Nbytes decf fila goto gira sumar CLRF KeyRtn CLRF ASCII CLRF Nbytes incf fila goto gira esc MOVF KeyRtn,W xorlw 0x03 btfsc STATUS,Z goto restar MOVF KeyRtn,W xorlw 0x0B btfsc STATUS,Z goto sumar MOVF KeyRtn,W xorlw 0x76 btfsc STATUS,Z goto escapar CLRF KeyRtn CLRF ASCII CLRF Nbytes goto gira escapar CLRF KeyRtn CLRF ASCII CLRF Nbytes goto INICIO GIRATORIO goto LAZO_LECTURA GIRATORIO1 movlw 0x020 movwf fila movlw 0x05 movwf retardo movlw 0x4E movwf FSR movlw 0x28 movwf RESTADOR borrar2 clrf INDF incf FSR,F decfsz RESTADOR goto borrar2 GIRATORIO3 clrf Direccion GIRATORIO2 call Recibir_Byte movf Dato,0 movwf saltar xorlw 0xFF btfsc STATUS,Z goto fin incf Direccion call Recibir_Byte movf saltar,0 xorlw 0x01 btfsc STATUS,Z goto MIN goto MAY fin movlw 0x28 movwf saltar

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

fin1 call ROTO1 clrf 0x4E call Cartel decfsz saltar goto fin1 goto GIRATORIO3 MIN incf PCLATH movf Dato,0 xorlw 0xB7 btfsc STATUS,Z incf PCLATH MIN1 call ROTO1 movf Dato,0 call Tabla1 movwf CARACTER movwf 0x4E incf Dato call Cartel movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto MIN1 clrf PCLATH incf Direccion goto GIRATORIO2 MAY movf Dato,0 xorlw 0x97 btfsc STATUS,Z incf PCLATH MAY1 call ROTO1 movf Dato,0 call Tabla movwf CARACTER movwf 0x4E incf Dato call Cartel movf CARACTER,0 xorlw 0x00 btfss STATUS,Z goto MAY1 clrf PCLATH incf Direccion goto GIRATORIO2 Cartel DECFSZ Nbytes,W goto gira goto esc gira movlw 0x05 movwf retardo movf fila,0 movwf RESTADOR1 Cartel2 movlw 0x23 movwf PORTA movlw 0x28 movwf RESTADOR movlw 0x75 movwf FSR Cartel3 rlf INDF,0 movwf PORTB call RETARDO decf FSR,F decfsz RESTADOR,1 goto Cartel3 decfsz RESTADOR1,1 goto Cartel2 return RETARDO movlw 0x5F movwf TIEMPO RET decfsz TIEMPO,1

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

goto RET decfsz retardo goto RET2 call RET1 RET2 clrf PORTB incf PORTA return RET1 clrf PORTB movlw 0x0A subwf PORTA movlw 0x05 movwf retardo return LIMPIAR NOP clrf PCLATH CLRF KeyRtn CLRF ASCII CLRF Nbytes bsf INTCON,GIE GOTO LAZO_LECTURA LIMPIAR1 NOP CLRF KeyRtn CLRF ASCII CLRF Nbytes clrf SALTO bsf INTCON,GIE GOTO LAZO_LECTURA LIMPIAR2 NOP CLRF KeyRtn CLRF ASCII CLRF Nbytes clrf SALTO bsf INTCON,GIE GOTO muestra LEER_TECLADO BTFSC KBD_DATO GOTO KBD_ES1 BCF BIT_ACTUAL GOTO SEGUIR KBD_ES1 BSF BIT_ACTUAL SEGUIR INCF Nbits,F DECFSZ Nbits,W GOTO BIT_REAL BTFSS BIT_ACTUAL RETURN GOTO CLEANUP BIT_REAL MOVF Nbits,W XORLW 0x09 BTFSC STATUS,Z goto ES_9NO_BIT NO_ES_9NO_BIT DECFSZ NO_ROTAR,W RRF DATAIN,1 MOVF Nbits,W XORLW 0x0B BTFSC STATUS,Z GOTO aceptar_byte RETURN ES_9NO_BIT BTFSC BIT_ACTUAL GOTO CLEANUP

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

MOVF DATAIN,W BTFSC STATUS,Z GOTO CLEANUP MOVWF KeyRtn MOVLW 0x01 MOVWF NO_ROTAR RETURN aceptar_byte MOVLW 0x01 MOVWF Nbytes CLRF NO_ROTAR CLEANUP CLRF Nbits CLRF DATAIN RETURN ;************************************************************************* Recibir_Byte clrf PIR1 call Send_Start ; Pone la condición de Inicio movlw b'10100000' ; Prepara el Byte de control para la EEPROM addwf memoria,0 call Send_Byte ; Envía el byte de control a la memoria serial movf Direccion,w ; Envía la dirección donde se leerá la EEPROM call Send_Byte call Send_Stop call Send_Start ; Pone la condición de re-inicio movlw b'10100001' ; Se envía el byte de control indicando una lectura addwf memoria,0 call Send_Byte call Leer_Byte ; Se lee lo enviado por la EPROM call Send_Stop ; Se envía la condición de STOP return ;********************************************************************** Enviar_Byte clrf PIR1 call Send_Start ; Se pone la condición de inicio movlw b'10100000' ; Se envía el byte de control addwf memoria,0 call Send_Byte movf Direccion,w ; Se envía la Dirección donde guardar el dato call Send_Byte movf Dato,w ; Se envía el Dato call Send_Byte call Send_Stop ; Condición de STOP return ;********************************************************************** Send_Start2 banco_1 ; Selecciona banco 1 de RAM bsf SSPCON2,RSEN ; Activa secuencia RE-INICIO banco_0 ; Regresa al banco cero de RAM btfss PIR1,SSPIF ; Fin de secuencia de re-inicio ?? goto $-1 ; No, seguir esperar bcf PIR1,SSPIF return ;********************************************************************** Send_Start banco_1 ; Selecciona el banco 1 de RAM bsf SSPCON2,SEN ; Activa secuencia de inicio banco_0 ; Regresa al banco 0 de RAM btfss PIR1,SSPIF ; Fin de secuencia de inicio ?? goto $-1 ; No, seguir esperar bcf PIR1,SSPIF return ;********************************************************************** Send_Stop banco_1 ; Pasa al banco 1 bsf SSPCON2,PEN ; Activa secuencia de stop banco_0 ; Regresa al banco 0

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

btfss PIR1,SSPIF ; Fin de secuencia de Stop ?? goto $-1 ; No, seguir esperado bcf PIR1,SSPIF return ;********************************************************************** Send_Byte movwf SSPBUF ; Byte a transmitir pasa al buffer de salida btfss PIR1,SSPIF ; Termino de Transmitir?? goto $-1 ; No, seguir esperando bcf PIR1,SSPIF banco_1 ; Selecciona el banco 0 btfsc SSPCON2,ACKSTAT ; Mira el estado del bit ACK goto ERROR_I2C banco_0 ; Regresa al banco 0 return ;********************************************************************** Leer_Byte banco_1 ; Selecciona página 1 bsf SSPCON2,RCEN ; Activa el modo receptor banco_0 ; Selecciona página 0 btfss PIR1,SSPIF ; Recibidos los 8 bits ?? goto $-1 ; No, seguir esperado bcf PIR1,SSPIF ; Borra la bandera del módulo MSSP movf SSPBUF,w ; Mover los datos recibido movwf Dato ; al registro Datos para usarlos luego return ;********************************************************************** ERROR_I2C ; Un ERROR grave ha ocurrido banco_0 ; Abortar todo y colocar el bit 7 del puerto B call Send_Stop ; en "1" para indicar el error. nop ; PROGRAMA DETENIDO POR UN ERROR!!!! EE_Write bsf STATUS,RP1 bsf STATUS,RP0 ;Pasamos al banco 3 bcf EECON1,EEPGD ;Seleccionamos la EEPROM de datos bsf EECON1,WREN ;Permitimos la escritura de ésta movlw 0x55 movwf EECON2 movlw 0xaa movwf EECON2 ;Secuencia obligatoria bsf EECON1,WR ;Empezamos la escritura bcf STATUS,RP0 bcf STATUS,RP1 ;Volvemos al banco 0 ESPERA btfss PIR2,EEIF ;esperamos a que acabe la escritura goto ESPERA bcf PIR2,EEIF ;Reseteamos el flag de la EEPROM return ;************************************************************************************** ;EE_Read: Leer un byte de la EEPROM. Se supone al registro EEADR cargado con la direc- ;ción a leer. En EEDATA aparecerá el dato leído. EE_Read bsf STATUS,RP0 bsf STATUS,RP1 ;Pasamos al banco 3 bcf EECON1,EEPGD ;Seleccionamos la EEPROM de datos bsf EECON1,RD ;Permitimos la lectura de ésta bcf STATUS,RP1 bcf STATUS,RP0 ;Selección de banco 0 return END

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Diagrama de flujo

(Frase instantánea) F1 =1 F2=1 (Mensaje giratorio)

F3=1 (Ejecuta mensaje guardado) F3=1 F4=1 (grabar nuevo mensaje) F4=1(grabar nuevo mensaje) Enter =0 Enter=0 F3=0 F3=1 F3=0 Enter=1 F3=1 F3=0 F5=1 F6=1

Inicialización de

variables

Presionar

F1 o F2

Selecc. Memoria

Tecla 1,2,3,4

Visualiza nombre

Memoria selecc.

Selecc. Memoria

Tecla 1,2,3,4

Visualiza nombre

Memoria selecc.

Presionar

F3 o F4

Presionar

F3 o F4

Grabar nombre

memoria selecc.

Presionar F4 para

finalizar

Escribir renglón

Presionar

Enter o F3

Siguiente

renglón

Visualizar

mensaje

Grabar nombre

memoria selecc.

Presionar F4 para

finalizar

Escribir mensaje

Presionar

F3

Presionar

F5 o F6

Decrementar

velocidad del

mensaje

Incrementar

velocidad del

mensaje

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Diagrama del Circuito

RA

0/A

N0

2

RA

1/A

N1

3

RA

2/A

N2

/VR

EF

-4

RA

4/T

0C

KI

6

RA

5/A

N4

/SS

7

OS

C1

/CL

KIN

9

OS

C2

/CL

KO

UT

10

RC

1/T

1O

SI/

CC

P2

12

RC

2/C

CP

11

3

RC

3/S

CK

/SC

L1

4

RB

7/P

GD

28

RB

6/P

GC

27

RB

52

6R

B4

25

RB

3/P

GM

24

RB

22

3R

B1

22

RB

0/I

NT

21

RC

7/R

X/D

T1

8R

C6

/TX

/CK

17

RC

5/S

DO

16

RC

4/S

DI/

SD

A1

5

RA

3/A

N3

/VR

EF

+5

RC

0/T

1O

SO

/T1

CK

I1

1

MC

LR

/Vp

p/T

HV

1

U2PIC16F873

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U8

ULN2003A

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U9

ULN2003A

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U10

ULN2003A

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U11

ULN2003A

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U13

ULN2003A

1B1

1C16

2B2

2C15

3B3

3C14

4B4

4C13

5B5

5C12

6B6

6C11

7B7

7C10

COM9

U21

ULN2003A

R110k

R210k

R3

10k

C3

1uF

R410k

SC

K1

SD

A3

WP

5

U124LC16B

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U3

74HC238

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U4

74HC238

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U5

74HC238

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U6

74HC238

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U7

74HC238

A1

B2

C3

E16

E24

E35

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U12

74HC238

1A02

1A14

1A26

1A38

2A011

2A113

2A215

2A317

1OE1

2OE19

1Y018

1Y116

1Y214

1Y312

2Y09

2Y17

2Y25

2Y33

U14

74HC241

X1CRYSTAL

C1

13pF

C2

13pF

1

42

5

3

R5

10k

Co

ne

cto

r P

C-A

T

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Presentación del proyecto terminado

En la siguiente fotografía se ve como quedo terminado el trabajo:

Manejo del cartel electrónico:

Una vez conectado a la alimentación, aparecerá el ultimo mensaje que se ejecuto antes de cortar la alimentación. Luego se debe presionar F1 si se desea ejecutar el modo “frase instantánea” o F2 si desea “mensaje giratorio”: Si selecciono F1:

1. Seleccionar memoria mediante las teclas 1,2,3,4. 2. Elegir si se va a ejecutar frase guardada con F3, o grabar nueva frase

mediante F4. 3. Si se eligió F3 se ejecutara la frase guardada, en cambio si se eligió F4, lo

primero que hay que hacer es darle un nombre al lugar de memoria y finalizar con la tecla F4.

4. Una vez elegido el nombre se debe empezar a escribir la frase, una vez que se termino de escribir el primer renglón, si desea pasar al siguiente renglón presionar ENTER y así sucesivamente, pero si desea finalizar presione F3 y comenzara a reproducir la frase.

Si selecciono F2:

1. Seleccionar memoria mediante las teclas 1,2,3,4. 2. Elegir si se va a ejecutar frase guardada con F3, o grabar nueva frase

mediante F4.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

3. Si se eligió F3 se ejecutara la frase guardada, en cambio si se eligió F4, lo primero que hay que hacer es darle un nombre al lugar de memoria y finalizar con la tecla F4.

4. Una vez elegido el nombre se debe empezar a escribir el mensaje, cuando se termino de escribir, para finalizar presionar F3 y comenzara a reproducir el mensaje.

5. Si se desea variar la velocidad de reproducción del mensaje, si presiona la tecla F5 aumentara la velocidad, y si se presiona F6 disminuirá la velocidad.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Problemas en la realización del proyecto Los problemas que se me presentaron al realizar el proyecto no han sido muchos pero es importante mencionarlos, en primer lugar puedo mencionar que se me hizo un poco complicado poder desarrollar el ``software´´ que gobierna al microcontrolador pic. Otro de los problemas que se me ha presentado fue el problema de la corriente de la que entregaba la fuente, al principio veía que no se iluminaban mucho las matrices, después de hacer varias pruebas, lo solucione cambiando la fuente de alimentación por una mas grande. Al realizar otra prueba las matrices iluminaban poco, era porque las matrices necesitan un pico de corriente de 140mA, ya que el puerto B del PIC no puede entregar esa corriente, tuve que poner un amplificador de corriente. Estos problemitas surgen por no leer antes las hojas de datos de los componentes.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Apéndice A Teoría del teclado PC-AT

El teclado es un periférico bidireccional que se conecta al ordenador por medio de un cable que contiene 4 hilos átiles: uno de alimentación, uno de tierra, uno para datos y otro para reloj. Los conectores externos mas conocidos se muestran a continuación:

Donde las líneas del reloj y de datos son bidireccionales de E/S con colector abierto capaces de manejar una corriente de hasta de 300mA. Identificación de la tecla pulsada: Al pulsar una tecla se genera un único código, denominado también código de rastreo, el cual identifica la tecla pulsada y la envía a través de su línea de data serial. Al soltar la tecla, los teclados de AT generan dos códigos que se envían consecutivamente (0F0h y después el mismo código que al pulsarla). Por ejemplo, si se pulsa la tecla „A‟ aparecerá en la línea de dato serial del teclado el byte 1Ch, y al soltar la „A‟ se genera un código F0h y luego 1Ch. La figura siguiente muestra el teclado básico del PC-AT de 83/84 teclas y sus códigos de escaneo:

El teclado es libre de transmitir hacia el “host” mientras ambas líneas del reloj del teclado y datos permanezcan en alto. En este momento la transmisión de datos hacia el “host” se realiza a través de un protocolo de comunicación en serie que en el AT consta de un marco de 11 bits, el primer bit de inicio, los 8 siguientes de datos (el LSB primero), 1 bit de paridad impar y el último de fin o parada. En el siguiente diagrama se representa un byte de datos transmitidos desde el teclado:

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

El teclado no cambia necesariamente el dato en la línea en el flanco de subida del reloj como se muestra aquí, pero el dato en la línea debe ser siempre valido en el flanco de bajada del reloj. Así, cada bit debe ser leído en el flanco de bajada de reloj. Teniendo en cuenta que el bit menos significativo siempre es enviado primero. El teclado genera la señal de reloj que por lo general esta entre 20Khz y 30Khz. Comunicación con el Microcontrolador PIC: El programa en este caso se debe encargar de detectar las interrupciones generados por el teclado, determinar la tecla pulsada y hallar su valor equivalente ASCII. Este programa se limitara a recibir los códigos de las teclas pulsadas. Para ello se debe leer el código binario producido en los flancos de bajado del reloj, se debe colocar el reloj del teclado como la entrada de interrupción RB0, y cada vez que esta se activa se lee en RC0 un bit del dato. Como la línea de reloj y de dato del teclado son a colector abierto, hay que configurar la entrada RB0 como “pull up”, y a la entrada RC0 hay que colocarle una resistencia a Vcc.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Apéndice B Matriz de 5x7 LEDs El modelo de matriz de “leds” elegido para el proyecto es el 5x7 “Dot Matrix Display” (red) del fabricante Para Light. La identificación del elemento es: Part Number: C-5570E

Algunas de las características [20] generales que presenta son las siguientes:

Disposición interna de los “leds” de Cátodo Columna.

Tamaño del punto de 5mm.

2 pulgadas de altura (50 mm).

Baja corriente de operación.

Alto contraste de luz.

Compatibles con códigos EBCDIC y ASCII.

Horizontalmente escalable.

Fácil montaje en placas o sockets.

Punto de color blanco y carcasa de color gris.

Otras características pueden verse en la siguiente tabla y para más información ver su datasheet.

La siguiente tabla muestra los rangos de valores absolutos.

Parámetro Valor

Potencia disipada 105 mW

Corriente continua 30 mA

Pico de corriente(1/10 Duty Cycle, 0,1ms) 140 mA

Voltaje 5 V

Temperatura de Uso/almacenaje -400C hasta +85ºC

Temperatura de soldadura 260ºC durante 5 segundos

La siguiente imagen muestra las dimensiones de la matriz así como las dos posibles disposiciones internas de sus “leds”.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Apéndice C MEMORIA I2C EEPROM 24C16

Estos dispositivos se caracterizan por su tamaño reducido, normalmente implementados en encapsulados de 8 pines, sin importar la capacidad de almacenamiento. Los encapsulados típicos van desde montaje superficial hasta los clásicos PDIP, útiles éstos para los prototipos en “protoboards”, apreciados por los aficionados y estudiantes de electrónica. La etiqueta que las identifican comienza con el número 24, acompañada del número que indica la capacidad de almacenamiento en Kbits y el tipo de encapsulado.

La capacidad de almacenamiento implementada por los fabricantes de estos dispositivos oscila desde 1Kbit hasta 1024Kbit, permitiendo una conexión en cascada entre ellos; un dispositivo maestro como un microcontrolador de gama media, puede manejar hasta 7 dispositivos de este tipo mediante el protocolo, permitiendo un potencial de acceso de 8192Kbits de información (1MByte). Las memorias EEPROM basadas en el protocolo SPI tienen una capacidad tope de 256Kbits en la actualidad, pero no permiten la posibilidad de conectarse en cascada, al igual que las basadas en Microwire, las cuales solo tienen una capacidad máxima de almacenamiento de 16Kbits.

Características:

Voltaje de operación bajo y estándar – 5.0 (VCC = 4.5V to 5.5V) – 2.7 (VCC = 2.7V to 5.5V) – 2.5 (VCC = 2.5V to 5.5V) – 1.8 (VCC = 1.8V to 5.5V)

Organizado internamente 2048 x 8 (16K)

Bus de interfaz serial, compatible con I2C

Transferencia de datos bidireccional

100 KHz (1.8V, 2.5V, 2.7V) y 400 KHz (5V)

Ciclo de escritura (10ms máximo)

La descripción funcional de los conectores:

1. Líneas de Dirección (A2 A1 A0): Indican el código de identificación del circuito integrado, dentro de una red I2C. Un maestro puede comunicarse con 7 esclavos dentro de esta red. Con la ayuda de “hubs”, repetidores y buffers, pueden conectarse varias redes. ·

2. Líneas de Polarización (Vcc y Vss): Los dispositivos I2C, trabajan con voltajes de alimentación (Vcc) entre 2.3 a 5.5VDC. El conector Vss conecta la tierra del circuito. Existen circuitos convertidores de voltaje, para permitir la conexión de redes y dispositivos que se polarizan con diferentes niveles de voltaje.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

3. Línea de Protección de Código (WP): Permite ó no la modificación del contenido de la memoria. Es la única opción de seguridad que tiene la memoria.

4. Línea de Datos (SDA): A través de ella se transmite y se recibe la información que intercambia la memoria con otros dispositivos de la red. Es una salida de colector / drenador abierto, lo cual requiere una resistencia de polarización “pull-up”, para conectarla a una fuente de voltaje. La conexión de varias salidas de este tipo, originan la conexión “AND alambrada”, en la cual el nivel lógico resultante es el producto lógico de los niveles presentes en las salidas conectadas en ese nodo.

5. Línea de Reloj (SCL): Fija la sincronización de los datos que viajan entre maestro y esclavos. Al igual que SDA, esta línea también es de colector / drenador abierto, lo que también se debe conectar entre ella y la fuente de polarización la resistencia “pull-up”. La frecuencias de operación que soporta el protocolo son: estándar (100KHz), rápida (400KHz) y de “alta velocidad” (1MHz).

El procedimiento básico para la transmisión y recepción de datos entre el microcontrolador y una memoria EEPROM I2C, depende de la operación a realizar sobre ella, si es lectura ó escritura:

1. El maestro (microcontrolador) genera una condición de inicio (Start) al esclavo (memoria), definida en el protocolo I2C así: SCL=1 y SDA=flanco descendente.

2. El maestro genera un byte de reconocimiento de dirección de esclavo, que tiene la siguiente estructura: 1010 A2 A1 A0 [R/W]. Los primeros 4 bits corresponden a la identificación que utiliza el protocolo de comunicación. Los bits A2 A1 A0 corresponden a la dirección del esclavo y el bit [R/W] indica el tipo de operación que se va a realizar en la memoria. Si es 1, se realiza lectura y si es 0 escritura. Los esclavos conectados en la misma red del maestro reciben esta trama, comparan la dirección que reciben del maestro con la que tienen definida en sus líneas de dirección y el esclavo seleccionado coloca un nivel BAJO (si se realiza la operación de escritura) en la línea SDA. Esta acción se define en inglés con la palabra “Acknowledge” (ACK). Si se realiza la operación de lectura, el esclavo coloca la línea SDA en BAJO y espera a que el maestro genere el bit ACK, que en este caso es ALTO.

3. El maestro genera el ó los bytes de la dirección de la celda. Al igual que el paso anterior, los niveles de ACK para las operaciones de lectura y escritura se comportan de la misma forma.

4. En escritura, el maestro envía el byte de datos a la celda seleccionada; en lectura la memoria envía este byte al maestro. Luego de esto se genera el bit ACK correspondiente.

5. Si se van a transmitir más datos entre el microcontrolador y la memoria, se repiten los pasos 2 a 4.

6. El maestro genera la condición de parada (Stop) al esclavo, colocando un flanco ascendente en SDA, cuando SCL=1. Se termina el enlace entre el microcontrolador y la memoria.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Apéndice D Microcontrolador PIC 16F873 El PIC16F873 es un microcontrolador FLASH de alto rendimiento que provee a ingenieros con la más alta flexibilidad de diseño posible. Además de (4k) palabras de memoria de programa FLASH, 192 bytes de memoria de datos, y 128 bytes de uso RAM. El PIC16F873 también tiene integrado un conversor Analógico-digital de 5-canales de 10-bit. Incluye dos temporizadores de 8-bit, uno de 16-bit, un temporizador del Perro guardián, “Brown-Out-Reset” o protección en para voltajes bajos (BOR), “Programming”™ En-circuito-de serie, RS-485 tipo “UART” para las aplicaciones de adquisición datos por goteo, y I2C™ o SPI™ que brinda capacidad para la expansión periférica. Se ha mejorado la precisión que controla interfaces a través de dos módulos de CCP y dos módulos de PWM (modulación por ancho de pulsos). Los PIC16F873 también gozan de un voltaje bajo de programación (Low voltage program), permitiéndole al usuario programar en el circuito el dispositivo mientras esta operando bajo el voltaje de funcionamiento. Las aplicaciones van de controles de máquinas programables, mantenimiento de red, telefonía, automatización, informática, etc. Este posee 22 I/O (puertos de entrada / salida) y está disponible en encapsulados 28 DIP (SP), y 28 SOIC (SO) para montaje en placa o superficial.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Distribución de puertos en el PIC16F873 El PIC16F873 posee 22 puertos de E / S disponibles: RA0_ RA5 (configurados como salidas), RB0 (conf. Como entrada), RB1_RB7 (conf. como salidas), RC0_ RC7 (configurados como entradas).

Pero para este proyecto son necesarios 17 puertos distribuidos de la siguiente manera:

2 - Control del teclado PC-AT 6- Control de los decodificadores.

7 - Manejo de la pantalla de “leds” 2- Memoria EEPROM

Para el manejo del teclado se utiliza el puerto RB0 configurado como una interrupción conectada al reloj, y el puerto RC0 conectado al de datos. Se utilizan para la pantalla de “leds” los bits RB1 a RB7 para las filas. Para controlar de los decodificadores se utilizo puerta A del PIC. Para la memoria EEPROM se utilizo el puerto RC3 (SCL) y RC4 (SDA) que son I2C.

Cingolani Ariel Jorge

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA

TECNOLOGIA ELECTRONICA

Conclusión De este proyecto se pueden formular muchas conclusiones que en su totalidad son productivas. La propuesta de realizar un proyecto a libre elección fomenta el desarrollo de proyectos ingeniosos y tal vez, por que no, útiles. Realmente cubre con todos los aspectos de un trabajo de ingeniería. Aprender a manejar un microcontrolador no es tan difícil como parece. Vale la pena conocer a un dispositivo tan versátil, completo y eficiente. Otra ventaja de este desafío es su carácter integrador. Para este proyecto se utilizaron todos los conocimientos adquiridos tanto en el ámbito universitario como en el ámbito personal. Es decir la experiencia de proyectos anteriores. Muchos problemas y contratiempos se hicieron presentes pero todos ellos fueron subsanados utilizando el ingenio y los conocimientos.