Está en la página 1de 7

ING. ELECTRNICA.

SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 1


Prctica N2: Calculadora matricial.
Sandra Chacha Quille
Patricio Parra Abad
Manuel Sagbay Asitimbay
Universidad Politcnica Salesiana
Cuenca - Ecuador
schachaa@est.ups.edu.ec
pparra@est.ups.edu.ec
msagbaya@est.ups.edu.ec
AbstractIn this paper we datailed the operation and man-
agement of a 4x4 matrix keyboard by interrupting the highest
bits of port B with a matrix calculator which will be presented in
a 4x20 LCD will be performed. En este documento se detallar el
funcionamiento y manejo de un teclado matricial 4x4 mediante
la interrupcin de los bits ms altos del puerto B con la cual
se realizar una calculadora matricial que se presentar en una
LCD 4x20.
Index TermsINTCON, INTCON2, RCON.
I. OBJETIVOS.
A. Objetivo General.
Manejar interrupciones por cambio de estado.
B. Objetivos Especcos.
Resolver operaciones matriciales (suma, resta multipli-
cacin, divisin).
Hacer un interfaz usuario/mquina para ingresar y visu-
alizar datos mens y submens.
Programar usando funciones.
II. INTRODUCCIN.
La necesidad de sumar y hacer clculos apareci muy
temprano entre los humanos, para nes como el comercio,
o la observacin de la naturaleza y de las estrellas, es as
que nuestro primer instrumento de clculo elemental fueron
los dedos de nuestra mano luego se utilizaron los elementos
de la naturaleza, tiempo despus surge el baco que es un
invento que revoluciona el mundo de las matemticas , tiempo
despus en 1642 el matemtico francs Blaise Pascal inventa
la primera sumadora, ms tarde en 1693 Gotfried Whilelm
Leibniz ide una mquina calculadora en 1693, que superaba a
la de Pascal. Pero con desarrollo tecnolgico el estadounidense
Herman Hollerith (1860-1929) inventa la primera calculadora
electromecnica con el tiempo Hollerith fundo una compaa
dedicada a construir este tipo de mquinas, esa empresa sera
International Business Machines Corporation, conocida en
estos das como I.B.M. Con este precedente en el ao 1967,
Jack Kilby, Jerry Merryman y James Van Tassel de Texas
Instruments, desarrollaron la primera calculadora fcilmente
transportable, llamada Datamath.
.
Con esto, se puede decir que el clculo desde un principio
ha podido satisfacer las necesidades bsicas del ser humano,
luego, con la invencin de la calculadora, el hombre ha
podido facilitar mucho su trabajo, ya que puede resolver desde
difciles operaciones matemticas a simples clculos de la vida
cotidiana rpidamente.
Entonces, conscientes de la utilidad de las calculadoras
para facilitarnos nuestra vida diaria la practica realizada est
orientada al desarrollo de un programa para el manejo una
calculadora capaz de resolver las operaciones de suma, resta,
multiplicacin y divisin de dos matrices, para lo cual se
utiliz el principio bsico de las interrupciones, destacando el
uso de las interrupciones externas para el manejo del teclado
matricial adems de la correcta visualizacin de datos en la
LCD. [1], [3], [5]
III. MARCO TERICO.
A. Historia.
En 1961 apareci ya la primera calculadora 100% elec-
trnica llamada Sumlock Comptometer ANITA, hecha por los
britnicos de Bell Punch. Esta calculadora utilizaba tubos de
vaco, tubos de ctodos fros y decatrones en sus circuitos,
adems de 12 tubos Nixie como pantalla.
Para 1970, gracias al estudio de los semiconductores, se
crearon las calculadoras porttiles que usaban bateras recar-
gables. Las primeras calculadoras porttiles aparecieron en
Japn ese ao, y fueron rpidamente vendidas alrededor del
mundo. Algunos de estos equipos eran la Sanyo ICC-0081, la
Canon Pocketronic y la Sharp QT.8B.
El esfuerzo en el desarrollo de un circuito integrado, en
tanto, culminara tan solo 1 ao despus, con la primera
"calculadora en un chip", la MK6010 de Mostek, seguida por
un modelo de Texas Instruments ese mismo ao. De ah en
adelante este se convirti en el modelo para las calculadoras
alrededor del mundo.
En 1973, Texas Instruments lanz la primera calculadora
cientca, la SR-10, que costaba US$150 e inclua un botn
para "" (pi). En los siguientes aos se sumaron funciones
logartmicas, trigonometra y otros.
B. En la actualidad
Hoy en da gracias a la tecnologa como la de un CMOS y de
paneles solares, permitieron luego la creacin de calculadoras
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 2
programables y calculadoras sin necesidad de pilas. A medida
tambin que avanzaba la programacin y el conocimiento
matemtico tambin se fueron implementando ms funciones,
como derivadas, integrales y ecuaciones diferenciales. En la
dcada de 1980 aparecieron las calculadoras nancieras, y
desde entonces han seguido su desarrollo para estar emuladas
en casi todas partes, permitindonos hoy en da aprovechar de
este invento en casi cualquier dispositivo electrnico, desde un
reloj a un telfono.
C. Caractersticas microntrolador 16F877A.
Pertenece a la familia de microcontroaldores de la gama de
8bits sus caractersticas de memoria de programa, memoria
RAM, nmero de entradas/ salidas, nmero de canales analgi-
cos y tipos de puertos de comunicacin, han hecho de este
PIC uno de los utilizados para el desarrollo de las diversas
aplicaciones.[2]
Figure 1. Distribucin de Pines PIC 18f4550
Entre sus principales caractersticas tenemos:
Arquitectura RISC avanzada Harvard: 1bits con 8 bits de
datos
D. Arquitectura del microntrolador
1) Organizacin de memoria::
Memoria de Programa: Memoria ash interna de 32.768
bytes.
-Almacena Instrucciones y constantes/datos
-Puede ser escrita/leida mediante un programador externo
Memoria RAM de datos: memoria SRAM interna de
2048 bytes en las que estn incluidos los registros de
funcin especial.
-Almacena datos de forma temporal durante la ejecucin
del programa.
-Puede ser leida/escrita en tiempo de ejecucion mediante
diversas instrucciones.
Memoria EEPROM de datos: memoria no voltil de 256
bytes.
-Almacena datos que se deben conservar aun en ausencia
de tensin de alimentacin.
-Puede ser escrita/leda en tiempo de ejecucin a traves
de registros.
Pila: bloque de 31 palabras de 21 bits. Almacena la
direccin de la instruccin que debe ser ejecutada despus
de una interrupcin o subrutina.
Memoria de conguracin: memoria en la que se incluyen
los bits de conguracin (12 bytes de memoria ash) y
los registros de identicacin (2 bytes de memoria de
solo lectura). Este bloque situado a partir de la posicin
30000H de memoria de programa.
-Bits de conguracin.- contenidos en 12 bytes de memo-
ria ash:
Opciones de oscilador, opciones de reset, opciones de
watchdog,opciones de la circuiteria de depuracin y
programacin,opciones de proteccion contra escritura de
memoria de programa y memoria EEPROM de datos.
-Registros de identicacin.- dos registros situados en
las direcciones 3FFFFEH y 3FFFFFH que contienen
informacin del modelo y revisin del dispositivo.[6]
2) Arquitectura de Harvard:
Buses diferentes para el acceso a memoria de programa
y memoria de datos.[6]
-Bus de la memoria de programa: 21 lineas de direccin,
16/8 lineas de datos (16 lineas para instrucciones / 8
lineas para datos).
-Bus de la memoria de datos:12 lineas de direccin, 8
lineas de datos.
-Acceso simultaneo a la memoria de programa y a la
memoria de datos.
E. Interrupciones.
El microcontrolador PIC18F4550 tiene dos fuente princi-
pales de interrupcin: del Ncleo y de los perifricos.[5]
Las principales fuentes de interrupcin del ncleo son:
Exteriores disparado por el interrupcin en los pines :
INT0, INT1 e INT2.
Pines PORTB interrumpe cuando cambia el estado de uno
de los pines RB4 a RB7 .
Temporizador 0.
Entre las fuentes de interrupcin perifrica tenemos:
Conversin A / D completa.
USART interrupcin de recepcin.
USART interrupcin de transmisin.
Deteccin de bajo voltaje.
1) Prioridad de las interrupciones: Las interrupciones en
la familia PIC18F se puede dividir en dos grupos: de alta
prioridad y baja prioridad. Si en la aplicacin no es
necesario establecer prioridades para las interrupciones, el
usuario puede optar por desactivar el esquema de prioridades
para que todas las interrupciones se encuentran en la misma
nivel de prioridad.
El PIC18F4550 utiliza varios registros para el control
de la interrupcin. Estos son: RCON, INTCON, INTCON2,
INTCON3, PIR1, PIR2 PIE1, PIE2 IPR1, IPR2.[5]
2) Interrupcin por cambio de estado.: Cuatro pines del
PORTB (RB7:RB4) son capaces de disparar una interrupcin
por cambio de estado. Este tipo de interrupciones son comn-
mente usadas para el manejo de teclados matriciales, de ah
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 3
que estos pines tambin los denominen KBI0:KBI3. De estos
4 pines, solo producirn interrupcin aquellos congurados
como entradas, si alguno est congurado como salida, queda
excluido de la interrupcin por cambio de estado. Cualquiera
de estos 4 pines dispara la misma interrupcin, es decir la
misma bandera de interrupcin se activa, la bandera RBIF
(INTCON<0>).[5]
F. LCD 4x20
Un LCD es: una pantalla de cristal lquido que visualiza
unos ciertos caracteres. Para poder hacer funcionar un LCD,
debe de estar conectado a un circuito impreso en el que estn
integrados los controladores del display y los pines para la
conexin del display. Sobre el circuito impreso se encuentra el
LCD en si, rodeado por una estructura metlica que lo protege.
Un LCD 4X20 posee 4 las y 20 columnas que permiten
visiualizar caracteres alfanumricos en su pantalla, como se
muestra en la siguiente imagen.[7]
Figure 2. Display 4 x 16
G. Teclado matricial
Es un simple arreglo de botones conectados en las y
columnas, de modo que se pueden leer varios botones con
el mnimo nmero de pines requeridos. Un teclado matricial
44 solamente ocupa 4 lneas de un puerto para las las y otras
4 lneas para las columnas, de este modo se pueden leer 16
teclas utilizando solamente 8 lneas de un microcontrolador.
Si asumimos que todas las columnas y las inicialmente
estn en alto (1 lgico), la pulsacin de un botn se puede
detectar al poner cada la a en bajo (0 lgico) y checar cada
columna en busca de un cero, si ninguna columna est en bajo
entonces el 0 de las las se recorre hacia la siguiente y as
secuencialmente.[6]
Figure 3. Teclado matricial
1) Tipos de teclado: En el mercado es habitual encontrar
teclados matriciales pasivos de 3 x 4 y de 4 x 4 teclas.
Esencialmente estn constituidos por las y columnas conduc-
toras en cuyo cruce se encuentra un pulsador mecnico o de
membrana que, al ser pulsado, establece el contacto elctrico
entre la la y la columna correspondiente. As tenemos estos
dos tipos de teclados:[6]
Teclado de membrana: que es un teclado exible, ma-
tricial de membrana, con 16 teclas, mayor resistencia al
agua y al polvo, auto adhesivo en la parte de atrs.
Figure 4. Teclado de membrana
Teclado mecnico, sus teclas y cuerpo es elaborado en
plstico, ideal para montaje en tableros de control, tiene
una alta duracin.
Figure 5. Teclado mecnico
H. Registro RCON.
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
IPEN SBOREN R1 TO PD POR BOR
bit 7 bit 0
bit 7: IPEN: Bit de habilitacin de prioridades en las
interrupciones:
1= Sistema de prioridades habilitado.
0= Sistema de prioridades deshabilitado.
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 4
bit 6: RBOREN: Habilitacin del circuito BOR (Brown Out
Reset): Si BOREN1:BOREN0=01:
1= BOR habilitado.
0= BOR deshabilitado.
Si BOREN1:BOREN0=00, 10, o 11:
El bit es deshabilitado y se lee como 0.
bit 5: No implementado:
bit 4: RI: Flag de instruccin de RESET.:
1= La instruccin de RESET fu ejecutada.
0= La instruccin de RESET no ha sido ejecutada.
bit 3: TO: Flag del watchdog Time-Out:
1= Denido por el encendido, la instruccin CLRWDT
o instruccin SLEEP.
0= A WDT tiempo de espera se ha producido.
bit 2: PD: Power-Up Flag Deteccin de bit:
1= Denido por el encendido o por la instruccin CLR-
WDT .
0= Se establece por la ejecucin de la instruccin
SLEEP.
bit 1: POR: Power-on Reset Status bit(2):
1= Power-on Reset no se ha producido.
0= Power-on Reset se produjo.
bit 0: BOR: Brown-out Reset Status bit:
1= No ha ocurrido el Brown-out reset.
0= Se produjo el Brown-out reset.
I. Registro INTCON.
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
GIE/GIEH PEIE/GIEL T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0
bit 7: GIE: Habilitacin global de interrupciones, depende
de IPEN: IPEN=0;
1= Interrupciones habilitadas a nivel global.
0= Interrupciones habilitadas a nivel global.
si IPEN=1;
1= Interrupciones de alta prioridad habilitadas a nivel
global.
1= Interrupciones de alta prioridad deshabilitadas a nivel
global.
bit 6: PEIE: Habilita interrupciones de los perifricos que
no se controla con el registro INTCON, depende de IPEN.:
IPEN=0:
1= Habilita interrupciones de los perifricos a nivel
global.
0= Deshabilita interrupciones de los perifricos a nivel
global.
IPEN=1:
1= Interrupciones de baja prioridad habilitadas a nivel
global.
0= Interrupciones de baja prioridad deshabilitadas a
nivel global.
bit 5: T0IE: bit de habilitacin de la interrupcin por
desbordamiento del TMR0:
1= Habilita la interrupcin.
0= Inhabilita la interrupcin.
bit 4: INTE: bit de habilitacin de la interrupcin externa
por el pin RB0/INT:
1= Habilita la interrupcin.
0= Inhabilita la interrupcin.
bit 3: RBIE: bit de habilitacin de interrupcin por cambio
de nivel en el PORTB:
1= Habilita la interrupcin.
0= Inhabilita la interrupcin.
bit 2: T0IF: Flag de indicacin de desbordamiento de
TMR0:
1= El TMR0 se ha desbordado. Se borra por software.
0= El TMR0 no se ha desbordado.
bit 1: INTF: Flag de estado de la interrupcin externa INT:
1= La interrupcin externa se ha producido. Se borra
por software.
0= La interrupcin externa no se ha producido.
bit 0: RBIF: Flag de indicacin de interrupcin por cambio
de nivel en PORTB:
1= Se ha producido un cambio de nivel en los pines
RB7:RB4. Se borra por software.
0= No se ha producido un cambio de nivel en los pines
RB7:RB4.
J. REGISTRO INTCON2.
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
RBPU INTEDG0 INTEDG1 INTEDG2 TMR0IP RBIP
bit 7 bit 0
bit 7: RBPU: Bit de habilitacin de las resistencias de pull-
up del puerto B:
1= Resistencias de pull-up activadas.
0= Resistencias de pull-up desactivadas.
bit 6: INTEDG0: Bit de anco de la interrupcin externa 0:
1= Interrupcin por anco de subida.
0= Interrupcin por anco de bajada.
bit 5: INTEDG0: Bit de anco de la interrupcin externa 1:
1= Interrupcin por anco de subida.
0= Interrupcin por anco de bajada.
bit 4: INTEDG0: Bit de anco de la interrupcin externa 2:
1= Interrupcin por anco de subida.
0= Interrupcin por anco de bajada.
bit 3: No implementados: Se lee como 0.:
bit 2: TMR0IP: Bit de seleccin de prioridad de la inter-
rupcin del temporizador 0:
1= Prioridad alta.
0= Prioridad baja.
bit 1: No implementados: Se lee como 0.:
bit 0: RBPI: Bit de seleccin de prioridad de la interrupcin
por el cambio del puerto B.:
1= Prioridad alta.
0= Prioridad baja.
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 5
IV. MATERIALES UTILIZADOS:
TABLA 5
MATERIALES UTILIZADOS
Descripcin. Cantidad
Circuitos integrados
PIC 18F4550 1
Capacitores.
22pF 2
1u 1
Varios.
LCD 4X20 1
Teclado matricial mecnico 1
Cristal de cuarzo de 20Mhz 1
V. DESARROLLO.
A. Consideraciones de diseo generales.
Para sta prctica se ha establecido los siguientes parmet-
ros:
Los nicos cambio en la conguracin inicial del
PIC18F4550 se enumeran a continuacin, los demas
parmetros quedan los que estn por defecto.
1) Oscillator Selection: HS (20MHz)
2) MCLR pin: Disable.
Clculos Bsicos:
Fosc = 20MHz
Tosc =
1
20MHz
= 50ns
Tcy = 4 Tosc = 4 50ns = 200ns
B. Consideraciones y diseo para el manejo del teclado
El teclado se lo conecta en el puerto B para hacer uso de la
interrupcin por el cambio de estado del puerto, y se la realiz
de la siguiente manera.
1 2 3
6 5 4
8 9
=
7
++ C
ON
0
A
B
C
D
124 3
RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-/CVREF
4
RA3/AN3/VREF+
5
RA4/T0CKI/C1OUT/RCV
6
RA5/AN4/SS/LVDIN/C2OUT
7
RA6/OSC2/CLKO
14
OSC1/CLKI
13
RB0/AN12/INT0/FLT0/SDI/SDA
33
RB1/AN10/INT1/SCK/SCL
34
RB2/AN8/INT2/VMO
35
RB3/AN9/CCP2/VPO
36
RB4/AN11/KBI0/CSSPP
37
RB5/KBI1/PGM
38
RB6/KBI2/PGC
39
RB7/KBI3/PGD
40
RC0/T1OSO/T1CKI
15
RC1/T1OSI/CCP2/UOE
16
RC2/CCP1/P1A
17
VUSB
18
RC4/D-/VM
23
RC5/D+/VP
24
RC6/TX/CK
25
RC7/RX/DT/SDO
26
RD0/SPP0
19
RD1/SPP1
20
RD2/SPP2
21
RD3/SPP3
22
RD4/SPP4
27
RD5/SPP5/P1B
28
RD6/SPP6/P1C
29
RD7/SPP7/P1D
30
RE0/AN5/CK1SPP
8
RE1/AN6/CK2SPP
9
RE2/AN7/OESPP
10
RE3/MCLR/VPP
1
U2
PIC18F4550
A
B
C
D
1234
A
B
C
D
1
2
3
4
Figure 6. Diseo del circuito para el telcado.
1) Conguracin inicial de registro/s::
intcon2_rbip=1: Prioridad alta para la interrupcin por el
cambio de estado del puerto B.
intcon2_rbpu=0: Resistencias de pull-up habilitadas.
rcon_ipen=1: Habilitacin de los niveles de prioridad de
interrupciones.
intcon_rbie=1: Habilitacin de la interrupcin por el
cambio de estado del puerto B.
intcon_rbif=0: No se ha dado la interrupcin por el
cambio de estado del puerto B.
intcon2_rbip=1: Prioridad alta para la interrupcin por el
cambio de estado del puerto B
intcon_gie=1: (Con ipen=1), Habilitacin de prioridades
altas.
2) Conguracin de los pines para manejar el teclado
matricial en el programa.:
#dene A PORTB.B0
#dene B PORTB.B1
#dene C PORTB.B2
#dene D PORTB.B3
#dene UNO PORTB.B4
#dene DOS PORTB.B5
#dene TRES PORTB.B6
#dene CUATRO PORTB.B7
C. Consideraciones y diseo para la LCD.
La LCD se la ha conectado en el puerto D de la siguiente
forma.
D
7
1
4
D
6
1
3
D
5
1
2
D
4
1
1
D
3
1
0
D
2
9
D
1
8
D
0
7
E
6
R
W
5
R
S
4
V
S
S
1
V
D
D
2
V
E
E
3
LCD1
LM044L
RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-/CVREF
4
RA3/AN3/VREF+
5
RA4/T0CKI/C1OUT/RCV
6
RA5/AN4/SS/LVDIN/C2OUT
7
RA6/OSC2/CLKO
14
OSC1/CLKI
13
RB0/AN12/INT0/FLT0/SDI/SDA
33
RB1/AN10/INT1/SCK/SCL
34
RB2/AN8/INT2/VMO
35
RB3/AN9/CCP2/VPO
36
RB4/AN11/KBI0/CSSPP
37
RB5/KBI1/PGM
38
RB6/KBI2/PGC
39
RB7/KBI3/PGD
40
RC0/T1OSO/T1CKI
15
RC1/T1OSI/CCP2/UOE
16
RC2/CCP1/P1A
17
VUSB
18
RC4/D-/VM
23
RC5/D+/VP
24
RC6/TX/CK
25
RC7/RX/DT/SDO
26
RD0/SPP0
19
RD1/SPP1
20
RD2/SPP2
21
RD3/SPP3
22
RD4/SPP4
27
RD5/SPP5/P1B
28
RD6/SPP6/P1C
29
RD7/SPP7/P1D
30
RE0/AN5/CK1SPP
8
RE1/AN6/CK2SPP
9
RE2/AN7/OESPP
10
RE3/MCLR/VPP
1
U2
PIC18F4550
d
7
d
6
d
5
d
4 e rs
d7
d6
d5
d4
e
rs
5
4
%
RV1
1k
Figure 7. Diseo del circuito para la LCD.
1) Conguracin de los pines para la LCD:
sbit LCD_D4 at LATD4_bit;
sbit LCD_D5 at LATD5_bit;
sbit LCD_D6 at LATD6_bit;
sbit LCD_D7 at LATD7_bit;
sbit LCD_RS at LATD2_bit;
sbit LCD_EN at LATD3_bit;
2) Asignacin de la direccin de los pines para la LCD:
sbit LCD_D7_Direction at TRISD7_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_RS_Direction at TRISD2_bit;
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 6
VI. FUNCIONAMIENTO DEL PROGRAMA.
A. Descripcin de las variables globales del programa.
1) signed char posf=0;: Guarda la posicion y permite el
desplazamiento de las las para la visualizacin de las matrices
en la LCD.
2) signed char posc=0;: Guarda la posicion y permite el
desplazamiento de las columnas para la visualizacin de las
matrices en la LCD.
3) unsigned char cant;: Almacena el nmero de dgitos del
nmero en cada posicin en la matriz.
4) unsigned char operacion;: Contiene la opcin de clculo
que se va a realizar: 17 para suma algebraica, 18 para
multiplicacin y 19 para hallar la inversa de la matriz.
5) unsigned char l_a; unsigned char col_a; unsigned char
l_b; unsigned char col_b;: Almacenan el tamao de la matriz
A y B respectivamente (las y columnas)
6) unsigned char decimales;: Almacena la cantidad de
decimales que se van a visualizar.
7) unsigned char fteclado=0;: Bandera que sirve para
comprobar la interrupcin por el cambio de estado del puerto
B.
8) unsigned char numclcd=1;: Almacena el nmero de las
columnas para hacer el barrido de la impresin en la LCD.
9) unsigned char numcd;: Almacena el nmero de la la
para hacer el barrido de la impresin en la LCD.
10) unsigned char cantidad_de_digitos[9];: Almacena la
cantidad de nmero exactos para la impresin, adems alma-
cena espacios vacios para realizar la tabulacin de los nmeros
en caso de que unos contengan ms cifras que otros.
11) long double ma[9][18];: Almacena los datos de la
matriz a para realizar las operaciones matemticas, en las
columnas a partir de la 9 se almacena la matriz diagonal para
realizar el clculo de la inversa.
12) long double mb[9][9];: Almacena los datos de la
matriz a para realizar las operaciones matemticas.
13) long double respuesta[9][9];: Almacena los resultados
de las operaciones matemticas, es la matriz que se imprime.
14) int nr[8];: Almacena los dgitos del nmero de cada
espacio de la matriz respuesta.
15) long double dato;: Almacena el valor de las teclas del
teclado.
B. Descripcin de las funciones del programa.
1) void cong(void): Aqu se encuentra la conguracin
inicial de los puertos, y de las interrupciones que se utilizan
en la prctica.
2) void interrupt_high(void): Aqu se encuentra el control
y ejecucin de interrupcin por el cambio de estado del puerto
B, que consiste en la lectura del teclado.
3) void subteclado(void): Aqu se encuentra el cdigo para
realizar la lectura de la tecla presionada.
4) void inicio(void): Dentro de esta funcin se muestran las
opciones de la operacin que desea hacer, y se determina el
tamao de las matrices para realizar el correspondiente clculo.
5) void setcursor(const unsigned char la,const unsigned
char col): Dentro de esta funcin recibe las variables la y
col para realizar el posicionamiento del cursor de la LCD.
6) void recepcion(const unsigned char n_c): Dentro de esta
funcin se recibe las variables n_c sirven para recibir un
nmero o un caracter e imprimirlo en la LCD.
7) void llenado(void): Dentro de esta funcin se encuentra
el cdigo para realizar el llenado de las matrices para realizar
el clculo.
8) void salto_de_linea(unsigned char m): Dentro de esta
funcin se recibe la matriz m que se encuentra llenando en
la funcin de llenado y se procede a realizar el salto de lnea
en caso de que los caracteres sobrepasen la columna 20 de la
LCD, adems reimprime en la la 1 la matriz que se encuentra
llenando cuando se pase de la la 4.
9) void rebote(void): Dentro de esta funcin se controla
el rebote que se da al presionar una tecla para evitar malas
lecturas del teclado.
10) void sumar(void): Esta funcin se encarga de realizar
la suma algebraica entre las dos matrices, A+B, y guarda su
resultado en la matriz respuesta.
11) void multiplicar(void): Esta funcin se encarga de
realizar la multiplicacin entre la matriz A y la matriz B y
guarda su resultado en la matriz respuesta.
12) void inversa(void): Esta funcin se encarga de calcular
la inversa de la matriz A y guarda su resultado en la matriz
respuesta.
13) void calculo(void): Esta funcin descompone a cada
nmero de la matriz respuesta y lo guarda dgito a dgito en
el vector nr[].
14) void imprimir(): Esta funcin se encarga de imprimir
en la LCD la matriz resultado.
15) void LCDOUT(const unsigned char la, unsigned char
col, const char *dat): Sirve para imprimir una cadena de
caracteres en la LCD, recibe la la, columna y el string para
imprimir.
16) void LCDOUTCHRCP(const int dat): Sirve para im-
primir un caracter en cdigo ascii en la LCD, solo recibe el
caracter e imprime en la ltima posicin que se encuentra el
cursor en la LCD.
17) void LCDOUTCHR(const unsigned char la, const
unsigned char col, const int dat): Sirve para imprimir un
caracter en cdigo ascii en la LCD, recibe la la, columna
y el string para imprimir.
18) void LCDOUTCP(const char *dat): Sirve para im-
primir una cadena de caracteres en la LCD, solo recibe el
caracter, e imprime en la ltima posicin que se encuentra el
cursor en la LCD
19) Desplazamiento: El desplazamiento para la visual-
izacin de las matrices en la LCD se lo realiza dentro de
la funcin main.
VII. CONCLUSIONES Y RECOMENDACIONES.
El uso de la interrupcin por el cambio de estado del
puerto B para realizar la lectura del teclado es la mas
efectiva, ya que no hace falta leer los datos del teclado
contnuamente.
Para evitar que la capacidad de la memoria se llene
con las funciones de impresin de la LCD de MikroC,
realizamos nuestras propias funciones que reciben el
caracter ascii o la cadena de caracteres como una variable
ING. ELECTRNICA. SISTEMAS MICROPROCESADOS I MANUEL SAGBAY 7
constante con puntero, de sta manera las variables para
imprimir no usan casi nada de espacio en la RAM.
Para el clculo de la inversa de la matriz se procedi a
crear una matriz del doble de tamao de las columnas
que la que pidi el docente, en las columnas a partir de
la 9 se procede a llenar la inversa de la matriz de tal
manera que todos los clculos se realicen sobre la misma
matriz, haciendo ms eciente el programa y evitando
que la capacidad de RAM no se llene.
Se debe tener muy en cuenta la conguracin de los reg-
istros para cada microcontrolador ya que la funcionalidad
de los pines depende de cada modelo.
En cuanto a la prioridad de las interrupciones no tuvimos
ningn inconveniente puesto que solo usamos la inter-
rupcin del cambio de estado del puerto B, sin embargo
se debe tener muy en cuenta esta funcin que tiene el
microcontrolador, ya que permite un mejor manejo de
las interrupciones y la ejecucin del programa.
REFERENCES
[1] El origen de la calculadora, Wen Fong Kwong, 16 de Diciembre
del 2012, en lnea, <http://www.fayerwayer.com/2011/12/el-origen-de-la-
calculadora/>
[2] J. Medina, Introduccin al microcontrolador
PIC18F4550 [En linea], Disponible en :
<http://www.uv.mx/personal/jemedina/les/2010/07/Manual-del-Taller-
Introduccion-al-Microcontrolador-PIC18F4550.pdf>
[3] Universidad Politcnica de Valencia, Microcon-
trolador PIC18F4550[En linea], Disponile en :
<http://www.joseapicon.com.ve/descargas/pic/Manual%20PIC%2018F4550.pdf>
[4] A. Ruiz, Microcontroladores[En linea], disponble en: <
http://es.slideshare.net/geovannaruiz/presentacion-pic-16f887-y-18f4550>
[5] J. Terven, Interrupciones [En linea], Disponible en:
<http://www.tervenet.com/itmaz/micros2012/05%20Teclado%20Matricial.pdf>
[6] MicroPIC[En linea], Disponible en: <http://micropic.wordpress.com/2007/06/13/teclado-
matricial-4x4/>
[7] J. Pascual, Conexin de una pantalla :LCD a un microcontrolador[En
linea], Disponible en: <http://server-die.alc.upv.es/asignaturas/lsed/2002-
03/Pantallas_LCD/LCD.pdf>

También podría gustarte