2 Aralık 2024 Pazartesi

Ledlerler termometre ds18b20

 Ledlerle termometre 16f877a ds18b20 sicaklik sensoru ile programlandi.

#include <16f877a.h> 

#device ADC=10 

#fuses hs,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=20m)


#include "dss18b20.c"

 

float sicaklik;


// LED'leri sırayla yakıp söndüren fonksiyon

void led_test() {

    int i;


    // PortB'deki LED'ler (0-7)

    for (i = 0; i < 8; i++) {

        output_b(1 << i); // Sırayla RB0-RB7 LED'lerini yak

        delay_ms(200); // 200 ms bekle

    }


    // PortC'deki LED'ler (RC0, RC1, RC6, RC7)

    output_b(0x00); // PortB'yi temizle

    for (i = 0; i < 2; i++) {

        output_c(1 << i); // RC0 ve RC1 için sırayla yak

        delay_ms(200);

    }


    for (i = 6; i <= 7; i++) {

        output_c(1 << i); // RC6 ve RC7 için sırayla yak

        delay_ms(200);

    }


    // PortD'deki LED'ler (0-7)

    output_c(0x00); // PortC'yi temizle

    for (i = 0; i < 8; i++) {

        output_d(1 << i); // Sırayla RD0-RD7 LED'lerini yak

        delay_ms(200);

    }


    // Tüm portları temizle

    output_b(0x00);

    output_c(0x00);

    output_d(0x00);

}



void main() {

    int birler, onlar;


    setup_psp(PSP_DISABLED); 

    setup_timer_1(T1_DISABLED); 

    setup_timer_2(T2_DISABLED,0,1); 

    setup_CCP1(CCP_OFF); 

    setup_CCP2(CCP_OFF); 

    

    set_tris_a(0x01); // AN0 giriş, diğerleri çıkış

    set_tris_b(0x00); // PortB çıkış (0-7 derece için)

    set_tris_c(0x00); // PortC çıkış (8-9 derece ve 10'lu katlar için)

    set_tris_d(0x00); // PortD çıkış (10, 20, 30... katları için)

    

    output_a(0x00);

    output_b(0x00); // PortB'yi temizle

    output_c(0x00); // PortC'yi temizle

    output_d(0x00); // PortD'yi temizle

    

    

    

    

    led_test();

    

    while (true) {

     sicaklik = ds1820_read();


        // Dereceyi birler ve onlar basamaklarına ayır

        birler = ((int)sicaklik % 10); // Birler basamağı

        onlar = ((int)sicaklik / 10); // Onlar basamağı


    output_b(0x00); // PortB'yi temizle

    output_c(0x00); // PortC'yi temizle

    output_d(0x00); // PortD'yi temizle


        if(birler == 0 )

        {

        output_b(0x01);

        }

        

         if(birler == 1 )

        {

        output_b(0x02);

        }

        

         if(birler == 2 )

        {

        output_b(0x04);

        }

        

         if(birler == 3 )

        {

        output_b(0x08);

        }

         if(birler == 4 )

        {

        output_b(0x10);

        }

         if(birler == 5 )

        {

        output_b(0x20);

        }

         if(birler == 6 )

        {

        output_b(0x40);

        }

         if(birler == 7 )

        {

        output_b(0x80);

        }

         if(birler == 8 )

        {

        output_c(0x01);

        }

         if(birler == 9 )

        {

        output_c(0x02);

        }

        

         if(onlar == 1 )

        {

        output_d(0x01);

        }

        

        if(onlar == 2 )

        {

        output_d(0x02);

        }

        if(onlar == 3 )

        {

        output_d(0x04);

        }

        if(onlar == 4 )

        {

        output_d(0x08);

        }

        if(onlar == 5 )

        {

        output_d(0x10);

        }

        if(onlar == 6 )

        {

        output_d(0x20);

        }

        if(onlar == 7 )

        {

        output_d(0x40);

        }

        if(onlar == 8 )

        {

        output_c(0x40);

        }

        if(onlar == 9 )

        {

        output_c(0x80);

        }

        

        

        delay_ms(1000); // Ölçümler arasında bekleme

    }

}



Hiç yorum yok:

Yorum Gönder

Her yorum bilgidir. Araştırmaya devam...