16F628 kullanılarak yapılmış yıldız-üçgen devresi.  Devrede şalter durumunu göstermek için LCD kullanılmış

Yıldız Üçgen Kumanda

Devrede programlama dili olarak PicBasic Pro kullanılmış.

Devrede kullanılan PBP kodları:

[code]
<pre>'****************************************************************
'* Name : YILDI ÜÇGEN RÖLE.BAS *
'* Author : X0914667@yahoo.com *
'* Notice : Copyright (c) 2006 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 08.07.2006 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Define LCD_DREG PORTB 'LCD DATA TANIM AYARLARI
Define LCD_DBIT 4 'LCD TANIM AYARLARI
Define LCD_RSREG PORTB 'LCD RS TANIM AYARLARI
Define LCD_RSBIT 2 'LCD TANIM AYARLARI
Define LCD_EREG PORTB 'LCD RE TANIM AYARLARI
Define LCD_EBIT 3 'LCD TANIM AYARLARI
DEFINE LCD_LINES 2 'LCD SATIR SAYISI
'*********************DEĞİŞKEN TANIMLARI*************************
SAYAC VAR BYTE 'ZAMAN SAYACI 1 SN.'LİK
SANIYE VAR BYTE 'SANİYE SAYACI
KUMANDA VAR BIT
UCGENEGEC1 VAR BIT
B1 VAR BYTE
B0 VAR BYTE
B2 VAR BYTE
B3 VAR BYTE
B4 VAR BYTE
B5 VAR BYTE
'*******************ZAMAN SAYACI İNTERRUPT AYARLARI**************
ON INTERRUPT GoTo KESME 'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101 'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000 'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7
clear 'BÜTÜN DEĞİŞKENLERİ SIFIRLA
LCDOUT $FE,1 'LCD'Yİ TEMİZLE
PAUSE 500 'LCD İÇİN BEKLEME ZAMANI
'TRISA=%
'TRISB=0 'PORTB ÇIKIŞ
'*****************AÇILIŞ İÇİN KAYAN YAZI**************************
LOOP:
LCDOut $fe,2
For B2= 0 TO 15
LookUp B0, [" OTUGEN OTOMASYON #"], B1
IF B1 = "#" Then GoTo reset
LCDOut B1
B0 = B0 + 1
Next B2
pause 125 'KARAKTER BEKLEME ZAMANI
B0 = B0 - 15
GoTo loop
RESET:
LCDOUT $FE,1

'*****************************************************************
onprogram:
LCDOUT $FE,$80
LCDOUT " YILDIZ UCGEN "
LCDOUT $FE,$C0
LCDOUT " KUMANDA ROLESI "
PAUSE 500
LCDOUT $FE,1
ANAPROGRAM:
IF PORTA.7=1 THEN
GOTO ARIZA
ELSE
GOTO NORMAL
ENDIF
ARIZA:
LCDOUT $FE,$80,"MOTORUN TERMIK"
LCDOUT $FE,$C0,"ROLESI ATTI "
LOW PORTB.0:LOW PORTA.3:LOW PORTB.1
KUMANDA=0:SAYAC=0:SANIYE=0
GOTO ANAPROGRAM
NORMAL:
LCDOUT $FE,$80,"MOTOR:"
IF PORTA.3=0 THEN
GOTO mesajstop
else
goto start
endif
mesajstop:
lcdout $fe,$86,"STOP "
LCDOUT $FE,$C0," "
GOTO KONTROL
START:
lcdout $fe,$86,"START "
GOTO KONTROL
KONTROL:
IF (PORTA.1=1) OR (PORTA.7=1) THEN GOTO MOTORDUR
IF (PORTA.1=0)AND(PORTA.7=0)AND(PORTA.0=1)OR(KUMANDA=1) THEN
GOTO MOTORYILDIZ
ELSE
GOTO MOTORDUR
ENDIF
MOTORYILDIZ:
KUMANDA=1
IF SANIYE=15 THEN
UCGENEGEC1=1
ENDIF
IF UCGENEGEC1=1 THEN GOTO UCGEN
LOW PORTB.0:HIGH PORTA.3:HIGH PORTB.1
LCDOUT $FE,$C0,"CALISMA YILDIZ"
GOTO PROGRAMDEVAM
UCGEN:
HIGH PORTB.0:HIGH PORTA.3:LOW PORTB.1
LCDOUT $FE,$C0,"CALISMA UCGEN "
GOTO ANAPROGRAM
MOTORDUR:
LOW PORTB.0:LOW PORTA.3:LOW PORTB.1
KUMANDA=0:SAYAC=0:SANIYE=0
PROGRAMDEVAM:
GOTO ANAPROGRAM

'********************ZAMAN RÖLESİ PARAMETRELERİ**************************
DISABLE
KESME:
IF KUMANDA=1 THEN
GOTO SAY
ELSE
GOTO DEVAM
ENDIF
SAY:
SAYAC=SAYAC+1 'kesme sayacı 1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
IF SAYAC=61 then '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
SAYAC=0 'sayaç sıfırlanıyor
SANIYE=SANIYE+1
' GOSUB ZAMAN_OKU
' if Y<5 then HIGH porta.3
ENDIF
DEVAM:
INTCON.2=0 'TMR0 Kesme bayrağı sıfırlanıyor
RESUME
ENABLE</pre>
[/code]

Devrenin Proteus ISIS Şeması, PBP, ASM ve HEX dosyaları ektedir

Yazıyla İlgili Dosyaları İndirmek İçin Aşağıdaki Dosyaları İndir Butonuna Tıklayın





Facebookta Paylas







Benzer Yazılar

PIC16F628 İle LCD’li Şifreli Kilit Devresi

Pic16f628 kullanılarak yapılmış şifreli kilit devresi. Devrede 3x4 keypad kullanılmış.

PIC16F628 ile 8×32 Kayan Yazı Uygulaması

PIC16f628 kullanılarak yapılmış kayan yazı uygulaması. 4 adet 8x8 led matrix kullanılarak yapılmış

PIC16F84 İle 0-9999 Sayıcı Devre – PBP

Devrede mikrodenetleyici olarak Pic16F84 kullanıldı. Programlama dili olarak da PicBasic Pro. Devre 0 ile 9999 arasında ileri geri sayım yapıyor