Lab4 Micros
Lab4 Micros
Lab4 Micros
0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2
STM:
1
Los microcontroladores STM han ayudado a múltiples ramas
de la electrónica entre ellas está el avance en la tecnología
Visualización Dinámica. embebida y la integración de dispositivos a un bajo coste.
Esto se debe a que este tipo de microcontroladores tienen
González Laura, Vargas Juan Diego, y Niño Sebastian
más alto rendimiento, bajo consumo de energía.
{est.laura.gonzalez2, est.juans.nino, y La mayoría de tarjetas stm cuentan con una interfaz llamada
est.juan.vargas2}@unimilitar.edu.co Stlink, la cual es una herramienta que permite la
Profesor: Clavijo Juan comunicación entre el dispositivo y un computador[3].
Resistencia Pull up:
Resumen— Con el desarrollo del informe de laboratorio se Como su nombre indica esta resistencia tiene la función de
buscó comprender la función de la visualización dinámica en el “jalar” hacia “arriba”, lo que significa que polariza el voltaje
display 7 segmentos, generando así las operaciones necesarias, las hacia el voltaje de fuente (VDD), también lo que nos quiere
cuales se ingresan mediante un teclado matricial .
decir es que se establece con un estado alto “HIGH”.[4]
Palabras clave— Visualización, display, teclado matricial,
calculadora, STM.
Resistencia Pull down:
I. INTRODUCCIÓN Las resistencias pull down establecen un estado LOW cuando
el pin se encuentra en reposo de otra forma mejor dicho sería
En el presente trabajo práctico se busca desarrollar la
similar la resistencia pull-down “jala” el voltaje hacia “abajo”
programación para el control y el uso de un teclado matricial 4x4
junto un display 7x4, donde el teclado tiene la función de
o “0V”. Cuando el pulsador está en reposo, el voltaje en la
calculadora con operaciones básicas suma, resta,multiplicación y entrada del micro será 0V. [5]
división aparte de poder realizar funciones seno, coseno y tangente.
Se diseña de esta forma porque después de tener los números que Gpio:
serán operados y al tener su resultado estos valores serán vistos en Hay seis bancos de puertos GPIO, los cuales van conectados a
un display 4x7 donde sus señales serán multiplexadas para una un bus de información bidireccional.Este bus transfiere datos
correcta visualización de unidades. decenas y puntos decimales, digitales internamente a una velocidad de hasta un máximo
siempre evitando los posibles errores que se cometen en las de 100 Mbps y es aquel que permite el funcionamiento de la
operaciones.
stm ya que envía y información de un lado al otro[6].
A. Marco teórico
Microcontrolador((MCU)): Visualización dinámica:
Es un circuito integrado que contiene diversos Es una proyección de una porción de la información visual en
componentes, como memoria flash, puertos de entrada y diferentes intervalos de tiempo, en los cuales se muestra una
salida,temporizadores, registros, entre otros. Se emplea para porción diferente, consiguiendo proyectar toda la
realizar una o más actividades y gracias a su reducido tamaño información. Existen diferentes tipos de pantallas, como la
suele estar incorporada en la máquina o dispositivo a quien bandera mecánica ligera la cual facilita saber cuándo la luz
gobierna. está encendida o apagada, también existe luz o luces que
En la actualidad estos dispositivos suelen estar incorporados facilita detectar y se puede codificar por medio de ubicación,
en varios objetos, por ejemplo: algunos juguetes tienen número, color, repetición, encendido y apagado, también se
tarjetas que controlan el funcionamiento del mismo, también puede encontrar el análogo electrónico o mecánico de la
están presentes en electrodomésticos, funciones de posición prevista el cual permite observar con anticipación lo
vehículos, conmutadores y sincronizadores de canales, etc.[1] que va a ocurrir, entre otros.[7]
Display:
En español se traduce como visualizador, este se una como Teclado matricial:
dispositivo electrónico que permite la visualización de Es un conjunto de botones agrupados, el cual tiene arreglos
número, código entre otros, esto depende de la función que de filas y columnas y al presionar algún número o letra este
la persona desee darle. A su vez se puede ver aplicado en las genera señales eléctricas.
computadoras integradas, ayudando así al funcionamiento de Se deben utilizar disposiciones de botones pulsadores, en
esta teniendo en cuenta las interfaces de información forma de teclado cuando se ingrese en el sistema información
externa, interfaces de usuario, cálculo de fuente o medición, alfabética, numérica o de funciones especiales. Se debe tener
error de medición o fuente, control periférico local, entre una disposición de llaves, las cuales deben tener unas claves
otros.[2] que se agrupan según su función o convención. Las
agrupaciones pueden incluir teclas numéricas, alfabéticas o
1 de función.[8]
● Capacidad de funcionar de manera efectiva en un Para este caso se realizó un barrido por las filas y las
equipo cuyos miembros juntos proporcionan columnas como salidas, en donde estas se activan y retorna
liderazgo, crean un entorno colaborativo e inclusivo, algún valor al menú principal para iniciar alguna acción en el
establecen metas, planifican tareas y cumplen programa. En la ilustración 3 se puede apreciar el caso de la
objetivos. fila 1. Así mismo se realizó el proceso para la fila, 2, 3 y 4.
● Capacidad de desarrollar y llevar a cabo la
experiencia adecuada, analizar e interpretar datos y En la guia de laboratorio se pedía implementar la suma y
usar el juicio de Ingeniería para sacar conclusiones. resta del dígito, para la suma se almacenaron los dos
números a sumar, se valido si el dígito era mayor a nueve
III. DESARROLLO DE LA PRÁCTICA para realizar la visualización de un solo dígito, si por el
Para el desarrollo de esta práctica de laboratorio, se realizó contrario era mayor a este, se realiza la descomposición del
una tabla con los dígitos del 0 al 9 en la cual se determinó el resultado para poder mostrar en el display multiplexado las
código en binario que permite encender ciertos segmentos unidades y decenas.
del display, por ejemplo: si se tiene el número cero su
correspondiente número en binario es el “0111111” y así con
el resto de dígitos tal como se muestra en la tabla a
continuación:
.
Ilustración 5. resultado negativo
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2
Ilustración 8. División
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2
IV. CONCLUSIONES
cl=(GPIOB->IDR)&0x000000FF;
if(cl==40){return 4;}
else if(cl==36){return 5;} for(time=0;time<10000;time++){};
else if(cl==34){return 6;} GPIOE->ODR=~0X7;
else if(cl==33){t=2; return 32;} //Resta GPIOD->ODR =~
decenas[dece];
GPIOB->ODR=16;
for(int i;i<100000;i++){}; for(time=0;time<10000;time++){};
cl=(GPIOB->IDR)&0x000000FF;
if(cl==24){return 1;} }
else if(cl==20){return 2;} GPIOE->ODR=0X0;
else if(cl==18){return 3;} t=0;
else if(cl==17){t=4; return 33;} //Division b=0;
} c=0;
int main(void){ resul=0;
}
RCC->AHB1ENR |= 0X1A;//
GPIOB-> MODER |=0x00005500; }
GPIOB->OTYPER |=0x0; if(t==2 && b<10 && a<10){ // RESTA
GPIOB->OSPEEDR |=0X00005555; for(int time=0;time<100000;time++){};
GPIOB->PUPDR |=0; c=a;
GPIOD->ODR =~ numeros[c];
GPIOE-> MODER |=0x55; for(time=0;time<10000;time++){};
GPIOE->OTYPER |=0x0; if(b>=c){
GPIOE->OSPEEDR |=0X55; resul=b-c;
GPIOE->PUPDR |=0; GPIOE-> ODR =~ 0XB;
GPIOD ->ODR =~ numeros[resul];
for(time=0;time<1000000;time++){};
GPIOD -> MODER |= 0X5555; GPIOE-> ODR = 0X0;
GPIOD -> OTYPER |= 0X0; t=0;
GPIOD -> OSPEEDR |= 0X5555; b=0;
GPIOD -> PUPDR |= 0; c=0;
resul=0;
}if(b<c){
resul=c-b;
SystemCoreClockUpdate(); for(int i=0; i<100;i++){
SysTick_Config(SystemCoreClock/1000); GPIOE->ODR=~0XB;
GPIOD->ODR =~
numeros[resul];
while(true){
for(time=0;time<100000;time++){};// delay
a = teclado(); for(time=0;time<10000;time++){};
GPIOE->ODR=~0X7;
GPIOD->ODR =~ 0x40;
for(time=0;time<10000;time++){};//delay
if(t==0 && a<10){
b = a; for(time=0;time<10000;time++){};
GPIOE->ODR =~ 0XB; }
GPIOD -> ODR =~ numeros[b]; GPIOE-> ODR =
for(time=0;time<10000;time++){};//delay 0X0;
}
}
}
if(t==1 && b<10 && a<10){ //SUMA if(t==3 && b<10 && a<10){ //MULTIPLICACION
for(int time=0;time<100000;time++){};
c=a;
for(int time=0;time<100000;time++){}; GPIOD->ODR =~ numeros[c];
for(time=0;time<10000;time++){};
c=a; resul=b*c;
GPIOD->ODR =~ numeros[c]; n=resul;
for(time=0;time<100000;time++){}; auxiliar=n/10;
resul=b+c; n=n%10;
if(resul<=9){ resultado1[0]=auxiliar;
GPIOE-> ODR =~ 0XB; dece=resultado1[0];
GPIOD ->ODR =~ numeros[resul];
for(time=0;time<1000000;time++){}; auxiliar=n/1;
GPIOE-> ODR = 0X0; n=n%1;
resultado1[1]=auxiliar;
t=0; uni=resultado1[1];
b=0;
c=0;
resul=0; for(int i=0; i<100;i++){
}if(resul>9){ GPIOE->ODR=~0XB;
GPIOD->ODR =~
numeros[uni];
n=resul;
auxiliar=n/10;
n=n%10; for(time=0;time<10000;time++){};
resultado1[0]=auxiliar; GPIOE->ODR=~0X7;
dece=resultado1[0]; GPIOD->ODR =~
auxiliar=n/1; decenas[dece];
n=n%1;
resultado1[1]=auxiliar;
uni=resultado1[1]; for(time=0;time<10000;time++){};
}
GPIOE-> ODR = 0X0;
for(int i=0; i<100;i++){ t=0;
GPIOE->ODR=~0XB; b=0;
GPIOD->ODR =~ c=0;
numeros[uni]; resul=0;
}
if(t==4 && b<10 && a<10){ //DIVISIÓN
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2
for(int time=0;time<100000;time++){}; }
}
if(t==5 && b<10){ //SENO
c=a;
GPIOD->ODR =~ numeros[c];
for(time=0;time<100000;time++){}; for(time=0;time<100000;time++){};
if(b>=c){ resul1= (sin(b*pi/180))*100;
resul=((b*100)/c); n=resul1;
auxiliar=n/10;
n=resul; n=n%10;
auxiliar=n/100; resultado1[0]=auxiliar;
n=n%100; uni=resultado1[0];
resultado1[0]=auxiliar;
uni=resultado1[0];
auxiliar=n/1;
n=n%1;
auxiliar=n/10; resultado1[1]=auxiliar;
n=n%10; dece=resultado1[1];
resultado1[1]=auxiliar;
dece=resultado1[1];
for(int i=0; i<100;i++){
GPIOE->ODR=~0XB;
auxiliar=n/1; GPIOD->ODR =~ numeros[0];
n=n%1;
resultado1[2]=auxiliar;
cente=resultado1[2]; for(time=0;time<10000;time++){};
GPIOE->ODR=~0XD;
GPIOD->ODR =~
for(int i=0; i<100;i++){ decenas[uni];
GPIOE->ODR=~0XB;
GPIOD->ODR =~
numeros[uni]; for(time=0;time<10000;time++){};
GPIOE->ODR=~0XE;
for(time=0;time<10000;time++){}; GPIOD->ODR =~
GPIOE->ODR=~0XD; centenas[dece];
GPIOD->ODR =~
decenas[dece];
for(time=0;time<10000;time++){};
}
for(time=0;time<10000;time++){}; GPIOE-> ODR = 0X0;
t=0;
GPIOE->ODR=~0XE; b=0;
GPIOD->ODR =~ c=0;
centenas[cente]; resul=0;
}
if(t==6 && b<10){ //COSENO
for(time=0;time<10000;time++){};
}
GPIOE-> ODR = 0X0; for(time=0;time<100000;time++){};
t=0; resul1= (cos(b*pi/180))*100;
b=0; n=resul1;
c=0; auxiliar=n/10;
resul=0; n=n%10;
}if(b<c){ resultado1[0]=auxiliar;
resul=((b*100)/c); uni=resultado1[0];
n=resul;
auxiliar=n/10; auxiliar=n/1;
n=n%10; n=n%1;
resultado1[0]=auxiliar; resultado1[1]=auxiliar;
uni=resultado1[0]; dece=resultado1[1];
for(time=0;time<10000;time++){}; GPIOE->ODR=~0XE;
GPIOE->ODR=~0XD; GPIOD->ODR =~
GPIOD->ODR =~ centenas[dece];
decenas[uni];
for(time=0;time<10000;time++){};
for(time=0;time<10000;time++){}; }
GPIOE-> ODR = 0X0;
GPIOE->ODR=~0XE; t=0;
GPIOD->ODR =~ b=0;
centenas[dece]; c=0;
resul=0;
}
for(time=0;time<10000;time++){}; if(t==7 && b<10){ //TANGENTE
}
GPIOE-> ODR = 0X0;
t=0; for(time=0;time<100000;time++){};
b=0; resul1= (tan(b*pi/180))*100;
c=0; n=resul1;
resul=0; auxiliar=n/10;
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2
n=n%10;
resultado1[0]=auxiliar;
uni=resultado1[0];
auxiliar=n/1;
n=n%1;
resultado1[1]=auxiliar;
dece=resultado1[1];
for(time=0;time<10000;time++){};
GPIOE->ODR=~0XD;
GPIOD->ODR =~
decenas[uni];
for(time=0;time<10000;time++){};
GPIOE->ODR=~0XE;
GPIOD->ODR =~
centenas[dece];
for(time=0;time<10000;time++){};
}
GPIOE-> ODR = 0X0;
t=0;
b=0;
c=0;
resul=0;
}
}
}