DESARROLLO PRÁCTICO OBJETIVO: Utilizar los microcontroladores 1. EJERCICIO 1 PROBLEMA:
Diseñar un contador ascendente entre 0.00 hasta 9.99 con 3 displays y leer de los puertos D.2 el pulsador 1 y puerto D.3 el pulsador 2, que tenga la siguiente secuencia: Presionando el pulsador 1 y luego presionando el pulsador 2 inicia el contador con una velocidad rápida Presionando el pulsador 2 y luego presionando el pulsador 1 continua el contador con una velocidad lenta En cualquier instante pasa de velocidad rápida a lenta o viceversa ALGORITMO: Entradas:
Datos que ingresan al microcontrolador pic. Puerto D entrada 0/1 lógico. Procesos:
Defino al puerto D como entradas para los pulsadores Habilitar puerto b (salida) Habilitar puerto d (entrada) Habilitar puerto c (salida) Controlar mediante bucles Si esta en 1 lógico en d.3 lea d.2 Si esta en 1 lógico d.2 Activación de puerto c Conteo ascendente velocidad rápida Si esta en 1 lógico d.2 lea d.3 Si esta 1 lógico d.3 Conteo ascendente velocidad lenta Activación de puerto c Escribir los valores del contador en el puerto b Salidas:
Salida del puerto C hacia el transistor para la saturación de cada display y puerto B para la visualización de los 3 displays de 7segmentos mediante 7448 y se comprobara con el funcionamiento adecuado del circuito.
CÓDIGO
program contadorascendente main: dim A,B,X,H,J as Byte dim I as word A=0 B=0 X=0 I=0 trisb=0 trisc=0 trisa=0 trisd=$ff J=portd.2 and portd.3 porta.0=0 if J=1 then porta.0=1 delay_ms(200) H=portd.2 or portd.3 if H=1 then if portd.2=1 then while true lazo1: Portc=1 Portb=A delay_us(100) Portc=2 Portb=B delay_us(100) Portc=4 Portb=X delay_us(100)
if portd.3=1 then goto lazo end if inc(I) if I=2000 then inc(X) if X=10 then X=0 inc(B) if B=10 then B=0 inc(A) else if A=10 then A=0 end if end if end if I=0 else end if wend end if if portd.3=1 then while true lazo: Portc=1 Portb=A delay_us(200) Portc=2 Portb=B delay_us(200) Portc=4 Portb=X delay_us(200)
if portd.2=1 then goto lazo1 end if inc(I) if I=2000 then inc(X) if X=10 then X=0 inc(B) if B=10 then B=0 inc(A) else if A=10 then A=0 end if end if end if I=0 else end if wend end if else portb.0=0 portb.1=0 portb.2=0 portb.3=0 end if end if goto main end.
DIAGRAMA DE FLUJO INICIO
Configuro el puerto D como entrada y el puerto B y C como salida
Habilito los pulsadores: puerto D.2 pulsador 1 y puerto D.2 pulsador 1
Esperar hasta que
PORTD.3=1
Portd.3 =1
PORTD.2=1
Esperar hasta que Portd.2 =1
Conteo ascendente velocidad rápida
con
PORTD.2=1
PORTD.3=1
Conteo ascendente velocidad lenta
con
ESQUEMÁTICO
S I M U L A C I Ó N
FOTOS
CONCLUSIONES
El lenguaje de programación cargado en los microcontroladores PIC se lo realizó a través del Compilador microBasic, debido a que es un lenguaje fácil y rápido de programar, para principiantes en microcontroladores.
Que la elaboración de esta práctica nos sirve para comprender como son los bucles: if, while y for, además pueda desarrollar habilidades lógicas que ayuden a resolver de una forma más sencilla cualquier problema.
Tener en cuenta o memorizado el diagrama de pines (datasheet) del pic, del transistor y del display para facilitar ya sea la armada en el protoboard como en la programación en la declaración de puertos a utilizar.
datasheet decodificador 7448, fecha de r evisión: 13/11/2010 http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf , Microchip, datasheet PIC16F877A, fecha de revisión: 25/09/2010. Practicas realizadas en la materia de “SISTEMAS MICROPROCESADOS MICROPROCESADOS 1” en el laboratorio,