Mono vumetre devresi PIC 16F877 ile yapılmış ve 12voltla çalışır 7805 entegresiyle gerilim PIC'in çalışa bileceği 5volt'a düşürülmüştür. PIC'in A0 ucunu ses sinyali geldiğinde ses sinyalin büyüklüğüne göre ledlerin seviyesi artar veya azalır. Devredeki pot ise hassasiyet ararını ayarlar. Devre sadece B pordu kullanılmıştır. fakat yazılımla diğer portlarıda kullanılarak vumetrenın LED ralığı genişletilebilir.
MALΖEME LİSTESİ:
1-7805
2-4MHz kristal
3-2adet 22pf
4-100nf
5-4k7
6-8adet 330hom
7-8adet kırmızı LED
8-16F877
9-10k trimpot
DEVREŞEMASI:
CCSC KODU:
#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(d)
#use fast_io(c)
unsigned long int bilgi;
float volt,voltaj;
void main()
{
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_a(0xFF);
output_d(0x00);
output_c(0x00);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_us(20);
while(1)
{
bilgi=read_adc();
volt=(0.0048828125*bilgi)*1000;
voltaj=(volt/10)+2;
if(voltaj>140)
{output_high(pin_b7);}
else
output_low(pin_b7);
if(voltaj>135)
{output_high(pin_b6);}
else
output_low(pin_b6);
if(voltaj>130)
{output_high(pin_b5);}
else
output_low(pin_b5);
if(voltaj>125)
{output_high(pin_b4);}
else
output_low(pin_b4);
if(voltaj>120)
{output_high(pin_b3);}
else
output_low(pin_b3);
if(voltaj>115)
{output_high(pin_b2);}
else
output_low(pin_b2);
if(voltaj>110)
{output_high(pin_b1);}
else
output_low(pin_b1);
if(voltaj>105)
{output_high(pin_b0);}
else
output_low(pin_b0);
delay_ms(100);
}
}
Hiç yorum yok:
Yorum Gönder