13 Haziran 2018 Çarşamba

PIC Steryo vumetre

Steryo 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 ve A1 ucları kullanılmış ve bu uçlara ses sinyali geldiğinde ses sinyalin büyüklüğüne göre ledlerin seviyesi artar veya azalır. Devredeki pot lar ise hassasiyet ararını ayarlar. Devre sadece B ve D pordları kullanılmıştır. fakat yazılımla diğer portlarıda kullanılarak vumetrenın LED aralığı genişletilebilir. 

MALΖEME LİSTESİ:
1-7805
2-4MHz kristal
3-2adet 22pf
4-100nf
5-4k7
6-16adet 330hom
7-16adet kırmızı LED
8-16F877
9-2adet 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);

delay_us(20);

while(1)
{
set_adc_channel(0);
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);


set_adc_channel(1); 
bilgi=read_adc();
volt=(0.0048828125*bilgi)*1000;
voltaj=(volt/10)+2;

if(voltaj>140)
{output_high(pin_d7);}
else 
output_low(pin_d7);

if(voltaj>135)
{output_high(pin_d6);}
else 
output_low(pin_d6);

if(voltaj>130)
{output_high(pin_d5);}
else 
output_low(pin_d5);

if(voltaj>125)
{output_high(pin_d4);}
else 
output_low(pin_d4);

if(voltaj>120)
{output_high(pin_d3);}
else 
output_low(pin_d3);

if(voltaj>115)
{output_high(pin_d2);}
else 
output_low(pin_d2);

if(voltaj>110)
{output_high(pin_d1);}
else 
output_low(pin_d1);

if(voltaj>105)
{output_high(pin_d0);}
else 
output_low(pin_d0);
delay_ms(100); 

 }

}

Hiç yorum yok:

Yorum Gönder