Sunteți pe pagina 1din 3

Laboratorio de Control con Microprocesadores GR.

Práctica 2: Programación en Lenguaje C para Microcontroladores


Brayan Sánchez
Laboratorio de Control con Microprocesadores, Ingeniería Eléctrica y Electrónica, Escuela Politécnica Nacional

Quito, Ecuador

brayan.sanchez@epn.edu.ec

Abstract- Este documento presenta el desarrollo del


preparatorio correspondiente a la práctica 2 del IV. ENUNCIADO
laboratorio de Control con Microprocesadores. En
Se desea implementar dos contadores de 8 bits
dicha práctica se va a familiarizar con el lenguaje C ascendente/descendente, el primer contador se visualizará en 4
para microcontroladores AVR mediante el uso de displays 7 segmentos conectados al microcontrolador, el modo
Atmel Studio. Entonces, dicho escrito, contiene el de funcionamiento (ascedente/descendente) será controlado
código en C y la simulación del programa. desde el HMI mediante comunicación serial; el segundo
contador se visualizará en el HMI y su modo de funcionamiento
I. OBJETIVOS se controla interruptor conectado al microcontrolador. El
programa para el microcontrolador debe ser desarrollado en C y
1) Familiarizar al estudiante con el lenguaje C para el HMI en un lenguaje Visual.
microcontroladores AVR mediante el uso de Atmel
Studio. V. DIAGRAMA DE FLUJO

II. ANÁLISIS DE ENTRADAS, SALIDAS Y


RECURSOS DEL
MICROCONTROLADOR

Entradas:

1) 1 sewitch
2) Cable de comunicación serial.

Salidas:

1) 3 displays de 7 segmentos.

Recursos: loss recursos usados del microcontrolador


son:

1) USART.
2) Reset manual.
3) Puertos digitales

III. JUSTIFICACIÓN DEL


MICROCONTROLADOR A UTILIZAR

Se eligió al microcontrolador ATMEGA 164P para


la realización de la práctica debido a que nos permite
realizar con facilidad la comunicación serial entre un
computador y el microcontrolador, con el uso de
instrucciones en la programación de ASSEMBLER.
VI. REFERENCIAS d=(conta1-m*1000-c*100)/10; //hallo decenas
PORTC=display[u]; // se muestran las
[1] “Comunicación serial USART AVR - Tutoriales unidades
HeTPro. | HETPRO/TUTORIALES.” [Online]. PORTA=0b11111110; // activo primer display
_delay_ms(5); // retardo
Available: http://hetpro-
PORTA=255; //apago display
store.com/TUTORIALES/comunicacion-serial/.
PORTC=display[d];
[Accessed: 06-Nov-2016].
PORTA=0b11111101;
_delay_ms(5);
[2] “Comunicación Serial Utilizando LabVIEW con un PORTA=255;
Microcontrolador - National Instruments.” [Online]. PORTC=display[c];
Available: http://www.ni.com/white-paper/7907/es/. PORTA=0b11111011;
[Accessed: 06-Nov-2016]. _delay_ms(5);
PORTA=255;
PORTC=display[m];
VII. BIOGRAFÍA PORTA=0b11110111;
_delay_ms(5);
Brayan Leonidas Sanchez PORTA=255;
Vinocunga, nació en Saquisili- }
}
Ecuador el 25 de enero de 1996. Se
void configurar(void)
graduó de la secundaria "Colegio
{
Nacional Mixto Tarqui" como Físico
DDRC=0b00001111;//salida
Matemático. Actualmente cursa sus
DDRA=255;//salida
estudios de Ingeniería Electrónica y Control DDRB=0;//entrada
en la “Escuela Politécnica Nacional” en PORTB=255;
Quito. // configuro la comunicacion serial
UCSR0A=0b00000010;
VIII. ANEXOS (CÓDIGO FUENTE DEL UBRR0=103;
PROGRAMA Y SIMULACIÓN DE LO UCSR0B=0b10011000;
UCSR0C=0b00000110;
SOLICITADO) // configuro timmer 1 para contar cada
segundo
/* TCCR1A=0;
* prepa2.c TCCR1B=0b00001100;
* //OCR1A=31249; //para un segundo
* Created: 24/4/2018 22:01:26 OCR1A=20000;
* Author : Brayan Sánchez TIMSK1=2;
*/ TIFR1=2;
#include <avr/io.h> sei();
#define F_CPU 8000000UL // frecuencia del }
micr0 ISR(USART0_RX_vect)
#include <util/delay.h> //librería retardos {
#include <avr/interrupt.h> //librería seleccion=UDR0;
interrup }
unsigned char seleccion,modo; ISR(TIMER1_COMPA_vect)
unsigned char conta1=0,conta2=0,u,d,c,m; {
unsigned char if (modo==255)
display[10]={0b00111111,0b00000110,0b0101101 {
1,0b01001111,0b01100110,0b01101101,0b0111110 conta2++;
1,0b000000111,0b01111111,0b01101111}; }
void configurar(void); else
int main(void) {
{ conta2--;
configurar(); }
while(1) if (seleccion==255)
{ {
modo=PINB; conta1--;
UDR0=conta2; }
while (!(UCSR0A &(1<<UDRE0))); // espero a else
que se envie el dato. {
u=conta1%10; // hallo unidades conta1++;
m=conta1/1000; // hallor miles }
c=(conta1-m*1000)/100;// hallo centenas }
Fig. 1 Simulación del circuito en Proteus.

RXD

TXD

RTS

CTS

U1
40 37
PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0
41 36
PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1
42 35
PB2/AIN0/INT2/PCINT10 PA2/ADC2/PCINT2
43 34
P3 PB3/AIN1/OC0A/PCINT11 PA3/ADC3/PCINT3
44 33
PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4
1 32
PB5/MOSI/PCINT13 PA5/ADC5/PCINT5
1 2 31
DCD PB6/MISO/PCINT14 PA6/ADC6/PCINT6
6 3 30
DSR PB7/SCK/PCINT15 PA7/ADC7/PCINT7
2
RXD
7 9 19
RTS PD0/RXD0/PCINT24 PC0/SCL/PCINT16
3 10 20
TXD PD1/TXD0/PCINT25 PC1/SDA/PCINT17
8 11 21
CTS PD2/INT0/RXD1/PCINT26 PC2/TCK/PCINT18
4 12 22
DTR
9
R1 13
PD3/INT1/TXD1/PCINT27 PC3/TMS/PCINT19
23
RI PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20
4.7k 14 24
PD5/OC1A/PCINT29 PC5/TDI/PCINT21
15 25
PD6/ICP/OC2B/PCINT30 PC6/TOSC1/PCINT22
16 26
ERROR PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23
C1
COMPIM 10nF 29 8
AREF XTAL1
27 7
AVCC XTAL2
4
RESET

C2 ATMEGA164P
0.1uF

C3
0.1uF

Fig. 2 HMI en Labview.

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