Lab4 Micros

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

INFORME DE PRÁCTICA DE LABORATORIO Versión 1.

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]

El presente documento corresponde a un informe de práctica de laboratorio


de Electrónica presentado en la Universidad Militar Nueva Granada durante el
periodo 2019-2.
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2

II. COMPETENCIAS A DESARROLLAR


● Habilidad para identificar, formular y resolver
problemas complejos aplicando principios de
ingeniería, ciencias y matemáticas.
● Habilidad para comunicarse efectivamente ante un
rango de audiencias. Ilustración 3. barrido para teclado matricial

● 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 1. Asignación de números en sistema binario a


hexadecimal

Ilustración 4. condicionales de la suma

En el caso de la resta se realiza un proceso similar a la suma, a


diferencia que en este se realiza la diferencia entre dos
números y se validan dos condiciones, si el primer dígito es
mayor al segundo y viceversa, ya que con esto se determina si
el resultado es negativo o positivo, en el caso de ser negativo
se visualiza el signo negativo seguido del dígito, al restar 2-6
el resultado es -4, tal y como se enseña en la ilustración 5.

Ilustración 2. Declaración de puertos

En la ilustración anterior se habilitó el reloj de los pines que


se usaron, en este caso corresponde al B, D y E, en estos se
configuró la velocidad y el tipo de resistencia .

.
Ilustración 5. resultado negativo
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2

En este caso, en la división se realizó dos condicionales


cuando el dividendo es mayor al divisor y viceversa,
generando así diferentes valores al realizar la operación con
su respectiva descomposición. Para esto utilizamos un
ejemplo que divide 9 entre 5 y el resultado se puede observar
en la ilustración 8.

Posteriormente se procede a realizar las respectivas


funciones seno, coseno y tangente para mostrar el resultado
Ilustración 6. Resultado de la multiplicación. del número ingresado por el teclado matricial. Como primer
paso se implementó la librería math.h la cual genera y
En este caso se realizó la multiplicación entre el número 9 y 5, permite llamar dichas funciones al programa principal, aun así
generando así el resultado visto en la ilustración 6. se tuvo que realizar la operación de la siguiente forma
multiplicamos el valor ingresado por PI y todo esto sobre 180,
luego a ese valor se le calcula el respectivo sen, cos o tan
dependiendo de lo que se requiera.

Ilustración 7. Condicionales de la multiplicación.

Para la multiplicación se realiza un procedimiento muy similar


al que se maneja en la suma y en la resta, pero en este caso
se debe hacer la multiplicación de dos números los cuales son
almacenados en las variables c y b generando así el resultado
de la multiplicación y visualización en el display.

Ilustacion 9: Condicionales de seno

Ilustración 8. División
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2

Ilustración 11: Condicionales de tangente


Ilustración 10: Condicionales de coseno
Se procede a realizar una prueba de funcionamiento para el
seno de 7 el cual es 0.12, se multiplexó el resultado con su
debido punto decimal.

Ilustración 12: Funcionamiento del seno

También una prueba de funcionamiento pero esta vez con el


coseno de 7 el cual es 0.99.

Ilustración 13: Funcionamiento del coseno


INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2

Handbook, Third Edition. VISUAL DISPLAYS, Chapter (McGraw-Hill


Education: New York, Chicago, San Francisco, Athens, London, Madrid,
Y por último se realiza una prueba de funcionamiento pero
Mexico City, Milan, New Delhi, Singapore, Sydney, Toronto, 2016).
con la tangente de 7 el cual es 0.12. https://www.accessengineeringlibrary.com/content/book/9780071702
874/chapter/chapter28
[8] Barry Tillman; David J. Fitts; Wesley E. Woodson; Rhonda Rose-
Sundholm; Peggy Tillman. Human Factors and Ergonomics Design
Handbook, Third Edition. CONTROLS, Chapter (McGraw-Hill Education:
New York, Chicago, San Francisco, Athens, London, Madrid, Mexico
City, Milan, New Delhi, Singapore, Sydney, Toronto, 2016).
https://www.accessengineeringlibrary.com/content/book/9780071702
874/chapter/chapter30

Ilustración 14: Funcionamiento de la tangente

IV. CONCLUSIONES

Se realizó correctamente el montaje y diseño práctico


basado en la programación totalmente funcional y
cumpliendo cada requisito expuesto por la guía de
laboratorio, aparte también se logró realizar un buen trabajo
en equipo cumpliendo cada una de las competencias
expuestas para la presente práctica.
Dando por finalizado haber comprendido los conceptos del
barrido, las operaciones entre dos dígitos, además el uso de
la librería math.h, con la cual se logró realizar las operaciones,
seno, coseno y tangente.
Se logró la correcta interpretación de datos para realizar las
operaciones debidas y las funciones para suplir de manera
eficiente el desarrollo de la práctica de laboratorio.
ANEXOS
REFERENCIAS
#include <stdio.h>
[1] Neil Sclater. Manual de tecnología electrónica. MICROPROCESADORES Y #include "stm32f7xx.h"
MICROCONTROLADORES, Capítulo (McGraw-Hill, 1999). #include <math.h>
#define pi 3.1416
https://www.accessengineeringlibrary.com/content/book/9780070580 int numeros[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xE7};
480/chapter/chapter14 int decenas[10]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x67};
int centenas[10]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x67};
[2] Smeti A. ,2 Chagra W. ,. 3. Ksouri M. (2013). Implementation of a //int numeros2[10]={0x3F,0x6,0x5B,0x4F,0xE6,0x6D,0x7D,0x7,0x7F,0x67};
Predictive controller on the STM32 board (Aboratory of Analysis int resul=0;
Conception and Control of Systems, 1 : Faculty of Sciences of Tuni). double resul1=0.0;
int a=0,cl,time=0,b=0,c=0,t=0,tiempo,dece,uni, cente;
https://ieeexplore-ieee-org.ezproxy.umng.edu.co/stamp/stamp.jsp? int n,resultado1[3]={},auxiliar, resultado2[2]={};
tp=&amp;arnumber=6689552
extern"C"
[3] Clyde F.Coombs Jr. Electronic Instrument Handbook, Third Edition. {
Embedded Computers in Electronic Instruments, Chapter (McGraw-Hill, void SysTick_Handler(void){
2000, 1995, 1972). tiempo++;
if(tiempo>2){
https://www.accessengineeringlibrary.com/content/book/9780070126 tiempo=0;
183/chapter/chapter10 }
}
[4] Pull-Up line impedance matching. (2004). Biblioteca Digital UMNG. }
https://ieeexplore-ieee-org.ezproxy.umng.edu.co/stamp/stamp.jsp?
tp=&amp;arnumber=6838589 int teclado(void){
GPIOB->ODR=128;
[5] Balabanyan, A. (2009). Pull-Down line impedance matching for(int i;i<100000;i++){};
methodology for high speed transmitters. Biblioteca Digital UMNG. cl=(GPIOB->IDR)&0x000000FF;
if(cl==136){t=5; return 34;}//SENO
https://ieeexplore-ieee-org.ezproxy.umng.edu.co/stamp/stamp.jsp? else if(cl==132){t=6; return 35;}//COSENO
tp=&amp;arnumber=6838589 else if(cl==130){t=7; return 36;}//TANGENTE
[6] Donald Norris. Programación con STM32: Introducción a la placa else if(cl==129){t=3; return 30;} //Multiplicacion
GPIOB->ODR=64;
Nucleo y C / C ++. CAPÍTULO PRELIMINARIOS, Capítulo (McGraw-Hill for(int i;i<100000;i++){};
Education: Nueva York, Chicago, San Francisco, Atenas, Londres, cl=(GPIOB->IDR)&0x000000FF;
Madrid, Ciudad de México, Milán, Nueva Delhi, Singapur, Sydney, if(cl==72){return 7;}
else if(cl==68){return 8;}
Toronto, 2018). else if(cl==66){return 9;}
https://www.accessengineeringlibrary.com/content/book/9781260031 else if(cl==65){t=1; return 31;}//Suma
317/toc-chapter/chapter5/section/section1
[7] Barry Tillman; David J. Fitts; Wesley E. Woodson; Rhonda Rose- GPIOB->ODR=32;
for(int i;i<100000;i++){};
Sundholm; Peggy Tillman. Human Factors and Ergonomics Design
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2021-2

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];

auxiliar=n/1; for(int i=0; i<100;i++){


n=n%1; GPIOE->ODR=~0XB;
resultado1[1]=auxiliar; GPIOD->ODR =~ numeros[0];
dece=resultado1[1];
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[0];
for(time=0;time<10000;time++){};

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(int i=0; i<100;i++){


GPIOE->ODR=~0XB;
GPIOD->ODR =~ numeros[0];

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;
}
}
}

También podría gustarte