pic16f877a

abi benim bu breadboard da galiba temassızlık var aslında ben bu breadboardları hiç sevmiom ama napim bi devre kursam plaket üzerinde pic i nasıl programlıcam tam olarak hangi pinden programlıcamı bilmiom aslında bende mplab ın pic programlayıcısıda var header la ama tam olarak hangi pine hangisii vereceğimi bilmiom nasıl olabilir ?
 
abi böle burdan olmuyo yaa varmı bi msn filan beni eklersen çok sevinirim
***************
 
Moderatör tarafında düzenlendi:
kardeş plakete devre yaptığında programlamada sorun yaşamassın çünkü pici direk plakete monte etmessin arada bir soket kullanırsın yani plakete soketi lehimlersin ve bu sayede pici istediğin zaman çıkartır programını yükler tekrar devreye takarsın.

Msn konusunda msn adresim var ama artık geç oldu maalum yarın iş var olmassa yarın devam edelim ne dersin ? msn adresimi özeline yazacağım
 
S.A.
Kardeş maddi durumun nedir bilmiyorum ama bir deneme bordu alsan çok iyi olur derim. Ben kendi yaptığım deneme bordlarını kullanıyordum iyi kötü idare ediyordum ama bilgi ilerledikçe deneme bordum yetersiz oldu bende expkits ten EX1C deneme kartını aldım işimi şimdilik fazlasıyla gördü.
Easypic türü deneme kartlarına benziyor.
 
arkadaşlar merhaba
çok acil yardıma ihtiyacım var. şimdi elimde bulunan iki farklı direncin ölçümünü yapmak istiyorum. 1-0-2 anahtarla seçimini yapıcam ölçme direnci devredeki RX direncidir. çıkışta kırmızı , yeşil led , buzzer ve Lcd var. devreyi isiste kurdum similasyonda lcd bana değeri veriyor fakat ok durumunda sürekli , açık devre ve uygunsuz durumunda kesikli çal dediğimde her iki durumda kesikli çalıyor tabi bunlar similasyonda . pratiğe geçtiğimde ise pici programladım devreyi kurdum. pic girişi okuyup çıkışa hiç birşey aktarmıyor. ne lcd , ne led ne buzzer çıkış veriyor. girişi de okumuyor. Yardıma çok ihtiyacım sorun nerede devrede mi programda mı?



#include <16f877A.h>
#DEVICE ADC=10 //10 BİT ADC
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(d)
#use fast_io(a)
#use fast_io(e)


unsigned int16 adcbilgi=0; //16 bitlik işaretsiz adcbilgi adında bir degisken tanımladık...
float voltajdeger=0; //ondalıklı voltaj adında bir degisken tanımladık
float R3 = 0.51 , Vcc = 5;
float direnc = 0;

#define LCD_ENABLE_PIN PIN_d3 //lcd enable pini d3
#define LCD_RS_PIN PIN_d1 //lcd rs pini pin d1
#define LCD_RW_PIN PIN_d2 //lcd rw pini pin d2

#define LCD_DATA4 PIN_d7 //lcdnin data4 pini pind7
#define LCD_DATA5 PIN_d6 //lcdnin data5 pini pind6
#define LCD_DATA6 PIN_d5 //lcdnin data6 pini pind5
#define LCD_DATA7 PIN_d4 //lcdnin data7 pini pind4

#include <lcd.c> // lcd dosyalarını yükler

void main()

{
set_tris_a(0b000001); //a0 pini giriş ...
setup_adc(adc_clock_div_32); //adc clock frekansı fosc/32
setup_adc_ports(AN0); //AN0 ANALOG GİRİŞ

set_tris_e(0xff); //e portu giriş
set_tris_d(0x00); //d portu cıkıs
set_tris_b(0x00); //b portu cıkıs
output_d(0x00); //d portunu sıfırla
output_b(0x00); //b portunu sıfırla
lcd_init(); //lcd dosyalarını yükle


while(1) //sonsuz döngüye giriliyor..

{
printf(lcd_putc,"\f"); //lcd'yi temizle
lcd_gotoxy(2,1);printf(lcd_putc," Direnc "); //lcd 1.satır 2.sütundan YAZ.
lcd_gotoxy(2,2);printf(lcd_putc," Olcme ");
delay_ms(1500); //2.SATIR 2.sütundan itibaren yaz.1.5 sn bekle
printf(lcd_putc,"\f");

set_adc_channel(0); //adc kanalı 0 aktıf
delay_us(20); //20 us bekle
adcbilgi=read_adc(); //adc oku adc bilgiye ata
voltajdeger=adcbilgi*0.00488828125; //5/1024=0.0048828125 ADIM voltajı...
direnc =((voltajdeger * R3)/(Vcc - voltajdeger)); // printf(lcd_putc,"\f"); //lcd'yi temizle


if (input(pin_e0) && input(pin_e1)) // e0 ve e1 lojik 1 ise
{
if(direnc >= 5.04 && direnc <= 6.16) // direnç değeri belirtilen aralıkta ise değeri yaz ve ok yaz
{
Output_high(pin_b0); //yesil led yak
Output_high(pin_b2); //buzzer çal
delay_ms(1000);
lcd_gotoxy(2,1);printf(lcd_putc,"DIRENC=%fkOhm",direnc); //direnc bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc,"******OK******* ");
delay_ms(1000); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
printf(lcd_putc,"\f"); //lcd'yi temizle
}
else if (direnc > 20) //eğer ki bu şartların dışında ise açık devre var demektir.
{
lcd_gotoxy(2,1);printf(lcd_putc,"SONSUZ DIRENC "); //açıklama bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc,"ACIK DEVRE VAR");
delay_ms(1000); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
printf(lcd_putc,"\f");
output_high(pin_b1); //kırmızı ledi yak
output_high(pin_b2); // aralıklı buzzer çal
delay_ms(500);
output_low(pin_b2);
delay_ms(500);

}
else //eğer ki belirtilen aralıkta değilde değeri yaz ve uyarı ver
{
lcd_gotoxy(2,1);printf(lcd_putc,"DIRENC=%fkOhm",direnc); //direnc bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc," UYGUN DEGIL ");
delay_ms(1000); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
printf(lcd_putc,"\f");
output_high(pin_b1); //kırmızı ledi yak
output_high(pin_b2); // aralıklı buzzer çal
delay_ms(500);
output_low(pin_d2);
delay_ms(500);

}
}
else if (input(pin_e0) && input(pin_e2)) // e0 ve e2 lojik 1 ise
{
if(direnc >= 0.75 && direnc <= 0.85) // direnç değeri belirtilen aralıkta ise değeri yaz ve ok yaz
{
Output_high(pin_b0); //yesil led yak
Output_high(pin_b2); //buzzer cal
delay_ms(1000);
lcd_gotoxy(2,1);printf(lcd_putc,"DIRENC=%fkOhm",direnc); //direnc bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc,"******OK*******");
delay_ms(1000); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
printf(lcd_putc,"\f"); //lcd'yi temizle
}
else if (direnc > 20) //eğer ki bu şartların dışında ise açık devre var demektir.
{
lcd_gotoxy(2,1);printf(lcd_putc,"SONSUZ DIRENC "); //direnc bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc,"ACIK DEVRE VAR"); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
delay_ms(1000);
printf(lcd_putc,"\f");
output_high(pin_b1); //kırmızı ledi yak
output_high(pin_b2); // aralıklı buzzer çal
delay_ms(500);
output_low(pin_b2);
delay_ms(500);

}
else //eğer ki belirtilen aralıkta değilde değeri yaz ve uyarı ver
{
lcd_gotoxy(2,1);printf(lcd_putc,"DIRENC=%fkOhm",direnc); //voltaj bilgisini göster...
Delay_Ms(100); //100 Ms BEKLE
lcd_gotoxy(2,2);printf(lcd_putc," UYGUN DEGIL ");
delay_ms(1000); //2.SATIR 2.sütundan itibaren yaz.1 sn bekle
printf(lcd_putc,"\f");
output_high(pin_b1); //kırmızı ledi yak
output_high(pin_b2); // aralıklı buzzer çal
delay_ms(500);
output_low(pin_d2);
delay_ms(500);

}
}
else
output_d(0x00); //d portunu sıfırla
output_b(0x00); //b portunu sıfırla
}
}
 

Ekli dosyalar

  • Adsız.png
    70.8 KB · Görüntüleme: 8
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…