Sunteți pe pagina 1din 21

MICROPROCESADORES Y MICROCONTROLADORES

Unidad 2: Paso 3 - Diseñar la


automatización mediante
Microcontroladores.
Abril de 2018
INTEGRANTES
Estudiantes UNAD

Entregado a :
NESTOR JAVIER RODRIGUEZ

Grupo : 309696
ÍNDICE
1…………...Introducción.
2.……………Desarrollo de ejercicio colaborativo.
3.……………Conclusión.
4.……………Referencias bibliográficas.
INTRODUCCIÓN
El siguiente trabajo colaborativo, aborda los conceptos de
introducción a los microcontroladores, arquitectura de un
microcontrolador, funcionamiento de un microcontrolador y
periféricos de un microcontrolador.
El cual, nos permiten identificar su arquitectura, funcionalidad,
periféricos y tipos de familias mediante aplicación física o
simulación, en la solución de problemas prácticos y aplicados a
proyectos de la vida real, utilizando herramientas
computacionales y softwares que permitan dar solución a
problemas planteados y de ingeniería.
DESAROLLO

EJERCICIO 1 JONATHAN ENRIQUE ZAMBRANO

Para el laboratorio se debe diseñar un reloj utilizando 3 displays


de 7 segmentos (El grupo escoge si es de ánodo o cátodo
común), para presentar la hora desde 0:00 hasta 9:59 cada
número del reloj es un display de 7 segmentos, cada LED será la
salida del Microcontrolador PIC16F84A.
DESARROLLO
DESARROLLO
#include <main.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noprotect,noput
output_low(pin_a0);
void main() output_low(pin_a1);
{ output_high(pin_a2);
while(TRUE) output_b(num[hora]);
{ delay_ms(6);
int hora=0; }
int minuto=0; }
int segundo=0; }
byte num[10]={63,6,91,79,102,109,125,7,127,111};
int vel=0; }
for (hora=0;hora<10;hora++) { }
for (minuto=0;minuto<10;minuto++) { }
for (segundo=0;segundo<10;segundo++)
{
for(vel=0;vel<15; vel++)
{
output_high(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_b(num[segundo]);
delay_ms(6);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_b(num[minuto]);
delay_ms(6);
DESAROLLO

EJERCICIO 1 MARIO ANTONIO SUAREZ PEREZ

Para el laboratorio se debe diseñar un reloj utilizando 3 displays


de 7 segmentos (El grupo escoge si es de ánodo o cátodo
común), para presentar la hora desde 0:00 hasta 9:59 cada
número del reloj es un display de 7 segmentos, cada LED será la
salida del Microcontrolador PIC16F84A.
DESARROLLO
DESARROLLO
#include <main.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noprotect,noput
#use standard_io(a) output_high(pin_a0);
#use standard_io(b) output_low(pin_a1);
output_low(pin_a2);
void main() output_b(num[display3]);
{ delay_ms(5);
while(TRUE)
{ output_low(pin_a0);
int display1=0; // display 1 de izquierda a derecha output_high(pin_a1);
int display2=0; // display 2 de izquierda a derecha output_low(pin_a2);
int display3=0; // display 3 de izquierda a derecha output_b(num[display2]);
delay_ms(5);
byte num[10]={64,121,36,48,25,18,2,120,0,24};
output_low(pin_a0);
int vel=0; // velocidad de cambio del reloj para el ciclo for output_low(pin_a1);
output_high(pin_a2);
for (display1=0;display1<10;display1++){// ciclo de la hora output_b(num[display1]);
for (display2=0;display2<10;display2++){// ciclo de los delay_ms(5)
minutos }
for (display3=0;display3<10;display3++){// ciclo de los }
segundos
}
for(vel=0;vel<66; vel++){ }

//TODO: User Code


}

}
DESAROLLO

EJERCICIO 1 ELKIN PERTUZ SALCEDO

Para el laboratorio se debe diseñar un reloj utilizando 3 displays


de 7 segmentos (El grupo escoge si es de ánodo o cátodo
común), para presentar la hora desde 0:00 hasta 9:59 cada
número del reloj es un display de 7 segmentos, cada LED será la
salida del Microcontrolador PIC16F84A.
DESARROLLO
DESARROLLO
list P=16f84 org 0 ;Iniciar desde el origen
include<p16f84a.inc> BSF STATUS,RP0 ;Colocar en 1 el bit RP0 del status para
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC acceder al banco 1
; configuración de pines: CLRF Display ;Borrar los puertos A y B para configurarlos
; _CP_OFF: Protección del código como Salida
; _WDT_OFF: habilitar el perro guardian del tiempo CLRF Selector ;Salida
; _PWRTE_ON: Permite la activación del Reset por medio de la BCF STATUS, RP0 ;Colocar en 0 el bit RP0 del status para
fuente de alimentacón (ON es habilitado) acceder al banco 0
; _XT_OSC: Tipo de oscilador que utilizamos
;XXXXXXXXXXXXXXXXXXX ZONA DE CODIGOS
clock EQU 4000000 XXXXXXXXXXXXXXXXXXXXXXX
CBLOCK 0x0c ;Creacion de variables y asignamos una
posicion de memoria INICIO
contador_Horas ;Contador de Horas CLRF contador_Segundos ;Colocamos en Cero los tres
contador_Minutos ;Contador de Minutos contadores
contador_Segundos ;Contador de Segundos CLRF contador_Minutos
contador_Auxiliar ;Contador Auxiliar CLRF contador_Horas
R_ContA ;Contadores para los retardos.
R_ContB
R_ContC
ENDC

#Define Display PORTB ;Renombrar el puerto B para Display


#Define Selector PORTA ;Renombrar el puerto A para Selector
DESARROLLO

SEGUNDOS MINUTOS
INCF contador_Segundos,f ;Incrementar en 1 el contador y se INCF contador_Minutos,f ;Incrementar en 1 el contador y se guarda
guarda en si mismo en si mismo
MOVLW D'10' ;Cargamos a W (10) en Decimal, para MOVLW D'6' ;Cargamos a W (6) en Decimal, para limitar el
limitar el numero del Display de Horas numero del Display de Minutos
SUBWF contador_Segundos,w ;Restamos el contador con el SUBWF contador_Minutos,w ;Restamos el contador con el numero
numero cargado en W (10) cargado en W (6)
BTFSS STATUS, C ;Preguntamos si el valor de la resta es BTFSS STATUS, C ;Preguntamos si el valor de la resta es cero
cero para saber el valor actual del carrier, si es cero salte un una para saber el valor actual del carrier, si es cero salte un una linea, si es
linea, si es uno siga al sguiente renglon uno siga al sguiente renglon
GOTO ACT_DISPLAY ;Si el ciclo del conteo aun no termina, GOTO ACT_DISPLAY ;Si el ciclo del conteo aun no termina,
saltamos a la rutina indicada saltamos a la rutina indicada
CLRF contador_Segundos ;Si el ciclo a terminado, se reinicia CLRF contador_Minutos ;Si el ciclo a terminado, se reinicia el
el contador contador
GOTO MINUTOS ;Salto a la subrutina Minutos GOTO HORAS ;Salto a la subrutina Horas
DESARROLLO

HORAS MULTIPLEXOR
INCF contador_Horas,f ;Incrementar en 1 el contador y se MOVLW B'0001' ;Activa la salida A0 para encender el display
guarda en si mismo de segundos
MOVLW D'10' ;Cargamos a W (10) en Decimal, para MOVWF Selector ;Mueve el numero binario a la variable
limitar el numero del Display de Minutos selector
SUBWF contador_Horas,w ;Restamos el contador con el MOVF contador_Segundos, w ;Mueve lo que esta en contador a W
numero cargado en W (10) CALL NUMEROS ;Llama la tabla numeros y toma el numero de
BTFSS STATUS, C ;Preguntamos si el valor de la resta es la posicion segun el que este cargado en w
cero para saber el valor actual del carrier, si es cero salte un una MOVWF Display ;Muestra en display el numero cargado desde
linea, si es uno siga al sguiente renglon la tabla
GOTO ACT_DISPLAY ;Si el ciclo del conteo aun no termina, CALL Retardo_5ms ;Llama un retardo para mantener activo el
saltamos a la rutina indicada display
CLRF contador_Horas ;Si el ciclo a terminado, se reinicia el MOVLW B'0010' ;Activa la salida A1 para encender el display
contador de Minutos
GOTO SEGUNDOS ;Salto a la subrutina Segundos MOVWF Selector ;Mueve el numero binario a la variable
selector
ACT_DISPLAY MOVF contador_Minutos, w ;Mueve lo que esta en contador a W
MOVLW D'30' ;Se carga (5) en decimal a W CALL NUMEROS ;Llama la tabla numeros y toma el numero de
MOVWF contador_Auxiliar ;Se suma lo que esta en W a la la posicion segun el que este cargado en w
variable contador Auxiliar MOVWF Display ;Muestra en display el numero cargado desde
la tabla
CALL Retardo_5ms ;Llama un retardo para mantener activo el
display
MOVLW B'0100' ;Activa la salida A2 para encender el display
de Horas
DESARROLLO

MOVWF Selector ;Mueve el numero binario a la variable NUMEROS


selector ADDWF PCL, F ;Se suma el valor del contador con el PCL para
MOVF contador_Horas,w ;Mueve lo que esta en contador a tomar el valor de una posicion en la tabla
W TABLA
CALL NUMEROS ;Llama la tabla numeros y toma el RETLW B'00111111' ;Retorna con un valor tomado de la tabla
numero de la posicion segun el que este cargado en w RETLW B'00000110'
MOVWF Display ;Muestra en display el numero cargado RETLW B'01011011'
desde la tabla RETLW B'01001111'
CALL Retardo_5ms ;Llama un retardo para mantener RETLW B'01100110'
activo el display RETLW B'01101101'
DECFSZ contador_Auxiliar,f ;Decrementa en 1 el contador RETLW B'01111100'
Auxiliar RETLW B'00000111'
GOTO MULTIPLEXOR ;Salta al inicio de esta rutina RETLW B'01111111'
(multiplexor)para iniciar el ciclo nuevamente RETLW B'01101111'
GOTO SEGUNDOS ;Salta a la rutina Segundos.
DESARROLLO

Retardos_ms
movwf R_ContB ;
Aporta 1 ciclo máquina.
R1ms_BucleExterno
movlw d'249' ;
Aporta Mx1 ciclos máquina. Este es el valor de "K".
movwf R_ContA ;
Aporta Mx1 ciclos máquina.
R1ms_BucleInterno
nop
; Aporta KxMx1 ciclos máquina.
decfsz R_ContA,F ; (K-1)xMx1 cm
(cuando no salta) + Mx2 cm (al saltar).
goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos máquina.
decfsz R_ContB,F ; (M-1)x1 cm
(cuando no salta) + 2 cm (al saltar).
goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos máquina.
return
; El salto del retorno aporta 2 ciclos máquina.
;

END
CONCLUSIÓN
Podemos concluir que el anterior trabajo colaborativo, abordo
la temática estructural y arquitectónica de lo que es un
microcontrolador y su comportamiento base fundamental para
el desarrollo de aplicaciones automáticas que permitan la
optimización de algún proceso en especifico. Lo que nos lleva a
conocer sus fundamentos y modos de funcionamiento y
tratamientos de datos de un microprocesador para realizar una
tarea especifica y dar solución a problema planteado.
REFERENCIAS BIOGRÁFICAS
• Angulo, U. (2001). Microcontroladores PIC: diseño práctico de aplicaciones. Primera
parte: PIC12F508 y PIC16F84A. Lenguajes Ensamblador, C y PBASIC (4ª. Ed.). McGrau-
Hill. (Pp. 1-48, 81-106)Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/detail.action?docID=3194849

• Eduardo, G. B. (2008). Compilador CCS y Simular Proteus para Microcontroladores Pic


Cap. 1. México d.f., Alfa Omega - Marcombo. (Pp. 23-55). Recuperado de
https://tecnologialsb.files.wordpress.com/2017/05/compilador-c-ccs-y-simulador-
proteus-para-microcontroladores-pic.pdf

• Dogan, I. (2007). Programación de Microcontroladores PIC. Ed. Marcondo. (Pp. 13-48)


Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg=4&docID=317
5505&tm=1527544841827
REFERENCIAS BIOGRÁFICAS

• Noel Jair, Z. (2017). OVI Unidad 2 Microcontroladores. [Archivo de video]. Recuperado


de: http://hdl.handle.net/10596/11674

• Rodriguez, N. (2018). OVA: Programación de un Microcontrolador utilizando Assembler.


Universidad Nacional Abierta y/a Distancia. Recuperado de:
http://hdl.handle.net/10596/18941
¡GRACIAS POR SU
ATENCIÓN!

S-ar putea să vă placă și