Practica 02_Programación en C_Lab. Control Con UC
-
Upload
byron-sarabia-morales -
Category
Documents
-
view
222 -
download
2
description
Transcript of Practica 02_Programación en C_Lab. Control Con UC
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
LABORATORIO DE CONTROL CON MICROPROCESADORES PRÁCTICA NO. 02
“FAMILIARIZACIÓN CON LA PROGRAMACIÓN EN ATMEL STUDIO EN C”
FAMILIARIZACIÓN CON LA PROGRAMACIÓN EN C
1. OBJETIVO Familiarizar al estudiante con el uso de los programas Atmel Studio e Isis Profesional.
2. DESARROLLO 2.1. Realizar el diagrama circuital completo, simulación, 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:
Leer 8 sw colocados en el PORTC
Mostrar en 3 displays de 7 segmentos el valor de los sw, en decimal.
ANÁLISIS DE ENTRADAS Y SALIDAS
Para este programa se necesitarán las siguientes variables:
SELECCIÓN DEL MICROCONTROLADOR
Los requerimientos mínimos más importantes que debe tener un microcontrolador serán:
19 terminales I/O
Otros requerimientos serán:
16 Kbytes de memoria flash
Frecuencia de operación 8MHz
1 Kbyte de memoria SRAM
512 bytes memoria EEPROM
Voltaje de alimentación típico de 5V.
Debido al conocimiento y familiaridad se usará el microcontrolador ATMEGA164PA.
DIMENSIONAMIENTO DE DISPOSITIVOS
Para controlar la corriente que circula por el display multiplexado se requerirán resistencias
limitadoras, para su dimensionamiento se tiene lo siguiente:
√
Sea una recomendable de 25mA, un de 0,33 debido a que se controlarán 3 displays
multiplexados, la corriente pico será:
√
Por lo que las resistencias limitadoras serán:
DIAGRAMA CIRCUITAL
DIAGRAMA DE FLUJO
CONVERSIÓN BINARIO A BCD
INICIO
Declaración de Funciones
Declaración de Variables
Configuración E/S
8 pines entrada (Dip-Switch), 8 pines de salida (Display
Multiplexado), 3 pines de control para el display.
Obtener datos de dip-switch
Inicializo Variables
Unidades, Decenas, Centenas=0
Conversión Binaria a BCD
Conversión BCD a 7 Segmentos
Impresión de datos en los display´s multiplexados
Binario>99
Si No
Binario=Binario-100
Centena=Centena+1 Binario>9 Si No
Binario=Binario-10
Decena=Decena+1
Unidades=Binario
CÓDIGO (Lenguaje C)
/* * Practica_02_Programación_en_C.c * * Created: 28/04/2015 20:04:00 * Author: Byron Sarabia */ #include <avr/io.h> //Declaración funciones void binario_bcd (void); unsigned char bcd_7seg(unsigned char valor); void impresion(void); void retardo (unsigned char k); //Declaración de Variables unsigned char c; int binario; unsigned char centenas; unsigned char decenas; unsigned char unidades; unsigned char centenas_7seg; unsigned char decenas_7seg; unsigned char unidades_7seg; int main(void) { //Configuración 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 común 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; }
SIMULACIÓN
Displays que
indican el
valor en
decimal
Dip-Switch para
ingresar el valor.
(0111 1000=120)
3. BIBLIOGRAFÍA
APUNTES DE SISTEMAS MICROPROCESADOS; Ing. Marco Herrera MSc.; Semestre 2014-
B; EPN; Quito-Ecuador.
APUNTES DE CONTROL CON MICROPROCESADORES; Ing. Jhon Pilataxi.; Semestre
2015-A; EPN; Quito-Ecuador.