Vous êtes sur la page 1sur 7

Universidade Federal de Minas Gerais

Programa de Ps-Graduao em Engenharia Mecnica


Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br

PRIMEIRO RELATRIO DA AULA PRATICA 1: LEDS


Professor: Antnio Maia
Estudantes:
Carlos Eduardo Castilla Alvarez ing.carlos.ufps@gmail.com
Fernando Avelar Resende - fernando.a.resende@hotmail.com
1. Montar o Circuito abaixo no Proteus.

Resposta: foi implementado o circuito no software Proteus dando como resultado o


seguinte circuito.

2. Elaborar um programa em C para fazer com que o le4 pisque com intervalos de 1
segundo. Testar o programa no Proteus. Em seguida, gravar o programa no MCU da
placa didtica e avaliar os resultados.
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
Resposta: o cdigo empregado e testado apresentado a em seguida.
#include <16F877A.h> % agregar bibliotecas
#include <stdlib.h> % agregar bibliotecas
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) % tempo do relgio
void main(void) % incio do programa

{
do{ % incio do bucle de repetio while
output_high(PIN_B3); % ativar a porta B3 do pic
delay_ms(1000); % aguardar 1 segundo
output_low(PIN_B3); % desativar a porta B3 do pic
delay_ms(1000); % aguardar 1 segundo
}while(true); % repetir a rutina
} % fim do programa

3. Elaborar um programa em c para fazer com que o LED instalado no pino 33 pisque por
20 vezes com intervalos de 300ms, fazendo com que ele permanea ligado depois de
encerradas as 20 repeties. Fazer o mesmo para os LEDs instalados nos pinos 34,35 e
36. Para indicar fim do programa, piscar todos os LEDs duas vezes com intervalos de 2
segundos. Avalie o programa no Proteus e na placa didtica.

Resposta: o cdigo empregado e testado apresentado a em seguida.


#include <16F877A.h> % agregar bibliotecas
#include <stdlib.h> % agregar bibliotecas
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) % tempo do relgio
int x; % criar a varivel X
void main(void) % incio do programa
{
x=20; %carregar a varivel x com 20
do{ % incio do bucle para o LED 1
output_high(PIN_B0); % ativar a porta B0 do pic
delay_ms(300); % aguardar 0.3 segundos
output_low(PIN_B0); % desativar a porta B0 do pic
delay_ms(300); % aguardar 0.3 segundos
x=x-1; % decrescer uma unidade a varivel X
}while(x>0); % condio para finalizar o bucle do LED 1
output_high(PIN_B0); % ativar a porta B0 do pic
x=20; %carregar a varivel x com 20
do{ % incio do bucle para o LED 2
output_high(PIN_B1); % ativar a porta B1 do pic
delay_ms(300); % aguardar 0.3 segundos
output_low(PIN_B1); % desativar a porta B1 do pic
delay_ms(300); % aguardar 0.3 segundos
x=x-1; % decrescer uma unidade a varivel X
}while(x>0); % condio para finalizar o bucle do LED 2
output_high(PIN_B1); % ativar a porta B1 do pic
x=20; %carregar a varivel x com 20
do{ % incio do bucle para o LED 3
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
output_high(PIN_B2); % ativar a porta B2 do pic
delay_ms(300); % aguardar 0.3 segundos
output_low(PIN_B2); % desativar a porta B0 do pic
delay_ms(300); % aguardar 0.3 segundos
x=x-1; % decrescer uma unidade a varivel X
}while(x>0); % condio para finalizar o bucle do LED 3
output_high(PIN_B2); % ativar a porta B2 do pic
x=20; %carregar a varivel x com 20
do{ % incio do bucle para o LED 4
output_high(PIN_B3); % ativar a porta B3 do pic
delay_ms(300); % aguardar 0.3 segundos
output_low(PIN_B3); % desativar a porta B3 do pic
delay_ms(300); % aguardar 0.3 segundos
x=x-1; % decrescer uma unidade a varivel X
}while(x>0); % condio para finalizar o bucle do LED 4
x=2; %carregar a varivel x com 2
do{ % incio do bucle para os 4 LEDs
output_high(PIN_B0); % ativar a porta B0 do pic
output_high(PIN_B1); % ativar a porta B1 do pic
output_high(PIN_B2); % ativar a porta B2 do pic
output_high(PIN_B3); % ativar a porta B3 do pic
delay_ms(2000); % aguardar 2 segundos
output_low(PIN_B0); % desativar a porta B0 do pic
output_low(PIN_B1); % desativar a porta B1 do pic
output_low(PIN_B2); % desativar a porta B2 do pic
output_low(PIN_B3); % desativar a porta B3 do pic
delay_ms(2000); % aguardar 2 segundos
x=x-1; % decrescer uma unidade a varivel X
}while(x>0); % condio para finalizar o bucle para os 4 LEDs
} % fim do programa

4. Elaborar um programa em C para fazer com que LED instalado em RB0, RB1, RB2,
RB3 representem a contagem de 0 at 15 em binrio (1- LED aceso, 0- apagado). Cada
nmero dever permanecer representado por 1 segundo. Avalie o programa no Proteus e
na placa didtica.

Resposta: o cdigo empregado e testado apresentado a em seguida.


#include <16F877A.h> % agregar bibliotecas
#include <stdlib.h> % agregar bibliotecas
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) % tempo do relgio
int x; % criar a varivel X
void main(void) % incio do programa
{
x=0; %carregar a varivel x com 0
do{ % incio do bucle de repetio while
output_B(x); % apresentar no porto B o numero salvado na variavel x
delay_ms(1000); % aguardar 1 segundo
x=x+1; % incrementar uma unidade a varivel x
}while(x<=15); % condio para finalizar o bucle
output_B(0); % clarear o porto B
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
} % fim do programa

5. Elabora um programa em C para gerar um nmero aleatrio num. Fazer com que os
LEDs de 1 a 4 pisquem individualmente e de forma sequencial, com intervalos de 80ms.
Quando o ciclo de valor num for executado, manter LED correspondente aceso e
encerrar o programa.

Resposta: o cdigo empregado e testado apresentado a em seguida.

#include <16F877A.h> // agregar bibliotecas


#include <stdlib.h> // agregar bibliotecas
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) // tempo do relgio
int x; // criar a varivel X
void main(void) // incio do programa
{
do{ // incio do primeiro while
x=rand()%10; // carregar na varivel x um valor aleatrio de 0 - 10
while(true){ // incio do segundo while

if (x>0) { // condicional para o primeiro LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B0); // ativar a porta B0 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B0); // desativar a porta B0 do pic
}
else{
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o primeiro LED

if (x>0) { // condicional para o segundo LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B1); // ativar a porta B1 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B1); // desativar a porta B1 do pic
}
else{
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o segundo LED

if (x>0) { // condicional para o terceiro LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B2); // ativar a porta B2 do pic
delay_ms(80); // aguardar 80 milissegundo
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
if (x!=0) { // verifica se a contagem j chegou ao fim
output_low(PIN_B2); // desativar a porta B2 do pic
}
else{
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o terceiro LED

if (x>0) { // condicional para o quarto LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B3); // ativar a porta B3 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B3); // desativar a porta B3 do pic
}
else{
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o quarto LED

} // final do segundo while


break; // sair do primeiro while

}while(true); // condio do primeiro while


}

6. Modifique o cdigo anterior fazendo com que o ltimo LED pisque apenas uma vez
se num for mpar e duas vezes se num for par.

Resposta: o cdigo empregado e testado apresentado em seguida.

#include <16F877A.h> // agregar bibliotecas


#include <stdlib.h> // agregar bibliotecas
#fuses HS,NOWDT,NOLVP,NOBROWNOUT,NODEBUG,NOPROTECT,PUT,NOPROTECT
#use delay(clock=4000000) // tempo do relgio
int x, orig; // criar as variveis X e cont
void main(void) // incio do programa
{
do{ // incio do primeiro while
x=rand()%10; // carregar na varivel x um valor aleatrio de 0 - 10
orig=x; // nmero original gravado na memria
while(true){ // incio do segundo while

if (x>0) { // condicional para o primeiro LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B0); // ativar a porta B0 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B0); // desativar a porta B0 do pic
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
}
else{
if(orig%2==0) { // verifica se o nmero original par
output_low(PIN_B0);
delay_ms(80);
output_high(PIN_B0); // pisca o LED se o nmero par
}
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o primeiro LED

if (x>0) { // condicional para o segundo LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B1); // ativar a porta B1 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B1); // desativar a porta B1 do pic
}
else{
if(orig%2==0) { // verifica se o nmero original par
output_low(PIN_B1);
delay_ms(80);
output_high(PIN_B1); // pisca o LED se o nmero par
}
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o segundo LED

if (x>0) { // condicional para o terceiro LED


x=x-1; // decrementar a varivel x em uma unidade
output_high(PIN_B2); // ativar a porta B2 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B2); // desativar a porta B2 do pic
}
else{
if(orig%2==0) { // verifica se o nmero original par
output_low(PIN_B2);
delay_ms(80);
output_high(PIN_B2); // pisca o LED se o nmero par
}
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o terceiro LED

if (x>0) { // condicional para o quarto LED


x=x-1; // decrementar a varivel x em uma unidade
Universidade Federal de Minas Gerais
Programa de Ps-Graduao em Engenharia Mecnica
Av. Antnio Carlos, 6627 - Pampulha - 31.270-901 - Belo Horizonte MG
Tel.: +55 31 3499-5145 - Fax.: +55 31 3443-3783
www.demec.ufmg.br - E-mail: cpgmec@demec.ufmg.br
output_high(PIN_B3); // ativar a porta B3 do pic
delay_ms(80); // aguardar 80 milissegundo

if (x!=0) { // verifica se a contagem j chegou ao fim


output_low(PIN_B3); // desativar a porta B3 do pic
}
else{
if(orig%2==0) { // verifica se o nmero original par
output_low(PIN_B3);
delay_ms(80);
output_high(PIN_B3); // pisca o LED se o nmero par
}
break; // interrompe o loop se a contagem terminou
}
} // fim do condicional para o quarto LED

} // final do segundo while


break; // sair do primeiro while

}while(true); // condio do primeiro while


}

Vous aimerez peut-être aussi