Proton+ SPI protokolü 74595 örnek program

Başlatan gtekdemir, 24 Kasım 2009, 16:02:32

gtekdemir

Proton+ ile SPI protokolünün mantığının anlaşılması açısından yazdığım örnek programdır. Kaskat olarak hatta bağlı olan 4 adet 74595' in her birine 0-255 arasında farklı bir değer gönderdim, Porta.0' a bağlı olan pot'tan alınan analog bilgi 8bit sayısal değere çevrilip 4. değer olarak alındı. Değerler hem lcd' de hemde 74595 çıkışlarında görülebilmektedir. Faydalı olduysa ne mutlu...  

Devre şeması;



Örnek program;
'SPI protokolü ile 4 tane 74595 shift register

Device 16F877A
XTAL 4

Declare ADIN_RES 8     ' Çözünürlük 10 Bit 
Declare ADIN_TAD FRC    ' 
Declare ADIN_STIME 50   ' Örnekleme zamanı 50us 
ADCON1 = %00000100      'Analog giriş ayarlandı

Declare LCD_DTPIN PORTB.4	'DATA girişi PORTB'nin 4 ucundan başlayacak
Declare LCD_ENPIN PORTB.3	'LCD'nin Enable ucu
Declare LCD_RSPIN PORTB.2	'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4	    'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2		    'LCD 2 satırdan oluşuyor
Cls					        'Ekranı temizler ve 30 ms gecikme sağlar

TRISA=%000001          'RA1 (Analog) giriş olarak kuruldu
TRISB=0                      'RB LCD bağlanacak
TRISC=0                      'RC3,4,5 SPI için çıkış
TRISD=0         
TRISE=0            

PORTA=0   'portlar sıfırlanıyor
PORTC=0
PORTB=0
PORTD=0
PORTE=0

'Değişkenler tanımlanıyor

Symbol CLK=PORTC.3
Symbol DTA=PORTC.5
Symbol LATCH=PORTC.4

Dim bilgi1 As Byte
Dim bilgi2 As Byte
Dim bilgi3 As Byte

Dim ham As Byte         'ADC için değişken

bilgi1=1
bilgi2=7
bilgi3=16


BASLA:

ham = ADIn 0                                'Porta-AN0 dan okunan değeri ham değişkeni içine ata
BAK1: If ADCON0.2=1 Then BAK1    'Çevrim bittiğinde alt satırdan devam edecek

Print At 1,1,"1=",DEC3 bilgi1," 2=",DEC3 bilgi2
Print At 2,1,"3=",DEC3 bilgi3," 4=",DEC3 ham

SHOut DTA,CLK,lsbfirst,[bilgi1,bilgi2,bilgi3,ham]
PulsOut LATCH,1
DelayMS 500

GoTo BASLA
End