

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Neste documento, é apresentado um programa em c para medir o valor eficaz de um sinal de entrada em um sistema digital. O programa utiliza a biblioteca <8051.h> e <math.h>, além da biblioteca <datapool.h> para ler valores do conversor a/d e realizar cálculos matemáticos. O algoritmo consiste em ler 500 amostras de sinal, calcular o valor pico e o valor rms, e exibir o resultado no display. O programa é escrito para o microcontrolador 8051.
Tipologia: Trabalhos
1 / 2
Esta página não é visível na pré-visualização
Não perca as partes importantes!


// Sistemas Digitais 5 // Prof. Antônio Hamilton // 3º Trabalho // Alunos: // Daniel Botinha // Leonardo Muratori // Ricardo Baldo // Wagner Rigueira
#include <8051.h> //inclusao de biblioteca de funções próprias #include <math.h> //inclusao de biblioteca de funções matemáticas próprias #include <datapool.h> //inclusao de biblioteca de funções próprias
void main(void) // corpo do programa
float Vrms, Vpico, x; // variáveis globais ini_dsp(); // inicializa o display clr_dsp(); // limpa o display Put_message(0,0,"Valor Eficaz do sinal de Entrada"); // mostra no display a frase "Valor Eficaz do sinal de Entrada"
for(;;) // loop infinito { Vrms=0; Vpico=0; unsigned char j; j=0;
while (j < 500) {
x=get_adc(); // Ecoa valor lido no conversor A/D na variável i. A função get_adc() está dentro do datapool.h // get_adc entrega um número de 12 bits. j++; if (x>Vpico) Vpico=x; } // fim do while
Vpico/=4.095 // conversor ADC é de 12 bits, portanto vai de 0~4095. // dividindo o Vpico por 4.095 tem-se o valor de pico real aplicado na entrada.
Vrms=Vpico/sqrt(2); // divide Vpico pela raiz quadrada de 2
if (Vrms<10)
Vrms=/1000; put_number(1,1,4,Vrms); put_message (1,5,"mV"); } if (Vrms>=10) if (Vrms<100) { Vrms=/100; put_number(1,1,4,Vrms); put_message (1,5,"mV"); } if (Vrms>=100) if (Vrms<=1000) { put_number(1,1,4,Vrms); put_message (1,5,"V"); } if (Vrms>1000) put_message (1,1,"Sobretensão");
} // fim loop infinito
} // fim do corpo do programa