Arkadaşlar 40 sütun bir kayan yaz yaptım. Sütun taramalı (satır taramalı olarakta denedim) olarak yapıldı. Fakat led parlaklıkları gündüz okumaya yetmıyor. 8x8matixler kullandım. Şekli şu:
(http://www.bilgeyazilim.net/image/11.jpg)
bunun parlaklığını nasıl arttırabilirim?
2. Nasıl bir kutu ve önüne cam koymalıyım?
Display'leri direk olarak picin çıkışlarından sürme.Araya transistör veya buffer koymalısın.
Selam arkadaş yaptığın devreyle ilgili şema ,kodlar ve diğer dosyaları verebilirmisin çalışıyorsa bende yapmayı planlıyorum.
led lerin parlaklığını pwm metoduyla belirleyebilirsin.birde pic te sürerken uln2803 entegresini kullan.Ledin parlaklığı max nekadar akım çekiyorsa ona bağlıdır birde dar açılımı geniş açılımı ona bağlıdır.Ben yaptığım projeyi kutu içerisine daha toplayamadım ama önüne kırmızı mika camlar oluyo onlardan koymayı düşünüyorum camcılardada bulunabilir.Kolaygelsin....
displayleri sürdüğün direnç değerini düşürerek parlaklığı arttırabilirsin,Fakat display daha fazla akım çekeceği için ömrü azalabilir..Zaten hazır dotmatrix ler ile yapacağın kayan yazı projelerinde normal ledler ile yakaladığın parlaklığı elde edemezsin..Devreni kutulayıp önüne kumlu cam koyar isen verim biraz daha artar..
gün ışığında görünmesini istiyorsan mcd si yüksek ledler kullanmalısın. bende çok araştırdım ama matrislerin gün ışığında görüneni yok. bir de yazının önüne mutlaka kumlu flexi koymalısın. normal flexi ile çok farkediyor.
Merhaba,
Tarama mantığın cok karışık olmuş. En önemlisi ekran taraması sayısı sanırım 8 den cok yüksek. Onun yerine en fazla 8'li tarama yapmalısın ve taramada shift register kullanırsan özellikle Latch özellikli örneğin 74hc595 gibi taramada parlaklığı cok artırmış olursun. Bu yöntemle fazla parlaklık elde edemessin.
Selamlar.
satırlarıda sütunlarıda transistör,uln vs.. ile kuvvetlendirmen gerekli.. sütun taramada hazır dotmatris ile enyüksek parlaklığı bu şekilde birde sutun bekletme sürelerini arttırarak elde edebilirsin.. bende kayan yazı işiyle uğraştım. eğlenceli ancak yorucudur.. donanımda değşiklik yapamıyorsan bekletmeleri biraz arttır ama bu seferde titreşim olayı başını ağrıtabilir.. sonuçolarak aşağıdaki parlaklığı elde etmek istiyor isen 3000-5000 mcd led kullanman gerekli.
(http://picproje.org/upload/Calismalar/Y-1.JPG)
1- sütun taramadan satır taramaya gec.
2- led sürmelerini tranzistör gurubu ile güçlendir.
Neden sütun taramadan satır taramaya geçmelisin ?
İnsan gözu 18-20 mSn tarama döngüsünün üzerine çıkıldığı zaman ledlerde kırpışma gorunmeye başlar (göz algılamaya başlar).Tarama göngüsü içinde ledlere nekadar çok eneji verirsen (zaman olarak) ledler okadar parlak yakarsın.Senin devrende sütunlarının sayısı satırlarının sayısından fazla olduğu için daha az enerji verilmiş olur (zaman olarak).
Senin devrende led guruplarının satır ve sütun sürmede zaman olarak led guruplarının yan zamanını bir hesaplayalım.
Zaman hesabı.
1 satırın yanma süresi = (16mSn/8satır) = 2mSn
1 sütunun yanma süresi = (16nSn/40 sütun) = 0,4mSn
Satır sürmede led gurubu sütun sürmeye göre 5 katı daha uzun süre yanmakta.Kayan yazının sütun sayısını arttırırsan bu zaman daha da kısalacaktır.Kısacası devreni satır sürmeye çevir.
Satır tarama sütun taramaya göre çok yüksek akım çeker kayan yazı uzadıkça çekilen akımda sütun sayısı arttıkça aynı oraranda yükselir sütun tarama da böyle bir dert yok.. Satır tarama ile sutün taramanın bir birlerine göre avantaj ve dezavantajları vardır ancak parlaklık veya kıpraşımdan ziyade efekt oluşturma ve animasyon ile ilgilidir...
Arkadaşlar ellerinize sağlık. Dediklerinizi şimdiye dek çalışmalarıma nazaran düşününce, 40 sütunlu projemde bir sütuna yanma zamanı 40.sütunun sönmesiyle geliyorki, buda matrixler için çok uzun. Satır taramada ise bu olay 8.sütunun sönmesiyle oluyor. Yanlışlık ortada. Birisi 1/40 diğeri 1/8 oranında. İnanın o kadar yol denedim ki, hiç bu olay aklıma gelmedi. Hepinizin engin gilgi paylaşımına teşekkür ediyorum.
Arkadaşlar projeyi değiştirmekten başka çare kalmadı ve en doğru seçim sanırım 74HC595 araştırmalarıma göre. Şöyle düşünüyorum :
Önce 1.satır aktif. Buna nazaran o satırda yanması gereken sütunlara '0' vericem. Yani satır taraması bu oluyor sanırım ki, alt veya üst satırdan başlayarak sütun bilgileriyle oynicam. (Eğer bir yanlışlık varsa düzeltin)
Fakat 74HCnin çalışmasını çözemedim. Bana öz bir şekilde şu prensip vardır, şöyle sinyal gönderirsen bilgilerini çıkartırsın diye anlatabilirmisiniz. Veya sizce nasıl daha iyi anlayacaksam.
(http://www.bilgeyazilim.net/image/3.jpg)
@bilgehansahin84, aslında en başında sana bu yöntemi önerecektim ama programda ufak bir zaman kaybına sebep olmamak için önermedim. 74595 entegresi data ve clock uçlarından gelen seri bilgiyi çıkışlara paralel olarak aktarır.Örnek verecek olursak; diyelim ki %10101111 bilgisini entegrenin çıkışlarına göndereceksin. İlk olarak en büyük bitten başlarsın yani 7. bitten.Bu biti data ucuna gönderirsin ve clock ucunu önce "1" e sonra "0" a çekip bir kare dalga gönderirsin.Clock sinyalini gönderince data ucundaki bilgi 74595 entegresinin 15 nolu bacağına geçer.Daha sonra 6. biti data bacağına verirsin ve aynı clock işlemini tekrar uygularsın.Bu sefer 15 nolu uçtaki bilgi 1 nolu uca kayar ve data ucundaki bilgi ise 15 nolu uca geçer.Bu işlemi 8 adet bit gönderene dek yaparsın.Son olarak enable ucuna kare dalga sinyal gönderirsin (1 ve 0). 74595 entegresinin en büyük özelliklerinden birisi gönderdiğin 8 adet biti tutmasıdır.Ayrıca içerisinde buffer vardır.Dolayısı ile çıkışı oldukça kuvvetlidir.Örnek program istersen;
'******************************************************************************
'Lcd_reg registerindeki bilgiyi seri olarak gönderir.
'******************************************************************************
gonder:
if tekrar=8 then
tekrar=0 : high enable : pauseus 1 : low enable : return
endif
if lcd_reg.7=1 then
data=1 : clock=1 : pauseus 1 : clock=0
lcd_reg=lcd_reg<<1 : tekrar=tekrar+1 : goto gonder
endif
data=0 : clock=1 : pauseus 1 : clock=0
lcd_reg=lcd_reg<<1 : tekrar=tekrar+1 : goto gonder
Devre şeması ise gayet basittir.
(http://img291.imageshack.us/img291/5162/74595fy4.png)
Kolay gelsin.
74HC595 Yerine tipik595 kullanmanı tavisye ederim.. farkı şu ayrıca bir kuvvetlendirici kullanmana gerek kalmıyor zaten fet çıkışlı olmsı lazım..
kullanımı oldukça basittir 74164 kullandıysan ek olarak bir lacth birde QE ucu bulunmaktadır..
seri datanı 74164e basar gibi data ve clock uçlarını kullanarak 8 bit basarsın sonra normalde 0 da tutacağın lacht ucuna 1-0 palsini uygularsan veri çıkışı aktarılır. eğer QE ucunuda 0 konumuna alırsan veri çıkışta görüntülenir.. satır taramada tüm sutun sayısı kadar veriyi bu şekilde bir döngüde basarsan sonrada yolladığın verinin sutun bitini aktif edersen tüm satır boyunca yolladığın veri görünrülenir.. negatif veya pozitif tarama yapabilirsin ancak sutunları negatif satırları pozitif olarak kullanmak daha avantajlıdır...
@Eagle_Tim
"Satır tarama sütun taramaya göre çok yüksek akım çeker"
Bu ifadeniz yanlış kayan yazıdan aynı ışık şiddetini elde edebilmek için toplamda aynı gücü uygularsın(led leri kastediyorum).
"efekt oluşturma ve animasyon ile ilgilidir..."
Cihazın program kısmının algoritması donanıma göre belirlenir ve programı ona göre yazarsın bazı animasyonlar sütun sürmede kolay satır sürmede daha zordur başka bir animasyon ise satır sürmede daha kolay sütun sürmede yapmak daha kolay olabilir . Pofesyonel kayan yazı üreten firmalar genellikle satır sürme şeklinde donanım oluşturuyorlar.
Genelde kayan yazılar karakter olarak ifade edilirler senden 8 karakterli ,16 karakterli ve 24 karakterli kayan yazı isteseler ve bunların ışık şiddetleri aynı olması isteniyor bunu nasıl gerçekleştirebileceğini bir düşün(1 karakter 6 sütundan oluşmakta)..
Arkadaşım Kayan Yazıda bir tecrüben varsa tartışabiliriz.. ben hertür kayan yazı sistemini denedim bizzat tecrübeyle sabittir....
Elektriksel düşünce elektronikte ölüme mahkumdur. aynı ışık şiddeti gözle görülmesine ragmen aynı anda yanan led sayısındaki değişiklik çekilen akımda değişiklik yapar fakat bunu göremiyorsunuz heralde..
Ayrıca sutun taramayı önermemin sebebi arkadaşın sisteminin bu yazılım üzerine kurulmuş olmasından şimdi oturup tekrar karakter kod tablosu çıkaracak sıfırdan yazılım yapmaya çalışacak vs.. ben zamandan tasarruf etsin ve elindeki yazılımı işe yarar hale getirsin diye o örneği verdim ve hiç bir yanlışlık yok..
Arkadaşlar harikasınız. Logan arkadaşımın anlatışı kafamdaki her bir soru işaretini çözdü. Tek sorun şimdi PIC BASIC PROTONDA bunu yazabilmek. Normalde PIC C kullanıcısıyım. Biraz zorlicak. Şu OFSET olayı çok hoşuma gitti. Önceden verilmiş örnekleri inceliyordum sitedeki. Onlardada derleme sorunu yaşadım. Yazdım zaten görürsünüz o konular içerisinde. OFSET in karşılığını dizilerle yapabilirsem sanırım PIC C de yazıcam.
Eagle_Tim arkadaşım sanada çok teşekkür ederim. Elimde 74HC595 olduğu için onunla geliştiricem artık. Ne diyim, Ya Allah !
bmutlu arkadaşımada şu konuda katılıyorum ki, sütun taramada çok akım çekiliyor. Dün meslek lisesi hocalarıyla bir araya gelip bu projeyi tartıştık ve yaptığım devrenin çok akım çektiği, sütun sayısının çok oluşunun bir lede sıranın gelmesini uzattığı sonuçuna vardık. Eve gelip nete girdiğimde de,sağolun sizlerde aynı uyarıları yapmışsınız zaten.
Şunuda söylemek istiyorum ki, Eagle_Tim arkadaşımızın söylediği yöntemi uygulamamdaki tek geçerli sorun, akım olayı. Yoksa entegre bulunur ve fazla bir zaman harcamadan bu iş biter dediği gibi. Ama sütun sayısı belki 200 lere kadar çıkıcak. O zaman bu yöntem gerçekten bana dert olucak. Teşekkür ediyorum yinede.
Pic basic kullanmııyorum ama alsana asmde yazılmış basit bir 595 8 bit Data basma alt yordamı...
GONDER
MOVLW H'08'
MOVWF DTA1 ; bir adet register
BCF DT ; 74595 in data ucuna bağlı pin
BTFSC DTA,7 ; yollanacak datanın yüleneceği register
BSF DT
CALL PALSE
BCF STATUS,0
RLF DTA,F
DECFSZ DTA1,F
GOTO $-7
NOP
BSF LQ ;74595 in lacth ucuna bağlı pin
NOP
NOP
BCF LQ
BCF QE ;74595 in QE ucuna bağlı pin
RETURN
PALSE
BSF CLK ; 74595 in CLOCK ucuna bağlı pin
NOP
NOP
NOP
BCF CLK
RETURN
unutmadan bir tavsiye tipik 595 74595 in yüksek akım çıkışlısıdır yani aynı yazılım rahatça çalışır şimdi 74hc595 in çıkışlarını kuvetlendirmeye çalıştığında başka malzemeler karta dahil olmak zorunda uln , transistör vs.. bu yüzden ben tekrar düşün derim hem kart boyutu büyüyecek hemde masraflar bende 74595 kullandım hatta ilk gönderdiğim resimdeki kayan yazımda da 74595 var ama yinede sen bilirsin..
NOT : Kod Tagı kullanalım !!!
@Eagle_Tim
Bana karşı uslubunu biraz sert buldum .Birbirimizi şahsen tanımadan sanal ortamda yardımcı olmaya çalışıyoruz tecrubelerimizi aktarıyoruz ki bu işlere yeni başlayanlara yardımcı olmaya çalışıyoruz .Doğrusunun nasıl olması gerektiğini göstermeye çalışıyoruz .
Arkadaşlar şu şekilde yapmaya çalışıcam. Umarım bağlantılar doğrudur. Yanlış ise lütfen düzeltin. Amacım PORTB den sütunları tekter teker aktif etmek. Satırlardan da yanması gerekenleri belirlemek. 74HC595 ile Logon arkadaşımızın dediği gibi satırlara 0 ve 1 lerden oluşan veriyi gönderebilirim. İşte bunu bir karakte kümesine göre nasıl yapıcam, orada mantık yürütemiyorum. Diyelimki, "BILGEHAN" ismi hafızada kayıtlı. Bu karakterlerin kodlarını alt prosedürlerden çekip hangi mantıkla 595 e göndericem. Onları yapamıyorum.
Yani karakterler şu şekilde oluşuyorsa eğer
(http://www.bilgeyazilim.net/image/2a.jpg)
Şöyle bir mantıklada karakterleri göstertmem gerekiyor.(diye düşünüyorum)
(http://www.bilgeyazilim.net/image/3a.jpg)
Devre şeklinide şöyle oluşturdum. Umarım doğrudur. Bunu bir hocam yapmış. 3 tane 8x8 matrix ve 3 tanede TPIC6B595N entegre ile olayı bitirmiş.
(http://www.bilgeyazilim.net/image/1a.jpg)
sorunum ve düşüncelerim içte bunlar arkadaşlar. Bu mantığı nasıl koda dökebilirim.
bmutlu; ben genel olarak böyle konuşuyorum sana özel bir durum yok kusura bakma :D
bilgehansahin84 ;
tipik595 i bulmuşsun sıra karakter tablosu oluşturmakta.. şimdi oturup 8x5 için yatay tarama (satır) ya göre a dan z' ye kod tablosu çıkarmalısın..
her harf 6 sutun kaplar yani altı adet 8 bit data ancak biri boşluk olduğundan 5 adet data
DATA_TAB
INCF SUTUN,F
MOVFW SUTUN
ADDWF PCL,F
RETLW H'00'
H_A_00; a harfi adres 00
RETLW H'3F'
RETLW H'48'
RETLW H'88'
RETLW H'48'
RETLW H'3F'
H_B_05; b harfi adres 05 vs...
RETLW H'FF'
RETLW H'91'
RETLW H'91'
RETLW H'91'
RETLW H'6E'
H_C_0A
RETLW H'7E'
RETLW H'81'
RETLW H'81'
RETLW H'81'
RETLW H'42'
H_C2_0F
RETLW H'7C'
RETLW H'82'
RETLW H'83'
RETLW H'82'
RETLW H'44'
H_D_14
RETLW H'FF'
RETLW H'81'
RETLW H'81'
RETLW H'81'
RETLW H'7E'
H_E_19
RETLW H'FF'
RETLW H'91'
RETLW H'91'
RETLW H'91'
RETLW H'81'
H_F_1E
RETLW H'FF'
RETLW H'90'
RETLW H'90'
RETLW H'90'
RETLW H'80'
daha sonra bu tablodan harfin aktif edilecek satıra ait kodunu alıp shift registere basacaksın. tüm harfler için o satıra ait 8 bit verileri bastıktan sonra o satırı aktif edeceksin.. sonra diğer satır için aynı şeyi tekrar edeceksin satır sonunda bu olayı başa çevireceksin biz buna refresh döngüsü diyoruz.. refresh döngüsünün zamanıda parlaklığa etki eden bir etkendir.. genel prensip bu.. yukarıdaki tablo sutun tarama için ancak satır taramayla arasındaki tek fark yüklenen rakamlar.. birde yatayı pozitif dikeyi negatif olarak kullansan daha iyi olur çünki yataydan 12 volta kadar voltajı arttırabilme imkanın olur parlaklık yine az gelirse böylece max arttırıma gidebilirsin..
Şimdi dediğini açıkçası tam olarak anlamadım. Bana örnek verebilirmisin : 16 veya 24 sütun için mesala 'BILGE'yi nasıl göstericem. Yukarıda kodladığım olay doğru dimi? Yani 'BIL' kelimesinin (dediğin gibi satır ve sütunları değiştirdim) çıkması için satıra '00000001' sütuna ne göndericez?
sütuna önce birinci satırdan taramaya başlayacağın için B harfinin en alt satırının datası yani h'0E' Daha sonra I harfının ilk satrının datası yani h'04'
daha sonrada L harfinin en alt satrırının datası yani h'1F' Datalarını ard arda yollayacaksın sonra satırı aktif ettiğinde bu gönderdiğin dataların hepsi birden görünecek sonra diğer satırın datalarını bu şekilde yollayacaksın.. unutmadan gönderme programın 8 bit değil 6 bit olmalı daha önce 8 bit veri bas demiştim düzeltiyorum, çünki karaktterlerin yataydaki kodları 6 bitlik bir yer kaplar. buyüzden 6 bit bamalısın ki bir sonraki karakter kodu da diğer karakterle arasında 1 bit boşluk kalsın.. 8 bit basarsan harflerin arasında büyük boşluk oluşur kötü bir görüntü olur..
Deediğini anladım. Bende aynı şeyi söylüyordum ama, acemilik işte, anlatamadım. Şimdi asıl sorun karakterlerin en alt satırının datasını nasıl alacağım. Aslında en başından beri sorunum buydu. Basice yeni başladım. Bu konuda inşallah basic ustaları bir yol gösterir. Aşinalık var. O kadar uzak değilim. Visual Studio kullandığım için yabancı değil. Hepsi aynı. Senden tekrar yardım isticem üstat. Çok teşekkür ediyorum.
Basic ustalarına şunu sormak istiyorum,
(http://www.bilgeyazilim.net/image/3a.jpg)
yukarıdaki 'BIL' gelimelerinin en alt satırındaki kodlarını nasıl elde edebilir. Hangi kod bu işi yapar bulamadım. Ve 74HC595 için PORTA.0 dan gönderebilirim. SHIFTIN VE SHIFTOUT diye kodlarla karşılaştım kitapta. Bunlar işimi görürmü benim?
@Eagle_Tim peki bana ASM ile bu son satır data kodlarının nasıl alınıp PORTA nın ilgili bacağından gönderildiğini gösterebilirmisin. Bu işe ilk önce ASM ile başladığım için, bir fikir olabilir sanıyorum. Hala alt dataları nasıl elde edebileceğimi bulamadım. Karakterleri yan olarak tanımlamak geliyor aklıma ama, çok uzun olucak ve saçma gibi. Yani 8x5 değilde 5*8 olarak.
sabit bir yazı yazdıracaksan karakter kod tablosu yapmana gerek yok.. yapacağın şey yazdıracağın harflerin kodlarını bir tabloda toplamak..
DATA_TAB
INCF SUTUN,F
MOVFW SUTUN
ADDWF PCL,F
RETLW H'00'
birinci satır dataları;
RETLW H'3F'
RETLW H'48'
RETLW H'88'
RETLW H'48'
RETLW H'3F'
ikinci satır dataları
RETLW H'FF'
RETLW H'91'
RETLW H'91'
RETLW H'91'
RETLW H'6E'
üçüncü satır dataları
RETLW H'7E'
RETLW H'81'
RETLW H'81'
RETLW H'81'
RETLW H'42'
vs.. 8 satır dataları
RETLW H'7C'
RETLW H'82'
RETLW H'83'
RETLW H'82'
RETLW H'44'
sonra yapacağın tekşey sutun registerini clear etmek ıncf sutun,f deyip call data_tab diyeceksin ilk harfin lk satırın datasını alıp dönücek sende ekrana basıp ıncf sutun,f deyip tekrar call tablo diyceksin budefa 2. harfin ilk satır datasını alıp dönücek bu işlem harf sayısı kadar tekrar ettikten sonra o satırı aktif edip gösterecek ve diğer satıra geçeceksin tabloda karakter kodlarınıda bu sıraya göre alt alta koymalısın böylece sabit bir yazıyı ekranda gösterip kaydıra bilirsin.. karakter kod tablosu oluşturma işi biraz uzun benimde pek zamanım yok bu yüzden bunu anlattım kolaygelsin
Teşekkür ediyorum. Şu an programı yazdım Basic ile. Belkide yazmaya çalıştır. Eğer şeklimde bir sorun yoksa karakterleri çıkartmaya çalışıyorum. Programda herşey normal gidiyor fakat isiste karakter göremedim. Onunla uğraşıyorum. Sanada kolay gelsin.
arkadaşlar merhaba. satır taramalıyı yaptım basic ile. ama canım çıktı. ilk basic programım. şu pic basic teki LOOKUP'un karşılığını çıkarabilseydim pic c de işim kolay olacaktı ama neyse. şimdi size şunu sormak istiyorum.: program satır taramalı ve matrixlerin satırlarına +5v veya daha fazla gerilim vermek istemiyorum. bunun için pic çıkışlarına (satırlar için) transistör bağlamak istiyorum. Hangi transistör veya MOSFETi bağlamalıyım. Hocam MJE2955T kullanmış. katalogdan baktımda, harika. Ben memnundum, açıp kapama hızı tartışılmaz diyor.
Ben maliyetinede bakıyorum onun için bilen arkadaşlardan yardım?
BİR SORUM DAHA VAR ARKADAŞLAR. SATIR TARAMADA YAZIYI HANGİ MANTIKLA KAYDIRMAMIZ GEREKİYOR. SÜTUN TARAMADA BİR ÖNCEKİ SÜTUNU AKTARMA MANTIĞI VARDI. E BUNDA NE YAPICAZ?
BDX53 veya 54 gibi bir güç transistörü önerebilirim.
Tarama mantığına gelince satır taramayı secmen ıyı olmuş.Burada kaydırma yontemın ekran regısterlerını rlf yapman yeterlı olucaktır.
her satır ıcın regıster dızısı olusturacaksın.ve bunları pespese kaydıracaksın.Boylelıkle ekranında yazı kayacak.Örnek:
bcf status,c
rlf satir1_blok1,f
rlf satir1_blok2,f
bcf status,c
rlf satir2_blok1,f
rlf satir2_blok2,f
.
.
.
.
bcf status,c
rlf satir7_blok1,f
rlf satir7_blok2,f
yukarıda kaydırma rutını bulunmakta.
ekranın 7 satırdan(satir1_..... , ..... , satir7_......) ve 16 stundan(..._blok1 , ...._blok2) olustugunu varsayalım.
Yukarıdakı regıster kaydırma mantıgı ıle ekranı kaydıracaksın.Tabı kaydırmadan once bu ekran regısterlerınde ekran datası bulunmalı.
Kaydırma ıslemının ardından ekrana satır satır bu regısterrı gonderrek goruntuyu olusturacan.örnek:
movf satir1_blok2,w
call seri gönder
movf satir1_blok1,w
call seri gönder
call satir1i_secvegöster
movf satir2_blok2,w
call seri gönder
movf satir2_blok1,w
call seri gönder
call satir2yi_secvegöster
Kolay gelsin....
Cevabını görmeden önce biraz uğraştım ve her satırı bir diziye aymadan yapamadım. Ama 48 sütunluk bir yazıda, Pic Basic ile, 8 elemanlı 48 tane dizi oluşturmam gerekmiyor mu? E bunun içi denemedim ama hafıza yetmez. Dediklerinden de bunu çıkardım sanırım. Gösterilen her satırdaki dataları sakla. Sonrada yazının arkasından tek tek gönder diye anladım. Doğrumu?
Alıntı yapılan: "bilgehansahin84"Cevabını görmeden önce biraz uğraştım ve her satırı bir diziye aymadan yapamadım. Ama 48 sütunluk bir yazıda, Pic Basic ile, 8 elemanlı 48 tane dizi oluşturmam gerekmiyor mu? E bunun içi denemedim ama hafıza yetmez. Dediklerinden de bunu çıkardım sanırım. Gösterilen her satırdaki dataları sakla. Sonrada yazının arkasından tek tek gönder diye anladım. Doğrumu?
C den cok fazla anlamam ama sanırım benı yanlıs anlamıssın.
48 stun ve 8 satır lık bır kayan yazı ıcın 48 adet regıstere ihtiyacın vardır.
Bu durumda ( 6*8=48 ) 6 adet 8 elemanlı bır dızı acman yeterlı olacaktır.
Burada butun ekran datalarını satır satır farklı regısterlerde saklamalısın.
Saklamadan yapılamazmı dıye sorarsan yapılır elbette ama cok daha zor ve kotu bır kayan yazı yapmıs olursun.
Şimdi bir dakika, 6 adet 8 elemanlı dediğin ile satır satır saklamalısın olayı bana farklı geldi.
satır satır dediğinden şunu anladım :
diyelimki ilk satırdaki veriler atıyorum : 11001010000111000000101001.....(48 tane)
bunu bir dizide saklamalısın diye anladım.
6 adet 8 elemanlı demenden de her bir ledin datasını saklamalısın, veya bir başka mana 6 ya 8 boyutunda bir dizi. Yani iki boyutlu bir dizi oluştur diyorsun. Basicte bu iki boyut olayını bulamadım zaten. Yoksa aklımdan bunu bir denemek geçmemiş değildi.
@XX_CİHAN_XX , kusura bakma o kadar çok üzerinde durdumki sütun taramanın, satır tarama için yürüteceğim mantıkta oradan kalan kırıntıları silmem zor oluyor.
Eğer hala anlamamışsam bana basit bir şekil ile açıklayabilirmisin.
@XX_CİHAN_XX, eğer dediğini anladıysam, 6 adet 8 elemanlı dizi tanımladım ve her 8bitlik satır datasını bunlarda sakladım. sıra geldi bunların kaydırmadaki argoritmasına. inşallah yazabilirim.
;SATIR TARAMA SISTEMINE GORE
;7 SATIR VE 48 STUNDAN OLUSAN BIR KAYAN YAZI ICIN ACMAN GEREKEN REGISTER SAYISI VE
;KAYDIRMA MANTIGI ASAGIDAKI GIBI OLMALIDIR
;*******************************************************
LIST P=16F876A
INCLUDE "P16F876A.INC"
;*******************************************************
__config(_CP_OFF & _PWRTE_OFF & _HS_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)
ERRORLEVEL -302
ERRORLEVEL -306
;*******************************************************
CBLOCK 0x20
;EKRAN REGISTERLERI(HER LEDIN KONUMU ILGILI REGISTERIN BIR BITINDE SAKLANICAK!!!)
SATIR1_BLOK1
SATIR1_BLOK2
SATIR1_BLOK3
SATIR1_BLOK4
SATIR1_BLOK5
SATIR1_BLOK6
SATIR2_BLOK1
SATIR2_BLOK2
SATIR2_BLOK3
SATIR2_BLOK4
SATIR2_BLOK5
SATIR2_BLOK6
SATIR3_BLOK1
SATIR3_BLOK2
SATIR3_BLOK3
SATIR3_BLOK4
SATIR3_BLOK5
SATIR3_BLOK6
SATIR4_BLOK1
SATIR4_BLOK2
SATIR4_BLOK3
SATIR4_BLOK4
SATIR4_BLOK5
SATIR4_BLOK6
SATIR5_BLOK1
SATIR5_BLOK2
SATIR5_BLOK3
SATIR5_BLOK4
SATIR5_BLOK5
SATIR5_BLOK6
SATIR6_BLOK1
SATIR6_BLOK2
SATIR6_BLOK3
SATIR6_BLOK4
SATIR6_BLOK5
SATIR6_BLOK6
SATIR7_BLOK1
SATIR7_BLOK2
SATIR7_BLOK3
SATIR7_BLOK4
SATIR7_BLOK5
SATIR7_BLOK6
;TAMPON REGISTERLERI(EKRANA AKTARILACAK HARFIN TUM DATALARI ONCE BURAYA YUKLENIR)
SATIR1DATASI
SATIR2DATASI
SATIR3DATASI
SATIR4DATASI
SATIR5DATASI
SATIR6DATASI
SATIR7DATASI
ENDC
;*******************************************************
ORG 0x00
GOTO START
ORG 0x04
RETFIE
;*******************************************************
START
; .
; .
; .
; .
; .
; .
;SETUP KISMI
; .
; .
; .
; .
; .
; .
;GONDERILECEK KARAKTERIN SATIR KODLARINI SATIRDATA REGISTERLERINE YUKLE
; .
; .
; .
; .
; .
; .
;KAYDIRMA RUTINI
SHIFT
BCF STATUS,C
RLF SATIR1DATASI,F
RLF SATIR1_BLOK1,F
RLF SATIR1_BLOK2,F
RLF SATIR1_BLOK3,F
RLF SATIR1_BLOK4,F
RLF SATIR1_BLOK5,F
RLF SATIR1_BLOK6,F
BCF STATUS,C
RLF SATIR2DATASI,F
RLF SATIR2_BLOK1,F
RLF SATIR2_BLOK2,F
RLF SATIR2_BLOK3,F
RLF SATIR2_BLOK4,F
RLF SATIR2_BLOK5,F
RLF SATIR2_BLOK6,F
BCF STATUS,C
RLF SATIR3DATASI,F
RLF SATIR3_BLOK1,F
RLF SATIR3_BLOK2,F
RLF SATIR3_BLOK3,F
RLF SATIR3_BLOK4,F
RLF SATIR3_BLOK5,F
RLF SATIR3_BLOK6,F
BCF STATUS,C
RLF SATIR4DATASI,F
RLF SATIR4_BLOK1,F
RLF SATIR4_BLOK2,F
RLF SATIR4_BLOK3,F
RLF SATIR4_BLOK4,F
RLF SATIR4_BLOK5,F
RLF SATIR4_BLOK6,F
BCF STATUS,C
RLF SATIR5DATASI,F
RLF SATIR5_BLOK1,F
RLF SATIR5_BLOK2,F
RLF SATIR5_BLOK3,F
RLF SATIR5_BLOK4,F
RLF SATIR5_BLOK5,F
RLF SATIR5_BLOK6,F
BCF STATUS,C
RLF SATIR6DATASI,F
RLF SATIR6_BLOK1,F
RLF SATIR6_BLOK2,F
RLF SATIR6_BLOK3,F
RLF SATIR6_BLOK4,F
RLF SATIR6_BLOK5,F
RLF SATIR6_BLOK6,F
BCF STATUS,C
RLF SATIR7DATASI,F
RLF SATIR7_BLOK1,F
RLF SATIR7_BLOK2,F
RLF SATIR7_BLOK3,F
RLF SATIR7_BLOK4,F
RLF SATIR7_BLOK5,F
RLF SATIR7_BLOK6,F
;ILK KAYDIRMA ADIMI BITTI
;BUNU SATIR SATIR EKRANA GONDER VE TEKRAR KAYDIR VE TEKRAR GOSTER
;BU DONGUYU 6 DEFA TEKRARLAYINCA 5X7 FONTUNDA (6. SI BOSLUK) ILK HARFI
;EKRANA KAYARAK CIKARMIS OLURSUN.6 ASAMALI KAYDIRMA TAMAMLANINCA
;YENI HARFIN KODLARINI SATIRDATA REGISTERLERINE YUKLE VE AYNI DONGUYE TEKRAR GIR
;HER DONGUYE GIRISINDE EKRANDA BIR HARF KAYACAKTIR
Arkadaşlar PIC BASIC deki mesala deger değişkeninin bit lerine kolayca şu komutla hükmedebiliyoruz : deger.5=1 (mesela deger değişkeninin 5. bitini 1 yap)
Peki PIC C de bunun karşılığı ne?
bit_set(deger,5);