Академический Документы
Профессиональный Документы
Культура Документы
00 01 02
OBJETIVOS ESPECFICO
= [10 11 12]
20 21 22
Desarrollar un algoritmo para resolver
matrices a travs de un microcontrolador.
DETERMINANTE
Se denomina determinante de una matriz
Visualizar el determinante por medio de una
cuadrada al nmero que resulta de sumar/restar
pantalla de cristal lquido.
todos los productos que pueden obtenerse
tomando un factor y slo uno de cada fila y un
Ingresar valores numricos a travs de los factor y slo
puertos del microcontrolador con un teclado uno de cada columna. Los productos
matricial. resultantes son n!, si n es el orden de la matriz
cuadrada. El signo positivo o negativo, sumar o
4. MARCO TERICO restar, depender de si las permutaciones
formadas por los primeros y segundos
MATRICES subndices de los elementos de la matriz
El concepto de matriz alcanza mltiples cuadrada son de la misma clase o de
aplicaciones tanto en la representacin y distinta clase. Dicho de otra manera, si una vez
manipulacin de datos como en el clculo fijado el primer subndice de las filas, al realizar
numrico y simblico que se deriva de los todas las permutaciones posibles de los
modelos matemticos utilizados para resolver subndices de las columnas de la matriz, se
problemas en diferentes disciplinas como, por produce un nmero k par o impar de inversiones
ejemplo, las ciencias sociales, las ingenieras, en dichas permutaciones, se sumar o restar
1
UNIVERSIDAD POLITCNICA SALESIANA SISTEMAS MICRO-PREOCESADOS
7. ANALISIS Y RESULTADOS
7.1. Algoritmo.
Anexo 1
7.2. Circuito Proteus.
Anexo 2
8. CONCLUSIONES
2
UNIVERSIDAD POLITCNICA SALESIANA SISTEMAS MICRO-PREOCESADOS
Anexo 1
Algoritmo Lcd_Chr(1, 3, kp); if(kp!=35){
unsigned short kp, cnt,oldstate = 0; posa=var; Lcd_Chr(1, 3, kp);
short int } posi=var;
posa=0,posb=0,posc=0,posd=0,pose=0 } }
,posf=0,posg=0,posh=0,posi=0,posj=0, } }
posk=0,posl=0,posm=0,posn=0,poso=0 if(cnt==2){ }
,posp=0; if(kp!=65&&kp!=66&&kp!=67){ if(cnt==10){
char if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
txtcnt[6],txti[7],txtj[7],txtk[7],txtl[7],det_txt Lcd_Chr(1, 6, kp); if(kp!=35){
[7]; posb=var; Lcd_Chr(1, 6, kp);
short int var; } posj=var;
int det=0,det1=0,det2=0,det3=0,det4=0; } }
char keypadPort at PORTD; } }
sbit LCD_RS at RC0_bit; if(cnt==3){ }
sbit LCD_EN at RC1_bit; if(kp!=65&&kp!=66&&kp!=67){ if(cnt==11){
sbit LCD_D4 at RC2_bit; if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
sbit LCD_D5 at RC3_bit; Lcd_Chr(1, 9, kp); if(kp!=35){
sbit LCD_D6 at RC4_bit; posc=var; Lcd_Chr(1, 9, kp);
sbit LCD_D7 at RC5_bit; } posk=var;
sbit LCD_RS_Direction at TRISC0_bit; } }
sbit LCD_EN_Direction at TRISC1_bit; } }
sbit LCD_D4_Direction at TRISC2_bit; if(cnt==4){ }
sbit LCD_D5_Direction at TRISC3_bit; if(kp!=65&&kp!=66&&kp!=67){ if(cnt==12){
sbit LCD_D6_Direction at TRISC4_bit; if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
sbit LCD_D7_Direction at TRISC5_bit; Lcd_Chr(1, 12, kp); if(kp!=35){
void main() { posd=var; Lcd_Chr(1, 12, kp);
inicio: } posl=var;
cnt = 0; } }
Keypad_Init(); } }
Lcd_Init(); if(cnt==5){ }
Lcd_Cmd(_LCD_CLEAR); if(kp!=65&&kp!=66&&kp!=67){ if(cnt==13){
Lcd_Cmd(_LCD_CURSOR_OFF); if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
Lcd_Out(1, 1, "["); Lcd_Chr(2, 3, kp); if(kp!=35){
Lcd_Out(2, 1, "["); pose=var; Lcd_Chr(2, 3, kp);
Lcd_Out(1, 16, "]"); } posm=var;
Lcd_Out(2, 16, "]"); } }
do { } }
kp = 0; if(cnt==6){ }
var=0; if(kp!=65&&kp!=66&&kp!=67){ if(cnt==14){
do if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
kp = Keypad_Key_Click(); Lcd_Chr(2, 6, kp); if(kp!=35){
while (!kp); posf=var; Lcd_Chr(2, 6, kp);
switch (kp) { } posn=var;
case 1: kp = 49,var=1; break; // 1 } }
case 2: kp = 50,var=2; break; // 2 } }
case 3: kp = 51,var=3; break; // 3 if(cnt==7){ }
case 4: kp = 65; break; // A if(kp!=65&&kp!=66&&kp!=67){ if(cnt==15){
case 5: kp = 52,var=4; break; // 4 if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
case 6: kp = 53,var=5; break; // 5 Lcd_Chr(2, 9, kp); if(kp!=35){
case 7: kp = 54,var=6; break; // 6 posg=var; Lcd_Chr(2, 9, kp);
case 8: kp = 66; break; // B } poso=var;
case 9: kp = 55,var=7; break; // 7 } }
case 10: kp = 56,var=8; break; // 8 } }
case 11: kp = 57,var=9; break; // 9 if(cnt==8){ }
case 12: kp = 67; break; // C if(kp!=65&&kp!=66&&kp!=67){ if(cnt==16){
case 13: kp = 42; break; // * if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){
case 14: kp = 48,var=0; break; // 0 Lcd_Chr(2, 12, kp); if(kp!=35){
case 15: kp = 35; break; // # posh=var; Lcd_Chr(2, 12, kp);
case 16: kp = 68; break; // D } posp=var;
} } }
if } }
(kp!=65&&kp!=66&&kp!=67&&kp!=35) { if(cnt==9){ }
cnt++; Lcd_Cmd(_LCD_CLEAR); if(kp==42) {
oldstate = kp; // Clear display goto inicio;
} Lcd_Cmd(_LCD_CURSOR_OFF); }
/*else { // Cursor off if(cnt>=16){
cnt++; Lcd_Out(1, 1, "["); if(kp==65){
}*/ Lcd_Out(2, 1, "["); Lcd_Cmd(_LCD_CLEAR);
if(cnt==1){ Lcd_Out(1, 16, "]"); Lcd_out(1, 5, "DET:");
if(kp!=65&&kp!=66&&kp!=67){ Lcd_Out(2, 16, "]"); det1=
if(kp!=35){ if(kp!=65&&kp!=66&&kp!=67){ ((posf*posk*posp)+(posg*posl*posn)+(p
3
UNIVERSIDAD POLITCNICA SALESIANA SISTEMAS MICRO-PREOCESADOS
osj*poso*posh))-
((posh*posk*posn)+(posg*posj*posp)+(
posl*poso*posf));
det2=
((pose*posk*posp)+(posg*posl*posm)+(
posi*poso*posh))-
((posh*posk*posm)+(posg*posi*posp)+(
posl*poso*pose));
det3=
((pose*posj*posp)+(posf*posl*posm)+(p
osi*posn*posh))-
((posh*posj*posm)+(posf*posi*posp)+(p
osl*posn*pose));
det4=
((pose*posj*poso)+(posf*posk*posm)+(
posi*posn*posg))-
((posg*posj*posm)+(posf*posi*poso)+(p
osk*posn*pose));
det=(posa*det1)-
(posb*det2)+(posc*det3)-(posd*det4);
IntToStr(det,det_txt);
Lcd_Out(2, 5,det_txt);
}
}
} while (1);
}
Anexo 2
Circuito Proteus
[Img 1 Circuito Proteus]