folder Tahribat.com Forumları
linefolder Elektronik / Embedded / Mobil Cihazlar
linefolder 12F675 Ve Nokia Lcd İle Oda Termometresi (Proton Basic)



12F675 Ve Nokia Lcd İle Oda Termometresi (Proton Basic)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    antivir-US
    antivir-US's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek

    Devre tarafımdan tasarlanmış ve yapılmıştır. Başka bi elektronik forumunda da paylaştım bu devreyi, onun için c/p yapıyorum, başkasından çaldım sanmayın haa :D

    Enerji tasarruflu ve düşük voltajlı olmaları nedeniyle nokia ekranlarını seviyorum.
    Küçük ve taşınabilir pilli bir termometreye ihtiyacım olduğu için düşük maliyetli ve az malzemeli bir cihaz yapmak istedim. Aşağıda gördüğünüz gibi bir cihaz çıktı meydana. Bir devre yaparken ciddi bir takıntı yaşıyorum. Devre çok küçük olacak,az ve ucuz malzeme kullanılacak, en düşük işlemci seçilecek ve programında kod tasarrufu yapılarak en az bellek kullanılacak.

    Devrenin birkaç özelliği;

    -Devre her 5 dakikada bir DS18B20 sensörü ile sıcaklık ölçümü yapar. Bu süreyi koddan değiştirebilirsiniz ama pil ömrü için tavsiye etmem. Bu ölçüm sırasında 0.5-1 saniyelik süre için pilden en fazla 2mA akım çekilir. Çalışma anında ise pilden 400 mikro amper akım çekiliyor.
    -12f675 işlemcisi 1KB belleğe sahip bir işlemci, bu 1024 byte belleğe programı sığdırabilmek için font tanımlamadım, yerine basit bir algoritma kullanarak font oluşturdum. Bu şekilde sensör okuma + sıcaklık hesaplaması, lcd haberleşmesi ve font oluşturmada kullanılan algoritma kısmı ile program 875 word kelime ile oluştu(1024-875=149 byte yer kaldı bellekte), başka bişey sığar mı bilmiyorum.
    -devre eksi sıcaklık ölçmüyor, çünkü iç mekan için kullanıyorum. Yoksa ekranın düzenini baştan değiştirmek gerek.
    -cihazı yeni yaptığım için uzun süredir deneyemiyorum bu nedenle üzerindeki cr2032 pil ne kadar dayanır bilemiyorum. Kullanılmadığı zaman arkasındaki switch anahtardan cihaz kapatılabilir.

    DİKKAT EDİLMESİ GEREKEN BAZI NOKTALAR;

    -Devrede kullanılan ekran kesinlikle 3310 ekranı değildir. 3310 ekranı 84x48 iken bu ekran 96x64 çözünürlüklü bir ekrandır bu nedenle 3310 ekranı kullanılamaz. Açıkçası bu ekranın hangi modele ait olduğunu ben de bilmiyorum ve merak ediyorum. Modelini öğrenirsem birkaç daha arayacağım. Bu konuda sizlerden cevap bekliyorum. 3310 ekran değil ama aynı pinlere ve özelliklere sahip bir üst model, sadece 96x64 piksel, yapacak olursanız lütfen buna dikkat edin, telefoncudan ona göre alın.

    -Devreye dikkatli bakarsanız işlemcinin 5 numaralı pininin hemen önünde  DS18B20'ye paralel 4K7 değerinde 805 kılıf SMD direnç var. Devrede yer sorunu olduğundan, daha doğrusu direç için devreyi büyütmek istemediğimden 1 adet SMD malzeme kullandım. Devreyi yapmak isteyen buna dikkat etsin.

    -CR2032 ye ait pil yuvasının çizimi bana ait değil, fakat bu çizimi daha önce başka bir devremde de kullanmıştım ve onda sorun olmamıştı, bunda ise bacaklar tam denk gelmedi sorun yaşadım, sanırım piyasada pil yuvasının çeşitleri mevcut. Buna dikkat edin, gerekirse çizimde oynama yapın.

    Şimdilik diyeceklerim bu kadar, olursa ekleme yaparım.
    Programın bazı kısımları alıntı(sensör okuma ve lcd iletişim) ben yazmadım sadece küçük değişiklik yaptığım noktalar oldu, yoksa kataloglarını hatim etmek lazım, kolay iş değil.
    Yapmak isteyen olursa kolay gelsin;

    PROJE DOSYALARI BURADA: http://s3.dosya.tc/server15/PlfRKg/termometre.rar.html
    resimler;

    z<

    sdf

    xcgv

    dfs

    hjukhf

    fbh

    gdhs

    Kaynak kod;

    '****************************************************************
    '*  Name    : UNTITLED.BAS                                      *
    '*  Author  : [ESAT METİN ERDOĞAN]                              *
    '*  Notice  : Copyright (c) 2013 [İZİNSİZ KULLANMAK HARAMDIR]   *
    '*          : All Rights Reserved                               *
    '*  Date    : 08.12.2013                                        *
    '*  Version : 1.0                                               *
    '*  Notes   :                                                   *
    '*          :                                                   *
    '****************************************************************
    Device = 12F675
    @ CONFIG_REQ 
    @ __config MCLRE_OFF & CP_OFF & WDT_ON & INTRC_OSC_NOCLKOUT & CPD_OFF & BODEN_OFF & PWRTE_ON
    Xtal=4'OSCCAL: 48
    'OSCCAL=48
    CMCON=7
    ANSEL=0
    
    Symbol SCLK=GPIO.1
    Symbol SDIN=GPIO.0
    Symbol RST=GPIO.5
    Symbol D_C=GPIO.4
    Symbol DS=GPIO.2
    TRISIO=0
    GPIO=0
    
    Dim I As Word,ARA As Byte,DIG_1 As Byte,DIG_0 As Byte,KSR As Byte
    Dim LCDDATA As Byte,POSX As Byte,POSY As Byte,SATIR As Byte,SUTUN As Byte
    Dim MESGUL As Byte,HAM As Word,ISI As Word,KSRT As Word
    
    DelayMS 500
    GoSub LCD_AC
    GoSub LCD_SIL
    '************************************************************************************************
    BASLA:
    Clear
    GoSub LCD_SIL
    GoSub DS_OKU
    
    
            ARA=ISI Dig 1:DIG_1=1:DIG_0=0:GoSub SEC
            ARA=ISI Dig 0:DIG_1=0:DIG_0=1:GoSub SEC
            ARA=KSRT:KSR=1:GoSub SEC
            SATIR=6:SUTUN=60:GoSub YOLLA'NOKTA
            Sleep 300
    
    GoTo BASLA
    '***********************************************************************************************
    SEC:
            Select ARA
                    Case 1:GoSub BIR
                    Case 2:GoSub IKI
                    Case 3:GoSub UC
                    Case 4:GoSub DORT
                    Case 5:GoSub BES
                    Case 6:GoSub ALTI
                    Case 7:GoSub YEDI
                    Case 8:GoSub SEKIZ
                    Case 9:GoSub DOKUZ
                    Case 0:GoSub SIFIR
            End Select
    Return                
    '***********************************************************************************************
    BIR:
                    GoSub SOR
            SATIR=0:GoSub YOLLA
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
            SATIR=3:GoSub YOLLA
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
            SATIR=6:GoSub YOLLA                           
    Return
    '***********************************************************************************************
    IKI:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
            SATIR=6:GoSub TEKRAR_8   
    Return
    '***********************************************************************************************
    UC:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_8
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8            
    Return
    '***********************************************************************************************
    DORT:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=1:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=2:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_8
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
            SATIR=6:GoSub YOLLA
    Return
    '***********************************************************************************************
    BES:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
            SATIR=3:GoSub TEKRAR_8
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8
    
    Return
    '***********************************************************************************************
    ALTI:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
            SATIR=3:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=4:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=5:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8
    Return
    '***********************************************************************************************
    YEDI:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
            SATIR=1:GoSub YOLLA
            SATIR=2:GoSub YOLLA
            SATIR=3:GoSub YOLLA
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
            SATIR=6:GoSub YOLLA
    Return
    '***********************************************************************************************
    SEKIZ:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=1:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=2:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=4:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=5:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8
    Return
    '***********************************************************************************************
    DOKUZ:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=1:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=2:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_8
            SATIR=4:GoSub YOLLA
            SATIR=5:GoSub YOLLA
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8
    Return
    '***********************************************************************************************
    SIFIR:
                    GoSub SOR
            SATIR=0:GoSub TEKRAR_8
                    GoSub SOR
            SATIR=1:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=2:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=3:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=4:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=5:GoSub TEKRAR_16
                    GoSub SOR
            SATIR=6:GoSub TEKRAR_8
    Return
    '***********************************************************************************************
    TEKRAR_8:
            GoSub YOLLA:SUTUN=SUTUN+8:GoSub YOLLA:SUTUN=SUTUN+8:GoSub YOLLA
    Return
    '***********************************************************************************************
    TEKRAR_16:
            GoSub YOLLA:SUTUN=SUTUN+16:GoSub YOLLA
    Return
    '***********************************************************************************************
    SOR:
            SUTUN=0
            If DIG_0=1 Then SUTUN=SUTUN+32
            If KSR=1 Then SUTUN=SUTUN+40      
    Return
    '***********************************************************************************************
    DS_OKU:
            OWrite   DS, 1, [$CC, $44]
            DelayMS 750
    OYALAN:
            ORead    DS, 4, [MESGUL]
            If MESGUL = 0 Then OYALAN
            OWrite   DS, 1, [$CC, $BE]
            ORead    DS, 2, [HAM.LowByte, HAM.HighByte]
     
            ISI=HAM/16           
            KSRT=ISI*16
            KSRT=((HAM-KSRT)*10)/16 
            Return
    '***********************************************************************************************
    YOLLA:
            POSX=SUTUN:POSY=SATIR:GoSub LCD_XY_VER:D_C=1
            SHOut SDIN,SCLK,1,[255,255,255,255,255,255,255,255]
            Return
    '***********************************************************************************************
    LCD_YAZ:
            SHOut SDIN,SCLK,1,[LCDDATA]
            Return
    '************************************************************************************************
    LCD_SIL:
            POSX=0:POSY=0:GoSub LCD_XY_VER
            D_C=1
            For I=1 To 500'EKRANINIZ 96*64 İSE BURAYI 500 YAP//84*48 İSE 252
            LCDDATA=0:GoSub LCD_YAZ '1. yarı siliniyor
            LCDDATA=0:GoSub LCD_YAZ '2. yarı siliniyor   
            Next 
            Return
    '************************************************************************************************ 
    LCD_XY_VER:
            D_C=0
            LCDDATA=%01000000 | POSY
            GoSub LCD_YAZ
            LCDDATA=%10000000 | POSX
            GoSub LCD_YAZ
            D_C=1
            Return 
    '************************************************************************************************
    LCD_AC:
            RST=0 
            DelayMS 10  
            RST=1  
            D_C=0  ' RESET LCD   
            LCDDATA= $21: GoSub LCD_YAZ        ' LCD EXTENDED COMMANDS
            LCDDATA= $b0: GoSub LCD_YAZ        ' SET LCD Vop (CONTRAST)
            LCDDATA= $06: GoSub LCD_YAZ        ' SET TEMP COEFFICENT
            LCDDATA= %00010101: GoSub LCD_YAZ  ' LCD BIAS MODE
            LCDDATA= $20: GoSub LCD_YAZ        ' LCD STANDARD COMMANDS
            LCDDATA= $0c: GoSub LCD_YAZ        ' LCD IN NORMAL MODE
            Return
    '************************************************************************************************
    End      

    Camınızı kırar, duvarınıza işer, bisikletinize biner, tekerini keser, arabanızı çizer, zilinize basar kaçarım. Kısacası ben annenizin sokağa çıkarken uzak dur dediği çocuklardan biriyim.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    HeyQirs
    HeyQirs's avatar
    Kayıt Tarihi: 15/Temmuz/2008
    Erkek

    bomba olmus


    forumda yazmıyorum artık okuyorum yeter adam olana.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tnrsk
    Tnrsk's avatar
    Kayıt Tarihi: 01/Ağustos/2005
    Erkek

    eline sağlık birader güzel olmuş 


  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    güzel olmuş eline sağlık, bunu biraz daha geliştir bence, mesela alarm kurulabilsin, atıyorum sıcaklık 20 derecenin altına düştüğünde kombiyi çalıştırsın ve 25 e çıktığında kapatsın.. tabi o kendisi ayar yapıyor ama benim kast ettiğim direk müdahale değil bir röle koyarak bu işi yaptırman, bunu da herhangi bir analog kazanlanlar olan dairede kullanabilirsin ya da yangın alarmı gibi bi şey olabilr v.s. 


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ---ALPER---
    ---ALPER---'s avatar
    Kayıt Tarihi: 21/Aralık/2009
    Erkek

    Bir elektronikçi olarak şu kadarını söyleyebilirim, gerçekten mükemmel çalışmışsın üstad, özenerek işin tekniğini sömürerek :D

    Kod kısmına gelince de, hangimiz öyle kodlamıyoruz ki :D :D ben picbasic teyim hala :D

    başarılarının devamını dilerim.


    Nerde şekil şukul varsa,hepsi toplanmış...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cicosz
    cicosz's avatar
    Kayıt Tarihi: 22/Ağustos/2005
    Erkek

    hocam güzel çalışma olmuş tebrikler. kullandığın ekran 1100 ekranı :) 

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    antivir-US
    antivir-US's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek

    unbalanced

    Söylediğin şeyi tembellikten yapmıyorum. düşüncem var aslında. Bir el kumandası olacak pilli ve üzerinde vericisi olan, istediğim odaya götüreceğim oradaki ısıya göre ve ayarladığım sıcaklıklar arasında kombiyi kontrol edecek. Ama bazı sorunlar var onları da düşünüyorum. Sistem pilli olacak(prize takıldığında cihaazdaki ısı artışı üzerindeki sensörü etkiliyor) ekran da buna göre tasarruflu olacak, verici pille çalışabilecek kadar düşük voltajlı olacak, ister sıcaklığa göre istenirse belli saat aralıkları ile açılıp kapanacak, işlemci de bunlara uygun falan falan...


    ---ALPER--- 

    Pic basicle proton neredeyse aynı, yaklaşık %80 lik benzerlik var. Sadece protonda bazı kart okuyucular, program belleğini yazma silme, grafik ekran zart zurt şeyler var ve pic basic protona göre daha kararlı. Proton sanırım crack yüzünden sorun çıkarıyor ve bazı aptal hatalar yapıyor.

    Pic basicten istediğin anda protona geçebilirsin, alışman 1-2 gününü alır, örneğin picbasicteki SHIFTOUT komutu protonda SHOUT şeklinde, bazı komutlar bunun gibi. Takıldığın yerde manueli açar bakarsın.


    cicosz

    Yok hocam 1100 değil bu ekran, ama 1100 dan daha alt model telefonlardan birine ait. 1100 ekranı şunlar: https://www.google.com.tr/search?q=nokia+1100+lcd&client=firefox-a&hs=tf2&rls=org.mozilla:tr:official&tbm=isch&tbo=u&source=univ&sa=X&ei=ZEzFUqzfEoW24ATl54HADg&ved=0CCsQsAQ&biw=1680&bih=946


    Camınızı kırar, duvarınıza işer, bisikletinize biner, tekerini keser, arabanızı çizer, zilinize basar kaçarım. Kısacası ben annenizin sokağa çıkarken uzak dur dediği çocuklardan biriyim.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Dos_Attach
    Dos_Attach's avatar
    Kayıt Tarihi: 29/Haziran/2007
    Erkek

    Hocam wdt neden açık acaba ? wdt yüzünden programda kesme sorunu olmicakmı ? 


    Dolar Ve Euro zulada elimde çek defteri, bir imzayla işin tamam arabanı çek serseri.!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    antivir-US
    antivir-US's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek
    Dos_Attach bunu yazdı

    Hocam wdt neden açık acaba ? wdt yüzünden programda kesme sorunu olmicakmı ? 

    Hocam başla etiketi dahilinde 

    SLEEP 300

    komutu var. Bu komut enerji tasarrufu için işlemciyi 300 saniye yani 5 dakika uykuya sokuyor. İşlemcinin 5 dakika sonunda uykudan uyanabilmesi için ya reset atılmalı, ya dış kesme sinyali verilmeli, ya timer kesmesine gitmeli ya da WDT ile uyandırılmalıdır. Ben burada sadece WDT ile uyandırmayı kullandım. zaten programda SLEEP komutunu kullandın ve derleyiciye sigorta ayarında WDT OFF gösterdysen derleyici ingilizce olarak "WDT KAPALI, PİC ASLA UYANAMAYACAK" diye uyarı veriyor derleme sonrasında.


    Camınızı kırar, duvarınıza işer, bisikletinize biner, tekerini keser, arabanızı çizer, zilinize basar kaçarım. Kısacası ben annenizin sokağa çıkarken uzak dur dediği çocuklardan biriyim.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Dos_Attach
    Dos_Attach's avatar
    Kayıt Tarihi: 29/Haziran/2007
    Erkek
    antivir-US bunu yazdı
    Dos_Attach bunu yazdı

    Hocam wdt neden açık acaba ? wdt yüzünden programda kesme sorunu olmicakmı ? 

    Hocam başla etiketi dahilinde 

    SLEEP 300

    komutu var. Bu komut enerji tasarrufu için işlemciyi 300 saniye yani 5 dakika uykuya sokuyor. İşlemcinin 5 dakika sonunda uykudan uyanabilmesi için ya reset atılmalı, ya dış kesme sinyali verilmeli, ya timer kesmesine gitmeli ya da WDT ile uyandırılmalıdır. Ben burada sadece WDT ile uyandırmayı kullandım. zaten programda SLEEP komutunu kullandın ve derleyiciye sigorta ayarında WDT OFF gösterdysen derleyici ingilizce olarak "WDT KAPALI, PİC ASLA UYANAMAYACAK" diye uyarı veriyor derleme sonrasında.

    Çok teşekkür ederim hocam aydınlattığın için. Projede çok güzel olmuş eline sağlık.


    Dolar Ve Euro zulada elimde çek defteri, bir imzayla işin tamam arabanı çek serseri.!
Toplam Hit: 2810 Toplam Mesaj: 10