PIC İle LCD’li Ayarlı Zamanlayıcı Devresi

guclusat

Tanınmış Üye
Süper Moderatör
PIC ile yapılmış, LCD kullanılarak zamanlama ayarı yapılan güzel bir zamanlayıcı devresi

Butonlarla zamanlayıcının süresi ayarlanıp zamanlama başlatılıyor. Zamanlayıcı geri saydıktan sonra süre sıfırlandığında 27 nolu pine bağlı led yanıp sönüyor. Devrede değişiklik yapıp 27 nolu pine transistör ve röle bağlanarak başka cihazlar kontrol edilebilir.

zamanlayici.jpg

Programın kodları:

Kod:
DEVICE = 18F452
        XTAL = 4
        LCD_DTPIN = PORTB.0
        LCD_RSPIN = PORTB.4
        LCD_ENPIN = PORTB.5
        LCD_INTERFACE = 4    ' 4-bit Interface
        LCD_LINES = 2
        LCD_TYPE = 0

        Dim minute  as     byte
        Dim second  as     byte    ' Define second variable
        Dim ticks   as     byte    ' Define pieces of seconds variable
        Dim i       as     WORD    ' Debounce loop variable

        minute = 0
        second = 0
        ticks = 0
        I=0

;*********************************************************
        TRISC=0
        TRISB=0
           TRISD=%00001111
        PORTD=0
        PORTB=0
        PORTC=0
        PORTD.7=1
;*************************SIFIR***************************
SIFIR:

CLS
   Delayms 100
       minute = 0
        second = 0
        ticks = 0
        I=0
  ;*********************************************************

     PRINT AT 1 , 5 ,"ZAMANI"
     PRINT AT 2 , 5 , "AYARLA"
     DELAYMS 2000

MAINLOOP1:
      cls
;*************************ANA PROGRAM**********************
         Print at 1,1,"Dak",105,"ka = ",dec2 minute
         PRINT AT 2,1,"San",105,"ye = ",dec2 second
   mainloop:
        If PORTD.0 = 0 Then SIFIR
        If PORTD.1 = 0 Then sil
        If PORTD.2 = 0 Then decSN
        If PORTD.3 = 0 Then incSN

  Goto mainloop
;****************************ARTIRMA**********************
IncSN:
        second = second + 1
         If second >= 60 Then
            second = 0
           minute = minute + 1
        Endif

        If minute >= 60 Then
            minute = 0

              Endif
        GOTO ZAM

;**************AZALTMA*************************************
DecSN:
      second = second - 1
         DELAYMS 100
        If second >= 60 Then
        second = 59
        minute = minute - 1

        ENDIF
DAK:
           If minute >= 60 Then
            minute = 59

              Endif
          Goto ZAM
;*****************************TUS GEÇİKMESİ****************
ZAM:
         Print at 1,1,"Dak",105,"ka = ",dec2 minute
         PRINT AT 2,1,"San",105,"ye = ",dec2 second

        For i = 1 to 20
            Delayms 15
        Next

          Goto mainloop

;*******************************KONTROL******************
sil:
cls
KONT:
       If minute = 0 AND SECOND =0 Then KONT_SAY
basla:

        Print at 1,2, "DAK",105,"KA = " ,dec2 minute
        PRINT AT 2,2 ,"SAN",105,"YE = " ,dec2 second
         If minute = 0 AND SECOND =0 Then KONTROL
        second = second - 1

        FOR I=0 TO 100
        DELAYMS 9
        If PORTD.0 = 0 Then SIFIR
        NEXT
        If second >= 60 Then
            second = 59
         endIF
         If second =0 Then
         If minute = 0 AND SECOND =0 Then BASLA
         Minute = minute - 1

      Endif
       GOTO BASLA

KONT_SAY:
        Print at 1,1, "DAK",105,"KA VE SAN",105,"YE"
        PRINT AT 2,2 ,"AYARI YAPINIZ"
        DELAYMS 1000
         Goto mainloop1
KONTROL:
       PORTD.4=1
       DELAYMS 1000
       PORTD.4=0
     Goto mainloop1

Devrenin Proteus ISIS dosyasını, HEX ve BAS dosyalarını ekten indirebilirsiniz.
 

Eklentiler

Geri
Yukarı