avatar_ete

Çoklu Display Bilgi Panosu

Başlatan ete, 28 Ağustos 2011, 13:30:57

ete

Son projemiz Çoklu display'e sahip bir Bilgi Panosu olacaktır.

Tabiiki buarada vereceğimiz örnek devre ve program amaca göre geliştirilebilir bir sistem olacaktır.

Belirli bir amacımız olmadığı için biz yanlızca 4 adet ADC girişinden okunan bilgilerin 4 adet satırdan oluşan 7 segment display gurubunda görüntülenmesini sağlayacak bir pano sistemi geliştirmeye çalıştık.



Söz konusu displayler değişik bir tarama mantığı ile çalışmaktadır. Her bir satır bir adet shift register (74HC595) ile sürülmekte ve satırların hepsinin ortak katod uçları ise tek bir tarama transistörü tarafından sürülmektedir. Bu sistemde temel amaç işlemciyi fazlaca meşgul etmeden mümkün olduğunca fazla bilginin displaylere aktarılmasıdır.



Sistem çalışma mantığı şu şekildedir.;


Önce her bir ADC kanalından sıra ile okuma yapılıp displaylerde gösterilecek bilgiler desimal sistem basamaklarına göre hesaplanır. Yani Birler , Onlar, Yüzler ve Binler basamakları ayrı ayrı hesaplanır.

Bu arada programda her 1500 us de bir kesme oluşturularak her kesmede bütün sıraların birer haneleri aktif edilir. Bu işlem ortak uçları süren transistör vasıtası ile yapılmaktadır.

Aynı anda shift registerlere güncel değerleri verilerek bilgiler güncellenmiş olur.

Tarama sitemini biraz daha açacak olur isek. Devremizde 4 adet sıra bulunmaktadır.

Her kesme oluştuğunda SIRA değeri bir artırılır ve sıra değeri 4 olunca yeniden sıfırlanır.

Sıra=0 ise Bütün sıraların birler haneleri aktif edilir. Ve bütün sıralardaki sağdan ilk displaylerde birler hanesinde yer alacak rakam belirir.

İkinci kesmede Bu sefer Onlar haneleri aktif edilir. Registerlere güncel değerleri verilerek bilgiler yenilenir.

Üçüncü kesmede Yüzler haneleri aktif edilir. Dördüncü kesmede Binler haneleri aktif edilerek işleme devam edilir.

Sistem bu şekilde çalışmakta ve simulasyonda bile herhangi bir titreme vs görülmemektedir. Buda sistemin kararlı çalıştığının bir ifadesidir.



Verdiğimiz sistemde toplam 4 sıra ve her sırada 4 display olacak şekilde bir devre tasarlanmıştır.

Aynı devrede boşta kalan pinler kullanılarak 8 adet sıra daha ilave edilebilirdi. Zira her sıra yalnızca pic den 2 pin kullanacaktır. Ancak sırada yer alan display adedi (hane) de artırılmak istenirse her bir hane için bir transistör ilave edileceği düşünülerek boş pin sayısından her hane için 1 adet düşülmesi gerekir.

Şimdi devre şemamızı verelim ;





Şimdide Programı Verelim;
****************************************************************
'* Name : DISPLY_YENI.BAS
'* Author : [ETE ]
'* Notice : Copyright (c) 2011 [E T E]
'* : Devre ve program birlikte ETE ye aittir
'* Date : 30.03.2011
'* Version : 1.0
'* Notes :
'*
'****************************************************************
@ DEVICE PIC16F877 'işlemci 16F628
@ DEVICE PIC16F877, WDT_ON 'Watch Dog timer açık
@ DEVICE PIC16F877, PWRT_ON 'Power on timer açık
@ DEVICE PIC16F877, PROTECT_On 'Kod Protek kapalı
@ DEVICE PIC16F877, HS_OSC 'Dahili osilatör kullanılacak
DEFINE OSC 4
'adcon1=7
ADCON1=%10000010
DEFINE ADC_BITS 10 'A/D çevirim sonucu kaç bit olacak
DEFINE ADC_CLOCK 3 'Clock kaynağı (3=rc)
DEFINE ADC_SAMPLEUS 100 'Örnekleme zamanı mikro saniye cinsinden. PORTA=0:TRISA=%00001011
PORTB=0:TRISB=0 PORTC=0:TRISC=0 PORTD=0:TRISD=0 PORTE=0:TRISE=0
SAYIA VAR WORD 56
SAYIB VAR WORD 58
SAYIC VAR WORD 60
SAYID VAR WORD 62
BIR0 VAR BYTE
ONN0 VAR BYTE
YUZ0 VAR BYTE
BINN0 VAR BYTE
BIR1 VAR BYTE
ONN1 VAR BYTE
YUZ1 VAR BYTE
BINN1 VAR BYTE
BIR2 VAR BYTE
ONN2 VAR BYTE
YUZ2 VAR BYTE
BINN2 VAR BYTE
BIR3 VAR BYTE
ONN3 VAR BYTE
YUZ3 VAR BYTE
BINN3 VAR BYTE
SIRA VAR BYTE
TEMP VAR BYTE
X VAR BYTE
RAKAM VAR BYTE
I VAR BYTE
SYMBOL CLK0=PORTC.0
SYMBOL DTA0=PORTC.1
SYMBOL CLK1=PORTC.2
SYMBOL DTA1=PORTC.3
SYMBOL CLK2=PORTC.4
SYMBOL DTA2=PORTC.5
SYMBOL CLK3=PORTC.6
SYMBOL DTA3=PORTC.7
SYMBOL TR3=PORTD.0
SYMBOL TR2=PORTD.1
SYMBOL TR1=PORTD.2
SYMBOL TR0=PORTD.3
SYMBOL KILIT=PORTD.4
OPTION_REG=%10000010 'bölücü 1/8 olarak ayarlandı
INTCON=%10100000
PAUSE 300
TMR0=69
ON INTERRUPT GOTO kesme
BASLA:
ADCIN 0,SAYIA
IF ADCON0.2=1 THEN BASLA
GOSUB AYARLA_SAYIA
PAUSEUS 50
BIR:
ADCIN 1,SAYIB
IF ADCON0.2=1 THEN BIR
GOSUB AYARLA_SAYIB
PAUSEUS 50
IKI:
ADCIN 2,SAYIC
IF ADCON0.2=1 THEN IKI
GOSUB AYARLA_SAYIC
PAUSEUS 50
UC:
ADCIN 3, SAYID
IF ADCON0.2=1 THEN UC
PAUSEUS 50
GOSUB AYARLA_SAYID
FOR I=1 TO 255
PAUSEUS 5
NEXT
GOTO BASLA
'—————————-ALT PROGRAMLAR————————————-
AYARLA_SAYIA:
TEMP=SAYIA DIG 0
GOSUB AL:BIR0=RAKAM
TEMP=SAYIA DIG 1
GOSUB AL:ONN0=RAKAM
TEMP=SAYIA DIG 2
GOSUB AL:YUZ0=RAKAM
TEMP=SAYIA DIG 3
GOSUB AL:BINN0=RAKAM
IF SAYIA/10=0 then onn0=0
IF SAYIA/100=0 then YUZ0=0
IF SAYIA/1000=0 THEN BINN0=0
RETURN
AYARLA_SAYIB:
TEMP=SAYIB DIG 0
GOSUB AL:BIR1=RAKAM
TEMP=SAYIB DIG 1
GOSUB AL:ONN1=RAKAM
TEMP=SAYIB DIG 2
GOSUB AL:YUZ1=RAKAM
TEMP=SAYIB DIG 3
GOSUB AL:BINN1=RAKAM
RETURN
AYARLA_SAYIC:
TEMP=SAYIC DIG 0
GOSUB AL:BIR2=RAKAM
TEMP=SAYIC DIG 1
GOSUB AL:ONN2=RAKAM
TEMP=SAYIC DIG 2
GOSUB AL:YUZ2=RAKAM
TEMP=SAYIC DIG 3
GOSUB AL:BINN2=RAKAM
RETURN
AYARLA_SAYID:
TEMP=SAYID DIG 0
GOSUB AL:BIR3=RAKAM
TEMP=SAYID DIG 1
GOSUB AL:ONN3=RAKAM
TEMP=SAYID DIG 2
GOSUB AL:YUZ3=RAKAM
TEMP=SAYID DIG 3
GOSUB AL:BINN3=RAKAM
RETURN
AL: LOOKUP TEMP,[63,6,91,79,102,109,125,7,127,111,99,57,64],RAKAM :RETURN
DISABLE
KESME:
SIRA=SIRA+1
IF SIRA=4 then SIRA=0
IF SIRA=0 THEN
TR0=0
SHIFTOUT dta0,clk0,1,[BIR0]
SHIFTOUT dta1,clk1,1,[BIR1]
SHIFTOUT dta2,clk2,1,[BIR2]
SHIFTOUT dta3,clk3,1,[BIR3]
PULSOUT KILIT,1
TR3=1
ENDIF
IF SIRA=1 THEN
TR3=0
SHIFTOUT dta0,clk0,1,[ONN0]
SHIFTOUT dta1,clk1,1,[ONN1]
SHIFTOUT dta2,clk2,1,[ONN2]
SHIFTOUT dta3,clk3,1,[ONN3]
PULSOUT KILIT,1
TR2=1
ENDIF
IF SIRA=2 THEN
TR2=0
SHIFTOUT dta0,clk0,1,[YUZ0]
SHIFTOUT dta1,clk1,1,[YUZ1]
SHIFTOUT dta2,clk2,1,[YUZ2]
SHIFTOUT dta3,clk3,1,[YUZ3]
PULSOUT KILIT,1
TR1=1
ENDIF
IF SIRA=3 THEN
TR1=0
SHIFTOUT dta0,clk0,1,[BINN0]
SHIFTOUT dta1,clk1,1,[BINN1]
SHIFTOUT dta2,clk2,1,[BINN2]
SHIFTOUT dta3,clk3,1,[BINN3]
PULSOUT KILIT,1
TR0=1
ENDIF
TMR0=69
INTCON.2=0
RESUME
ENABLE
END

ete

#1
Bu projenin bitmiş haline ait proje dosyalarını yükleyebilirsiniz.



Ete

mozdogan

Merhaba.

Forum'da konuları gezerken bir durum dikkatimi çekti. Dropbox'da paylaştığınız ekler ve bazı proteus resimleri de artık ilgili sitelerde yok.

Müsait bir zamanınızda paylaşımlarınızı gözden geçirmenizi tavsiye ederim.

Kolay gelsin.

ete

Maalesef Dropbox hesabımı kapattığı için bir sürü dosya bu şekilde ulaşılamaz hale gelmiş. Ancak siteyi arayıp bulmak çok zor benim için. Bu nedenle karşılaştığınız yerleri buraya açıklarsanız elimde olanları siteye yüklerim.

Yukardaki Display_Yeni dosyasını ekledim mesela.
Ete

Powered by EzPortal