avatar_ormeva

SHT11 Hakkında Yardım

Başlatan ormeva, 01 Ocak 2015, 23:47:16

ormeva

Selam Arkadaslar SHT11 lerde bu şekilde bağlantı yapabilirmiyiz. PIC de 2 tel üzürinden ( CLK-DATA )okutturmak istiyorum DS18B20 lerde oluyordu, SHT11 ler hakkında fazla bir bigiye sahib değilim yardımcı olursanız çok sevinirim.




~ENES~

Bu şekli ile okuma yapamazsiniz diye düşünüyorum çünkü okunacak olan sensor seçimini yapmak için seçme ucu olmali ki istediğiniz sensorden data okuyabilesiniz .. Birde şöyle bir durum var sanirim de 18b20 de vardi her sensorun registerlerine adresler atayarak o adresteki bilgiyi seri olarak okuyabiliyorduk ayrıca bu tek hat üzerinden yapiliyordu ama hem data hem clk sinyali isin içine girdiyle anlattigim şekilde yapilmasi zor gibi geliyor .. Ete hocaya sormak gerekir ben bu şekilde kullanma gereği duymadim sensorleri acikcasi ...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

SHT 11 serisi sensörleri bu şekilde bağlayamazsın. Her ne kadar I2C formatına yakın bir formatta haberleşme yapsalarda sensörler arasında adres seçimi yapabileceğin ekstra bir pin bulunmamaktadır. Sensör registerleri arasında Fabrika numarası gibi bir ilave bilgide yoktur (DS18B20 sensörlerde bu özellik ile sensörler bir arada bağlanabilmektedir).
Bu nedenle yapılacak tek şey her bir sensörü ayrı bir pine bağlaman gerekmektedir.

Ete

~ENES~

Yada şöyle bir öneri yapayım bu şekilde bağlayıp besleme uclarını transistör ile seçip bilgiyi beslemeyi verdiğin sensörden okuyabilirsin...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Bence de en güzeli 1 adet 4051 analog multiplexer kullanıp çıkışı 10K ile pullup yapmak ve adres bacaklarından sensör seçip okuma işini gerçekleştirmektir.

Önceden böyle bir şeyi denemdim ama çalışma ihtimali epeyce yüksek.

Ete


fofo

2 adet SHT11 sensörünü aynı devrede ayrı pinler kullanarak çalıştırabilirmiyiz?

ete

Bunu sorman bile yanlış. Birini çalıştırabiliyorsan ikisi neden çalışmasınki?
Elbette çalıştırabilirsin.

Ete


fofo

ETE hocam ikisini çalıştıramadım

ete

Bana kalırsa birini çalıştırıyorsundurda diğerini çalıştıramamışsındır. Ayrı bacaklara nbağladıktan sonra ha bir tane ha iki tane bağlamışsın sorun olmaması gerekir.

Şemayı ve programı göreyim.
Ete

fofo

ETE hocam sizin program  ikinci sensörde program yavaşlıyor.

fofo

#10
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 09.09.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 4

@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000000
TRISC=%11110000
TRISD=%00000010
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG      PORTB   
DEFINE LCD_DBIT      4     
DEFINE LCD_RSREG   PORTB   
DEFINE LCD_RSBIT   2   
DEFINE LCD_EREG      PORTB   
DEFINE LCD_EBIT      3     
DEFINE LCD_BITS      4   
DEFINE LCD_LINES   2   
ADCON1 = 7             
'---------------------------değişkenler-----------------------------------------
    E        var    byte
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    GUN      VAR    BYTE
    MEM      var    byte
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    Y        VAR    BIT
    SAYAC    VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE     
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    ;-----------------------
    ISI12     VAR    BYTE       
    ISI22     VAR    BYTE       
    U12       VAR    BYTE         
    U22       VAR    BYTE
    ;--------------------------
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAYI     VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAM.BYTE0
    H1       VAR    HAM.BYTE1
    H2       VAR    HAM.BYTE0
    H3       VAR    HAM.BYTE1
    HAM      VAR    WORD
    HAM2     var    word
    RAW      var    word
    ISIAYAR  VAR    WORD
    ISI      VAR    WORD
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD
    ;---------------------
    P12       VAR    WORD
    P22       VAR    WORD
    P32       VAR    WORD
    ;----------------------             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    W2       var    word
    DUR      VAR    BYTE
    CLK      VAR    PORTA.5
    DTA      VAR    PORTA.3
    CLK2     VAR    PORTD.0
    DTA2     VAR    PORTD.1
    ISARET  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
    SIGN    VAR     BIT   'ısı isareti 0 ise artı 1 ise eksi
    HATA    var     BIT
    MENU    VAR     PORTA.0
    YUKARI  VAR     PORTA.1
    ASAGI   VAR     PORTA.2
    T1 var word
    T2 var word
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL BUZER=PORTE.0
   
    RTC_RST     var PORTC.5
    RTC_CLK     var PORTC.6
    RTC_DTA     var PORTC.4
'-----------------------------B A Ş L A N G I Ç ------------------------------   
          LOW ROLE1
          LOW ROLE2
          LOW ROLE3
        PAUSE 20
    '   CLEAR: 'TRISA=%00111111:TRISB=0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
         PAUSE 500:ISARET=0
        LCDOUT $FE,$40,$6,$9,$9,$6,$0,$0,$0,$0        'derece işareti dataları   
        LCDOUT $FE,$48,$04,$0e,$0e,$0e,$1f,$04,$04,$0       
'-------------------------------------------------------------------------------
                       
         LCDOUT $FE,1, "KULUCKA MAKiNESi"               
         lcdout $FE,$C0,"  VERSIYON 1.6  "
         PAUSE 2000
         LCDOUT $FE,1
         gosub ZAMAN_OKU
         HIGH BUZER:PAUSE 50:LOW BUZER         
BASLA:
        KONTROL=%00000011:HAM=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP:GOSUB EKRAN1
      'PAUSE 250
              KONTROL=%00000101:HAM=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP
      ''GOSUB EKRAN2
         pause 200
       KONTROL=%00000011:HAM2=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL2
       
        Gosub ISIHESAP2:GOSUB EKRAN1
      PAUSE 250
              KONTROL=%00000101:HAM2=0 'RUTUBET ÖLÇME
        GOSUB OLCUMAL2
        GOSUB RUTHESAP2
      '  pause 200
       GOSUB ISIKONTROL
        GOSUB RUTKONTROL
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYAR_MENULERI
        ENDIF
         goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------   
EKRAN1:   
         GOSUB ZAMAN_OKU
         GOSUB DONUSEBAK
          READ $07,GUN
          IF GUN=255 THEN GUN=1
        lcdout $FE,$80,"UST:",DEC2 ISI1,".",dec1 ISI2 ,0,"C "
        lcdout $FE,$C0,"ALT:",DEC2 ISI12,".",dec1 ISI22 ,0,"C "
        LCDOUT $FE,$90,"USTN:%",dec2 u1,"  ",DEC2 GUN,".GUN"
         LCDOUT $FE,$D0,"ALTN:%",DEC2 U2," ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
          READ $09,DUR
            IF SN = DUR THEN LOW ROLE3
            IF SAAT=0 AND DAK=0 AND SN=0 THEN
               GUN=GUN+1
            IF GUN=31 THEN GUN=1
         WRITE $07,GUN
         PAUSE 600
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ '''''''''''''''''             
DONUSEBAK:
         
         READ $10,ZAM
         IF ZAM=255 THEN ZAM=1
         
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN
                 
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=2 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=10 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               

                 IF SAAT=14 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF           

                 IF SAAT=16 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 

                 IF SAAT=18 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF             

                 IF SAAT=20 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF

                 IF SAAT=22 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF
        ENDIF
       
        IF ZAM=3 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=3 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=6 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=9 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF
                   
                 IF SAAT=15 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=18 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=21 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF
        ENDIF
                           
        IF ZAM=4 THEN
                 IF SAAT=0 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=4 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIf                 
                 
                 IF SAAT=8 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF               
                 
                 IF SAAT=12 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF                 
                 
                 IF SAAT=16 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF
                 
                 IF SAAT=20 AND DAK=0 AND sn=0 THEN
                 HIGH ROLE3
                 ENDIF           
        ENDIF
       
             
RETURN
''''''''''''''''TEK BIP'''''''''''''''''''''''''''''''''       
' BIP:
'    HIGH buzer   
'     for sayac=0 to 2
' pauseus 15535
'   next
'    LOW buzer
' RETURN
  BIP:
    HIGH BUZER   
pause 50
     LOW BUZER 
  RETURN
''''''''''''''''ÇİFT BİP''''''''''''''''''''''''''
  BIPBIP:
     HIGH buzer   
    PAUSE 50
      LOW buzer
    PAUSE 100
     HIGH BUZER
    PAUSE 50
      LOW BUZER
  RETURN
'------------------------------- İŞLEM START -----------------------------------
T_START:
      OUTPUT DTA:OUTPUT CLK
        HIGH DTA
         LOW CLK
       PAUSE 1
        HIGH CLK
         LOW DTA
       PAUSE 1
         LOW CLK
       PAUSE 1
        HIGH CLK
       PAUSE 1
        HIGH DTA
         LOW CLK
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL:
           GOSUB T_Start
        SHIFTOUT DTA,CLK,1,[KONTROL]
           INPUT DTA
         PULSOUT CLK,10
                 HATA=0
             FOR W=0 to 65500
              IF DTA=0 then GIT
            NEXT W
                 HATA=1
GIT:         
         SHIFTIN DTA,CLK,0,[H1]
          OUTPUT DTA
             LOW DTA
         PULSOUT CLK,10
           INPUT DTA
         SHIFTIN DTA,CLK,0,[H0]
         PULSOUT CLK,10
RETURN


'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP:
           If ham<4000 then
              ISARET=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAM)/100
              ISI2=((4000-ham)//100)/10   
              RETURN
        endif
              ISI1=(HAM-4000)/100
              ISI2=((HAM-4000)//100)/10
              RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP: 
           ISI=ISI1*10+ISI2
           p1=(26542-(54722**ham+ham))**ham-40     
           P2=655+(HAM*5)+(HAM**15917)      
           P3=(P2**(ISI+2480))-(P2**2730)+P1   ' kompanse edilmiş değer
           U1=p3/10:U2=p3//10
           IF ham>3710 THEN
              u1=0:U2=0
           ENDIF 
           return
;------------------2.SHT11---------------------------------------------
T_START2:
      OUTPUT DTA2:OUTPUT CLK2
        HIGH DTA2
         LOW CLK2
       PAUSE 1
        HIGH CLK2
         LOW DTA2
       PAUSE 1
         LOW CLK2
       PAUSE 1
        HIGH CLK2
       PAUSE 1
        HIGH DTA2
         LOW CLK2
RETURN
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL2:
           GOSUB T_Start
        SHIFTOUT DTA2,CLK2,1,[KONTROL]
           INPUT DTA2
         PULSOUT CLK2,10
                 HATA=0
             FOR W2=0 to 65500
              IF DTA2=0 then GIT2
            NEXT W
                 HATA=1
GIT2:         
         SHIFTIN DTA2,CLK2,0,[H3]
          OUTPUT DTA2
             LOW DTA2
         PULSOUT CLK2,10
           INPUT DTA2
         SHIFTIN DTA2,CLK2,0,[H2]
         PULSOUT CLK2,10
RETURN
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------     
ISIHESAP2:
           If ham2<4000 then
              ISARET=1 'sıcaklık eksi değerde demek
              ISI12=(4000-HAM2)/100
              ISI22=((4000-ham2)//100)/10   
              RETURN
           endif
              ISI12=(HAM2-4000)/100
              ISI22=((HAM2-4000)//100)/10
           RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
RUTHESAP2:
              ISI=ISI1*10+ISI2
              p12=(26542-(54722**ham2+ham2))**ham2-40     
              P22=655+(HAM2*5)+(HAM2**15917)       
              P32=(P22**(ISI2+2480))-(P22**2730)+P12   
              U12=p32/10:U22=p32//10
              IF ham2>3710 THEN
                U12=0:U22=0
              ENDIF
              return 
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         ISI=ISI1*10+ISI2
         READ $20,ISIAYAR.BYTE1
         READ $21,ISIAYAR.BYTE0
            IF ISIAYAR=65535 THEN ISIAYAR=1
            if ISIAYAR<ISI then   
            LOW Role1
         ELSE
            HIGH ROLE1
        ENDIF
        RETURN
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
         READ 2,NEM
           IF NEM=255 THEN NEM=0
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
RETURN
'-------------------------------------------------------------------------------
AYAR_MENULERI:
        WHILE MENU=1:WEND
        GOSUB BIP
       GOSUB TEMIZLE
ISI_AYARI:
       lcdout $fe,$c0,"   ISI LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
        GOSUB BIP
         GOTO TERM_KONTROL
        ENDIF

           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO NEM_AYARI
        ENDIF
   
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO GUNN
        ENDIF
         GOTO ISI_AYARI
     
NEM_AYARI:

       lcdout $fe,$c0,"   NEM LiMiTi   "
           IF MENU=1 then
        WHILE MENU=1:WEND
         GOSUB BIP
         GOTO NEM_KONTROL
        ENDIF
           
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO CIK
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO ISI_AYARI
        ENDIF
         
         goto NEM_AYARI     

CIK:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
CK:
     
       lcdout $fe,$c0," MENUDEN CIKIS "
           IF MENU=1 then
        WHILE MENU=1:WEND
        GOSUB BIP
         GOTO BASLA
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO MOTO
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO NEM_AYARI
        ENDIF   
         goto CK
MOTO:
        GOSUB TEMIZLE
MOTOR:
       
       lcdout $fe,$c0," CEViRiCi MOTOR "
           IF MENU=1 then
        WHILE MENU=1:WEND
        GOSUB BIP
         GOTO MOT_AYAR
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO SAATT
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO CIK
        ENDIF   
         goto MOTOR
SAATT:
       GOSUB TEMIZLE
SAT:
       lcdout $fe,$c0,"  SAAT AYARI   "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
        GOSUB BIP
         GOTO SAATAYAR1
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO GUNN
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO MOTO
        ENDIF   
         goto SAT
         
GUNN:
       GOSUB TEMIZLE
GUNU:
     lcdout $fe,$c0,"  GUNU SIFIRLA  "
       
           IF MENU=1 then
        WHILE MENU=1:WEND
        GOSUB BIP
         GOTO GUNAYARI
        ENDIF
         
           IF ASAGI=1 then
        WHILE ASAGI=1:WEND
        GOSUB BIP
         GOTO ISI_AYARI
        ENDIF
         
           IF YUKARI=1 then
        WHILE YUKARI=1:WEND
        GOSUB BIP
         GOTO SAATT
        ENDIF   
         goto GUNU
GUNAYARI:
       GOSUB TEMIZLE
       WHILE MENU=1:WEND
GUNA:
       READ $07,GUN
     lcdout $FE,$C0,"GUN:",DEC2 GUN
     IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
        gosub bip
        IF YUKARI=1 THEN GUN=1
        PAUSE 10
        WRITE $07,GUN
           
           
     GOTO GUNA         
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTOR_AYAR:

         READ $0,SAYI
       lcdout $fe,$80,"  MOTOR DURUMU  "     
           IF MENU=1 THEN M_ZAMANI
        WHILE MENU=1:WEND
           IF YUKARI=1 THEN SAYI=SAYI+1
           gosub bip
        WHILE YUKARI=1:WEND
           IF SAYI=2 THEN SAYI=0
        WRITE $0,SAYI       
          IF SAYI=1 THEN lcdout $FE,$C0,"     ACIK       "
             IF SAYI=0 THEN LCDOUT $FE,$C0,"    KAPALI      "
             GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_CALISMA:
         READ $09,DUR
           IF MENU=1 THEN AYARLANDI
        WHILE MENU=1:WEND
       lcdout $fe,$80,"MOT.DONUS SURESi"
       lcdout $FE,$C0,"SURE :",DEC2 DUR," SANIYE"
           IF YUKARI=1 THEN DUR=DUR+1
        WHILE YUKARI=1:WEND
        gosub bip 
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN DUR=DUR-1
        WHILE ASAGI=1:WEND
        gosub bip
           IF DUR=255 THEN DUR=59
        WRITE $09,DUR
         GOTO MOTO_CALISMA                         
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
MOTO_ZAMANI:
        READ $10,ZAM
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        IF ZAM=5 THEN ZAM=4
        WHILE YUKARI=1:WEND
        ENDIF
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        IF ZAM=0 THEN ZAM=1
        WHILE ASAGI=1:WEND
        ENDIF     
        WRITE $10,ZAM:PAUSE 10
        IF MENU=1 THEN M_CALISMA
        lcdout $fe,$80,"MOTORU ",DEC2 ZAM," SAATTE"
        lcdout $FE,$C0,"BIR CEVIREYIM"
          GOTO MOTO_ZAMANI

                                                                                 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1,"   AYARLANDI   "
        PAUSE 1000
        gosub BIPBIP
        GOSUB TEMIZLE
         goto CIK       
TEMIZLE:
        lcdout $fe,1
RETURN       
'-------------------------------------------------------------------------------
TERM_KONTROL:
       
       GOSUB TEMIZLE
       READ $20,ISIAYAR.BYTE1
       READ $21,ISIAYAR.BYTE0
       IF ISIAYAR=65535 THEN ISIAYAR=1

TERM_KONT:
       lcdout $fe,$80,"  ISI LiMiTi    "
       lcdout $FE,$C0,"AYARI:",DEC2 ISIAYAR/10,",",DEC1 ISIAYAR//10
         
       IF YUKARI=1 then ISIAYAR=ISIAYAR+1
       WHILE YUKARI=1:WEND
       IF ISIAYAr>1210 then ISIAYAR=1210           
       IF ASAGI=1 then ISIAYAR=ISIAYAR-1
       WHILE ASAGI=1:WEND
       IF ISIAYAR=65535 then ISIAYAR=1           
       WRITE $20,ISIAYAR.BYTE1
       WRITE $21,ISIAYAR.BYTE0:PAUSE 10         
       IF MENU=1 THEN
         WHILE MENU=1:WEND
          lcdout $fe,1     
         GOTO AYARLANDI
       ENDIF               
      GOTO TERM_KONT             
       RETURN
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
NEM_KONT:
       lcdout $fe,$80,"   NEM LiMiTi   "
       lcdout $FE,$C0,"AYARI:",DEC2 NEM
           IF YUKARI=1 then NEM=NEM+1
        WHILE YUKARI=1:WEND
           IF NEM=01 then NEM=121
           IF ASAGI=1 then NEM=NEM-1
        WHILE ASAGI=1:WEND
           IF NEM=121 then NEM=01         
        WRITE 2,NEM:PAUSE 10         
           IF MENU=1 THEN
        WHILE MENU=1:WEND
         GOTO AYARLANDI
        ENDIF                 
         GOTO NEM_KONT   
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
SAATAYAR1:
       lcdout $fe,1
           IF MENU=1 then SAATAYAR1
        gosub EKRAN0

SAATAYAR:
        PAUSE 200
       lcdout $fe, $c7, dec2 SAAT
       lcdout $fe,$0e
       lcdout $fe, $10
              E=0
       button MENU, 1, 255, 255, E, 1,DAKIKAAYAR1
       button YUKARI,1,255,255,E,1,SAATIARTIR
       button ASAGI,1,255,255,E,1,SAATIAZALT
         goto SAATAYAR

SAATIARTIR:
           IF YUKARI=1 then SAAT=SAAT+1
           IF SAAT=24 then SAAT=0
         goto SAATAYAR

SAATIAZALT:
           IF ASAGI=1 then SAAT=SAAT-1
           IF SAAT=255 then SAAT=23
         goto SAATAYAR
DAKIKAAYAR1:
           IF MENU=1 then DAKIKAAYAR1
       lcdout $fe,1
        gosub EKRAN0
DAKIKAAYAR:
        PAUSE 200
       lcdout $fe, $ca, dec2 DAK
       lcdout $fe,$0e
       lcdout $fe, $10
              E=0
       button MENU, 1, 255, 255, E, 1,ZAMAN_B
       button YUKARI,1,255,255,E,1,DAKARTTIR
       button ASAGI,1,255,255,E,1,DAKAZALT
DAKARTTIR:
           IF YUKARI=1 then DAK=DAK+1
           IF DAK=60 then DAK=0
         goto DAKIKAAYAR
DAKAZALT:
           IF ASAGI=1 then DAK=dak-1
           IF DAK=255 then DAK=59
         goto DAKIKAAYAR
ZAMAN_B:
           IF MENU=1 then ZAMAN_B
        gosub ZAMAN_YAZ
        GOSUB TEMIZLE
        GOSUB AYARLANDI
         goto CIK       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
     low RTC_RST
  return

ZAMAN_YAZ:
        MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI

    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10
    high RTC_RST         
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, 128]  'YAZ
     low RTC_RST
PAUSEUS 10
  return

CEVIR:
        ONLAR=MEM & %01110000
       ONLAR=ONLAR>>4
      BIRLER=MEM & %00001111
       SAYI=ONLAR*10+BIRLER
         return

TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return

EKRAN0:
lcdout " SAATi AYARLA "
lcdout $fe,$c0,"SAAT : ",dec2 SAAT,":",dec2 DAK,":",dec2 SN
return
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
END

ete

#11
Birileri programda tadilat yapmış. Ama yapılan tadilatlar sorunlu. Olması gerektiği şekilde düzeltip tekrar geri kayıt ettim.
Sen yükle ve yeniden dene bakalım ne olacak.

Diğer taraftan bu program şayet 16F877 kullanılıyor ise çalışır. Ama 16F877A kullanılırsa çalışmaz yada yanlış çalışır.
Zira 877A da komparatör vardır ve onunda iptal edilmesi gerekir. Şayet 877A kullanıyorsanız programa CMCON=7 komut satırını ilave ediniz.

Hataları sıralayacak olursak,
GIT:         
              IF HATA=1 then
           endif
komut satırında bir komut verilmeye başlanmış ama gerisi yok. HATA=1 ise program ne yapacak belli değil. Hata kısmını kullanmadığınız belli o halde o satırı komple silmek lazım sildim.
ISIHESAP:
           If ham<4000 then
              ISARET=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAM)/100
              ISI2=((4000-ham)//100)/10   
         goto ISISON
        endif
              ISI1=(HAM-4000)/100
              ISI2=((HAM-4000)//100)/10
ISISON:   
           
           ISI1=(HAM-4000)/100
           ISI2=((HAM-4000)//100)/10
RETURN

komut satırlarına bakacak olursanız, sıcaklık eksi ise bir hesap yapıp GOTO ISISON ile ikinci etikete yönendiriyorsun ama orada hesapladığın değerleri yeniden değiştirmiş oluyorsun buda yanlış. Burada ISISON kısmını tamamen silmek lazım.
Aynı sorun ikinci sensörde de var. Yine hesaplama kısmında bazı farklı hesaplamalar gördüm.
Senin formülün,
P3=(P2**(ISI*10+2480))-(P2**2730)+P1
Benim formülüm,
P3=(P2**(ISI+2480))-(P2**2730)+P1
şeklinde arada çok fark var sen ISI değerini birde 10 ile çarpıyorsun. Bu sonucu çok fazla değiştirebilecek bir uygulama.
Bunların hiç birisi geç okuma sorununu çözemez yalnızca CMCON=7 komutu bunu açıklayabilir. Şayet 877A kullanıyor ve mevcut programı kullanıyorsan komparatörler iptal edilmediği için ya okuma zorluğu çekiyorsun yada başka bir sorun var devrende demekten başka bir şey elimden gelmiyor.

Ete

fofo


ete

Kayıt etmedim senin code tag içinde verdiğin programı değiştirdim.

Ete

fofo

sorun devam ediyor ETE hocam  16f7877  kullanıyorum. ikinci sensör çalışmıyor.

Powered by EzPortal