havaya yazı 

Devre şeması oldukça basittir. Burada önemli olan pic’i programlamadan önce motorun saniyedeki tur sayısı ve sütun genişliği hesaplanıp belirlenmelidir.
İnsan beyni saniyede 15 kareye kadar olan resimleri algılayabildiği için bu sistemde motor saniyede 20 tur atacaktır.
1 saniye = 20 tur atması isteniyorsa
1 tur T = 1/f = 1/20 = 0,05 saniye = 50 milisaniye
Sistemin sütun sayısını hesaplamak için
Dairenin çevresi = 50cm ise
Örneğin;
sütun genişliği = 0,5cm
50/0,5 = 100 sütun
Sistemin satır sayısını hesaplamaya gerek yoktur, çünkü sistemde 7 LED kullanıldığı için satır sayısı da 7 dir.

Yukarıdaki grafik oldukça kolaylık sağlayacaktır.
Bir sütun için gecikme süresi (LED in 0,5cm yanık kalma süresi) için
1 tur = 0,05 sn ise
0,05/100 = 0,0005 sn = 500 milisaniyelik bir gecikme yapılmalıdır. Yazdığımız metnin bitiş noktası da belirlenmelidir. Böylelikle boşta kalan kısım hesaplanıp gecikme yapılması çok önemlidir. Aksi taktirde görüntü oluşmaz.
Metin için kullanılan sütun sayısı;
Örneğin; 25 sütun ise
Boşta kalan kısım = 100 – 25=75 sütundur.
Bu durumda boşta kalan kısım için gecikme
Bir sütun için 500 mikro saniye ise; 75 x 0,0005 = 0,0375 = 37,5 milisaniye olmalıdır.
Metin için toplam gecikme 25 x 0,0005 = 0,0125 = 12,5 milisaniye
1 tur = metin süresi + botsa kalma süresi = 12,5 + 37,5 = 50 milisaniye

havaya yazı

Assembly dilinde çift döngü yapmak için;
 KOMUT   SAYKIL 
 MOVLW  h’M' 1 
 MOVWF 0X20 1 
D1 MOVLW  h’N' 1XM 
 MOVWF 0X21 1XM 
D2 DECFSZ 0X21,1 1XNXM 
 GOTO D2 2XNXM 
 DECFSZ 0X20,1 1XM 
 GOTO D1 2XM 
 RETURN  2 
    
KOMUT SAYKIL SAYISI   = 3XNXM 
    
GECİKME SÜRESİ = KOMUTSAYKIL SÜRESİ X 4 / f

12,5 milisaniye gecikme için
4 MHz lik osilatör kullanıldığın da GS = KSS X 4/4 den    GS = KSS olur
12,5 milisaniye = 12500 mikro saniye
KSS = 3xNxM olduğuna göre       12500 = 3xNxM   NxM = 4166    N=255 ise M=16
37,5 milisaniye gecikme için
37500 = 3xNxM    NxM = 12500    N=255 ise M=49
Örneğin bir metin olarak ABC harflerini yazdıralım.
Programı yazmak için grafiğe ihtiyacımız olacaktır.

Grafiğin alt tarafı metne bağlı olarak binary olarak doldurulur. Metne denk gelen kutucular 1 diğerleri ise 0 olarak yazılır. Programı yazarken binary kodlara bakılarak PORTB yönlendirilir.
Metin kısmı 15 sütun dan oluştuğu için gecikme süresi
15 x 0,0005 = 7.5 milisaniye
7500 = 3xNxM NxM = 2500  N=255  ise M=10 olur.
Boşta kalan kısım 100 – 15 = 85 sütun dan oluştuğu için gecikme süresi
85 x 0,0005 = 42.5 milisaniye
42500 = 3xNxM  NxM = 14166  N=255  ise M=55 olur.
;*********DEĞİŞKENLERİN TANIMLANMASI******************************
 LIST P=16F628A
;yazan: Remzi ŞAHİNOĞLU

PORTB EQU 0X06
PORTA EQU 0X05
STATUSEQU 0X03
TRISB EQU 0X86
TRISA EQU 0X85
CMCON EQU 0X1F

;*********GİRİS/CIKIS AYARLARININ OLUSTURULMASI*********************
 BSF  STATUS,5  ;BANK1 E GEC 
 CLRF  TRISB   ;PORTB CIKIS
 MOVLW b’01000011′  ;RB0,RB1,RB7 GİRİŞ
 MOVWF TRISA   ;PORTA GİRİS
 BCF  STATUS,5  ;BANK0 A GEC
 MOVLW b’00000111′  ;BÜTÜN KARSILASTIRICILAR KAPALI
 MOVWF CMCON  ;TÜM PİNLER GİRİS/CIKIS
 CLRF  PORTB   ;BASLANGICTA TÜM LED LER SÖNÜK

;***************ANA PROGRAMIN OLUSTURULMASI**********************
;************* “A” HARFİ İÇİN ***************************************
BASLA
 MOVLW b’01111111′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’00001001′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’00001001′
 MOVWF PORTB  
 CALL  BEKLE1
 MOVLW b’01111111′
 MOVWF PORTB
 CALL  BEKLE1
 
CLRF  PORTB
 CALL  BEKLE1

;************* “B” HARFİ İÇİN*************************************
 MOVLW b’01111111′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’01001001′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’01001001′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’00110110′
 MOVWF PORTB
 CALL  BEKLE1 
 
CLRF  PORTB
 CALL  BEKLE1

 

 

;************ “C” HARFİ İÇİN**************************************
 MOVLW b’00111110′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’01000001′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’01000001′
 MOVWF PORTB
 CALL  BEKLE1
 MOVLW b’00100010′
 MOVWF PORTB
 CALL  BEKLE1 
 CLRF  PORTB
 CALL  BEKLE1   
 
CLRF  PORTB
 CALL  BEKLE2
 GOTO  BASLA

;***************1 MİLİSANİYE GECİKME YAP**************************
;***********LEDİN BİR PARCA YANIK KALMA SÜRESİ********************
BEKLE1
 MOVLW d’255′  ;YAKLASIK 1 MİLİSANİYE
 MOVWF 0X21  ;BEKLEME YAP
D1 MOVLW d’10′  
 MOVWF 0X20  
D2 DECFSZ 0X20,1  
 GOTO D2  
 DECFSZ 0X21,1
 GOTO D1
 RETURN

;*****************95 MİLİSANİYE GECİKME YAP***********************
;************PROGRAM BOSLUGUNDA Kİ LEDİN SÖNÜK KALMA SÜRESİ*******
BEKLE2
 MOVLW d’255′  ;YAKLASIK 74 MİLİSANİYE
 MOVWF 0X22  ;BEKLEME YAP
D3 MOVLW d’55′  
 MOVWF 0X23  
D4 DECFSZ 0X23,1  
 GOTO D4  
 DECFSZ 0X22,1
 GOTO D3
 RETURN
 
END

Remzi ŞAHİNOĞLU

Kocaeli Üniversitesi Mekatronik Bölümü