Академический Документы
Профессиональный Документы
Культура Документы
2. DESARROLLO
2.1. Realizar el diagrama circuital completo, simulacin, el diagrama de flujo del programa y el
programa de control utilizando lenguaje C en Atmel Studio, para el microcontrolador
ATMEGA164P, que realice las siguientes actividades:
DIMENSIONAMIENTO DE DISPOSITIVOS
Para controlar la corriente que circula por el display multiplexado se requerirn resistencias
limitadoras, para su dimensionamiento se tiene lo siguiente:
Sea una
recomendable de 25mA, un
multiplexados, la corriente pico ser:
DIAGRAMA CIRCUITAL
DIAGRAMA DE FLUJO
INICIO
Declaracin de Funciones
Declaracin de Variables
Configuracin E/S
8 pines entrada (Dip-Switch), 8
pines de salida (Display
Multiplexado), 3 pines de control
para el display.
Inicializo Variables
Unidades, Decenas, Centenas=0
Si
No
Binario>99
Binario=Binario-100
Centena=Centena+1
No
Unidades=Binario
Binario>9
Si
Binario=Binario-10
Decena=Decena+1
CDIGO (Lenguaje C)
/*
* Practica_02_Programacin_en_C.c
*
* Created: 28/04/2015 20:04:00
* Author: Byron Sarabia
*/
#include <avr/io.h>
//Declaracin funciones
void binario_bcd (void);
unsigned char bcd_7seg(unsigned char valor);
void impresion(void);
void retardo (unsigned char k);
//Declaracin
unsigned char
int binario;
unsigned char
unsigned char
unsigned char
de Variables
c;
centenas;
decenas;
unidades;
//Configuracin de Puertos
DDRC=0x00;
PORTC=0xff;
DDRB=0xff;
DDRD=0b00000111;
while(1)
{
c=PINC;
binario=c;
binario_bcd();
centenas_7seg=bcd_7seg(centenas);
decenas_7seg=bcd_7seg(decenas);
unidades_7seg=bcd_7seg(unidades);
impresion();
}
}
void binario_bcd(void)
{
centenas=0;
while(binario>99)
{
binario=binario-100;
centenas++;
}
decenas=0;
while(binario>9)
{
binario=binario-10;
decenas++;
}
unidades=binario;
return;
}
unsigned char bcd_7seg(unsigned char valor)
{
unsigned char segmentos;
segmentos=0;
//Para display nodo comn
switch(valor)
{
case 0:
segmentos=192;
break;
case 1:
segmentos=249;
break;
case 2:
segmentos=164;
break;
case 3:
segmentos=176;
break;
case 4:
segmentos=153;
break;
case 5:
segmentos=146;
break;
case 6:
segmentos=130;
break;
case 7:
segmentos=248;
break;
case 8:
segmentos=128;
break;
case 9:
segmentos=152;
break;
}
return segmentos;
}
void impresion(void)
{
PORTD=1;
PORTB=centenas_7seg;
retardo(1);
PORTD=0;
PORTD=2;
PORTB=decenas_7seg;
retardo(2);
PORTD=0;
PORTD=4;
PORTB=unidades_7seg;
retardo(4);
PORTD=0;
return;
}
void retardo(unsigned char k)
{
unsigned int a;
a=300;
while(a>0)
{
a--;
PORTD=k;
}
return;
}
SIMULACIN
Displays que
indican el
valor en
decimal
Dip-Switch para
ingresar el valor.
(0111 1000=120)
3. BIBLIOGRAFA
APUNTES DE SISTEMAS MICROPROCESADOS; Ing. Marco Herrera MSc.; Semestre 2014B; EPN; Quito-Ecuador.