carteleletronico
-
Upload
vicente-fuentes -
Category
Documents
-
view
312 -
download
7
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.