اطلاعیه

Collapse
No announcement yet.

کمک در مورد برنامه کنترلر جوجه کشی با pic

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک در مورد برنامه کنترلر جوجه کشی با pic

    سلام این برنامه رو از یه سایت گرفتم چون چیزی از برنامه نویسی زیاد سر در نمی یارم می خواستم بدونم به چه زبانی نوشته شده؟
    وقتی می خوام با بسکام تبدیل به هگز کنم 2 تا خطا می ده می تونین بگین کجاش ایراد داره و باید تغییر داد؟
    می شه حجم برنامش کمتر کرد؟
    اگه تونستین اصلاحش کنین ممنون می شم

    KULUKA.bas - 24 KB

    #2
    پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

    بسکام :eek: :eek: :eek: :eek: :eek: :eek:
    اینجا انجمن pic هست. بسکام مال avr

    دیدگاه


      #3
      پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

      می دونم. تو این برنامه از Pic16f877 استفاده شده گفتم شاید مربوط به این بخش باشه

      دیدگاه


        #4
        پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

        سلام

        لینک دانلود شما باز نمی شود. اما شما می توانید سورس برنامه را همین طوری به صورت متن در اینجا قرار بدهید تا شاید کمکی از دستم بربیاید.

        امیدوارم که همگی موفق باشیم
        والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

        هوشمندانه بپرسيد...

        دیدگاه


          #5
          پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

          سلام ببخشید دیر شد این هم متن برنامشه
          کد:
          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=%01110000
          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
            UPC   VAR  BIT
            AYR   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
            K    VAR  BYTE
            SAY   VAR  BYTE
            ZAM   VAR  BYTE
            DX    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,"AUto COntroler  "      	
               lcdout $FE,$C5,"MACHINE     "
               lcdout $FE,$95,"SOftware & DEsign"
               lcdout $FE,$D9,"sInA ghasemI"
               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 $06,UPC
          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 UPC=1 THEN 
              GOSUB DONUSEBAK
              ENDIF
              IF MENU=1 THEN GOTO AYAR_MENUSU
          
          goto BASLA    
          '---------------------------------------EKRANA YAZ -----------------------------	
          EKRAN1:	 
              lcdout $FE,$80,"S=",DEC2 ISI1,",",DEC1 ISI2," D=",DEC2 ISI,",",DEC1 (FLOAT)," C=",DEC2 TERM,",",DEC1 A
              lcdout $FE,$C0,"HEat=",DEC2 ORTAISI,",",DEC1 CNY,0,"C DAmp%",DEC2 U1
              LCDOUT $FE,$94,"HOurs",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN," ",DEC2 GN,".DAy"
              LCDOUT $FE,$D4,"DAte ",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,"MOn "
          CASE 2
          LCDOUT $FE,$E3,"TUe "
          CASE 3
          LCDOUT $FE,$E3,"WEd "
          CASE 4
          LCDOUT $FE,$E3,"THu "
          CASE 5
          LCDOUT $FE,$E3,"FRi "
          CASE 6
          LCDOUT $FE,$E3,"SAt "
          CASE 7
          LCDOUT $FE,$E3,"SUn "
          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 -----------------------------------

          دیدگاه


            #6
            پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

            کد:
            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-0 then  
                 LOW Role1
                ENDIF
                if ORTAISI+0<TERM+0 then     
                 HIGH ROLE1        
                Endif
               IF MENU=1 THEN GOTO AYAR_MENUSU
            RETURN 
            '----------------------------RUTKONTROL-----------------------------------------     
            RUTKONTROL:
                  if NEM<U1 then  
                 HIGH Role2
                 ELSE        
                 LOW ROLE2
                ENDIF
                IF MENU=1 THEN GOTO AYAR_MENUSU
            RETURN
            
            HAVAKONTROL:
            FARK=ISI1-ISI
            IF FARK.Bit15=1 then FARK=~FARK 
            IF FARK>1 then 
              ROLE4=1
            ELSE
              ROLE4=0
            ENDIF
            RETURN
             BIP:
              HIGH buzer  
             pause 50
               LOW buzer 
             RETURN
            BIPBIP:
               HIGH buzer  
              PAUSE 50
               LOW buzer 
              PAUSE 100
               HIGH BUZER
              PAUSE 50
               LOW BUZER 
            RETURN
            '-------------------------------------------------------------------------------
            AYAR_MENUSU:
            GOSUB BIP
            WHILE MENU=1:WEND
            GOSUB TEMIZLE
            SYC=0
            AYARLAR:
            IF YUKARI=1 THEN 
            GOSUB BIP
            WHILE YUKARI=1:WEND
            SYC=SYC+1
             IF SYC=8 THEN SYC=0
            ENDIF
            
            IF ASAGI=1 THEN
            GOSUB BIP
            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,"  Heat settings  "
            LCDOUT $FE,$94,"          "
            IF MENU=1 then 
            WHILE MENU=1:WEND
            GOSUB BIP 
            GOTO TERM_KONTROL
            ENDIF
            CASE 1
            lcdout $fe,$c0," Humidity settings " 
            LCDOUT $FE,$94,"          "
            IF MENU=1 then
            WHILE MENU=1:WEND
            GOSUB BIP 
            GOTO NEM_KONTROL
            ENDIF
            CASE 2
            lcdout $fe,$c0,"  Set the motor "
            LCDOUT $FE,$94,"  rotation    "
            IF MENU=1 then 
            WHILE MENU=1:WEND
            GOSUB BIP
            GOTO MOT_AYAR
            ENDIF
            CASE 3
            lcdout $fe,$c0,"  Options Date "
            LCDOUT $FE,$94,"  Day Time   "  
            IF MENU=1 then 
            GOSUB BIP
            WHILE MENU=1:WEND
            GOTO ZAMANAYARI
            ENDIF
            CASE 4
            lcdout $fe,$C0," Start the motor "
            lcdout $fe,$94," manually    "
            IF MENU=1 theN
            GOSUB BIP
            WHILE MENU=1:WEND
            GOTO MANUEL
            ENDIF
            CASE 5
            lcdout $fe,$c0," set Number of   " 
            LCDOUT $FE,$94," days        "  
            IF MENU=1 then
            GOSUB BIP 
            WHILE MENU=1:WEND
            GOTO GUNAYARI
            ENDIF
            CASE 6
            lcdout $fe,$c0," Set fan      "
            LCDOUT $FE,$94,"          "
            IF MENU=1 then 
            WHILE MENU=1:WEND
            GOSUB BIP
            GOTO FANKONTROL
            ENDIF 
            CASE 7
            lcdout $fe,$c0, "  Exit the menu  "
            LCDOUT $FE,$94, "          "  
            IF MENU=1 THEN AYARLANDI
            END SELECT
            RETURN
            
            MANUEL:
            GOSUB TEMIZLE 
            MANU:
             lcdout $fe,$80," To start "
             LCDOUT $FE,$C0," motor,  "
             LCDOUT $FE,$94," press...  "
                IF MENU=1 then
               GOTO AYAR_MENUSU 
                ENDIF     
                
                IF YUKARI=1 THEN
                 lcdout $fe,$D4,"MOTOR Running "
                HIGH ROLE3
                ELSE 
                lcdout $fe,$D4,"MOTOR off    "
                LOW ROLE3
                ENDIF
                
            GOTO MANU
            
            GUNAYARI:
                WHILE MENU=1:WEND
                GOSUB TEMIZLE
                READ $07,GN
            GUNA:   
               LCDOUT $FE,$C0,"Number of day" 
               lcdout $FE,$94,"day:",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,"Select"
                LCDOUT $FE,$C0,"the fan..."
                lcdout $FE,$94," on"
                LCDOUT $FE,$D4," off"
                IF MENU=1 THEN
                  WRITE $13,AYR:PAUSE 2
                  GOTO AYAR_MENUSU
                ENDIF
                  IF YUKARI=1 THEN AYR=1
                  IF ASAGI=1 THEN AYR=0
                  
                  SELECT CASE AYR
                  CASE 0
                  LCDOUT $FE,$D4,3
                  CASE 1
                  LCDOUT $FE,$94,3
                END SELECT  
            GOTO FANKONT
               
                   
            ''''''''''''''''''''''''''''''''''''''''     
            MOT_AYAR:
                WHILE MENU=1:WEND
                GOSUB TEMIZLE
                READ $06,UPC
            MOTOR_AYAR:
                lcdout $fe,$80,"Select"
                LCDOUT $FE,$C0,"motor..."
                lcdout $FE,$94," on "
                LCDOUT $FE,$D4," off"
                  IF MENU=1 THEN
                  WRITE $06,UPC:PAUSE 2
                  GOTO M_ZAMANI
                  ENDIF
                  IF YUKARI=1 THEN UPC=1
                  IF ASAGI=1 THEN UPC=0
                  
                  SELECT CASE UPC
                  CASE 0
                  LCDOUT $FE,$D4,3
                  CASE 1
                  LCDOUT $FE,$94,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,"Time MOTOR " 
                lcdout $FE,$94," Work:",DEC2 DUR," Sec"
                
                  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,"MOTOR ",DEC1 ZAM," Hours the"
                lcdout $FE,$94,"Rest..."
            GOTO MOTO_ZAMANI
                                                    
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
             AYARLANDI:
                  IF MENU=1 then AYARLANDI
                lcdout $fe,1
                LCDOUT $FE,$C0,"set Settings..." 
                GOSUB BIPBIP
                AYAR=1
                SYC=0
                PAUSE 800
                
                GOSUB TEMIZLE
                goto BASLANGIC    
            TEMIZLE:
                lcdout $fe,1
             RETURN    
            '-------------------------------------------------------------------------------
            TERM_KONTROL:
                GOSUB TEMIZLE 
                READ $01,TERM:READ $11,A    
            SET_AYAR: 
            LCDOUT $FE,$C0,"Choice of heat "
            LCDOUT $FE,$94,"setting:",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,"Choice of damp"
                lcdout $FE,$94,"setting: %",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
            AYAR=1
            ZAMANAYAR:
            IF MENU=1 THEN 
            AYAR=AYAR+1
            WHILE MENU=1:WEND
            ENDIF
            GOSUB BUTONOKU
                LCDOUT $FE,$80,"  Time setting "    
                LCDOUT $FE,$94,"Hours ",DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
                LCDOUT $FE,$D4,"Date ",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,"Mon"
            CASE 2
            LCDOUT $FE,$E3,"Tue"
            CASE 3
            LCDOUT $FE,$E3,"Wed"
            CASE 4
            LCDOUT $FE,$E3,"Thu"
            CASE 5
            LCDOUT $FE,$E3,"Fri"
            CASE 6
            LCDOUT $FE,$E3,"Sat"
            CASE 7
            LCDOUT $FE,$E3,"Sun"
            END SELECT
            RETURN
            
            BUTONOKU:
            SELECT CASE AYAR
            CASE 1
            LCDOUT $FE,$C0,"Hours "
            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,"min  "
            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,"day  "  
            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,"month "
            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,"Years "
            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,"Week   "
            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
            این هم لینک دانلودش
            KULUKA.bas - 26 KB
            877 ile.DSN - 167 KB
            KULUKA.HEX - 47 B
            یا
            http://uplod.ir/0slpzet5bgwp/KULUKA.bas.htm
            http://uplod.ir/0y9681vtczci/877_ile.DSN.htm
            http://uplod.ir/rp3jt6jr23m6/KULUKA.HEX.htm

            هگزش و تونستم با نرم افزار MicroCode Studio بگیرم
            تو این برنامه از دوتا سنسور واسه محاسبه دماش استفاده شده که من نمی دونم چرا؟
            میشه با این برنامه دما و رطوبت و چرخش رو کنترل کرد؟
            برنامش درحدی هست که بتونیم در عمل جواب بگیریم؟
            باتشکر

            دیدگاه


              #7
              پاسخ : کمک در مورد برنامه کنترلر جوجه کشی با pic

              نوشته اصلی توسط sina_sary
              ....می خواستم بدونم به چه زبانی نوشته شده؟
              ...
              سلام

              ببخشید که من مقداری دیر جواب شما را دادم. چون بر اثر گرفتاری های فراوان ، وقتی را برای گذراندن در اینترنت نداشتم.

              این برنامه به زبان بیسیک نوشته شده است . کمپایلر مناسب PICbasicPro است. کمپایلر و محیطی بسیار راحت و روان و کم دردسر که در ایران (بر خلاف اروپا) طرفدارانش اندک هستند. ایرانی ها در خصوص PIC بسیار بسیار متمایل به محیطهای مبتنی بر زبان C هستند.

              در خصوص متن این سورس کد ، برای درک بهتر برنامه می توانید واژه های نمایش داده شده بر روی LCD و نام متغیرها را (که فکر می کنم به زبان ترکی استانبولی باشد) به کمک گوگل ترجمه کنید. این جوری راحت تر می توانید درک کنید.



              امیدوارم ، بعد از این زمان طولانی ، پاسخم برای شما مفید بوده باشد.

              امیدوارم که همگی موفق باشیم
              والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

              هوشمندانه بپرسيد...

              دیدگاه

              لطفا صبر کنید...
              X