SwitchViewer Projesi - PIC Portlarının Durumunu Bilgisayar Arayüzünde Gösterme

ULAGA

Üye
Katılım
9 Ocak 2012
Mesajlar
589
Puanları
1
Bu proje, PIC16F877A MCU'sunun port durumlarını okur ve RS232 üzerinden bilgisayara gönderir.
Bilgisayardaki arayüz yazılımı ise port durumlarını LED benzeri şekilde gösterir.
Proje çok basit olmasına rağmen;
Geliştirilmeye açık olduğundan dolayı, paylaşılacağı zaman kaynak belirtilirse sevinirim.
Zira az çok emek harcadım... :eek:


softwarec.png


circuitv.png


Kod:
//**********************************************************
//*  Geliştirici : YARARMAN                                *
//*  Proje Adı   : SwitchViewer                            *
//*  Tarih       : 07.03.2012                              *
//*  Sürüm       : 1.0                                     *
//*  MCU         : PIC16F877A                              *
//*  Derleyici   : CCS PIC C Compiler                      *
//*  Uyarı       : Telifhakkı (c) 2012 YARARMAN Tasarım    *
//*                Tüm Hakları Saklıdır                    *
//*  URL         : http://www.yararman.com/                *
//*  Açıklama    : Portlardaki giriş durumunu RS232        *
//*                üzerinden bilgisayara gönderir.         *
//**********************************************************
#include <16f877a.h>
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=20000000)
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
//#use fast_io(a)
//#use fast_io(b)

void main()
{
    char pState;
  
    setup_comparator(NC_NC_NC_NC);    // Karşılaştırıcılar devre dışı
    setup_adc_ports(NO_ANALOGS );        // Analog girişler devre dışı
    setup_adc(ADC_OFF);                    // A2D devredışı
  
    set_tris_a(0xFF);
    set_tris_b(0xFF);
    set_tris_c(0xBF);
    set_tris_d(0xFF);
    set_tris_e(0xFF);                      // Portların IO ayarı yapılıyor...                
  
    while(1)
    {
        pState = input_a();                // PORTA'yı oku ve pState'e yaz                   
        pState&=0x3F;                        // PORTA'daki olmayan bitleri ele
        printf("Au", pState);        // Okunan bilgiyi RS232'ye yolla
        delay_ms(1);                        // 1ms bekle
      
        pState = input_b();                // PORTB'yi oku ve pState'e yaz
        printf("Bu", pState);        // Okunan bilgiyi RS232'ye yolla
        delay_ms(1);                        // 1ms bekle
      
        pState = input_c();                // PORTC'yi oku ve pState'e yaz
        pState&=0x3F;                        // PORTC'deki olmayan bitleri ele
        printf("Cu", pState);        // Okunan bilgiyi RS232'ye yolla
        delay_ms(1);                        // 1ms bekle
      
        pState = input_d();                // PORTD'yi oku ve pState'e yaz
        printf("Du", pState);        // Okunan bilgiyi RS232'ye yolla
        delay_ms(1);                        // 1ms bekle
      
        pState = input_e();                // PORTE'yi oku ve pState'e yaz
        pState&=0x07;                        // PORTE'deki olmayan bitleri ele
        printf("Eu", pState);        // Okunan bilgiyi RS232'ye yolla
        delay_ms(1);                        // 1ms bekle
      
        delay_ms(250);                    // 250ms bekle
    }
}
 
Siz üstadları izlerken, insanın elektronikçi olası geliyor..;)
 
c6 ,c7 yide isteriz. şaka şaka :) güzel olmuş eline sağlık
 
usta sağol ellerine ve gözlerine sağlık :)

bazı arkadaşlar buna ne gerek vardı gibi düşünebilir ama röle, opto vs ile swichler tetiklettirilirse istenilen herşeyin çalışıp çalışmadığını takip edebilirsiniz.. ben mesela telefon hatlarında deneyeceğim...

bu devre ile ya 31 tane telefon hattının sadece çalıştığını yada 15 telefonun hem çalışıp hem meşgul olup olmadığını takip edebileceğim...

usta emeğine sonsuz teşekkür...


ilerde de bi multiplexer düşünürüz artık ;)
 
Son düzenleme:
arayüz programını c# ilemi yazdınız?
 
herkese selam..

devreyi nihayet yapıp denedim sonuç mükemmel...
4mhz lik kristalle 31 tane girişi tetikletip ekrandaki ledleri yaktım...

yardımını esirgemeyen YARARMAN arkadaşıma sonsuz teşekkürler
 

Forum istatistikleri

Konular
130,064
Mesajlar
932,671
Kullanıcılar
453,046
Son üye
alicam8

Yeni konular

Geri
Üst