Vumetro Atmega 32
Enviado por darknoco • 23 de Septiembre de 2011 • 540 Palabras (3 Páginas) • 1.106 Visitas
Un Vumetro es Instrumento para representar el nivel de la señal de audio
Generalmente se puede encontrar en los amplificadores de Audio o Stereo.
Vienen en dos formatos, antiguamente eran analógicos
ahora suelen venir digitales de led, o ya incluidos en una pantalla de lcd.
ESQUEMA GENERAL DEL VUMETRO
En este diagrama se emplean luces de tráfico en proteuspara representar a un led RGB ya que no se encuentran estos dispositivos para simulación
Pruebas en protoboard del funcionamiento del vúmetro mostrando tres niveles de ruido diferente cambiando el color de los leds RGB
CODIGO EN C PARA EL ATMEGA 32
#include <mega32.h>
intresu_rojo;
intresu_azul;
intresu_verde;
voidcolor_rojo(void)
{
TCCR1A=0b10100001;
TCCR1B=0b00001001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0b00000000+resu_rojo;
OCR1BH=0x00;
OCR1BL=0b11111111+resu_azul;
ASSR=0x00;
TCCR2=0b01101001;
TCNT2=0x00;
OCR2=0b11111111+resu_verde;
}
voidcolor_azul(void)
{
TCCR1A=0b10100001;
TCCR1B=0b00001001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0b11111111+resu_rojo;
OCR1BH=0x00;
OCR1BL=0b00000000+resu_azul;
ASSR=0x00;
TCCR2=0b01101001;
TCNT2=0x00;
OCR2=0b11111111+resu_verde;
}
voidcolor_verde(void)
{
TCCR1A=0b10100001;
TCCR1B=0b00001001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0b11111111+resu_rojo;
OCR1BH=0x00;
OCR1BL=0b11111111+resu_azul;
ASSR=0x00;
TCCR2=0b01101001;
TCNT2=0x00;
OCR2=0b00000000+resu_verde;
}
voidcolor_amarillo(void)
{
TCCR1A=0b10100001;
TCCR1B=0b00001001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0b00001100;
OCR1BH=0x00;
OCR1BL=0b11111111;
ASSR=0x00;
TCCR2=0b01111001;
TCNT2=0x00;
OCR2=0b11110011;
}
voidcolor_violeta(void)
{
TCCR1A=0b10110001;
TCCR1B=0b00001001;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0b10000000;
OCR1BH=0x00;
OCR1BL=0b01000000;
ASSR=0x00;
TCCR2=0b01101001;
TCNT2=0x00;
OCR2=0b11111111;
}
/ / ADC interrumpir el servicio de rutina
interrupt [ADC_INT] void adc_isr(void)
{
unsignedintadc_data;
/ / Leer el resultado de la conversión ADadc_data=ADCW;//leamos todos los 10 bits q conforman el ADC
/ / Pongaaquí el código
if (adc_data>(818)) // 8 led, color rojo
{
PORTC.7=1;
PORTC.6=1;
PORTC.5=1;
PORTC.4=1;
PORTC.3=1;
PORTC.2=1;
PORTC.1=1;
PORTC.0=1;
color_rojo();
}
else if (adc_data>(757)) //7 led, color violeta
{PORTC.7=0;
PORTC.6=1;
PORTC.5=1;
PORTC.4=1;
PORTC.3=1;
PORTC.2=1;
PORTC.1=1;
PORTC.0=1;
color_rojo();
}
else if (adc_data>(716)) //6 led, color amarillo
{PORTC.7=0;
PORTC.6=0;
PORTC.5=1;
PORTC.4=1;
PORTC.3=1;
PORTC.2=1;
PORTC.1=1;
PORTC.0=1;
color_azul();
}
else if (adc_data>(675)) //5 led, color amarillo
{PORTC.7=0;
PORTC.6=0;
PORTC.5=0;
PORTC.4=1;
PORTC.3=1;
PORTC.2=1;
...