Şimdi Ara

arkadaslar ds1820nın çalışma şeklini bilen varmı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
4 Misafir - 4 Masaüstü
5 sn
14
Cevap
0
Favori
485
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaslar ds1820nın çalışma şeklini bilen varmı nasıl çalışır kodları nelerdır yardımcı olurmusunuz



  • hiç bilen yokmu arkadaslar nasıl yapcam
  • Hangi dili biliyorsunuz ?
  • C de işinize yararsa buyrun, basic derseniz oda var ancak toparlamam gerekiyor.
    #define DS18B20_Pin RD7
    #define DS18B20_PinYon TRISD7 ile kendi pinlerinizi ve
    "unsigned char OrtamSicaklik, OrtamSicaklikOnda" şeklinde 2 değişkeni önceden tanımlamanız gerekiyor.

    umarım faydası olur.

     
    //***************************************************************************************
    unsigned char DS18B20_init(void) {
    unsigned char sonuc;
    DS18B20_PinYon = 0;
    DS18B20_Pin = 0;
    DelayUs(490); // > 480us
    DS18B20_PinYon = 1;
    DelayUs(65); // > 60us
    sonuc = DS18B20_Pin; // 0 Hazır, 1 Hazır değil
    DelayUs(400);
    return sonuc;
    }
    unsigned int DS18B20_Oku(void) {
    unsigned char sayac;
    unsigned int veri, bitler;
    veri=0; bitler=1;
    for (sayac=0; sayac<16; sayac++) {
    DS18B20_Pin=0; DS18B20_PinYon=0; DelayUs(1); DS18B20_PinYon=1;
    if ( DS18B20_Pin==1 ) veri|=bitler;
    DelayUs(60); bitler=bitler<<1;
    }
    return veri;
    }
    void DS18B20_Yaz(unsigned char veri) {
    unsigned char bitler, sayac;
    bitler = 1;
    for (sayac=0;sayac<8;sayac++) {
    if ( veri&bitler) {
    DS18B20_PinYon=0; DS18B20_Pin=0; DelayUs(3); DS18B20_PinYon=1; DelayUs(60);
    } else {
    DS18B20_PinYon=0; DS18B20_Pin=0; DelayUs(60); DS18B20_PinYon=1;
    }
    bitler=bitler<<1;
    }
    }

    void SicaklikOku(void) {
    unsigned char sayac, bitlertam, bitleronda;
    unsigned int sicaklik, bitler;
    DS18B20_PinYon = 0;
    Tekrar:
    if ( DS18B20_init()==1 ) goto Tekrar;
    DS18B20_Yaz(0xCC); DS18B20_Yaz(0x44);
    DelayMs(250); DelayMs(250); DelayMs(250);
    if ( DS18B20_init()==1 ) goto Tekrar;
    DS18B20_Yaz(0xCC); DS18B20_Yaz(0xBE);
    sicaklik=DS18B20_Oku();
    bitler=1; bitlertam=1; bitleronda=1;
    OrtamSicaklik=0; OrtamSicaklikOnda=0;
    for (sayac=0;sayac<12;sayac++) {
    if (sayac<4) {
    if (sicaklik&bitler) OrtamSicaklikOnda=OrtamSicaklikOnda|bitleronda;
    bitleronda=bitleronda<<1;
    } else {
    if (sicaklik&bitler) OrtamSicaklik=OrtamSicaklik|bitlertam;
    bitlertam=bitlertam<<1;
    }
    bitler=bitler<<1;
    }
    OrtamSicaklikOnda = (OrtamSicaklikOnda * 625) / 1000;
    }



    Edit : programınızda sadece SicaklikOku() diyorsunuz ve değerler üstte verdiğim 2 değişkene geliyor...



    < Bu mesaj bu kişi tarafından değiştirildi tyilgin1 -- 15 Ocak 2008; 12:37:38 >




  • quote:

    Orjinalden alıntı: tyilgin1

    C de işinize yararsa buyrun, basic derseniz oda var ancak toparlamam gerekiyor.
    #define DS18B20_Pin RD7
    #define DS18B20_PinYon TRISD7 ile kendi pinlerinizi ve
    "unsigned char OrtamSicaklik, OrtamSicaklikOnda" şeklinde 2 değişkeni önceden tanımlamanız gerekiyor.

    umarım faydası olur.

     
    //***************************************************************************************
    unsigned char DS18B20_init(void) {
    unsigned char sonuc;
    DS18B20_PinYon = 0;
    DS18B20_Pin = 0;
    DelayUs(490); // > 480us
    DS18B20_PinYon = 1;
    DelayUs(65); // > 60us
    sonuc = DS18B20_Pin; // 0 Hazır, 1 Hazır değil
    DelayUs(400);
    return sonuc;
    }
    unsigned int DS18B20_Oku(void) {
    unsigned char sayac;
    unsigned int veri, bitler;
    veri=0; bitler=1;
    for (sayac=0; sayac<16; sayac++) {
    DS18B20_Pin=0; DS18B20_PinYon=0; DelayUs(1); DS18B20_PinYon=1;
    if ( DS18B20_Pin==1 ) veri|=bitler;
    DelayUs(60); bitler=bitler<<1;
    }
    return veri;
    }
    void DS18B20_Yaz(unsigned char veri) {
    unsigned char bitler, sayac;
    bitler = 1;
    for (sayac=0;sayac<8;sayac++) {
    if ( veri&bitler) {
    DS18B20_PinYon=0; DS18B20_Pin=0; DelayUs(3); DS18B20_PinYon=1; DelayUs(60);
    } else {
    DS18B20_PinYon=0; DS18B20_Pin=0; DelayUs(60); DS18B20_PinYon=1;
    }
    bitler=bitler<<1;
    }
    }

    void SicaklikOku(void) {
    unsigned char sayac, bitlertam, bitleronda;
    unsigned int sicaklik, bitler;
    DS18B20_PinYon = 0;
    Tekrar:
    if ( DS18B20_init()==1 ) goto Tekrar;
    DS18B20_Yaz(0xCC); DS18B20_Yaz(0x44);
    DelayMs(250); DelayMs(250); DelayMs(250);
    if ( DS18B20_init()==1 ) goto Tekrar;
    DS18B20_Yaz(0xCC); DS18B20_Yaz(0xBE);
    sicaklik=DS18B20_Oku();
    bitler=1; bitlertam=1; bitleronda=1;
    OrtamSicaklik=0; OrtamSicaklikOnda=0;
    for (sayac=0;sayac<12;sayac++) {
    if (sayac<4) {
    if (sicaklik&bitler) OrtamSicaklikOnda=OrtamSicaklikOnda|bitleronda;
    bitleronda=bitleronda<<1;
    } else {
    if (sicaklik&bitler) OrtamSicaklik=OrtamSicaklik|bitlertam;
    bitlertam=bitlertam<<1;
    }
    bitler=bitler<<1;
    }
    OrtamSicaklikOnda = (OrtamSicaklikOnda * 625) / 1000;
    }



    Edit : programınızda sadece SicaklikOku() diyorsunuz ve değerler üstte verdiğim 2 değişkene geliyor...


    Geçen msn'de nereye kayboldun?
    Proteusta similasyon yapıp gönderecektim hemen çıkmışın




  • tesekkur ederim asm ile yazılmış olan varmı elinde
  • quote:

    Orjinalden alıntı: strom
    Geçen msn'de nereye kayboldun?
    Proteusta similasyon yapıp gönderecektim hemen çıkmışın


    Üstadım ekranım hep açıtı aslında, belki çevrimdışı durumum sen yanıltmıştır. :)

    Teşekkürler. Bu arada senin konu ne oldu ? Çözebildinmi ?
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orjinalden alıntı: A-H_korsan15

    tesekkur ederim asm ile yazılmış olan varmı elinde


    http://rapid_share.com/files/84054231/DS18B20_DENEME.rar.html

    içinde asm ve hex hali ile proteus simülasyonuda mevcut.

    Kolay gelsin...



    < Bu mesaj bu kişi tarafından değiştirildi tyilgin1 -- 15 Ocak 2008; 20:34:12 >
  • quote:

    Orjinalden alıntı: tyilgin1


    quote:

    Orjinalden alıntı: strom
    Geçen msn'de nereye kayboldun?
    Proteusta similasyon yapıp gönderecektim hemen çıkmışın


    Üstadım ekranım hep açıtı aslında, belki çevrimdışı durumum sen yanıltmıştır. :)

    Teşekkürler. Bu arada senin konu ne oldu ? Çözebildinmi ?


    Yok ya nerede...

    En son inceleyeceğim o konuyu.Şimdi temele devam ediyorum.
  • konu nedir merak ettim...
  • quote:

    Orjinalden alıntı: r2d2droids

    konu nedir merak ettim...


    PS2 Klavye okuma
  • quote:

    Orjinalden alıntı: r2d2droids

    konu nedir merak ettim...


    Yoksa bu konuda bilgin mi var
  • tyilgin1 hocam yardımınız için teşekkur ederim
  • quote:

    Orjinalden alıntı: A-H_korsan15

    tyilgin1 hocam yardımınız için teşekkur ederim



    Faydası olduysa ne mutlu ...
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.