otomatik çiçek sulama projesi bazı sorunlar var lütfen yardım edin!

Başlatan Mucit23, 30 Haziran 2010, 13:09:25

ete

Kart üzerine monte 2-3 wattlık bir trafo işini görür. Piyasada sarı renkli trafolar var onlardan birini alabilirsin.
İllaki voltaj tutacak diyede bir şey yok. Nasıl olsa trafo çıkışını doğrultup bir gerilim bölücü yapacaksın. Bu nedenle hiç bulamaz isen 6V AC trafo bile olur. İdeali sanırım 4,5V yada 3V çıkışlı trafo olur.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23

merhabalar ete hocam
hocam kuluçka makinasının son haliyle pcb yi hazırladım malzemeleri yerleştirdim fakat bi sorun var devre üzerinde pic çalışmıyor.Nedense lcdde karelerden başka bişey gözükmüyor benim bildiğim kadarıyla pic çalışmayınca lcdde kareler çıkar.
iki adet 16F877 ile denedim ikisindede aynı sorun var pic bozuk desem programlayıcı sorun çıkarmada pice programı yüklüyor.Anlayamadım doğrusu simülasyonda program çok iyi çalışıyor.
acabada pcb de mi hata yaptım defalarca incelememe rağmen bi hata bulamadım picin besleme bacaklarında 5 volt var .beslemedede sorun yok gibi belki benim gözümden kaçmıştır bide sizler bakın pcb ye
Acaba rogramdamı sorun var ama simülasyonda çalışıyor acaba 16f877 için çok mu ağır oldu program daha programda bir kelime bile yazacak yer kalmadı 8045 words boyutunda oldu gerçi sorunsuz derleniyor program  ama bilmiyorum belki başka bişey vardır.
aynı işlemcilerle ufak bi devre üzerindeki röleleri 50 ms aralıklarla açıp kapayacak şekilde ufak bi program yazdım ;  Simülasyonda çalışıyor pice sorunsuz yüklendi ama gerçekte çalışmıyor.Ne yapacağımı şaşırdım doğrusu sizin yardımlarınız ihtiyacım var
program en son haliyle aşağıdaki gibi bi bakın isterseniz belki programdada sorun olabilir

'****************************************************************
'*  Name    : KULUÇKA.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [Desıgn by Ferhat YOL]         *
'*          : All Rights Reserved                               *
'*  Date    : 21.07.2010                                        *
'*  Version : 2.0                                               *
'*  Notes   :Bu program Kuluçka makinesi için Ferhat YOL        *
'*           Tarafından yazılmıştır                           *                                 
'****************************************************************
DEFINE OSC 4
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_ON
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%111111
TRISB=%00000001
TRISC=%11110000
TRISD=%00000000
TRISE=%00000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=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	4
ADCON1 = 7      
'---------------------------değişkenler----------------------------------------- 
    A        VAR    BYTE
    D        VAR    BYTE
    E        var    byte 
    SYC      VAR    BYTE
    AY       var    byte
    YIL      var    byte
    SN       VAR    BYTE
    DAK      VAR    BYTE
    SAAT     VAR    BYTE
    HAFTA    VAR    BYTE
    GUN      VAR    BYTE
    MEM      var    byte 
    ONLAR    VAR    BYTE
    BIRLER   VAR    BYTE
    GN       VAR    BYTE
    ZAMAN    VAR    BYTE
    Y        VAR    BIT
    SY       VAR    BIT
    AYR      VAR    BIT
    AYAR_D   VAR    BIT
    SAYI     VAR    BYTE 
    SAYAC    VAR    BYTE
    AYAR     VAR    BYTE
    TERM     VAR    BYTE
    NEM      VAR    BYTE
    KONTROL  VAR    BYTE
    ORTAK    VAR    BYTE
    CNY      VAR    BYTE	   
    ISI1     VAR    BYTE       
    ISI2     VAR    BYTE       
    U1       VAR    BYTE         
    U2       VAR    BYTE
    C0       VAR    BYTE
    Z        VAR    BYTE
    SAY      VAR    BYTE
    ZAM      VAR    BYTE
    H0       VAR    HAMISI.BYTE0
    H1       VAR    HAMISI.BYTE1
    HAMISI	 VAR    WORD
    RAW      var    word
    ISISHT   VAR    WORD 
    RUT      VAR    WORD
    P1       VAR    WORD
    P2       VAR    WORD
    P3       VAR    WORD             
    C        VAR    WORD
    B        VAR    WORD
    W        VAR    WORD
    ORTAISI  VAR    WORD
    FARK     VAR    WORD
    DUR      VAR    BYTE 
    CLK     VAR     PORTA.5
    DTA     VAR     PORTA.3  
    ISARETSHT  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
    
        'ISI
Busy        VAR BIT         ' Busy Status-Bit
HAM         VAR	WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD       
ISARET_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
EKSI_ISI   CON 1           ' Sıfır altında isaret biti=1  oluyor kontrol için
DERECE     CON 223         ' ° işareti
ISARET     VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE       ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.1   ' One-wire Data-Pin "DQ" PortB.0 da

    
    symbol ROLE1=PORTC.0
    symbol ROLE2=PORTC.1
    symbol ROLE3=PORTC.2
    SYMBOL ROLE4=PORTC.3
    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
          LOW ROLE4
        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,$50,10,0,17,17,17,17,14,0 'LCD 2. KARAKTER HAFIZASI Ü HARFİ
        LCDOUT $FE,$58,16,8,4,2,4,8,16,0     'LCD 3. KARAKTER HAFIZASI YON İŞARETİ    
GIRIS: 
         LCDOUT $FE,$82, "OTOMATIK KULUCKA"            	
         lcdout $FE,$C5,"MAKINESI"
         lcdout $FE,$95,"TASARIM ve YAZILIM"
         lcdout $FE,$D9,"FERHAT YOL"
         PAUSE 2000
         LCDOUT $FE,1 
         
'-------------------------------------------------------------------------------
BASLANGIC:
SYC=0 
AYAR=1
READ $07,GN:IF GN=255 THEN GN=1
READ $01,TERM:IF TERM=255 THEN TERM=0
READ $02,NEM:IF NEM=255 THEN NEM=0
READ $09,DUR:IF DUR=255 THEN DUR=0
READ $10,ZAM:IF ZAM=255 THEN ZAM=0
READ $11,A:IF A=255 THEN A=1
READ $12,SY
READ $13,AYR
gosub ZAMAN_OKU 
                    
BASLA:  
              KONTROL=%00000011:HAMISI=0   'SICAKLIK ÖLÇME
        GOSUB OLCUMAL
        Gosub ISIHESAP
              KONTROL=%00000101:HAMISI=0   'RUTUBET ÖLÇME
        GOSUB OLCUMAL
        GOSUB RUTHESAP:GOSUB SENSOROKU
        GOSUB ORTISI
        GOSUB ZAMAN_OKU
        GOSUB GUNEBAK
        GOSUB EKRAN1
        GOSUB ISIKONTROL
        GOSUB RUTKONTROL
        IF AYR=0 THEN
        GOSUB HAVAKONTROL
        ELSE
        LOW ROLE4
        ENDIF
        IF SY=1 THEN GOSUB DONUSEBAK   
        IF AYAR_D=1 THEN  GOTO AYAR_MENUSU

goto BASLA       
'---------------------------------------EKRANA YAZ -----------------------------	
EKRAN1:	 
        lcdout $FE,$80,2,"=",DEC2 ISI1,",",DEC1 ISI2," A=",DEC2 ISI,",",DEC1 (FLOAT)," S=",DEC2 TERM,",",DEC1 A
        lcdout $FE,$C0,"ORTISI=",DEC2 ORTAISI,",",DEC1 CNY,0,"C NEM%",DEC2 U1
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GN,".GUN"
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
            IF SN=DUR THEN LOW ROLE3
        IF SAAT=0 AND DAK=0 AND SN=0 THEN 
               GN=GN+1
            IF GN=31 THEN GN=1
            WRITE $07,GN
         ENDIF
        RETURN
'''''''''''''''''MOTOR ÇALIŞ ''''''''''''''''' 
DONUSEBAK:
        'HER SAAT BAŞI ÇEVİR 
                 IF ZAM=1 AND DAK=0 AND SN=0 THEN
                 HIGH ROLE3
                 ENDIF

        IF ZAM=2 THEN 'İKİ SAATTE BİR ÇEVİR
                 
              
                 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  '3 SAATTE BİR ÇEVİR
                 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 '4 SAATTE BİR ÇEVİR
                 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            

GUNEBAK:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN
  
SENSOROKU: 
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle    ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    ISARET  = "+"
    IF ISARET_BITI = EKSI_ISI THEN
       ISARET   = "-"  
       ham=~ham+2
    endif
    float = (HAM*10)/16        ' 
    ISI=FLOAT/10  
    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:         
              IF HATA=1 then 
           endif
         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 HAMISI<4000 then 
              ISARETSHT=1 'sıcaklık eksi değerde demek
              ISI1=(4000-HAMISI)/100
              ISI2=((4000-HAMISI)//100)/10   
         goto ISISON
        endif
              ISI1=(HAMISI-4000)/100
              ISI2=((HAMISI-4000)//100)/10
ISISON:    
           
           ISI1=(HAMISI-4000)/100
           ISI2=((HAMISI-4000)//100)/10
RETURN       
'-------------------------RUTUBET HESAP ALT PROGRAMI----------------------------
 RUTHESAP: 
              'ISI=ISI1*10+ISI2
              p1=(26542-(54722**HAMISI+hamISI))**HAMISI-25     
              P2=655+(HAMISI*5)+(HAMISI**15917)	      
              P3=(P2**(ISISHT*10+2480))-(P2**2730)+P1   
              U1=p3/10:U2=p3//10
           IF HAMISI>3710 THEN
              U1=0:U2=0
        ENDIF  
return 

ORTISI:
ORTAISI=((ISI1*10+ISI2)+FLOAT)/20
CNY=((ISI1*10+ISI2)+FLOAT)/2
RETURN
'----------------------------ISI KONTROL----------------------------------------
ISIKONTROL:
         if TERM<ORTAISI then   
          LOW Role1
        ENDIF
        if ORTAISI<TERM AND CNY<A then          
         HIGH ROLE1               
       Endif
        IF MENU=1 THEN AYAR_MENUSU   
RETURN 
'----------------------------RUTKONTROL-----------------------------------------         
RUTKONTROL:
           if NEM<U1 then   
         HIGH Role2
         ELSE               
          LOW ROLE2
        ENDIF
        IF MENU=1 THEN AYAR_MENUSU
RETURN

HAVAKONTROL:
FARK=ISI1-ISI
IF FARK.Bit15=1 then FARK=~FARK 
IF FARK>1 then 
   ROLE4=1
ELSE
   ROLE4=0
ENDIF
 IF MENU=1 THEN AYAR_MENUSU
RETURN
'-------------------------------------------------------------------------------
AYAR_MENUSU:
WHILE MENU=1:WEND
GOSUB TEMIZLE
SYC=0
AYARLAR:
IF YUKARI=1 THEN 
WHILE YUKARI=1:WEND
SYC=SYC+1
  IF SYC=8 THEN SYC=0
ENDIF

IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
SYC=SYC-1
  IF SYC=255 THEN SYC=7
ENDIF
GOSUB DURUM
GOTO AYARLAR

DURUM:
SELECT CASE SYC
CASE 0
lcdout $fe,$c0,"  ISITICI AYARLARI  "
LCDOUT $FE,$94,"                    "
IF MENU=1 then 
WHILE MENU=1:WEND 
GOTO TERM_KONTROL 
ENDIF
CASE 1
lcdout $fe,$c0,"    NEM AYALARI     " 
LCDOUT $FE,$94,"                    "
IF MENU=1 then
WHILE MENU=1:WEND 
GOTO NEM_KONTROL
ENDIF
CASE 2
lcdout $fe,$c0,"   CEViRiCi MOTOR   "
LCDOUT $FE,$94,"       AYARI       "
IF MENU=1 then 
WHILE MENU=1:WEND
GOTO MOT_AYAR
ENDIF
CASE 3
lcdout $fe,$c0,"   SAAT-TARiH-GUN   "
LCDOUT $FE,$94,"        AYARI       "   
IF MENU=1 then 
WHILE MENU=1:WEND
GOTO ZAMANAYARI
ENDIF
CASE 4
lcdout $fe,$C0,"   MANUEL OLARAK    "
lcdout $fe,$94,"   MOTORU CEVIRME   "
IF MENU=1 then 
WHILE MENU=1:WEND
GOTO MANUEL
ENDIF
CASE 5
lcdout $fe,$c0,"     GUN AYARI      " 
LCDOUT $FE,$94,"                    "     
IF MENU=1 then 
WHILE MENU=1:WEND
GOTO GUNAYARI
ENDIF
CASE 6
lcdout $fe,$c0,"SICAKLIK DENGELEYiCi" 
LCDOUT $FE,$94,"     FAN AYARI      "
IF MENU=1 then 
WHILE MENU=1:WEND
GOTO FANKONTROL
ENDIF 
CASE 7
lcdout $fe,$c0,"    MENUDEN CIKIS   " 
LCDOUT $FE,$94,"                    "   
IF MENU=1 THEN BASLANGIC
END SELECT
RETURN

MANUEL:
GOSUB TEMIZLE 
MANU:
 lcdout $fe,$80,"MOTORU CALISTIRMAK "
 LCDOUT $FE,$C0,"iCiN YUKLARIYA     " 
 LCDOUT $FE,$94,"BASINIZ...          "
       IF MENU=1 then
       GOTO AYAR_MENUSU  
       ENDIF         
        
        IF YUKARI=1 THEN
         lcdout $fe,$D4,"MOTOR CALISIYOR  " 
        HIGH ROLE3
        ELSE 
        lcdout $fe,$D4,"MOTOR KAPALI    " 
        LOW ROLE3
        ENDIF
        
GOTO MANU

GUNAYARI:
       WHILE MENU=1:WEND
       GOSUB TEMIZLE
       READ $07,GN
GUNA:      
     LCDOUT $FE,$80,"GUNU AYARLA"  
     lcdout $FE,$C0,"GUN:",DEC2 GN
     IF MENU=1 THEN 
      WRITE $07,GN:PAUSE 2
      GOTO AYAR_MENUSU 
      ENDIF
     
        IF YUKARI=1 THEN 
        GN=GN+1
        IF GN=31 THEN GN=1
        WHILE YUKARI=1:WEND
        ENDIF
        
        IF ASAGI=1 THEN 
        GN=GN-1
        IF GN=0 THEN GN=30
        WHILE ASAGI=1:WEND
        ENDIF
             
     GOTO GUNA 
     
FANKONTROL:
GOSUB TEMIZLE:
FANKONT:
       lcdout $fe,$80,"FAN DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI"
       IF MENU=1 THEN
           WRITE $13,AYR:PAUSE 2
           GOTO AYAR_MENUSU
       ENDIF
           IF YUKARI=1 THEN AYR=0
           IF ASAGI=1 THEN AYR=1
       SELECT CASE AYR
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
       END SELECT
GOTO FANKONT
     
             
''''''''''''''''''''''''''''''''''''''''         
MOT_AYAR:
        WHILE MENU=1:WEND
        GOSUB TEMIZLE
        READ $12,SY
MOTOR_AYAR:
       lcdout $fe,$80,"MOTOR DURUMUNU"
       LCDOUT $FE,$C0,"SECINIZ..."
       lcdout $FE,$94,"  ACIK"
       LCDOUT $FE,$D4,"  KAPALI"
           IF MENU=1 THEN
           WRITE $12,SY:PAUSE 2
           GOTO M_ZAMANI
           ENDIF
           IF YUKARI=1 THEN SY=0
           IF ASAGI=1 THEN SY=1
           
           SELECT CASE SY
           CASE 0
           LCDOUT $FE,$94,3
           CASE 1
           LCDOUT $FE,$D4,3
           END SELECT 
        GOTO MOTOR_AYAR         
M_CALISMA:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $09,DUR
MOTO_CALISMA:
           IF MENU=1 THEN 
           WRITE $09,DUR:PAUSE 2
           GOTO AYAR_MENUSU  
           ENDIF
       lcdout $fe,$C0,"MOTOR CALISMA SURESi " 
       lcdout $FE,$94,"SURE :",DEC2 DUR," SANIYE"
       
           IF YUKARI=1 THEN 
           DUR=DUR+1
           WHILE YUKARI=1:WEND
           ENDIF   
           IF DUR=60 THEN DUR=0
           IF ASAGI=1 THEN 
           DUR=DUR-1
           WHILE ASAGI=1:WEND
           ENDIF
           IF DUR=255 THEN DUR=59
         GOTO MOTO_CALISMA                          
M_ZAMANI:
        GOSUB TEMIZLE
        WHILE MENU=1:WEND
        READ $10,ZAM
MOTO_ZAMANI:
        IF ZAM=255 THEN ZAM=1
        IF YUKARI=1 THEN
        ZAM=ZAM+1
        WHILE YUKARI=1:WEND
        ENDIF
        IF ZAM=5 THEN ZAM=4 
        IF ASAGI=1 THEN
        ZAM=ZAM-1
        WHILE ASAGI=1:WEND
        ENDIF
        IF ZAM=0 THEN ZAM=1       
        IF MENU=1 THEN 
        WRITE $10,ZAM:PAUSE 2
        GOTO M_CALISMA
        ENDIF

        lcdout $fe,$C0,"MOTORU ",DEC1 ZAM," SAATTE BiR"
        lcdout $FE,$94,"CEVRiLSiN.."
GOTO MOTO_ZAMANI
                                                                                
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
 AYARLANDI:
           IF MENU=1 then AYARLANDI
       lcdout $fe,1
       LCDOUT $FE,$C0,"AYARLAR KAYDEDiLDi.."
       AYAR=1
       AYAR_D=0
       SYC=0
        PAUSE 1000
        GOSUB TEMIZLE
        goto BASLANGIC       
TEMIZLE:
        lcdout $fe,1
 RETURN        
'-------------------------------------------------------------------------------
TERM_KONTROL:
       GOSUB TEMIZLE 
       READ $01,TERM:READ $11,A       
SET_AYAR:  
LCDOUT $FE,$C0,"ISI LiMiTiNi SECIN"
LCDOUT $FE,$94,"AYAR:",DEC2 TERM,",",DEC1 A          
           IF YUKARI=1 then 
              A=A+1
                IF A=10 THEN 
                A=0:TERM=TERM+1
                ENDIF
              IF TERM=100 THEN TERM=0
              PAUSE 150
           ENDIF
           IF ASAGI=1 then 
              A=A-1
                IF A=255 then 
                A=9:TERM=TERM-1
                ENDIF
              IF TERM=255 THEN TERM=99
              PAUSE 150
           ENDIF 
                
         IF MENU=1 THEN 
         WRITE $01,TERM:PAUSE 2
         WRITE $11,A:PAUSE 2 
         GOTO AYAR_MENUSU
         ENDIF 
                      
GOTO SET_AYAR  	
'-------------------------------------------------------------------------------
NEM_KONTROL:
       GOSUB TEMIZLE
       READ $02,NEM
NEM_KONT:  
       lcdout $fe,$C0,"NEM LiMiT"
       lcdout $FE,$94,"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        
            IF MENU=1 THEN 
            WRITE $02,NEM:PAUSE 2
            GOTO AYAR_MENUSU  
            ENDIF                 
         GOTO NEM_KONT 	
       RETURN
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
ZAMANAYARI:
WHILE MENU=1:WEND
GOSUB TEMIZLE
ZAMANAYAR:
IF MENU=1 THEN 
AYAR=AYAR+1
WHILE MENU=1:WEND
ENDIF
GOSUB BUTONOKU
        LCDOUT $FE,$80,"    ZAMAN AYARI     "       
        LCDOUT $FE,$94,"SAAT ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
        LCDOUT $FE,$D4,"TARIH ",DEC2 GUN,"/",DEC2 AY,"/",DEC2 YIL
GOSUB GUNYAZ
IF AYAR=7 THEN ZAMAN_B
GOTO ZAMANAYAR

GUNYAZ:
SELECT CASE HAFTA
CASE 1
LCDOUT $FE,$E3,"PTESI"
CASE 2
LCDOUT $FE,$E3," SALI"
CASE 3
LCDOUT $FE,$E3," CARS"
CASE 4
LCDOUT $FE,$E3," PERS"
CASE 5
LCDOUT $FE,$E3," CUMA"
CASE 6
LCDOUT $FE,$E3,"CTESI"
CASE 7
LCDOUT $FE,$E3," PAZR"
END SELECT
RETURN

BUTONOKU:
SELECT CASE AYAR
CASE 1
LCDOUT $FE,$C0,"SAAT    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
 SAAT=SAAT+1
 IF SAAT=24 THEN SAAT=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND
 SAAT=SAAT-1
 IF SAAT=255 THEN SAAT=23
ENDIF 
 
CASE 2
LCDOUT $FE,$C0,"DAKIKA"
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
DAK=DAK+1
IF DAK=60 THEN DAK=0
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND 
DAK=DAK-1
IF DAK=255 THEN DAK=59
ENDIF

CASE 3
LCDOUT $FE,$C0,"GUN    "   
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
 GUN=GUN+1
 IF GUN=31 THEN GUN=1
 ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND 
 GUN=GUN-1
 IF GUN=0 THEN GUN=30 
ENDIF

CASE 4
LCDOUT $FE,$C0,"AY    "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND
 AY=AY+1
 IF AY=13 THEN AY=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND 
 AY=AY-1
 IF AY=0 THEN AY=12
ENDIF

CASE 5
LCDOUT $FE,$C0,"YIL      "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND 
 YIL=YIL+1
 IF YIL=51 THEN YIL=5
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND 
 YIL=YIL-1
 IF YIL=4 THEN YIL=50
ENDIF

CASE 6
LCDOUT $FE,$C0,"HAFTA     "
IF YUKARI=1 THEN
WHILE YUKARI=1:WEND 
HAFTA=HAFTA+1
IF HAFTA=8 THEN HAFTA=1
ENDIF
IF ASAGI=1 THEN
WHILE ASAGI=1:WEND 
HAFTA=HAFTA-1
IF HAFTA=0 THEN HAFTA=7
ENDIF
END SELECT
RETURN


ZAMAN_B:
        IF MENU=1 then ZAMAN_B
        gosub ZAMAN_YAZ
goto AYAR_MENUSU       
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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, HAFTA, 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
         MEM=HAFTA:GOSUB CEVIR:HAFTA=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
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=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, HAFTA, 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 
  

END
    
     


devreyle ilgili tüm dosyaları aşağıdaki linke yükledim pcb şema kodlar vs.
http://www.dosya.tc/files/ndoMib/kulu_kasonhali.rar.html
Arkadaşlar sizlerin yardımlarınıza ihtiyacım var önerileriniz bekliyorum

orhanc

Çok fazla değişken kullanmışsın bir de if kullanmak yerine case switch kullanırsan kodun epey kısalacaktır.
i'm doing nothing... Giddy Up  http://www.drorhan.com

Mucit23

evet değişken ler çok fazla oldu bunlar programda fazla yer kaplar program daha çok incelenerek daha iyi bir hale getirilerbilir ve elimden geldiğince select case komutunu kullanmaya çalışıyorum.Şimdilik bu kadarını yapabildim daha iyi nasıl olur bilmiyorum ama asıl sorunum picin çalışmaması ne yapmalıyım sizce

orhanc

pic ayarlarını bir kontrol et muhtemelen ondandır. Benzer birşey benimde başıma geldi c18 de otomatik ayarlar ile çalışmıyor ancak kendim kod ile yazınca geliyordu. Ekranda sadece siyah kareler geliyordu...
i'm doing nothing... Giddy Up  http://www.drorhan.com

JKramer

Alıntı yapılan: mucit23 - 05 Ağustos 2010, 13:31:16
aynı işlemcilerle ufak bi devre üzerindeki röleleri 50 ms aralıklarla açıp kapayacak şekilde ufak bi program yazdım ;  Simülasyonda çalışıyor pice sorunsuz yüklendi ama gerçekte çalışmıyor.
Bence önce bu sorunu çözmelisiniz. Basit bir test programı (led yakıp söndürme) bile çalışmıyorsa (eğer besleme bağlantılarında sorun yoksa) programlayıcınızda sorun olması muhtemel.

ete

PCB de bir hata göremedim. Tabiiki hata derken LCD nin çalışmasını etkileyebilecek hatalardan bahsediyorum. Birde pic in çalışmasını etkileyebilecek kusurlar aradım. Ama hem programda yok ki zaten o simulasyonda çalışıyor.
Sonuçta çalışmayan Pic LCD de tek sıra kareler oluşturur. şayet sende çift sıra kareler var ise kontrast ayarına bakman gerek.
Kontrast için 4K7 trimpot kullanmışsın. Bu bildiğim kadarı ile en uygun 22K dır ancak 10K idare etmektedir. 4K7 hiç kullanmadım ne netice verir bilemiyorum.
Dediğim gibi çift sıra kare var ise kontrast potunu 10K yap ve ayarlamaya çalış.
Onun dışında söyleyebileceğim bir şey yok maalesef.
Rölelere hükmedecek programında çalışmaması devrende sorun olduğunu gösteriyor.
Mutlaka PCB yi iyice incelemen gerekir. Kristalinde de hata olabilir. 1 Nolu (MCLR) pinde High varmı onada bir bak.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23

evet haklısın galiba usb Brener kullanıyorum bide 16F84 içişn flaşör gibi bi program yazayım öyle bi programlayıcıyı test edeyim akşama deniyecem inş sorunu tez zamanda çözeriz eğer oda çalışmazsa kesinlikle proramlayıcı sorun vardır.çünkü bi flaşör programıda 16f877için yazdım oda çalışmadı 
Alıntı yapılan: ete - 05 Ağustos 2010, 13:48:06
PCB de bir hata göremedim. Tabiiki hata derken LCD nin çalışmasını etkileyebilecek hatalardan bahsediyorum. Birde pic in çalışmasını etkileyebilecek kusurlar aradım. Ama hem programda yok ki zaten o simulasyonda çalışıyor.
Sonuçta çalışmayan Pic LCD de tek sıra kareler oluşturur. şayet sende çift sıra kareler var ise kontrast ayarına bakman gerek.
Kontrast için 4K7 trimpot kullanmışsın. Bu bildiğim kadarı ile en uygun 22K dır ancak 10K idare etmektedir. 4K7 hiç kullanmadım ne netice verir bilemiyorum.
Dediğim gibi çift sıra kare var ise kontrast potunu 10K yap ve ayarlamaya çalış.
Onun dışında söyleyebileceğim bir şey yok maalesef.
Rölelere hükmedecek programında çalışmaması devrende sorun olduğunu gösteriyor.
Mutlaka PCB yi iyice incelemen gerekir. Kristalinde de hata olabilir. 1 Nolu (MCLR) pinde High varmı onada bir bak.

Ete


etehocam dediğiniz gibi lcd ekranın 1. ve 3. satırında kareler var yani çift sıra pot 4k7 kullanmıştım akşam onuda 10k ile değiştirecem  inş sorun çözülür  Ayrıca röleleride kendim test ettmi teker teker kendim iletime geçirdim hiçbirinde sorun yok

orhanc

i'm doing nothing... Giddy Up  http://www.drorhan.com

ete

4 sıra da da Kareler olsa idi Kontrast dan şüphelenmemiz gerekir idi. Ancak atlamalı 2 sıra başıma gelmeyen bir olay.
Bu durumda tek suçlu bana Pic miş gibi geliyor.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23

Bencede öyle iki adet pic ile denedim ikisindede aynı sonuç yarın yeni bir pic almayı deniyecem yada sadece giriş yazısı çıkacak şekilde programı 18F452 ye uyarlıyayım ekranda sadece giriş yazısı yazsın  elimde birkaçtane 18F452 den var

Mucit23

Alıntı yapılan: ete - 05 Ağustos 2010, 13:59:51
4 sıra da da Kareler olsa idi Kontrast dan şüphelenmemiz gerekir idi. Ancak atlamalı 2 sıra başıma gelmeyen bir olay.
Bu durumda tek suçlu bana Pic miş gibi geliyor.

Ete
dediğiniz gibi olabilir hocam çünkü pot ile karelerin parlaklığı ayarlanabiliyor

ete

18F452 mi kullanıyorsun yoksa 16F877 midir. Hangisi. Simulsayon 877 ye göre verilmiş.

Şayet 18F452 ile çalışıyor isen en iyisi 877 ye göre bir program derle ve onu dene kartın üzerinde. Bak bakalım çalışacakmı?

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

orhanc

Atlamalı 2 sıra picin ayarlarından kaynaklanıyor aynı şey başıma geldi :)
i'm doing nothing... Giddy Up  http://www.drorhan.com

Mucit23

hocam hepsindede 16F877 kullandım kusura bakmayın aklınızı biraz karıştırdım sadece 18F452 yi deneme için kullanayım dedim
Alıntı yapılan: orhanc - 05 Ağustos 2010, 14:11:29
Atlamalı 2 sıra picin ayarlarından kaynaklanıyor aynı şey başıma geldi :)

orhan bey picin ayarları derken hangi ayarları yapılması gerekiyor