Está en la página 1de 10

TRABAJO DE IMPLEMENTACION DEL RELOJ DIGITAL

APRENDIZES:

VICTOR MANUEL MENCO

JAVIER CABALLERO

KEVIN QUISTIAL

MANTENIMIENTO ELECTRONICO INSTRUMENTAL INDUSTRIAL

FICHA No. 1693186

MICROCONTROLADORES II

INTRUCTOR:

FREDY VALENCIA
CENTRO DE TECNOLOGIA DE LA MANUFACTURA AVANZADA

2019
Implementación del reloj digital
INTRODUCIÓN

En este trimestre utilizamos en todas las prácticas el microcontrolador pic16f887,


aprendimos a darle varias funciones, como utilizar nuevos puertos y darles una y
más funciones, nuevas implementaciones, nuevos códigos de trabajo, nos hemos
dado cuenta de que el microcontrolador 16f887 puede ser utilizado para diversos
trabajos con diferentes funciones.

Descripción de la practica

El contador binario podemos observar y ejecutar su instalación, donde cada uno


de los elementos fue necesario indagar su hoja técnica para dicha instalación en la
protobooak.

- Se hizo una programación en el micro c llamada lenguaje c donde se


programó en escritura decimal toda la programación para, el
funcionamiento del proyecto contador binario.
- Los elementos usados en la práctica fueron los siguientes:
- Protoboark
- Resistencia
- Pulsadores
- Micro controlador STM32F103CT8X
- Diodos leed
- Lm044L

Una vez utilizados todos estos elementos la práctica fue de gran


satisfacción, ya que al momento de usar y analizar los elementos una vez
probados y comprender su hoja técnica para su instalación en el circuito
representado en la protobooak.
Se pudo apreciar y conocer su respectiva conexión, fue de gran
aprovechamiento dicha práctica porque nos ayudó a entender más su
funcionamiento e aplicación en la práctica.
Informe
En la implementación de este circuito llamado contador binario, fue
usado un micro controlador para poder aplicar el lenguaje c que fue
programado para su funcionamiento y así poder realizar su realización.

Este fue representado en un lenguaje c en escritura decimal logrando


después de varios intentos con gran éxito el funcionamiento de dicho
circuito, que además fue gran productividad la práctica, por los
diferentes momentos donde se logró entender el funcionamiento en la
vida real del contador binario y el uso de sus elementos.

Después de varios intentos fallidos el éxito de su realización fue de gran


aporte al conocimiento del uso de su programación del lenguaje c eh
implementación de sus elementos y para qué sirve cada uno para su
funcionamiento y realización del proyecto.

Circuito Reloj digital con STM32F103CT8X y display de 7 segmentos.


La hora se muestra en formato de 24 horas; por ejemplo 14:35 (dos de
la tarde y 35 minutos).

Utilizamos el STM32F103CT8X para hacer una práctica de un reloj


digital donde en la LCD mostraba minutos, horas y segundos.
Construimos un reloj digital con hora ajustable utilizando un STM32F103CT8X y
una LCD. El programa cargado en el pic fue realizado en el lenguaje C , y
nuestro código se basa en el uso de las interrupciones, específicamente
utilizamos el timer1 y sus características para obtener la funcionalidad del reloj.
Para poder ajustar la hora en nuestro reloj incluimos tres botones con diferentes
funciones; un botón que habilita el ajuste, un botón que permite ajustar los
minutos, un botón que permite ajustar las horas y por ultimo un botón
que configura los segundos. La hora y el menú de ajuste son
mostrados en la LCD, obteniendo finalmente un reloj preciso y fácil de
usar para cualquier usuario.
CODIGO DE FUENTE (PROGRAMCIÓN)

/* USER CODE BEGIN 0 */


unsigned char Modo = 0;
RTC_TimeTypeDef TimeA;
RTC_TimeTypeDef TimeON;
RTC_TimeTypeDef TimeOFF;
char str[10];
char temp[3];
/* USER CODE END 0 */

TM_HD44780_Init(20, 4);
TM_HD44780_Puts(0, 0, "SISTEMA TIEMPO");
TM_HD44780_Puts(0, 1, "HORA ");

TM_HD44780_Puts(0, 2, "HORA ON");


TimeON.Hours = 0;
TimeON.Minutes = 0;
TimeON.Seconds = 0;
TM_HD44780_Puts(10, 2, StringTime(&TimeON));

TM_HD44780_Puts(0, 3, "HORA OFF");


TimeOFF.Hours = 0;
TimeOFF.Minutes = 0;
TimeOFF.Seconds = 0;
TM_HD44780_Puts(10, 3, StringTime(&TimeOFF));

HAL_RTC_SetTime(&hrtc, &TimeA, RTC_FORMAT_BIN);

while (1) {
// HORA DEL RELOD
HAL_RTC_GetTime(&hrtc, &TimeA, RTC_FORMAT_BIN);
TM_HD44780_Puts(10, 1, StringTime(&TimeA));

//COMPARAR HORA ON
if (TimeA.Hours == TimeON.Hours && TimeA.Minutes == TimeON.Minutes
&& TimeA.Seconds == TimeON.Seconds) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
}
//COMPARAR HORA OFF
if (TimeA.Hours == TimeOFF.Hours && TimeA.Minutes ==
TimeOFF.Minutes
&& TimeA.Seconds == TimeOFF.Seconds) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
}
//MODO
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10) == 0) {
Modo++;
HAL_Delay(100);
switch (Modo) {
case 1:
TM_HD44780_Puts(18, 1, "HH");
break;
case 2:
TM_HD44780_Puts(18, 1, "mm");
break;
case 3:
TM_HD44780_Puts(18, 1, "ss");
break;
case 4:
TM_HD44780_Puts(18, 1, " ");
TM_HD44780_Puts(18, 2, "HH");
break;
case 5:
TM_HD44780_Puts(18, 2, "mm");
break;
case 6:
TM_HD44780_Puts(18, 2, "ss");
break;
case 7:
TM_HD44780_Puts(18, 2, " ");
TM_HD44780_Puts(18, 3, "HH");
break;
case 8:
TM_HD44780_Puts(18, 3, "mm");
break;
case 9:
TM_HD44780_Puts(18, 3, "ss");
break;
case 10:
TM_HD44780_Puts(18, 3, " ");
Modo = 0;
break;
}
}
//Sumador
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == 0) {
HAL_Delay(100);
switch (Modo) {
case 1:
TimeA.Hours++;
if (TimeA.Hours == 24) {
TimeA.Hours = 0;
}
HAL_RTC_SetTime(&hrtc, &TimeA, RTC_FORMAT_BIN);
break;
case 2:
TimeA.Minutes++;
if (TimeA.Minutes == 60) {
TimeA.Minutes = 0;
}
HAL_RTC_SetTime(&hrtc, &TimeA, RTC_FORMAT_BIN);
break;
case 3:
TimeA.Seconds++;
if (TimeA.Seconds == 60) {
TimeA.Seconds = 0;
}
HAL_RTC_SetTime(&hrtc, &TimeA, RTC_FORMAT_BIN);
break;
case 4:
TimeON.Hours++;
if (TimeON.Hours == 24) {
TimeON.Hours = 0;
}
TM_HD44780_Puts(10, 2, StringTime(&TimeON));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
break;
case 5:
TimeON.Minutes++;
if (TimeON.Minutes == 60) {
TimeON.Minutes = 0;
}
TM_HD44780_Puts(10, 2, StringTime(&TimeON));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
break;
case 6:
TimeON.Seconds++;
if (TimeON.Seconds == 60) {
TimeON.Seconds = 0;
}
TM_HD44780_Puts(10, 2, StringTime(&TimeON));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
break;
case 7:
TimeOFF.Hours++;
if (TimeOFF.Hours == 24) {
TimeOFF.Hours = 0;
}
TM_HD44780_Puts(10, 3, StringTime(&TimeOFF));
break;
case 8:
TimeOFF.Minutes++;
if (TimeOFF.Minutes == 60) {
TimeOFF.Minutes = 0;
}
TM_HD44780_Puts(10, 3, StringTime(&TimeOFF));
break;
case 9:
TimeOFF.Seconds++;
if (TimeOFF.Seconds == 60) {
TimeOFF.Seconds = 0;
}
TM_HD44780_Puts(10, 3, StringTime(&TimeOFF));
break;
}
}
/* USER CODE BEGIN 4 */
uint8_t* StringTime(RTC_TimeTypeDef *Time) {
str[0] = '\0';
if (Time->Hours < 10) {
strcat(str, itoa(0, temp, 10));
strcat(str, itoa(Time->Hours, temp, 10));
} else {
strcat(str, itoa(Time->Hours, temp, 10));
}
strcat(str, ":");
if (Time->Minutes < 10) {
strcat(str, itoa(0, temp, 10));
strcat(str, itoa(Time->Minutes, temp, 10));
} else {
strcat(str, itoa(Time->Minutes, temp, 10));
}
strcat(str, ":");
if (Time->Seconds < 10) {
strcat(str, itoa(0, temp, 10));
strcat(str, itoa(Time->Seconds, temp, 10));
} else {
strcat(str, itoa(Time->Seconds, temp, 10));
}
return (uint8_t*) str;
}
/* USER CODE END 4 */

DIAGRAMA ESQUEMATICO EN PROTEUS


EVIDENCIAS
Evidencias fotográficas
Conclusión
Se llegó al a conclusión que el RTC es muy útil la escritura en el lenguaje c
porque la mayoría de programaciones suelen ser representadas en escritura
decimal, hexadecimal, y binaria que fue la que se usó para el planteamiento
del proyecto RTC

El solo hecho de entender la escritura binaria, hexadecimal y decimal nos da


el conocimiento que todos los proyectos que son controlados digitalmente,
llevan este dicho lenguaje que nos permite comprender su funcionamiento
interno y de cómo es su ejecución en la vida cotidiana.

El prendido y apagado de un led u otro sistema operativo en tiempo real

También podría gustarte