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.
Programın kodları:
Devrenin Proteus ISIS dosyasını, HEX ve BAS dosyalarını ekten indirebilirsiniz.
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.
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.