8)
Arkadaşlar,
İsterseniz gelin bu başlık altına bu konuyla ilgili bütün bulduğumuz linkleri ve bilgileri buraya yazalım.Pc Tabanlı
,Pic Kaynaklı , Dijital tabanlı...
farketmez.
XNHCX
https://320volt.com/8-8-led-matris-kayan-yazi-rs232-yazi-gonderme/ (https://320volt.com/8-8-led-matris-kayan-yazi-rs232-yazi-gonderme/)
https://320volt.com/arm7-lpc2101-kayan-yazi/ (https://320volt.com/arm7-lpc2101-kayan-yazi/)
https://320volt.com/bir-klasik-kayan-yazi/ (https://320volt.com/bir-klasik-kayan-yazi/)
https://320volt.com/bilgisayar-kontrollu-kayan-yazi-at90s2313-74hc595/ (https://320volt.com/bilgisayar-kontrollu-kayan-yazi-at90s2313-74hc595/)
https://320volt.com/pic18f452-hakkinda-bilgi-c-dili-pic-uygulamalari/ (https://320volt.com/pic18f452-hakkinda-bilgi-c-dili-pic-uygulamalari/)
https://320volt.com/pic16f88-128x8-pc-kontrol-kayan-yazi-ccs-c-ile/ (https://320volt.com/pic16f88-128x8-pc-kontrol-kayan-yazi-ccs-c-ile/)
https://320volt.com/pic18f452-visual-basic-picbasicpro-kayan-yazi-panosu/ (https://320volt.com/pic18f452-visual-basic-picbasicpro-kayan-yazi-panosu/)
https://320volt.com/3x4-keypad-kontrollu-5x7-dot-matris-led-kayan-yazi/ (https://320volt.com/3x4-keypad-kontrollu-5x7-dot-matris-led-kayan-yazi/)
https://320volt.com/pic16f876-ile-turkce-karakter-destekli-yazi-panosu/ (https://320volt.com/pic16f876-ile-turkce-karakter-destekli-yazi-panosu/)
https://320volt.com/pic16f877-ile-led-display-reklam-ilan-panosu/ (https://320volt.com/pic16f877-ile-led-display-reklam-ilan-panosu/)
https://320volt.com/atmega32-ile-bilgisayar-kontrollu-126x15-ledmatrix-animasyon-yazi/ (https://320volt.com/atmega32-ile-bilgisayar-kontrollu-126x15-ledmatrix-animasyon-yazi/)
https://320volt.com/pic16f628a-ile-matrix-7x32-led-yazi-panosu/ (https://320volt.com/pic16f628a-ile-matrix-7x32-led-yazi-panosu/)
https://320volt.com/kayan-yazi-devreleri/ (https://320volt.com/kayan-yazi-devreleri/)
8) Bu proje
Antraktan.Sanırım SAUTEF de birzamanlar tez olarak verilmiş.
***
http://www.antrak.org.tr/gazete/102002/metin.htm
XNHCX[/color:f9
ae307300]
kayan yazı tekniğini
anlatıyor
http://www4.tpg.com.au/users/talking/5x7%20Display%20Index.html
8) Bilgisayar Kontrollü Dev Kayar Yazı
(220V)
Bilgisayar ile kontrol edilen istenilen ölçülerde dev kayar yazı uygulama olanağı veren, 220V çıkışlı ve 220V ampuller
kullanılarak hazırlanan dev kayar yazı uygulaması. Bu uygulama ile büyük bir binanın tüm çatı çevresi üzerinde istenilen
büyüklükte bir kayar yazı kurulabilir.....
***
http://www.eproje.com/modules.php?name=Content&pa=showpage&pid=29
XNHCX
8) 1 satır 4 karakter kayar yazı devresi
Kayar yazı
konusunda MDS1503DS kartı ve PIC16F84A kullanılarak hazırlanmış kolay ve basit tuş takımlı ve hafızalı kayar yazı
uygulamasıdır.....
***http://www.eproje.com/modules.php?name=Content&pa=showpage&pid=20
[
color=blue]XNHCX[/color]
http://www.adayanik.8m.com/
8)
* http://www.egsalarm.com/elektronik/kayanyazi.htm
XNHCX
8) Entegreler ile Yapılan Kayan Yazı
*** http://fikret.amele.com/elektronik/dijit_kay.htm
XNHCX
8) 7 by 10 LED Moving Sign
*** http://www.bobblick.com/techref/projects/ledsign/ledsign.html
XNHCX
:lol:
128 X 32 MATRIX LED MESAJ ŞEMASI
(http://www.asahi-net.or.jp/~jn6k-krsn/electronics/image/leddsp.jpg)
Site:
*** http://www.asahi-net.or.jp/~jn6k-krsn/electronics/led.htm
XNHCX
8) CAR MESSAGE DISPLAY
*DesignGuide
*SourceCode
*VbasicCode var.
SİTE:
http://private.addcom.de/KeithWilson/Projects/camed.htm
XNHCX
8) Picxie 2 - 8x8 Animated LED Signboard
(http://www.zws.com/products/picxie2/img/picxie2_smile_small.jpg)
ŞEMA.
(http://www.zws.com/products/picxie2/img/picxie2schem.gif)
(http://www.zws.com/products/picxie2/img/picxie2.jpg)
SİTE.
http://www.zws.com/products/picxie2/index.html
XNHCX
8) 4017 ile yapılan Yürüyen Yazı Projesi:)(ePROJE'den)
(http://www.eproje.com/members/upload/derya_1.)
XNHCX
8) Build a Moving Message Display
(http://www.rentron.com/Files/HDSP-2116.gif)
Kaynak kodları da var.
http://www.rentron.com/PicBasic/Moving_Message_Display.htm
XNHCX
8) 7x5 Matrix TEXT Sayı Display
---
Kayan yazı ve led displaylerdeki tarama kavramını daha iyi anlamak için 7x 5 led lambadan oluşan devreyi kurup çalıştırmak doğru olacaktır. Bu amaçla bir adet pic16f84 led lamba, direnç ve transistöre ihtiyacınız olacaktır. -------
http://mail.sdu.edu.tr/~seyit/led4x7/led57.htm
XNHCX
8) Işıklı Elektronik Bilgi Panosu Sistemi ve Otomasyonu HAKKINDADIR.
http://mail.sdu.edu.tr/~seyit/pb06.htm
XNHCX
8) Merhabalar,
Scrolling Led Design
(http://noisybox.net/electronics/LED_sign/sign_title.gif)
İNCELEYİN! http://noisybox.net/electronics/LED_sign/
XNHCX
8) AT klavye'den PIC16F877 aracılığıyla 2x16 LCD display'e veri gönderme
(http://www.antrak.org.tr/gazete/012003/adnan_dosyalar/sema.gif)
** 5 pinli ve 6 pinli Klavye konnektörlerine ait pin numaraları ve karşılıkları resimlerle açıklanmış.
**Ascii karakterlerin hex, decimal ve binary karşılıklarını gösteren dosya, ASCII-Map
http://www.antrak.org.tr/gazete/012003/adnan_dosyalar/ASCII-Map.pdf
***Kaynak kodlar yok.
http://www.antrak.org.tr/gazete/012003/adnan.htm
XNHCX
;) PIC16C84 ile 7*16(112) LED'li Kayar Yazı
Bu devre, PIC16F84 ile 7*16(112)LED ekranlı mini bir kayar yazı uygulamasıdır. PIC0503'e göre daha geniş bir ekran ve daha parlak bir ekran görüntüsüne sahiptir. Ekranda oluşturulan karakterler standart ASCII karakter setine uygun olabileceği gibi istenilen herhangi bir karakter seti yada grafik, program kodunda gerekli değişiklikler yapılarak uygulanabilir. Ekran parlaklığını artırmak için PIC ve 74HC138 entegrelerinin çıkışları transistörler ile güçlendirilmiştir. Devre yapısının satır-sütun tarama mantığında olması nedeni ile anlık çekilen akım 400mA civarında ve ortala çekilen akım ise 100mA civarında olmaktadır. Devre girişinde yer alan 1000uF lık kondansatör, çekilen ani akımları karşılamaktadır. Devrede istenilen renkte LED'ler kullanılabilir. Ekranda görüntülenecek yazı yada grafik aşağıda yer alan program kodunda yapılacak değişiklikler ile gerçekleşitilir. Standart ASCII karakter setine uygun şekilde karakterler aşağıda karakter yapısı başlıklı bölümde olduğu gibi hazırlanabilir.
(http://eltman.virtualave.net/pic/pic0504/pic0504-1.gif)
Baskılı devre
(http://eltman.virtualave.net/pic/pic0504/pic0504-2.gif)
(http://eltman.virtualave.net/pic/pic0504/pic0504-3.gif)
Projenin asembly program dosyası ve PROTEUS5.1 ile çizilmiş açık şema ve baskılı devre dosyaları :
http://eltman.virtualave.net/pic/pic0504/pic0504.zip
***********************************************************
XNHCX
;) PIC16C84 ile 5*16(80) LED'li kayar yazı
Bu devrede PIC16F84 ile 5*16(80)LED ekranlı mini bir kayar yazı uygulamasıdır. PIC Mikrodenetleyiciler ile kayar yazı cihazları veya mesaj panoları yapımına ilişkin başlangıç amaçlı bir projedir. Projenin program kodunda gerekli değişiklikler yapılarak istenilen mesajın yazdırılması gerçekleştirilir.
Devrenin açık şeması
(http://eltman.virtualave.net/pic/pic0503/pic0503-1.gif)
Baskılı devre
(http://eltman.virtualave.net/pic/pic0503/pic0503-2.gif)
(http://eltman.virtualave.net/pic/pic0503/pic0503-3.gif)
Dosyalar
ASM (http://eltman.virtualave.net/pic/pic0503/pic0503.txt)
ASM açık kodu bu dosyada yer almaktadır.
PIC0503 (http://eltman.virtualave.net/pic/pic0503/pic0503.zip)
Projenin asembly program dosyası, PIC16F84.INC ve PROTEUS5.1 ile çizilmiş açık şema ve baskılı devre dosyaları .
*************************************************************
XNHCX
;) Moving Sign Display
(http://i95krian.island.liu.se/projects/msd/animation.gif)
Pic 17C43 kullanılmış.
Daha fazla bilgi için ...
http://i95krian.island.liu.se/projects/msd/hardware.html
XNHCX
;) Bu projede de yazı sola doğru kayıyor.Proje AT90S2313 AVR microcontroller ile yapılmış.5*7 matrix bir karakteri oluşturuyor.
Sitede şema da var.İnceleyiniz...
(http://home.wanadoo.nl/electro1/avr/images/hebbs.jpg)
Genel Bağlantı:
(http://home.wanadoo.nl/electro1/avr/images/onedmdp.gif)
PC-RS232 ile Bağlantı:
(http://home.wanadoo.nl/electro1/avr/images/uartrx.gif)
http://home.wanadoo.nl/electro1/avr/dotmatrix.htm
XNHCX
Building Dot Matrix Graphic Panels with the MAX6952 and MAX6953 5x7 LED Drivers
bu alet ler cok iyi ama bulabilirmiyiz ki?
http://www.maxim-ic.com/appnotes.cfm/appnote_number/1034/ln/en
http://www.maxim-ic.com/appnotes.cfm/appnote_number/1033/ln/en
Samsung Electronic firmasınında KS0068 isimli 60 segmentlik dot matrix driver 'ı var ama sanırım bu malzemeyi bulmak biraz zor hatta imkansız :lol:
KS0068 gibi istanbulda bulabileceğimiz bir dot matrix driverini bilen arkadaşlar varsa buraya yazarsa sanırım çok faydalı olur
tamamen turkiyede tasarlanmis elektronik kayan yazi panolari
http://mikrodesign.sitemynet.com
;)
BİLGİSAYAR KONTROLLÜ KAYAN YAZI DEVRESİ
EK BİLGİ – 1 (Sonsuz Sütunlu)
http://antrak.org.tr/gazete/092003/metin.htm
XNHCX
;) Scrolling 7 x 25 LED Dot Matrix Sign
Aşağıdaki proje sadece şema içeriyor...
(http://www.technology.niagarac.on.ca/students/vkennedy/ledfnt.jpg)
*********
Project Schematic
(http://www.technology.niagarac.on.ca/students/vkennedy/prjschem.jpg)
Buna ek olarak faydalı dökümanlar da var sitede...
http://www.technology.niagarac.on.ca/students/vkennedy/
XNHCX
" Running Text Display "
:arrow: 89S8252 Flash MCU kullanılarak yapılmış.
Elektor Electronics magazine (November 2003) de var.
************************************************************
Kullanılan malzemeler:
Running Text Display
020407-1
Resistors:
R1,R6,R7,R12-R15 = 4kOhm7
R2,R3,R8-R11 = 470Ohm
R4 = 6kOhm8
R5 = 360Ohm
R16-R23 = 1kOhm
R24-R31 = 47Ohm
R32 = 100kOhm
Capacitors:
C1,C3-C10 = 100nF
C2 = 0.1F 5.5V Goldcap (Panasonic NF)
C11 = 10µF 63V radial
Semiconductors:
D1 = LED, yellow, low current, 5mm
D2,D4,D6,D8 = LED, red, low current, 5mm
D3,D5,D7,D9 = LED, green, low current, 5mm
IC1-IC8 = 74HCT164
IC9-IC16 = ULN2803A
IC17 = 74HCT40105
IC18 = DS1302 (Dallas)
T1 = BS170
T2-T11 = BC557B
Miscellaneous:
JP1 = 3-way SIL pinheader with jumper
JP2,JP3 = 2-way SIL pinheader with jumper
K1 = 6-way mini-DIN socket, PCB mount (PS/2)
K2,K3 = 8-way SIL pinheader
K4 = 34-way SIL pinheader
LD1-LD12 = 5x8 dot matrix display with common cathode, size 60.8´ 38 mm, Kingbright type TC24-11EWA
AT89S8252-24PC for 89S8252 Flash Micro board (010208), programmed, order code 020407-41 (see Readers Services page)
Disk, contains controller program (source and hex), order code 020407-11 or Free Download
PCB, order code 020407-1
***********************************************************
PCB ve kaynak& hex kodu:
PCB-Layout (http://www.segment.nl/download/020407-1.zip)
Kaunak ve Hex Kodu (http://www.segment.nl/download/020407-11.zip)
XNHCX
Led Board ile animasyon
................... kayan yazı uygulaması eklemek istedim. Olay aslında Çok basit. Sütunları taratıp her sütun için satır değerlerini girdiğinizde istediğiniz şekli,yazıyı veya animasyonu yapmak mümkün...................
(http://www.eproje.com/members/upload/mehner_4.)
(http://www.eproje.com/members/upload/mehner_3.)
Şekilde de görüldüğü gibi sütun tarama işlemini 74HC154 yapmaktadır. 74HC154 ün ABCD girişlerine (23,22,21,20.pinler) pic'in PA0,PA1,PA2,PA3 pinlerinden sinyal uygulanarak (0000,0001,....1111 gibi) 1.sütundan 16.sütuna kadar tarama yapmaktadır. her sütun tarama işleminde o sütuna ait satır değerler PIC16F84'ün PB0,PB1,....PB7 çıkışlarından girilir. Tarama süresi olarak 1-2ms uygun oluyor eğer bu değerlerin üzerinde bir tarama yapılırsa ledlerdeki titreme görünür. Programda döngüler kullanılarak görüntünün uzun süreli kalması sağlanabilir. Aşağıdaki sekilde bir animasyon şekli veriyorun ve kaydırmanın nasıl gerçekleştiğini daha iyi anlayabilirsiniz...
http://www.eproje.com/members/upload/mehner_6.zip
http://www.eproje.com/modules.php?name=News&file=article&sid=263
Teşekkürler ,
Mehmet Taştan
mehmettastan@hotmail.com
eproje.com'dan
*****************
XNHCX
Atmel AT89C51 or AT89C2051 MCU ile " LED moving font "
************************** (http://www.woe.onlinehome.de/gif/led_move.gif)***************************
Schematic LED module
(http://www.woe.onlinehome.de/proj_gif/led_mat.gif)
Schematic microcontroller (AT89C51)
(http://www.woe.onlinehome.de/proj_gif/mat_con1.gif)
Schematic microcontroller (AT89C2051)
(http://www.woe.onlinehome.de/proj_gif/mat_con2.gif)
LED moving font V2.2 (Hardware and software) (http://www.woe.onlinehome.de/zip/laufschr.zip)
Ayrıntılar için...
http://www.woe.onlinehome.de/e_projects.htm#ledfont
XNHCX
sağol XNHCX dostum oldukça profesyonel bidevre vermişşin
dostum cok sağol neden bulun bunları anlamakı :D
calışmalarınızda başarılar
(http://sjeffroy.free.fr/Journal_Lumineux/journal_c04.jpg)
http://sjeffroy.free.fr/Journal_Lumineux/journal_lumineux.html
7x24 DOT MATRIX
KAYAN YAZIBu proje Sevgili
lay'
dan.
http://www.picproje.net/forum/viewtopic.php?t=2402&highlight=kayan+yaz%FD
Alıntı Yap
Birkaç aylık bir
çalışmayı forumdaki arkadaşların yararına sunuyorum.
Upload edilen adresten, matrix.zip adlı dosyayı indirebilirsiniz.
http://www.mcu.cz/atm/
Dosya: matrix.zip
Boyut: 1.01 MB
PASS: ta5ccf
İşlev:
Bir PC/AT klavyeden girilen metni, dot matrix display'de izleme, bilginin
EEPROM'a kaydedilmesi.
lay
Teşekkürler lay .
Merhaba,
Birkaçtane kayan yazı devresinin bulunduğu bir
dosyayı
http://groups.yahoo.com/group/PicProjeUP2/files/Infomaster/
klasörünün altına Mmessage.rar olarak attım.
İşinize yarar umarım.
Saygılar.
@infomaster,
zip in içindeki pdf dosya da hata gösteriyor
ilgilenirmisin ?
Merhaba,
Aster dosyayı yeniden gönderdim. İndirip tekrar denedim. Çalışıyor.
Bu defa zipli
gönderdim.
baba siz varya harikasınız valla çok teşekkürler yani bu kayan yazılar çok işime yarayacak şu an ben bir öğrenciyim mail
adresim yahmet@stud.sdu.edu.tr :?:
Moving Sign
(http://www.andrewkilpatrick.org/mind/moving_sign/images/sign.jpg)
PDF Dosyasında 18F452 ile ilgili şema bulunuyor.
Moving LED messaging Waver with BI-colour LEDS
AT90S2313 Atmel ile yapılmış bir proje ve kaynak kodları mevcut.
(http://www.mcselec.com/images/an_1282.JPG)
(http://www.mcselec.com/images/an_1283.JPG)
KAYNAK KODLAR (http://www.mcselec.com/download/appnotes/bi-colour-led-message.zip)
http://www.mcselec.com/an_128.htm
Running Text Display
Resistors:
R1,R6,R7,R12-R15 = 4kOhm7
R2,R3,R8-R11 = 470Ohm
R4 = 6kOhm8
R5 = 360Ohm
R16-R23 = 1kOhm
R24-R31 = 47Ohm
R32 = 100kOhm
Capacitors:
C1,C3-C10 = 100nF
C2 = 0.1F 5.5V Goldcap (Panasonic NF)
C11 = 10µF 63V radial
Semiconductors:
D1 = LED, yellow, low current, 5mm
D2,D4,D6,D8 = LED, red, low current, 5mm
D3,D5,D7,D9 = LED, green, low current, 5mm
IC1-IC8 = 74HCT164
IC9-IC16 = ULN2803A
IC17 = 74HCT40105
IC18 = DS1302 (Dallas)
T1 = BS170
T2-T11 = BC557B
Miscellaneous:
JP1 = 3-way SIL pinheader with jumper
JP2,JP3 = 2-way SIL pinheader with jumper
K1 = 6-way mini-DIN socket, PCB mount (PS/2)
K2,K3 = 8-way SIL pinheader
K4 = 34-way SIL pinheader
LD1-LD12 = 5x8 dot matrix display with common cathode, size 60.8´ 38 mm, Kingbright type TC24-11EWA
AT89S8252-24PC for 89S8252 Flash Micro board (010208), programmed, order code 020407-41 (see Readers Services page)
Disk, contains controller program (source and hex)
PCB (http://www.segment.nl/download/020407-1.zip)
KAYNAK KOD (http://www.segment.nl/download/020407-11.zip)
sevgili mod arkadaşım xnhcx katkılarından dolayı cok teşekkürler.
senden bir isteğim şu eğer yardımcı olursan cok sevinirim.
hem bilgisayar destekli hem de bağımsız bir mesaj panosu yapmak istiyorum(kayan yazı) yukarıda cok örnek vermişsin ama senden isteğim özel birtanesinin şemasını pcb sini ve hex kodlarını detaylı olarak senden alabilirmiyim. şimdiden cok teşekkürler.
digi_ykp@yahoo.com
Arkadaşlar
(Ticari amaçlıdır)
PC kontrollu kayan yazı konusunda imalat veya tasarım yapabilen bir arkadaş varsa benimle irtibat kurabilirmi. Tasarım yapsa da kafidir. İmalat bana ait olur. Malzeme konusunda ben daha uygun fiyatlar sağlayabilirim.
İşin özellikleri;
Bilgisayar aracılığı ile 30 cm (1 satır) yüksekliğinde 9 metre uzunluğunda bir led grubu sürülecek. Sürülen gruplar adreslenebilir nitelikte olacak ve pc bunlara adresleyerek komut yollayacak. Yani herbirine ayrı işlem yaptırılabilecek.
PC de hazırlanmış bir program 1-50 adet aynı tip cihaza kontrol edecek. İstenilen yazı istenilen cihazlara tek tek veya belli gruplar halinde komut olarak yollanacak,
Yapılacak kontroller: Yazının kayması, sağdan, soldan, üstten, alttan, ortadan açılması-kapanması gibi effektler verilecek. Effect sayısı ne kadar fazla olursa o kadar uygun olur.
Konunun ilgilisi olan arkadaş varsa görüşelim.
:( yahu ustalar kayan yazı devrelerinde işin mantıkını azbuçuk anladım ama sorum şu şimdi diyelim 5*7 iki adet yani iki harflik matrix yaptık. Peki bu yazıları kaydırırken yada panelde çıkmasını sağlarken bu iki ayrı harfi oluşuran yöneten entegreleri birbiriyle nasıl haberleştiriyoruz. :?:
vede ben 9-10 harflik bi kayan yazı tasarlamak yapmak istiyorum elinde şeması olan varsa memnun olurum. Yada en azından mantıkını anlatana tyeşekkür ederim. mmustafacan@hotmail.com
Merhaba,
Öncelikle aramıza yeni katılan arkadaşımıza ufak bir mesaj:
Hoş geldin "
mustafacan" ;)
Alıntı yapılan: "mustafacan":( yahu ustalar kayan yazı devrelerinde işin mantıkını azbuçuk anladım ama sorum şu şimdi diyelim 5*7 iki adet yani iki harflik matrix yaptık. Peki bu yazıları kaydırırken yada panelde çıkmasını sağlarken bu iki ayrı harfi oluşuran yöneten entegreleri birbiriyle nasıl haberleştiriyoruz. :?:
vede ben 9-10 harflik bi kayan yazı tasarlamak yapmak istiyorum elinde şeması olan varsa memnun olurum. Yada en azından mantıkını anlatana tyeşekkür ederim. mmustafacan@hotmail.com
Aslında ekranı süren tümdevrenin birbiri ile pek haberleşmesine gerek yok. Sadece kaskat (cascade) bağlantılarda birbirlerini etkin kılması için tek bitlik bir haberleşme olabilir. Gerisi adres ve vuru (clock) hatları ortaktır.
Anladığım kadarıyla sen iki karakteri aklında şöyle hayal ediyorsun. Yazı kayınca ikinci karakter birinci yerine geçecek ve birinci ekrandan eş zamanlı kaybolacak. Sonra ikinci için dışarıdan üçüncü bir tane gelecek.Kayan yazı mantığı aslında bu değil.
Sürücü devreye bilgi bir sütun kaydırılmış gönderiliyor. Dolayısıyla bu tür ekranlarda karakter adet şeklinde değilde bir karakterin boyutu gibi düşünmek lazım. Yani ekran grafik LCD ekranları gibi her noktasına ulaşabileceğim bir birimi temsil eder.
Mesele aslında ekranda görüntüyü gözü rahatsız etmeyecek bir şekilde sabitlemektir. Kaydırma o kadar basitir ki bunu zamanla anlayacaksın. Hele bir tarama yöntemiyle herhangi bir yazıyı veya şekli ekranda tutmayı başar, bak kaydırmayı tek komutla nasıl yapacağız. Her şey adım adım (step by step) yaparsak anlaşılmayacak konu ve halledilmeyecek sorun kalmaz.
Başarılar...
Verdiğiniz geniş bilgi için teşekkür ederim Ve ilk adımı atarak hafta sonumu bu işe gömüyorum amacım sadece esnaf bi arkadaşa kayan yazı panosu yapmak.(Aslında panoya falan ihtiyacı yok ama ölesine uğraşacaaz) Haydi hayırlısı takılınca soracaam umarım burda olursunuz.
Dostum daha öncede yazmıştık ama bir daha hatırlatmış olalım.Aşağıdaki siteyi de takip edin.
Anlatım güzel, basitten zora doğru adım adım uygulamalar... faydalı olacaktır.Yalnız dil asm. Proteusta simulasyonunu da yapıp çalıştığını görebilirsin.
http://www4.tpg.com.au/users/talking/5x7%20Display%20Index.html
Kolay Gelsin...
XnchX ustam
saten sitede verilen tüm linkleri tek tek inceledim ve sizin verdiğiniz siteyi 2 gün önce tüm ayrıntıları ile bilgisayarıma indirdim. Ancak işte cahiilik bu ya tabii biz işi 8-9 karakter düşündüğümüz için hiç 1 pixeli hiç tii ye almamıştım. ama galibe basamak basamak gitmek lazım. bazı linklerinde resimleri yok adresler gitmiş onlarıda tazerleseniz memnun oluruz. dediğim gibi hafta sonu başlıcaaz bakalım hayırlı olsun herkeşe...
Arkadaşalr güzel devreler yolluyonuzda.Benim bir isteğim olucak.
hani bu eprojedeki devre vardı ya site şu anda kapalı bir arkadaşımız bana onu mail veya MSN MESSENGER dan yollayabilirse sevinirim Sizlere İyi çalışmalar...
PIC0504 - PIC16C84 ILE 7*16(112) LEDLİ MİNİ KAYAR YAZI CİHAZI
http://s11.yousendit.com/d.aspx?id=F531CA762AC0054E294E9706A165409C
Pass: MeYo
MDSP1503DS2 1 SATIR 8 KARAKTER KAYAR YAZI DEVRESI
http://s11.yousendit.com/d.aspx?id=96CB7146E102FB6AC36916148214052C
Pass: MeYo
Yaw XNHCX ustaa ne kadar teşekkür etsek azdır.
Sence ne kadar teşekkür edelim.
Valla ne diyelim Büyüüüksüüüüüüün.
Oy oooy oooooooooy.
XNHCX ustam peki bu devrenin proteus similasyon çizimi varmı elinizde.
Baskı devre hazır malzemeleri dizmesi kaldıda. Pice tek tek dosya yükleyip çalıştımı çalışmadımı oldumu olmadımı diye uğraşmiim dedimde similatorle deneyeyim diye düşündüm. bendeki proteus ile çizeyim dedim kayıt etmiyor demo olduğu için crackide bulamadık. bekliyoz işte.
Bu Dosyalardan sadece birisine ait simul. dosyası olacaktı.Dökümanlarımın arsına bir bakayım , araştırayım.
Bulduğumda GROUBSa gönderirim.
Dostum ,
Kullandığınız Proteus hangi sürüm?
XNHCX ustam kullandığım proteus 6.5 kendi sitesinden indirdim.
6.5 SP5 ise ona ait crack var.
Crack Isis'in save k1s1tlama özelligini kald1r1yor.Onu da gönderelim.
Ustam version6,5 sp5in crackini buldum aresin de crackini arıyorum
kayan yazının protus simulasyonunu bulabildiniz mi? Ben çizimini yaptım ama crack yatığımız için çalışmadı. demoyu yeniden kurdum bu defada demodur çalışmaz dedi. 5 sürümünü kurdum onadada library hatası veriyor sanırım malzeme kodları versionlarda kısmen farklı velhasılı herşey simüleye bakıyoor
:oops:
------------------------------------------------------------------
Denedim Yanılmadım. Çünkü DÜŞÜNDÜM! 8)
Dostum ,
O halde 6.2 sp5 sürümünü kurun.
https://www.picproje.org/main/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=6&title=PROTEUS%206.2%20SP5
ustam küçük bi detayı kaçırmışım 3,5 saat sonunda buldum ama galiba hex dosyasını yapamıyorum 16f84lü 7*16 ledli matrix için elinizde hazır hex dosyası varmı?
Var. Göndereyim.
Ustam bu arada devrenin şemasını proteusa çizerken bi yanlışlıkın farkına vardım düzeltmek isterim şemada matrixi satırını süren (sütun değil satır) tarnsistorlerin emiter bacaklarına artı voltaj ( VCC) vermek gerekiyormuş şemada bu çizili değil ikincisi bağlantıyı yapmadığınızda da ledler görünmeyecek dercede sönük yanıyorlar ve farkına bile varamıyorsunuz bunu ancak bi tane ledi maziye çevirdikten sonra anlayabildim... similasyonum ondan dolayı hata veriyormuş sanırım. Dosyayı bekliyoruz sabırsızlıkla.
Kolay gelsin
:lol:
------------------------------------------------------------------
Denedim Yanılmadım. Çünkü Çook DÜŞÜNDÜM! 8)
PIC0504 - PIC16C84 ILE 7*16(112) LEDLİ MİNİ KAYAR YAZI CİHAZI
PIC0504.rar
Dosya Winrar 3.40 Beta 5 ile şifrelenmiştir.
şifre : www.picproje.org
Pic16f84a için hex içinde.
http://groups.yahoo.com/group/PicProjeUP16/files/XNHCX/
* PIC16C84 ILE YAPILAN 5*16=80 LED LI KAYAN YAZI DEVRESI ICIN PROGRAMDIR
* 32 KARAKTER KULLANILABILIR
PIC0503.rar
Dosya Winrar 3.40 Beta 5 ile şifrelenmiştir.
şifre : www.picproje.org
*** Zip içindeki PIC0503.dsn dosyasının çizimi simulasyon için ayarlanmıştır.Çalışma frekansı için ayarlanan
2 MHZ lik değer sadece simulasyonda kaymayı görebilmek içindir.Hatta 1 MHZ de yapabilirsiniz.
Gerçek uygulamaya geçildiğinde normal değerleri kullanınız.
http://groups.yahoo.com/group/PicProjeUP16/files/XNHCX/
Alıntı yapılan: "XNHCX"PIC0504 - PIC16C84 ILE 7*16(112) LEDLİ MİNİ KAYAR YAZI CİHAZI
PIC0504.rar
Dosya Winrar 3.40 Beta 5 ile şifrelenmiştir.
şifre : www.picproje.org
Pic16f84a için hex içinde.
http://groups.yahoo.com/group/PicProjeUP16/files/XNHCX/
@xnhcx usta bu calısmadı bende acaba neden proteus6,5 sp5 kullanıyorum
_??
PIC0504.rar içinde simulasyon yok.Sadece şema var.
Dedigim gibi.Upload etmeden önce 6.2 sp5 te denemistim.
Simulasyonu çalışan tek dosya PIC0503.rar içindedir.
DAHA YENİ 6.5 SP5 demo-to-FULL sürümünde de denedim.
Çalışıyor.
ustalar pic0504 devresini yaptım tamamladım fakat hex dosyasında sorun var sanırım çalışmıyor. başka hexler denediğimde abuk subuk lambalar yanıp sönüyor. Yanan lambalarda sadece ilk harf satırının lambaları. Kısa devre ihtimallerine karşılıkta yolları tek tek ölçtüm Devreyi yanlış yapma ihtimalim yok çünkü baskı devresini yapmıştım. Sizce asm programlamayı bilmeyen birisi için çözüm ne olur. :oops: Yardııııııııııım :roll:
Transistorleri söktüm direk bağlantı yaptım yazı kaydı. Acaba transistor numaralarımı yanlış verilmiş. Haa bu arada assmebleride azcık öğrendim.
The indication 7 Ã 5LED
(http://www5b.biglobe.ne.jp/~plusm/seisaku/NO7/75led1.bmp)
(http://www5b.biglobe.ne.jp/~plusm/seisaku/NO7/75led0.jpg)
program sitede....
Devamı ... (http://world.altavista.com/babelfish/trurl_pagecontent?lp=ja_en&trurl=http%3a%2f%2fwww5b.biglobe.ne.jp%2f%7eplusm%2fseisaku%2fNO7%2fno7.htm)
Ustalar herkese selamlar.
Eprojede bulunan kayan yazı projesini yaptım ancak kayan yazının yanına tarih ve saatte eklemek istiyorum. bu arada yazılar sadece kayıyor flash yapmasını durmasını zıplamasını invert olmasınıda istiyorum bunları nasıl ve hangi komutlarla yapabilirim. Ayrıca nasıl bir eprom bağlarım ve bilgileri epromla sürerim. yada klavye takabilirim
Herkese teşekkürler.
Arkadaslar cok acemice belki bir soru olacak... Taramayı sutun olarakmı yoksa satır satır mı yapıyorsunuz...? :oops: :oops: :oops:
Pic basic ile yapıyorum satırları taratıyorum ve sabit harf yadırabiliyorum. şimdi sıra geldi kaydırmaya. bu konuda yardımce olursanız sevinirim... :oops: :oops: :oops:
Estağfirullah,
Bence her iki şekilde de tarama yaptırabilirsin. Hatta göze daha hoş gözüksün diye çapraz taramalar da var. Ama genelde yatay (soldan sağa) tarama tercih ediliyor. Çünkü veriyi gönderirken ve yazının tamamını kaydırırken kolaylık oluyor.
Başarılar...
Buda benden olsun Deyaylı bilgi için www.microsyl.com Adresinden yararlanabilirsiniz
3 Colors messages
5 Scrolling speed
Serial port for uploading messages
SAYGILAR
//**************************************
// Moving Sign V:1.0
// Version 1.0 Dec 2003
// Sylvain Bissonnette
//
// Clock : 16Mhz
// Stack : 32
//**************************************
//**************************************
// I N C L U D E
//**************************************
#include <macros.h>
#include <stdlib.h>
#include <iom128v.h>
#include <STRING.H>
//**************************************
// D E F I N E
//**************************************
#define VERSION 10
#define TRUE 0x01
#define FALSE 0x00
#define SERIALPORT PORTA
#define SERIALDDR DDRA
#define SERIALBIT 0x01
#define SERIALCLK 0x02
#define ROWPORT PORTC
#define ROWDDR DDRC
#define SPIDDR DDRB
#define SPIPORT PORTB
#define SPIPIN PINB
#define SCLK 0x02
#define MOSI 0x04
#define MISO 0x08
#define CS 0x01
#define MMCPOWER 0x10
#define RED 0
#define GREEN 1
#define AMBER 2
/*--------------------------------------------------------------------------------------------------
Character generator
This table defines the standard ASCII characters in a 5x7 dot format.
--------------------------------------------------------------------------------------------------*/
static const char FontLookup [][5] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // %
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // -
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // back slash
{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, // |
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
{ 0x04, 0x02, 0x04, 0x08, 0x04 }, // ~
{ 0x00, 0x00, 0x36, 0x00, 0x00 }, // ¦
{ 0x0e, 0x51, 0x31, 0x11, 0x08 }, // Ç
{ 0x3c, 0x41, 0x40, 0x21, 0x7c }, // ü
{ 0x38, 0x54, 0x56, 0x55, 0x18 }, // é
{ 0x20, 0x56, 0x55, 0x56, 0x78 }, // â
{ 0x20, 0x55, 0x54, 0x55, 0x78 }, // ä
{ 0x20, 0x55, 0x56, 0x54, 0x78 }, // Ã
{ 0x08, 0x08, 0x2a, 0x1c, 0x08 }, // Right Arrow (chr 134)
{ 0x0e, 0x51, 0x31, 0x11, 0x08 }, // ç
{ 0x38, 0x56, 0x55, 0x56, 0x18 }, // ê
{ 0x38, 0x55, 0x54, 0x55, 0x18 }, // ë
{ 0x38, 0x55, 0x56, 0x54, 0x18 }, // è
{ 0x00, 0x45, 0x7c, 0x41, 0x00 }, // ï
{ 0x00, 0x46, 0x7d, 0x42, 0x00 }, // î
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 141)
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 142)
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 143)
{ 0x7c, 0x54, 0x56, 0x55, 0x44 }, // Ã
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 145)
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 146)
{ 0x38, 0x46, 0x45, 0x46, 0x38 }, // ô
{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, // free (chr 148)
{ 0x38, 0x45, 0x46, 0x44, 0x38 }, // ò
{ 0x3c, 0x42, 0x41, 0x22, 0x7c }, // û
{ 0x3c, 0x41, 0x42, 0x20, 0x7c } // ù
};
//**************************************
// P R O T O T Y P E
//**************************************
void main(void);
void GetNextPage(unsigned char First);
void uart1_rx_isr(void);
void Analyse(void);
void TxString(const char *ch);
void TxChar(char ch);
void ClrSCR(void);
void WriteString(int x,const unsigned char *ptr,unsigned char color);
void WriteChar(int ptr,unsigned char ch,unsigned char color);
int DoDisplay(void);
void SendOnBit(void);
void SendOffBit(void);
void Delay_1ms(int Del);
int MMCInit(void);
void MMCInfo(void);
int MMCReadSector(unsigned long lba, unsigned char * s);
int MMCWriteSector(unsigned long lba, unsigned char *s);
unsigned char MMCGet(void);
unsigned char MMCDataToken(void);
void MMCCommand(unsigned char command, unsigned int px, unsigned int py);
unsigned char SpiByte(unsigned char byte);
//******************************************************************
//* Global Variable
//******************************************************************
char Red[512];
char Green[512];
char GreenT[512];
char RedT[512];
int MsgLen;
unsigned char Speed = 3;
unsigned char MaxPage = 0;
unsigned char NewData = FALSE;
char RxBuffer[100];
//**************************************
// M A I N
//**************************************
void main(void)
{
WDR();
WDTCR = 0x0f; // Watch Dog enable
ROWDDR = 0xff;
SERIALDDR |= SERIALBIT + SERIALCLK;
UCSR1B = 0x00; //disable while setting baud rate
UCSR1A = 0x00;
UCSR1C = 0x06;
UBRR1L = 0x33; //set baud rate lo for 19200 at 16Mhz
UBRR1H = 0x00; //set baud rate hi
UCSR1B = 0x98;
SEI();
ClrSCR();
while (MMCInit() != 0);
cstrcpy(&RxBuffer[0],"<99MMC: ~GInit OK ~AVer:1.0>\0");
Analyse();
MMCReadSector(0,&GreenT[0]);
MaxPage = GreenT[0];
GetNextPage(TRUE);
while(1)
{
if (DoDisplay()) GetNextPage(FALSE);
if (NewData == TRUE)
{
Analyse();
NewData = FALSE;
}
WDR();
}
}
//**************************************
// void uart1_rx_isr(void)
//**************************************
#pragma interrupt_handler uart1_rx_isr:31
void uart1_rx_isr(void)
{
static char *Ptr = &RxBuffer[0];
unsigned char ch;
ch = UDR1;
if (Ptr > &RxBuffer[100]) Ptr = &RxBuffer[0];
if (ch == '<') Ptr = &RxBuffer[0];
*Ptr++ = ch;
if (ch == '>') NewData = TRUE;
}
//**************************************
// void Analyse(void)
//**************************************
void Analyse(void)
{
char *Ptr = &RxBuffer[0];
unsigned char Page;
int x = 0;
unsigned char Color = AMBER;
unsigned char Spd = 3;
unsigned char Row;
Row = ROWPORT;
ROWPORT = 0x00;
ClrSCR();
Ptr++;
Page = (((*Ptr)-0x30) * 10) + ((*(Ptr+1)-0x30));
Ptr++;
Ptr++;
if ((Page == 99) && (*Ptr == 'D'))
{
for (x=0;x<512;x++) GreenT[x] = 0x00;
MMCWriteSector(0,&GreenT[0]);
MaxPage = 0;
TxString("Delete ALL\n\r\0");
ROWPORT = Row;
return;
}
if ((Page > 99) || (Page < 0))
{
ROWPORT = Row;
return;
}
if (Page > (MaxPage+1))
{
ROWPORT = Row;
return;
}
while (*Ptr != '>')
{
if (*Ptr == '~')
{
Ptr++;
if (*Ptr == 'R') Color = RED;
if (*Ptr == 'G') Color = GREEN;
if (*Ptr == 'A') Color = AMBER;
if (*Ptr == '1') Spd = 1;
if (*Ptr == '2') Spd = 2;
if (*Ptr == '3') Spd = 3;
if (*Ptr == '4') Spd = 4;
if (*Ptr == '5') Spd = 5;
Ptr++;
}
else WriteChar(x++,*Ptr++,Color);
}
GreenT[510] = Spd;
RedT[510] = (x*6)>>8;
RedT[511] = (x*6);
MMCWriteSector((Page*2)+1, &RedT[0]);
MMCWriteSector((Page*2)+2, &GreenT[0]);
if ((Page > MaxPage) && (Page != 99))
{
for (x=0;x<512;x++) GreenT[x] = 0x00;
GreenT[0] = Page;
MMCWriteSector(0,&GreenT[0]);
MaxPage = Page;
}
ROWPORT = Row;
}
//**************************************
// void TxString(unsigned char *ch)
//**************************************
void TxString(const char *ch)
{
while(*ch != 0x00) TxChar(*ch++);
}
//**************************************
// void TxChar(unsigned char ch)
//**************************************
void TxChar(unsigned char ch)
{
while (!(UCSR1A & 0x20)) WDR(); // Wait for empty transmit buffer
UDR1 = ch; // Write char
}
//**************************************
// void GetNextPage(void)
//**************************************
void GetNextPage(unsigned char First)
{
static int Page = 0;
WDR();
if (First == TRUE) // Retrive the First time init message of status
{
MMCReadSector((99*2)+1, &Red[0]);
MMCReadSector((99*2)+2, &Green[0]);
Speed = Green[510];
MsgLen = (Red[510]<<8) + Red[511];
}
else
{
MMCReadSector((Page*2)+1, &Red[0]);
MMCReadSector((Page*2)+2, &Green[0]);
Speed = Green[510];
if (Speed > 5) Speed = 1;
MsgLen = (Red[510]<<8) + Red[511];
Page++;
if (Page > MaxPage) Page = 0;
}
}
//**************************************
// void ClrSCR(void)
//**************************************
void ClrSCR(void)
{
int i;
for (i=0;i<510;i++)
{
WDR();
RedT[i] = 0x00;
GreenT[i] = 0x00;
}
}
//**************************************
// void WriteString(unsigned char ptr,unsigned char color)
//**************************************
void WriteString(int x,const unsigned char *ptr,unsigned char color)
{
while(*ptr != 0x00) WriteChar(x++,*ptr++,color);
}
//**************************************
// void WriteChar(unsigned char x,unsigned char ch,unsigned char color)
//**************************************
void WriteChar(int x,unsigned char ch,unsigned char color)
{
unsigned char i;
x *= 6;
if (x > 509) return; // Max of 85 char per page 85*6 = 510
for (i=0;i<5;i++)
{
WDR();
if (color == RED) RedT[x++] = FontLookup[ch - 32][i];
if (color == GREEN) GreenT[x++] = FontLookup[ch - 32][i];
if (color == AMBER)
{
RedT[x] = FontLookup[ch - 32][i];
GreenT[x++] = FontLookup[ch - 32][i];
}
}
RedT[x] = 0x00;
GreenT[x++] = 0x00;
}
//**************************************
// void DoDisplay(void)
//**************************************
int DoDisplay(void)
{
unsigned char Row;
unsigned char Col;
unsigned char RowMask;
int i,j;
static int Pos = 80;
char GreenT[80];
char RedT[80];
char SHIFT[160];
WDR();
// Clear Buffer's
for (i=0;i<80;i++)
{
GreenT[i] = 0x00;
RedT[i] = 0x00;
}
// Do Scrolling Right to Left
if (Pos >= 0)
{
j = 0;
for (i=Pos;i<80;i++)
{
GreenT[i] = Green[j];
RedT[i] = Red[j];
j++;
}
}
else
{
j = 0;
for (i=abs(Pos);i<(80+abs(Pos));i++)
{
GreenT[j] = Green[i];
RedT[j] = Red[i];
j++;
}
}
Pos--;
if (Pos < 0-MsgLen)
{
Pos = 80;
return 1;
}
// Append Red & Green to the Real shifting buffer
j = 0;
for (i=0;i<80;i++)
{
if ((!(i % 8)) && (i != 0)) j +=8;
SHIFT[j] = GreenT[i];
SHIFT[j+8] = RedT[i];
j++;
}
// Do the Row/Column display
for (i=0;i<Speed;i++)
{
RowMask = 0x40;
for (Row=0;Row<7;Row++)
{
WDR();
for (Col=0;Col<160;Col++)
{
if ((SHIFT[Col] & RowMask) == RowMask) SendOnBit();
else SendOffBit();
}
ROWPORT = RowMask;
Delay_1ms(1);
ROWPORT = 0x00;
RowMask = RowMask >> 1;
}
}
return 0;
}
//**************************************
// void SendOnBit(void)
//**************************************
void SendOnBit(void)
{
SERIALPORT |= SERIALBIT;
SERIALPORT |= SERIALCLK;
SERIALPORT &= ~SERIALCLK;
}
//**************************************
// void SendOffBit(void)
//**************************************
void SendOffBit(void)
{
SERIALPORT &= ~SERIALBIT;
SERIALPORT |= SERIALCLK;
SERIALPORT &= ~SERIALCLK;
}
//**************************************
// void Delay_1ms(void)
//**************************************
void Delay_1ms(int Del)
{
int i;
while (Del--)
{
for (i=0;i<2000;i++) WDR();
}
}
/*************************************************************
* MMC Init function
*
* - flushes card receive buffer
* - selects card
* - sends the reset command
* - sends the initialization command, waits for card ready
*************************************************************/
int MMCInit(void)
{
unsigned int i;
unsigned char Byte;
SPIDDR = SCLK + MOSI + CS + MMCPOWER;
SPIPORT = 0x00;
Delay_1ms(500);
SPIPORT |= MMCPOWER;
SPIPORT |= CS;
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0); /* enable SPI as master, set clk divider */
Delay_1ms(250);
/* start off with 80 bits of high data with card deselected */
for(i=0;i<10;i++)
SpiByte(0xff);
SPIPORT &= ~CS; /* select card */
/* now send CMD0 - go to idle state */
MMCCommand(0,0,0);
if (MMCGet() != 1)
{
SPIPORT |= CS;
return -1; // MMC Not detected
}
/* send CMD1 until we get a 0 back, indicating card is done initializing */
i = 0xffff;
while ((SpiByte(0xff) != 0) && (--i))
{
MMCCommand(1,0,0);
WDR();
}
if (i == 0)
{
SPIPORT |= CS;
return -2; // Init Fail
}
SPIPORT |= CS;
return 0;
}
/************************************************************
* void MMCInfo(void)
*
* - gets and prints formatted CID and CSD info from card
************************************************************/
void MMCInfo(void)
{
int i;
MMCCommand(10,0,0);
if (MMCDataToken() != 0xfe) TxString("MMC: error during CID read\n\r\0");
else TxString("MMC: CID read\n\r\0");
// Skip 3 byte Manufacturer ID
SpiByte(0xff);
SpiByte(0xff);
SpiByte(0xff);
TxString("MMC: Product Name : ");
for (i=0;i<7;i++) TxChar(SpiByte(0xff));
TxString("\n\r\0");
for (i=0;i<9;i++) SpiByte(0xff); // Read 9 left byte
SPIPORT |= CS;
}
/************************************************************
* int MMCReadSector(unsigned long lba, unsigned char * s)
*
* - reads a sector from the card (512 bytes)
* - takes sector # as param
************************************************************/
int MMCReadSector(unsigned long lba, char *s)
{
unsigned int i;
MMCCommand(17,(lba>>7) & 0xffff, (lba<<9) & 0xffff);
if (MMCDataToken() != 0xfe)
{
SEI();
return -1;
}
for (i=0;i<512;i++) /* read the sector */
{
*s++ = SpiByte(0xff);
}
SpiByte(0xff); /* checksum -> don't care about it for now */
SpiByte(0xff); /* checksum -> don't care about it for now */
SPIPORT |= CS;
return 0;
}
/************************************************************
* int MMCWriteSector(unsigned long lba, unsigned char * s)
*
* - reads a sector from the card (512 bytes)
* - takes sector # as param
************************************************************/
int MMCWriteSector(unsigned long lba, char *s)
{
unsigned int i;
MMCCommand(24, (lba>>7)& 0xffff, (lba<<9)& 0xffff);
if (MMCGet() == 0xff) return -1;
SpiByte(0xfe); // Send Start Byte
for (i=0;i<512;i++) /* read the sector */
{
SpiByte(*s++);
}
SpiByte(0xff); /* checksum -> don't care about it for now */
SpiByte(0xff); /* checksum -> don't care about it for now */
SpiByte(0xff); /* Read "data response byte" */
i = 0xffff;
while ((SpiByte(0xff) == 0x00) && (--i)); /* wait for write finish */
if (i == 0) return -1; // Error
SPIPORT |= CS;
return 0;
}
/************************************************************
* unsigned char MMCGet(void)
*
* - pings the card until it gets a non-0xff value
* - returns one byte of read info
************************************************************/
unsigned char MMCGet(void)
{
unsigned int i = 0xffff;
unsigned char Byte = 0xff;
while((Byte == 0xff) && (--i)) Byte = SpiByte(0xff);
return Byte;
}
/************************************************************
* int MMCDataToken(void)
*
* - pings the card until it gets data token
* - returns one byte of read info (data token)
************************************************************/
unsigned char MMCDataToken(void)
{
unsigned int i = 0xffff;
unsigned char Byte = 0xff;
while((Byte != 0xfe) && (--i)) Byte = SpiByte(0xff);
return Byte;
}
/************************************************************
* void MMCCommand(unsigned char command, unsigned int px, unsigned int py)
*
* - send one byte of 0xff, then issue command + params + (fake) crc
* - eat up the one command of nothing after the CRC
************************************************************/
void MMCCommand(unsigned char command, unsigned int px, unsigned int py)
{
SPIPORT &= ~CS;
SpiByte(0xff);
SpiByte(command | 0x40);
SpiByte((unsigned char)((px >> 8)&0x0ff)); /* high byte of param y */
SpiByte((unsigned char)(px & 0x00ff)); /* low byte of param y */
SpiByte((unsigned char)((py >> 8)&0x0ff)); /* high byte of param x */
SpiByte((unsigned char)(py & 0x00ff)); /* low byte of param x */
SpiByte(0x95); /* correct CRC for first command in SPI */
/* after that CRC is ignored, so no problem with */
/* always sending 0x95 */
SpiByte(0xff);
}
/*****************************************************
* Main SPI routine
* - transmits a byte and receives a byte simultaneously
* - received byte is returned
* - if you only want to read a byte, put a dummy
* (say 0xff) in the transmit slot
****************************************************/
unsigned char SpiByte(unsigned char byte)
{
WDR();
SPDR = byte; /* put byte to send in SPDR, which initiates xmit */
while(!(SPSR & (1<<SPIF)));/* wait for completion */
return SPDR; /* return with byte shifted in from slave */
}[code][/code]
[/code]
selam arkadaşlar ben antrak gazetesindeki 24 suytun kayan yazı projesini yaptım .
Daha sonrada asm dosyasına ekleme yapararak 32 sutun bir hex yarattım şemada görüldüğü gibi boşta kalan bir nor kapısı daha var bu kapıyada bir 74160 bağlayarak devreyi çalıştırdım.
şimdi ben sizden yardım istiyorum bana yardımcı olursanız sevinirim .
konu şu yazı bir kere kaysın daha sonra 5 saniye kadar ekranda sabit dursun istiyorum .
Bunun için asm nin hangi kodları arsında değişiklik veya ekleme yapacagım hakkında bilgi verirseniz çok iyi olur .
saygılarımla
;------------------------------------------------------------------------------------;
; 5x7 LED matrix ;
; Klavyeden girilen karakterler, önce paralel veriye dönüştürülür. Veri eğer, ;
; gösterilebilecek bir karakterse, PIC'in EEPROM'una TUŞ KODU olarak kaydedilir. ;
; Program EEOKU bölümüne geçtiğinde, EEPROM'a kaydedilmiş kodları sırasıyla okur. ;
; Okunan kod, çevrim tablosu tarafından karaktere dönüştürülür. Elde edilen yeni ;
; veri, LED display'lere gönderilir. 7 KASIM 2003 CUMA ;
;------------------------------------------------------------------------------------;
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC
;------------------------------------------------------------------------------------;
; Register tanımlamaları ;
;------------------------------------------------------------------------------------;
TEMP EQU H'0F' ; Geçici register.
VERI EQU H'11' ; Seri verinin paralel olarak saklandığı file.
BIT_N EQU H'12' ; Klavyeden alınan bit sayısı.
CHAR_SUTUN EQU H'13' ; Karakterin sütun sayısı.
EEREAD_N EQU H'14' ; EEPROM'dan okunacak maximum sütun sayısı.
EEWRITE_N EQU H'15' ; EEPROM'a kaydedilen maximum sütun sayısı.
LINE EQU H'16' ; Çevrim tablosunda ulaşılacak satır no.
TIMER_H1 EQU H'1A' ; Timer HIGH1.
TIMER_H2 EQU H'1B' ; Timer HIGH2.
TIMA EQU H'1C' ; TimerA
TIMB EQU H'1D' ; TimerB
W_TEMP EQU H'1E' ; W'nin saklandığı geçici register.
STATUS_TEMP EQU H'1F' ; STATUS'ın saklandığı geçici register.
SUTUN1 EQU H'21' ; Sütun 1 bilgisinin saklandığı register.
SUTUN2 EQU H'22' ; Sütun 2 bilgisinin saklandığı register.
SUTUN3 EQU H'23' ; Sütun 3 bilgisinin saklandığı register.
SUTUN4 EQU H'24' ; Sütun 4 bilgisinin saklandığı register.
SUTUN5 EQU H'25' ; Sütun 5 bilgisinin saklandığı register.
SUTUN6 EQU H'26' ; Sütun 6 bilgisinin saklandığı register.
SUTUN7 EQU H'27' ; Sütun 7 bilgisinin saklandığı register.
SUTUN8 EQU H'28' ; Sütun 8 bilgisinin saklandığı register.
SUTUN9 EQU H'29' ; Sütun 9 bilgisinin saklandığı register.
SUTUN10 EQU H'2A' ; Sütun 10 bilgisinin saklandığı register.
SUTUN11 EQU H'2B' ; Sütun 11 bilgisinin saklandığı register.
SUTUN12 EQU H'2C' ; Sütun 12 bilgisinin saklandığı register.
SUTUN13 EQU H'2D' ; Sütun 13 bilgisinin saklandığı register.
SUTUN14 EQU H'2E' ; Sütun 14 bilgisinin saklandığı register.
SUTUN15 EQU H'2F' ; Sütun 15 bilgisinin saklandığı register.
SUTUN16 EQU H'30' ; Sütun 16 bilgisinin saklandığı register.
SUTUN17 EQU H'31' ; Sütun 17 bilgisinin saklandığı register.
SUTUN18 EQU H'32' ; Sütun 18 bilgisinin saklandığı register.
SUTUN19 EQU H'33' ; Sütun 19 bilgisinin saklandığı register.
SUTUN20 EQU H'34' ; Sütun 20 bilgisinin saklandığı register.
SUTUN21 EQU H'35' ; Sütun 21 bilgisinin saklandığı register.
SUTUN22 EQU H'36' ; Sütun 22 bilgisinin saklandığı register.
SUTUN23 EQU H'37' ; Sütun 23 bilgisinin saklandığı register.
SUTUN24 EQU H'38' ; Sütun 24 bilgisinin saklandığı register.
SUTUN25 EQU H'39'
SUTUN26 EQU H'3A'
SUTUN27 EQU H'3B'
SUTUN28 EQU H'3C'
SUTUN29 EQU H'3D'
SUTUN30 EQU H'3E'
SUTUN31 EQU H'3F'
SUTUN32 EQU H'40'
;------------------------------------------------------------------------------------;
ORG H'0000' ; RESET adresi.
GOTO MAIN ; Ana programa.
ORG H'0004' ; Kesme adresi.
GOTO KLYOKU ; Kesme alt programına.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
YUKLE ; PORTA ve PORTB'nin başlangıç ayarları.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
BSF STATUS,RP0 ; BANK1'e geç.
MOVLW B'00011000' ; W'ye H'10' yükle.
MOVWF PORTA ; Çıkışlar: RA0=CLOCK, RA1=RESET, RA2=PRESET
; Girişler: RA3=SCAN_END, RA4=Klavye DATA
MOVLW B'10000000' ; W'ye H'7F' yükle.
MOVWF PORTB ; RB7 giriş (Klavye CLOCK), diğerleri çıkış.
BCF STATUS,RP0 ; BANK0'a dön.
CLRF PORTB ; PORTB'yi temizle.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
KLYTIMER ; Bu alt program, besleme gerilimin uygulanmasıyla birlikte, ;
; klavyeden gelen tanıtım bilgilerinin bitmesi için birkaç ;
; saniyelik bir gecikme sağlar. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVLW D'5' ; W'ye 5 yükle.
MOVWF TEMP ; TEMP'e gönder.
BEKLE CALL TIMER_HIGH ; Gecikme alt programını çağır.
DECFSZ TEMP,F ; TEMP-1, 0 mı?
GOTO BEKLE ; Hayır, TEMP'i eksiltmeye devam et.
RETURN ; Alt programdan çık.
;------------------------------------------------------------------------------------;
MAIN ; Ana program.
;------------------------------------------------------------------------------------;
CALL YUKLE ; Portların başlangıç ayarlarını yap.
CALL KLYTIMER ; Klavyeden gelen parazitleri söndür.
CLRF VERI ; VERI'yi temizle.
CLRF EEREAD_N ; EEREAD_N'i temizle.
CLRF EEWRITE_N ; EEWRITE_N'i temizle.
CLRF EEADR ; EEADR'yi temizle.
CLRF PORTB ; PORTB'yi temizle.
MOVLW B'10001000' ; W'ye B'10001000' yükle.
MOVWF INTCON ; Genel kesme izni, PORTB kesmesi aktif.
;------------------------------------------------------------------------------------;
START CLRF PORTB ; PORTB'yi temizle.
BSF PORTA,0 ; CLOCK hazır. (Düşen kenarla tetiklenir.)
BCF PORTA,1 ; RESET=0
BSF PORTA,1 ; RESET=1, sayıcılar saymaya hazır.
CALL SUTUN_TEMIZLE ; Sütun1...Sütun24'ü temizle.
KAYIT_SAYISI? MOVLW 0 ; W'ye 0 yaz.
MOVWF EEADR ; Veri sayısını okumak üzere EEADR'ye gönder.
CALL OKU ; Kayıt sayısını öğren ve dön.
MOVF EEDATA,W ; Kayıt sayısını W'ye yaz.
BTFSC STATUS,Z ; Kayıt sayısı 0'dan farklı mı?
GOTO START ; Hayır, kayıtlı sütun sayısı "0"
DATA?255 MOVF EEDATA,W ; EEDATA'yı W'ye yaz.
SUBLW D'255' ; 255-W
BTFSC STATUS,Z ; DATA, 255'ten farklı mı?
GOTO START ; Hayır 255, yeniden başla.
MOVF EEDATA,W ; EEDATA'yı W'ye yaz.
MOVWF EEREAD_N ; EEREAD_N register'a gönder.
MOVWF EEWRITE_N ; EEWRITE_N register'a gönder.
KAYIT_VARMI? MOVF EEREAD_N,W ; Okunacak karakter sayısını W'ye yaz.
SUBLW H'FF' ; 255-EEREAD_N
BTFSC STATUS,Z ; Okunacak bir kayıt var mı?
GOTO START ; Hayır, tüm kayıt silinmiş.
SONRAKI INCF EEADR,F ; EEADR+1
CALL OKU ; EEPROM'a kayıtlı veriyi al ve dön.
MOVF EEDATA,W ; EEDATA'yı W'ye yaz.
MOVWF VERI ; EEDATA'yı VERI'ye gönder.
SUBLW D'113' ; 113-VERI (Delete tuşunu kodu)
BTFSC STATUS,Z ; Basılan tuş DELETE'in dışında mı?
GOTO START ; Hayır, basılan tuş DELETE.
CALL ANALIZ ; Evet, tuşu analiz et, PORTB'den gönder.
DECFSZ EEREAD_N,F ; Kayıtlı son veri okundu mu?
GOTO BIR_SUTUN_BOS ; Hayır, karakter arası 1 sütun boş bırak.
MOVLW D'41' ; Evet.
MOVWF VERI ; W'ye boşluk karakterinin kodunu yaz.
CALL BOSLUK1 ; Her CALL BOSLUK1...
CALL BOSLUK1 ; ...komutuyla çağrılan...
CALL BOSLUK1 ; ...alt programda 3 sütunluk...
CALL BOSLUK1 ; ...boşluk bırakılır...
CALL BOSLUK1 ; ...Bu, toplam olarak...
CALL BOSLUK1 ; ...30 sütunluk boşluğa denk gelir....
CALL BOSLUK1 ; ...24 sütun kaydırıldığında display...
CALL BOSLUK1 ; ...söner. Bu noktadan itibaren 6 sütun...
CALL BOSLUK1 ; ...kayma süresi kadar daha, ekran...
CALL BOSLUK1 ; ...sönük kalacaktır.
GOTO START ; Ve tüm işlemleri yeniden yap.
BIR_SUTUN_BOS MOVLW H'00' ; W'ye 0 yükle.
MOVWF SUTUN1 ; SUTUN1'e gönder.
MOVWF PORTB ; PORTB'den gönder.
CALL GOSTER ; Sütun bilgilerini göster.
CALL SHIFT ; 1 adım sola ötele.
GOTO SONRAKI ; Hayır, sonraki sütun bilgisini oku.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
SUTUN_TEMIZLE ; Sütun verisini temizle. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
CLRF SUTUN1
CLRF SUTUN2
CLRF SUTUN3
CLRF SUTUN4
CLRF SUTUN5
CLRF SUTUN6
CLRF SUTUN7
CLRF SUTUN8
CLRF SUTUN9
CLRF SUTUN10
CLRF SUTUN11
CLRF SUTUN12
CLRF SUTUN13
CLRF SUTUN14
CLRF SUTUN15
CLRF SUTUN16
CLRF SUTUN17
CLRF SUTUN18
CLRF SUTUN19
CLRF SUTUN10
CLRF SUTUN21
CLRF SUTUN22
CLRF SUTUN23
CLRF SUTUN24
CLRF SUTUN25
CLRF SUTUN26
CLRF SUTUN27
CLRF SUTUN28
CLRF SUTUN29
CLRF SUTUN30
CLRF SUTUN31
CLRF SUTUN32
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
OKU ; EEPROM'daki veriyi oku.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
BSF STATUS,RP0 ; BANK1'e geç.
BSF EECON1,RD ; Girilen adresle ilgili veriyi oku.
BCF STATUS,RP0 ; BANK0'a dön.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
SHIFT ; Sütunları 1 adım sola ötele. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVF SUTUN31,W ; 23. sütunu W'ye yaz.
MOVWF SUTUN32 ; 24. sütuna gönder.
MOVF SUTUN30,W ; 22. sütunu W'ye yaz.
MOVWF SUTUN31 ; 23. sütuna gönder.
MOVF SUTUN29,W ; 21. sütunu W'ye yaz.
MOVWF SUTUN30 ; 22. sütuna gönder.
MOVF SUTUN28,W ; 20. sütunu W'ye yaz.
MOVWF SUTUN29 ; 21. sütuna gönder.
MOVF SUTUN27,W ; 19. sütunu W'ye yaz.
MOVWF SUTUN28 ; 20. sütuna gönder.
MOVF SUTUN26,W ; 18. sütunu W'ye yaz.
MOVWF SUTUN27 ; 19. sütuna gönder.
MOVF SUTUN25,W ; 17. sütunu W'ye yaz.
MOVWF SUTUN26 ; 18. sütuna gönder.
MOVF SUTUN24,W ; 16. sütunu W'ye yaz.
MOVWF SUTUN25 ; 17. sütuna gönder.
MOVF SUTUN23,W ; 15. sütunu W'ye yaz.
MOVWF SUTUN24 ; 16. sütuna gönder.
MOVF SUTUN22,W ; 14. sütunu W'ye yaz.
MOVWF SUTUN23 ; 15. sütuna gönder.
MOVF SUTUN21,W ; 13. sütunu W'ye yaz.
MOVWF SUTUN22 ; 14. sütuna gönder.
MOVF SUTUN20,W ; 12. sütunu W'ye yaz.
MOVWF SUTUN21 ; 13. sütuna gönder.
MOVF SUTUN19,W ; 11. sütunu W'ye yaz.
MOVWF SUTUN20 ; 12. sütuna gönder.
MOVF SUTUN18,W ; 10. sütunu W'ye yaz.
MOVWF SUTUN19 ; 11. sütuna gönder.
MOVF SUTUN17,W ; 9. sütunu W'ye yaz.
MOVWF SUTUN18 ; 10. sütuna gönder.
MOVF SUTUN16,W ; 8. sütunu W'ye yaz.
MOVWF SUTUN17 ; 9. sütuna gönder.
MOVF SUTUN15,W ; 7. sütunu W'ye yaz.
MOVWF SUTUN16 ; 8. sütuna gönder.
MOVF SUTUN14,W ; 6. sütunu W'ye yaz.
MOVWF SUTUN15 ; 7. sütuna gönder.
MOVF SUTUN13,W ; 5. sütunu W'ye yaz.
MOVWF SUTUN14 ; 5. sütunu W'ye yaz.
MOVF SUTUN12,W ; 4. sütunu W'ye yaz.
MOVWF SUTUN13 ; 5. sütunu W'ye yaz.
MOVF SUTUN11,W ; 3. sütunu W'ye yaz.
MOVWF SUTUN12 ; 5. sütunu W'ye yaz.
MOVF SUTUN10,W ; 2. sütunu W'ye yaz.
MOVWF SUTUN11 ; 5. sütunu W'ye yaz.
MOVF SUTUN9,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN10 ; 5. sütunu W'ye yaz.
MOVF SUTUN8,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN9 ; 5. sütunu W'ye yaz.
MOVF SUTUN7,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN8 ; 5. sütunu W'ye yaz.
MOVF SUTUN6,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN7 ; 5. sütunu W'ye yaz.
MOVF SUTUN5,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN6 ; 5. sütunu W'ye yaz.
MOVF SUTUN4,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN5 ; 5. sütunu W'ye yaz.
MOVF SUTUN3,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN4 ; 5. sütunu W'ye yaz.
MOVF SUTUN2,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN3 ; 5. sütunu W'ye yaz.
MOVF SUTUN1,W ; 1. sütunu W'ye yaz.
MOVWF SUTUN2 ; 2. sütuna gönder.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
GOSTER ; Tablodan alınan sütun bilgisini PORTB'den gönderme. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVF SUTUN1,W ; 1. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN2,W ; 2. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN3,W ; 3. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN4,W ; 4. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN5,W ; 5. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN6,W ; 6. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN7,W ; 7. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN8,W ; 8. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN9,W ; 9. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN10,W ; 10. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN11,W ; 11. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN12,W ; 12. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN13,W ; 13. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN14,W ; 14. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN15,W ; 15. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN16,W ; 16. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN17,W ; 17. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN18,W ; 18. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN19,W ; 19. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN20,W ; 20. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN21,W ; 21. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN22,W ; 22. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN23,W ; 23. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN24,W ; 24. sütunu W'ye yaz.
CALL GOSTER_ALT ; Diğer işlemler için alt programı çağır.
MOVF SUTUN25,W
CALL GOSTER_ALT
MOVF SUTUN26,W
CALL GOSTER_ALT
MOVF SUTUN27,W
CALL GOSTER_ALT
MOVF SUTUN28,W
CALL GOSTER_ALT
MOVF SUTUN29,W
CALL GOSTER_ALT
MOVF SUTUN30,W
CALL GOSTER_ALT
MOVF SUTUN31,W
CALL GOSTER_ALT
MOVF SUTUN32,W
CALL GOSTER_ALT
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
GOSTER_ALT ; Bu alt program, sütun verisini PORTB'den gönderir. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVWF PORTB ; Sütun bilgisini PORTB'den gönder.
CALL TIMA_B ; Gecikme alt programini çagir.
BCF PORTA,0 ; CLOCK düsen kenar.
BSF PORTA,0 ; CLOCK yükselen kenar.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
TIMA_B ; PORTB'den LED'lere gönderilen bilgiyi gösterme süresi. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVLW D'123' ; W'ye 20 yaz.
MOVWF TIMA ; TIMA register'a gönder.
PAUSE2 MOVLW D'1' ; W'ye 25 yaz.
MOVWF TIMB ; TIMB register' gönder.
PAUSE1 DECFSZ TIMB,F ; TIMB-1, 0'a ulaştı mı?
GOTO PAUSE1 ; Hayır.
DECFSZ TIMA,F ; TIMA-1, 0'a ulaştı mı?
GOTO PAUSE2 ; Hayır.
RETURN ; Evet, alt programdan çık.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
TIMER_HIGH ; Bu alt program yaklaşık 0.2 saniyelik bir gecikme sağlar. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
MOVLW D'255' ; W'ye 255 yaz.
MOVWF TIMER_H1 ; TIMER_H1 register'a gönder.
DONGU1 MOVLW D'255' ; W'ye 255 yaz.
MOVWF TIMER_H2 ; TIMER_H2 register'a gönder.
DONGU2 DECFSZ TIMER_H2,F ; TIMER_H2-1, 0 mı?
GOTO DONGU2 ; Hayır.
DECFSZ TIMER_H1,F ; TIMER_H1-1, 0 mı?
GOTO DONGU1 ; Hayır.
RETURN ; Evet, alt programdan çık.
;ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ;
KLYOKU ; Klavyeden gönderilen seri bilgiyi, paralel veriye dönüştürür. ;
;ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ;
BCF INTCON,GIE ; Tüm kesme işlemleri geçersiz.
BCF INTCON,RBIE ; PORTB'den gelecek kesmeler geçersiz.
BCF INTCON,RBIF ; PORTB kesme bayrağını sıfırla.
MOVWF W_TEMP ; W'yi W_TEMP'e gönder.
SWAPF STATUS,W ; Alt ve üst 4-bit'i takas et.
MOVWF STATUS_TEMP ; STATUS'ı STATUS_TEMP'e gönder.
;ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ;
CLRF PORTB ; PORTB'yi temizle.
BASLA CLRF VERI ; VERI'yi, yeni bilgi için temizle.
CALL KLY_KONTROL ; Bit1 : START bit, değerlendirilmeyecek.
MOVLW D'8' ; W'ye 8 yükle.
MOVWF BIT_N ; BIT_N register'a gönder.
BIT_KAYDIR RRF VERI,F ; VERI içindeki bilgiyi, 1-bit sağa ötele.
CALL KLY_KONTROL ; CLOCK ve DATA sinyallerini değerlendir.
IORWF VERI,F ; W ve VERI'ye OR işlevi uygula.
IORLW B'01111111' ; W ve B'01111111'ye OR işlevi uygula.
ANDWF VERI,F ; Maskele.
DECFSZ BIT_N,F ; BIT_N-1, 0 mı?
GOTO BIT_KAYDIR ; Hayır.
CALL KLY_KONTROL ; Bit10 : EŞLİK bit'i, değerlendirilmeyecek.
CALL KLY_KONTROL ; Bit11 : STOP bit'i, değerlendirilmeyecek.
CALL KLY_KONTROL ; Klavyeden...
CALL KLY_KONTROL ; ...parmağın...
CALL KLY_KONTROL ; ...kaldırılması...
CALL KLY_KONTROL ; ...sırasında...
CALL KLY_KONTROL ; ...oluşan...
CALL KLY_KONTROL ; ...ikinci...
CALL KLY_KONTROL ; ...interrrupt'ın...
CALL KLY_KONTROL ; ...önlenmesi.
CALL KLY_KONTROL ; Aksi halde...
CALL KLY_KONTROL ; ...her karakter...
CALL KLY_KONTROL ; ...çift olarak gözükecektir.
GOTO KLY_MAIN ; Seri veri, paralel veriye dönüştürüldü.
KLY_KONTROL BTFSC PORTB,7 ; CLOCK 0 mı?
GOTO $ - 1 ; Hayır, 0 olmasını bekle.
BTFSS PORTB,7 ; CLOCK, 1 mi?
GOTO $ - 1 ; Hayır, 1 olmasını bekle.
BTFSS PORTA,4 ; DATA 1 mi?
RETLW B'00000000' ; Hayır, 0 ile dön.
RETLW B'10000000' ; Evet, 1 ile dön.
;ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ;
KLY_MAIN ; Bu alt program, klavyeden gelen seri bilgiyi okur. ;
;ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ;
DELETE? MOVF VERI,W ; VERI'yi W'ye yaz.
SUBLW D'113' ; 113-VERI
BTFSS STATUS,Z ; DELETE tuşuna basıldı mı?
GOTO HATAKONTROL ; Hayır, devam et.
MOVLW H'00' ; W'ye 0 yaz.
MOVWF EEADR ; Adres bilgisi olarak EEADR'ye gönder.
MOVWF EEDATA ; Veri olarak EEDATA'ya gönder.
CALL EEYAZ ; 0. adrese 0 yaz. (Kayıt sayısını temizle.)
CALL SUTUN_TEMIZLE ; Sütun bilgisini temizle.
CLRF EEREAD_N ; Okunacak kayıt sayısı 0
CLRF EEWRITE_N ; EEPROM'a kayıt sayısı 0
GOTO KLYCIK ; Silme işlemi tamamlandı.
HATAKONTROL MOVF VERI,W ; VERI'yi W'ye yaz.
SUBLW B'11110000' ; HATAKODU-VERI
BTFSC STATUS,Z ; Klavye kodu hatasız mı?
GOTO KLYCIK ; Hatalı, alt programdan çık.
SKIP MOVF VERI,W ; VERI'yi W'ye yaz.
ANDLW B'01111111' ; 7. bit'i maskele.
MOVWF VERI ; Maskelenen bilgiyi yeniden VERI'ye gönder.
VERI_KAYDET MOVF VERI,W ; VERI'yi W'ye yaz.
MOVWF EEDATA ; EEDATA'ya gönder.
MOVF EEWRITE_N,W ; EEWRITE_N'i W'ye yaz.
MOVWF EEADR ; EEADR'ye adres bilgisi olarak gönder.
INCF EEADR,F ; EEADR+1
INCF EEWRITE_N,F ; Yazılan kayıt sayısını 1 arttır.
CALL EEYAZ ; EEPROM'a yaz.
KAYIT_SAYISI MOVLW 0 ; Kayıt sayısının tutulduğu adres.
KAYDET MOVWF EEADR ; EEPROM'un ilk adresi.
MOVF EEWRITE_N,W ; Kayıtlı bellek sayısını W'ye yaz.
MOVWF EEDATA ; EEDATA' ya gönder.
CALL EEYAZ ; VERI'yi EEPROM'a kaydet.
KLYCIK SWAPF STATUS_TEMP,W ; STATUS_TEMP'i W'ye yaz.
MOVWF STATUS ; STATUS'ı ilk konumuna getir.
SWAPF W_TEMP,F ; W_TEMP'e swap işlemi uygula.
SWAPF W_TEMP,W ; W'yi ilk konumuna getir.
BCF INTCON,RBIF ; PORTB kesme bayrağını sıfırla.
BSF INTCON,GIE ; Yeni kesmeler kabul edilir.
BSF INTCON,RBIE ; PORTB'den gelecek kesmeler geçerli.
RETFIE ; Alt programından çık.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
EEYAZ ; VERI'yi EEPROM'a kaydetme alt programi. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
BSF STATUS,RP0 ; BANK1'e geç.
BCF INTCON,GIE ; GIE pasif.
BSF EECON1,WREN ; Yazma islemine izin ver.
MOVLW H'55' ; EEPROM...
MOVWF EECON2 ; ...için...
MOVLW H'AA' ; ...standard...
MOVWF EECON2 ; ...islemler.
BSF EECON1,WR ; Yazma islemini baslat.
SIFIRDATUT BTFSC EECON1,WR ; Yazma islemi bitti mi?
GOTO SIFIRDATUT ; Hayir, bekle.
BSF EECON1,WREN ; Evet, Write Enable'i lojik "1" yap.
BCF EECON1,EEIF ; EEIF'i temizle.
BCF STATUS,RP0 ; BANK0'a dön.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
ANALIZ ; EEDATA register'ından alınan bilginin değerlendirilmesi. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
BIR_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'22' ; 22-EEDATA
BTFSS STATUS,Z ; Basılan tuş "1" mi?
GOTO IKI_1 ; Hayır.
MOVLW D'3' ; W'ye 3 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'3' ; Sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
BIR_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO BIR_2 ; Hayır, diğer sütunları oku.
RETURN
IKI_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'30' ; 30-EEDATA
BTFSS STATUS,Z ; Basılan tuş "2" mi?
GOTO UC_1 ; Hayır.
MOVLW D'8' ; W'ye 8 yaz.
CALL COMMON1 ; Ortak işlemler1.
IKI_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO IKI_2 ; Hayır, diğer sütunları oku.
RETURN
UC_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'38' ; 38-EEDATA
BTFSS STATUS,Z ; Basılan tuş "3" mü?
GOTO DORT_1 ; Hayır.
MOVLW D'13' ; W'ye 13 yaz.
CALL COMMON1 ; Ortak işlemler1.
UC_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO UC_2 ; Hayır, diğer sütunları oku.
RETURN
DORT_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'37' ; 37-EEDATA
BTFSS STATUS,Z ; Basılan tuş "4" mü?
GOTO BES_1 ; Hayır.
MOVLW D'18' ; W'ye 18 yaz.
CALL COMMON1 ; Ortak işlemler1.
DORT_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO DORT_2 ; Hayır, diğer sütunları oku.
RETURN
BES_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'46' ; 46-EEDATA
BTFSS STATUS,Z ; Basılan tuş "5" mi?
GOTO ALTI_1 ; Hayır.
MOVLW D'23' ; W'ye 23 yaz.
CALL COMMON1 ; Ortak işlemler1.
BES_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO BES_2 ; Hayır, diğer sütunları oku.
RETURN
ALTI_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'54' ; 54-EEDATA
BTFSS STATUS,Z ; Basılan tuş "6" mı?
GOTO YEDI_1 ; Hayır.
MOVLW D'28' ; W'ye 28 yaz.
CALL COMMON1 ; Ortak işlemler1.
ALTI_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO ALTI_2 ; Hayır, diğer sütunları oku.
RETURN
YEDI_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'61' ; 61-EEDATA
BTFSS STATUS,Z ; Basılan tuş "7" mi?
GOTO SEKIZ_1 ; Hayır.
MOVLW D'33' ; W'ye 33 yaz.
CALL COMMON1 ; Ortak işlemler1.
YEDI_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO YEDI_2 ; Hayır, diğer sütunları oku.
RETURN
SEKIZ_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'62' ; 32-EEDATA
BTFSS STATUS,Z ; Basılan tuş "8" mi?
GOTO DOKUZ_1 ; Hayır.
MOVLW D'38' ; W'ye 38 yaz.
CALL COMMON1 ; Ortak işlemler1.
SEKIZ_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO SEKIZ_2 ; Hayır, diğer sütunları oku.
RETURN
DOKUZ_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'70' ; 70-EEDATA
BTFSS STATUS,Z ; Basılan tuş "9" mu?
GOTO SIFIR_1 ; Hayır.
MOVLW D'43' ; W'ye 43 yaz.
CALL COMMON1 ; Ortak işlemler1.
DOKUZ_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO DOKUZ_2 ; Hayır, diğer sütunları oku.
RETURN
SIFIR_1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'69' ; 69-EEDATA
BTFSS STATUS,Z ; Basılan tuş "0" mı?
GOTO A1 ; Hayır.
MOVLW D'48' ; W'ye 48 yaz.
CALL COMMON1 ; Ortak işlemler1.
SIFIR_2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO SIFIR_2 ; Hayır, diğer sütunları oku.
RETURN
A1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'28' ; 28-EEDATA
BTFSS STATUS,Z ; Basılan tuş "A" mı?
GOTO B1 ; Hayır.
MOVLW D'53' ; W'ye 53 yaz.
CALL COMMON1 ; Ortak işlemler1.
A2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO A2 ; Hayır, diğer sütunları oku.
RETURN
B1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'50' ; 50-EEDATA
BTFSS STATUS,Z ; Basılan tuş "B" mi?
GOTO C1 ; Hayır.
MOVLW D'58' ; W'ye 58 yaz.
CALL COMMON1 ; Ortak işlemler1.
B2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO B2 ; Hayır, diğer sütunları gönder.
RETURN
C1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'33' ; 33-EEDATA
BTFSS STATUS,Z ; Basılan tuş "C" mi?
GOTO D1 ; Hayır.
MOVLW D'63' ; W'ye 63 yaz.
CALL COMMON1 ; Ortak işlemler1.
C2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO C2 ; Hayır, diğer sütunları gönder.
RETURN
D1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'35' ; 35-EEDATA
BTFSS STATUS,Z ; Basılan tuş "D" mi?
GOTO E1 ; Hayır.
MOVLW D'68' ; W'ye 73 yaz.
CALL COMMON1 ; Ortak işlemler1.
D2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO D2 ; Hayır, diğer sütunları gönder.
RETURN
E1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'36' ; 36-EEDATA
BTFSS STATUS,Z ; Basılan tuş "E" mi?
GOTO F1 ; Hayır.
MOVLW D'72' ; W'ye 77 yaz.
CALL COMMON4 ; Ortak işlemler4.
E2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO E2 ; Hayır, diğer sütunları gönder.
RETURN
F1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'43' ; 43-EEDATA
BTFSS STATUS,Z ; Basılan tuş "F" mi?
GOTO G1 ; Hayır.
MOVLW D'76' ; W'ye 81 yaz.
CALL COMMON4 ; Ortak işlemler4.
F2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO F2 ; Hayır, diğer sütunları oku.
RETURN
G1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'52' ; 52-EEDATA
BTFSS STATUS,Z ; Basılan tuş "G" mi?
GOTO H1 ; Hayır.
MOVLW D'81' ; W'ye 86 yaz.
CALL COMMON1 ; Ortak işlemler1.
G2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO G2 ; Hayır, diğer sütunları oku.
RETURN
H1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'51' ; 51-EEDATA
BTFSS STATUS,Z ; Basılan tuş "H" mi?
GOTO I1 ; Hayır.
MOVLW D'86' ; W'ye 96 yaz.
CALL COMMON1 ; Ortak işlemler1.
H2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO H2 ; Hayır, diğer sütunları oku.
RETURN
I1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'67' ; 67-EEDATA
BTFSS STATUS,Z ; Basılan tuş "I mı?
GOTO J1 ; Hayır.
MOVLW D'87' ; W'ye 97 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'1' ; I'nın sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
I2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO I2 ; Hayır, diğer sütunları gönder.
RETURN
J1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'59' ; 59-EEDATA
BTFSS STATUS,Z ; Basılan tuş "J mi?
GOTO K1 ; Hayır.
MOVLW D'91' ; W'ye 102 yaz.
CALL COMMON4 ; Ortak işlemler4.
J2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO J2 ; Hayır, diğer sütunları gönder.
RETURN
K1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'66' ; 66-EEDATA
BTFSS STATUS,Z ; Basılan tuş "K" mı?
GOTO L1 ; Hayır.
MOVLW D'96' ; W'ye 107 yaz.
CALL COMMON1 ; Ortak işlemler1.
K2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO K2 ; Hayır, diğer sütunları gönder.
RETURN
L1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'75' ; 75-EEDATA
BTFSS STATUS,Z ; Basılan tuş "L" mi?
GOTO M1 ; Hayır.
MOVLW D'100' ; W'ye 111 yaz.
CALL COMMON4 ; Ortak işlemler4.
L2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO L2 ; Hayır, diğer sütunları gönder.
RETURN
M1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'58' ; 58-EEDATA
BTFSS STATUS,Z ; Basılan tuş "M" mi?
GOTO N1 ; Hayır.
MOVLW D'107' ; W'ye 118 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'7' ; M'nin sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
M2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO M2 ; Hayır, diğer sütunları gönder.
RETURN
N1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'49' ; 49-EEDATA
BTFSS STATUS,Z ; Basılan tuş "M" mi?
GOTO O1 ; Hayır.
MOVLW D'112' ; W'ye 123 yaz.
CALL COMMON1 ; Ortak işlemler1.
N2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO N2 ; Hayır, diğer sütunları gönder.
RETURN
O1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'68' ; 68-EEDATA
BTFSS STATUS,Z ; Basılan tuş "O" mu?
GOTO P1 ; Hayır.
MOVLW D'117' ; W'ye 128 yaz.
CALL COMMON1 ; Ortak işlemler1.
O2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO O2 ; Hayır, diğer sütunları gönder.
RETURN
P1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'77' ; 77-EEDATA
BTFSS STATUS,Z ; Basılan tuş "P" mi?
GOTO Q1 ; Hayır.
MOVLW D'122' ; W'ye 138 yaz.
CALL COMMON1 ; Ortak işlemler1.
P2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO P2 ; Hayır, diğer sütunları gönder.
RETURN
Q1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'21' ; 21-EEDATA
BTFSS STATUS,Z ; Basılan tuş "Q" mu?
GOTO R1 ; Hayır.
MOVLW D'127' ; W'ye 143 yaz.
CALL COMMON1 ; Ortak işlemler1.
Q2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO Q2 ; Hayır, diğer sütunları oku.
RETURN
R1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'45' ; 45-EEDATA
BTFSS STATUS,Z ; Basılan tuş "R" mi?
GOTO S1 ; Hayır.
MOVLW D'132' ; W'ye 148 yaz.
CALL COMMON1 ; Ortak işlemler1.
R2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO R2 ; Hayır, diğer sütunları gönder.
RETURN
S1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'27' ; 27-EEDATA
BTFSS STATUS,Z ; Basılan tuş "S" mi?
GOTO T1 ; Hayır.
MOVLW D'137' ; W'ye 153 yaz.
CALL COMMON1 ; Ortak işlemler1.
S2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO S2 ; Hayır, diğer sütunları gönder.
RETURN
T1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'44' ; 44-EEDATA
BTFSS STATUS,Z ; Basılan tuş "T" mi?
GOTO U1 ; Hayır.
MOVLW D'142' ; W'ye 163 yaz.
CALL COMMON1 ; Ortak işlemler1.
T2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO T2 ; Hayır, diğer sütunları gönder.
RETURN
U1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'60' ; 60-EEDATA
BTFSS STATUS,Z ; Basılan tuş "U" mu?
GOTO V1 ; Hayır.
MOVLW D'147' ; W'ye 168 yaz.
CALL COMMON1 ; Ortak işlemler1.
U2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO U2 ; Hayır, diğer sütunları gönder.
RETURN
V1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'42' ; 42-EEDATA
BTFSS STATUS,Z ; Basılan tuş "V" mi?
GOTO W1 ; Hayır.
MOVLW D'152' ; W'ye 178 yaz.
CALL COMMON1 ; Ortak işlemler1.
V2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO V2 ; Hayır, diğer sütunları gönder.
RETURN
W1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'29' ; 29-EEDATA
BTFSS STATUS,Z ; Basılan tuş "W" mu?
GOTO X1 ; Hayır.
MOVLW D'159' ; W'ye 185 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'7' ; Sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
W2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO W2 ; Hayır, diğer sütunları oku.
RETURN
X1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'34' ; 34-EEDATA
BTFSS STATUS,Z ; Basılan tuş "X" mi?
GOTO Y1 ; Hayır.
MOVLW D'164' ; W'ye 190 yaz.
CALL COMMON1 ; Ortak işlemler1.
X2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO X2 ; Hayır, diğer sütunları oku.
RETURN
Y1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'53' ; 53-EEDATA
BTFSS STATUS,Z ; Basılan tuş "Y" mi?
GOTO Z1 ; Hayır.
MOVLW D'169' ; W'ye 195 yaz.
CALL COMMON1 ; Ortak işlemler1.
Y2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO Y2 ; Hayır, diğer sütunları gönder.
RETURN
Z1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'26' ; 67-EEDATA
BTFSS STATUS,Z ; Basılan tuş "Z" mi?
GOTO NOKTA1 ; Hayır.
MOVLW D'174' ; W'ye 200 yaz.
CALL COMMON1 ; Ortak işlemler1.
Z2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO Z2 ; Hayır, diğer sütunları gönder.
RETURN
NOKTA1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'74' ; 74-EEDATA
BTFSS STATUS,Z ; Basılan tuş "NOKTA" mı?
GOTO BOSLUK1 ; Hayır.
MOVLW D'175' ; W'ye 201 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'1' ; NOKTA'nın sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
NOKTA2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO NOKTA2 ; Hayır, diğer sütunları gönder.
RETURN
BOSLUK1 MOVF VERI,W ; Karakter'e ait kodu W'ye yaz.
SUBLW D'41' ; 41-EEDATA
BTFSS STATUS,Z ; Basılan tuş "SPACE" mi?
RETURN ; Hayır.
CUMLE_SONU MOVLW D'178' ; W'ye 204 yaz.
MOVWF LINE ; LINE register'a gönder.
MOVLW D'3' ; BOSLUK'un sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
BOSLUK2 MOVLW B'00000011' ; W'ye 3 yaz.
CALL COMMON2 ; Ortak işlemler2.
DECFSZ CHAR_SUTUN,F ; Karakterin sütun sayısı-1, 0 mı?
GOTO BOSLUK2 ; Hayır, diğer sütunları gönder.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
; Karakterlerle ilgili yapılacak ortak işlemler, bu alt programda toplandı. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
COMMON1 MOVWF LINE ; LINE register'a gönder.
MOVLW D'5' ; Sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
RETURN
COMMON2 MOVWF PCLATH ; Tabloya ulaşmak için üst bayt olarak yaz.
MOVF LINE,W ; Line'ı W'ye yaz.
CALL TABLE ; Çevrim tablosunu çağır.
CLRF PCLATH ; Üst bayt'ı sıfırla.
MOVWF SUTUN1 ; Tablo bilgisini SUTUN'a gönder.
CALL GOSTER ; Sütun bilgisini LED göstergeye aktar.
CALL SHIFT ; Sütunları 1 adım sola ötele.
DECF LINE,F ; LINE-1
RETURN
COMMON4 MOVWF LINE ; LINE register'a gönder.
MOVLW D'4' ; Sütun sayısını W'ye yaz.
MOVWF CHAR_SUTUN ; CHAR_SUTUN register'a gönder.
RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
TABLE ; Klavyeden basılan her tuş KLYOKU alt programında 8-bit'lik paralel KOD'a ;
; dönüştürülür. Her karakterin sütun sayısı farklı olduğundan, karakterin ;
; sütun özellikleri aşağıda yer alan TABLE adlı alt programa yerleştirildi. ;
; Örneğin "I" karakterini oluşturmak için, 3 kez çevrim tablosundan okuma ;
; yapılır. "W" ya da "M" karakterini oluşturmak için ise 7 kez. ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
ADDWF PCL,F ; Program sayıcı+Tabloda ulaşılacak satır.
RETLW H'00' ; 0
_1 RETLW H'7F' ; 1
RETLW H'20' ; 2
RETLW H'10' ; 3
_2 RETLW H'31' ; 4
RETLW H'49' ; 5
RETLW H'49' ; 6
RETLW H'49' ; 7
RETLW H'27' ; 8
_3 RETLW H'36' ; 9
RETLW H'49' ; 10
RETLW H'49' ; 11
RETLW H'41' ; 12
RETLW H'22' ; 13
_4 RETLW H'04' ; 14
RETLW H'7F' ; 15
RETLW H'24' ; 16
RETLW H'14' ; 17
RETLW H'0C' ; 18
_5 RETLW H'46' ; 19
RETLW H'49' ; 20
RETLW H'49' ; 21
RETLW H'49' ; 22
RETLW H'7A' ; 23
_6 RETLW H'26' ; 24
RETLW H'49' ; 25
RETLW H'49' ; 26
RETLW H'49' ; 27
RETLW H'3E' ; 28
_7 RETLW H'60' ; 29
RETLW H'50' ; 30
RETLW H'48' ; 31
RETLW H'47' ; 32
RETLW H'40' ; 33
_8 RETLW H'36' ; 34
RETLW H'49' ; 35
RETLW H'49' ; 36
RETLW H'49' ; 37
RETLW H'36' ; 38
_9 RETLW H'3E' ; 39
RETLW H'49' ; 40
RETLW H'49' ; 41
RETLW H'49' ; 42
RETLW H'32' ; 43
_0 RETLW H'3E' ; 44
RETLW H'41' ; 45
RETLW H'41' ; 46
RETLW H'41' ; 47
RETLW H'3E' ; 48
_A RETLW H'3F' ; 49
RETLW H'48' ; 50
RETLW H'48' ; 51
RETLW H'48' ; 52
RETLW H'3F' ; 53
_B RETLW H'36' ; 54
RETLW H'49' ; 55
RETLW H'49' ; 56
RETLW H'49' ; 57
RETLW H'7F' ; 58
_C RETLW H'22' ; 59
RETLW H'41' ; 60
RETLW H'41' ; 61
RETLW H'41' ; 62
RETLW H'3E' ; 63
_D RETLW H'3E' ; 64
RETLW H'41' ; 65
RETLW H'41' ; 66
RETLW H'41' ; 67
RETLW H'7F' ; 68
_E RETLW H'41' ; 69
RETLW H'49' ; 70
RETLW H'49' ; 71
RETLW H'7F' ; 72
_F RETLW H'40' ; 73
RETLW H'48' ; 74
RETLW H'48' ; 75
RETLW H'7F' ; 76
_G RETLW H'2E' ; 77
RETLW H'49' ; 78
RETLW H'49' ; 79
RETLW H'41' ; 80
RETLW H'3E' ; 81
_H RETLW H'7F' ; 82
RETLW H'08' ; 83
RETLW H'08' ; 84
RETLW H'08' ; 85
RETLW H'7F' ; 86
_I RETLW H'7F' ; 87
_J RETLW H'7E' ; 88
RETLW H'01' ; 89
RETLW H'01' ; 90
RETLW H'02' ; 91
_K RETLW H'43' ; 92
RETLW H'24' ; 93
RETLW H'18' ; 94
RETLW H'08' ; 95
RETLW H'7F' ; 96
_L RETLW H'01' ; 97
RETLW H'01' ; 98
RETLW H'01' ; 99
RETLW H'7F' ; 100
_M RETLW H'3F' ; 101
RETLW H'40' ; 102
RETLW H'40' ; 103
RETLW H'3F' ; 104
RETLW H'40' ; 105
RETLW H'40' ; 106
RETLW H'3F' ; 107
_N RETLW H'7F' ; 108
RETLW H'02' ; 109
RETLW H'1C' ; 110
RETLW H'20' ; 111
RETLW H'7F' ; 112
_O RETLW H'3E' ; 113
RETLW H'41' ; 114
RETLW H'41' ; 115
RETLW H'41' ; 116
RETLW H'3E' ; 117
_P RETLW H'30' ; 118
RETLW H'48' ; 119
RETLW H'48' ; 120
RETLW H'48' ; 121
RETLW H'3F' ; 122
_Q RETLW H'3F' ; 123
RETLW H'43' ; 124
RETLW H'45' ; 125
RETLW H'41' ; 126
RETLW H'3E' ; 127
_R RETLW H'31' ; 128
RETLW H'4A' ; 129
RETLW H'4C' ; 130
RETLW H'48' ; 131
RETLW H'7F' ; 132
_S RETLW H'26' ; 133
RETLW H'49' ; 134
RETLW H'49' ; 135
RETLW H'49' ; 136
RETLW H'32' ; 137
_T RETLW H'40' ; 138
RETLW H'40' ; 139
RETLW H'7F' ; 140
RETLW H'40' ; 141
RETLW H'40' ; 142
_U RETLW H'7E' ; 143
RETLW H'01' ; 144
RETLW H'01' ; 145
RETLW H'01' ; 146
RETLW H'7E' ; 147
_V RETLW H'78' ; 148
RETLW H'06' ; 149
RETLW H'01' ; 150
RETLW H'06' ; 151
RETLW H'78' ; 152
_W RETLW H'7E' ; 153
RETLW H'01' ; 154
RETLW H'01' ; 155
RETLW H'7E' ; 156
RETLW H'01' ; 157
RETLW H'01' ; 158
RETLW H'7E' ; 159
_X RETLW H'41' ; 160
RETLW H'22' ; 161
RETLW H'1C' ; 162
RETLW H'22' ; 163
RETLW H'41' ; 164
_Y RETLW H'40' ; 165
RETLW H'20' ; 166
RETLW H'1F' ; 167
RETLW H'20' ; 168
RETLW H'40' ; 169
_Z RETLW H'61' ; 170
RETLW H'51' ; 171
RETLW H'49' ; 172
RETLW H'45' ; 173
RETLW H'43' ; 174
_NOKTA RETLW H'01' ; 175
_BOSLUK RETLW H'00' ; 176
RETLW H'00' ; 177
RETLW H'00' ; 178
;------------------------------------------------------------------------------------;
END
arkadaşlar bir istede bir arkadaş verdi bu siteyi ve aşiri derece cok sevdim bende bir okulumuza bir kazan yazi devresi yapacagim az buyuk olacak eger yardimlarinizi bekerim yardim ci olursanız :) eger arkadaşimiz bir yardim eder telnet_exe@hotmal.com msn adresim ardimlariniz beklerim
Soruya cevap veren yokmu arkadaşlar 1 hafta oldu hiç kimse birşey yazmıyor NEDEN ?
:cry: :cry: :cry: :roll:
Shift etiketli yerde sütun bilgileri 1 sütun kaydırılıyor. Ekranı ortalayacak kadar metni kaydır. (tabi bunu hesaplayan bir altprogram yazacaksın; Mesela senin devre 32 sütunluksa yazı da 10 sütun yer kaplıyorsa
32-10/2=11 kere kaydırma işlemi yaparsan yazı ortalanır.) Sonra programda kaydırma işlemini yapan altprogramı es geçersen yazı ekranda sabit kalır. Tabi bu işlemi o progama uydurmak gerekir.
Öncelikle teşekkür ediyorum yazdıklarından dolayı ama bana daha açık anlatımda bulunursan çok memlun olurum !
Ben elektronik konusunda iyi olduğumu düşünüyorum ama programlama konusunda o kadar iyi değilim bana bir örnek ile yardımcı olabilirmisin mesela bu asm dosyası üzererinde bu sabitleme olayını gösterebilirmisin
SAYGILARIMLA
:roll: :roll: :roll: :roll:
Bu çok zor bir olaymı yardım etmek yada benim sorduğum soru hakkında bilgisi olan birilerimi yok burada ? :cry: :cry: :cry: :cry:
Merhaba,
Şu ana kadar yayınlanan projelerin içinde en profesyonel olanı
http://sjeffroy.free.fr/Journal_Lumineux/journal_lumineux.html
adresindeki Fransızca olan. Hem yapısı hem de windows için programı oldukça profesyonel. Ama adam her nedense şemaları, PIC hexini ve windows programının source kodunu kaldırmış. Bu program ve şemalara sahip olan var mı?
Teşekkürler...
Arkadaslar picbasic de isinize yarayabilecek bir kayan yazı programı yazdım. 2x16 LCD display kullandım.
Hepinize kolay gelsin.............
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
DEFINE LCD_RWREG PORTE
DEFINE LCD_RWBIT 2
ADCON1 = 7 ' PORTA VE PORTE DIJITAL
c var byte
d var byte
a var byte
dongu:
for a=0 to 65 'Karakter sayısına onaltı eklenecek (49+16)
pause 150 'Yazının kayma hızı
lcdout $fe,1
for c=0 to 49 'Kayacak yazının karakter sayısının bir eksiği (50-1)
lookup c, ["Ahmet UYSAL -Eminim isinize yarayacak bir program-"],d
lcdout $fe,143+c-a,d
next c
c=0
next a
a=0
goto dongu
end
Alıntı yapılan: "infomaster"Merhaba,
Şu ana kadar yayınlanan projelerin içinde en profesyonel olanı
http://sjeffroy.free.fr/Journal_Lumineux/journal_lumineux.html
adresindeki Fransızca olan. Hem yapısı hem de windows için programı oldukça profesyonel. Ama adam her nedense şemaları, PIC hexini ve windows programının source kodunu kaldırmış. Bu program ve şemalara sahip olan var mı?
Teşekkürler...
Malesef kaldırmış bende çok araştırdım ama yok !
Ve şu benim soruma daha detaylı bir bilgi veren olmadı
Selam arkadaslar. 10 karakterlik ve verisi bilgisayardan girilecek şekilde bir kayan yazı panasu yapmam gerekli. bunun için 5x7 dot matris siparişi verdim. Yapacağım bu uygulama okulda kalacağı için çok fazla masraf da etmek istemiyorum ondan dolayı konu hakkında bilgisi olan arkadaslardan yardım rica ediyorum. Yapmayı düşündüğüm uygulamayı size anlatıyım tutarmı tutmaz mı yol gösterirmisiniz.
4515 veya 4514 16 bitlik 4 tane decoderi yoneten bir tane daha 4515/4514 decoderi olacak. bunlardan 4 tanesinin seçici ucları ortak ve bunları sıra ile aktif edecek olan 2 bitlik bilgi de yonetici olarak adlandırdığım diğer decoderdan gelecek. sütun tarama mantığına göre (4x16=64 bitlik decoderden gelen bit sayısı) her çevrimde decoder 0->64e dogru ilerleyecek ve her bir bit dot matrisin farklı katotlarına bağlı olduğundan 10 tane displayin 50 tane katod ucu taranacak. bu tarama esnasında örneğin 33üncü sütün taranırken 7 bitlik satır bilgisi de tüm displaylere verilecek. tabiki 33üncü taranırken sadece onun katodu aktif olduğu için o yanacak diğerleri ise hızlı çevrimden dolayı önceki parlaklığını koruyacak diye düşünüyorum. shift registerler kullanmam gerekse toplamda 50 tane shift register mı gerekir. bunun devresini cıkarmayı geçtim baskı devresini delmek bir ömre bedel nerdeyse. bu dediğim taktik işe yararmı veya sizin bildiğiniz uygun bir çözüm varmıdır. Herkese şimdiden cok tesekkürler. İyi çalışmalar...
Arkadaslar merhaba,
küçük boyutlu bir yürüyen yazı hazırlıyorum. Aşağıdaki resim buna ait ve sütun sürücülerinin bir parçasını gösteriyor.
(http://www.teknocold.com/cizim1.gif)
Sizden ricam bu devreyi çalıştırmak için gereken kodunu PICBASIC yazmak için yardım. Oldukça basit birşey ama kafa durdu işte.
Her defasında bir sütun sürülecek.
Not: http://sjeffroy.free.fr/Journal_Lumineux/journal_lumineux.html adresinde şemaları bulamıyorum demiştim. Sitenin sahibine bir mail yazdım. Yeni sitesinde olduğunu ama kodları ancak 1 yıl sonra vereceğini söyledi. (Sanırım biraz ticaret yapmak istiyor.) Neyse şemalar arkadaşların işine yarayabilir. Şemalar için adres http://www.afficheur.free.fr/download/journal876_pdf.zip
(http://www.afficheur.free.fr/pages/journal876/journal876.jpg)
Teşekkürler.
Merhaba.
Üstteki mesajımı dikkate almayınız. Sorunu hallettim.
Nasıl?
Arkadaşlar Antrak gazetesinde yer alan klevye kontrollü kayan yazı devresini çalıştıran varmı? Ben çalıştıramıyorum. Programlamadamı hata yapıyorum. İlgilenen varsa cevap yazabilirmi?
Alıntı yapılan: "infomaster"Arkadaslar merhaba,
küçük boyutlu bir yürüyen yazı hazırlıyorum. Aşağıdaki resim buna ait ve sütun sürücülerinin bir parçasını gösteriyor.
devrende 164 kullanma 595 kullan karakter sayısını arttırdığın zaman yararını göreceksin.
@bmutlu
Teşekkür ederim. Bunu farkettim. Bundan sonra 74HC595 kullanacağım.
Yaptığın devrenin resmini koyduğunu söylemişsin ama göremedim. Kontrol edermisin?
İyi çalışmalar.
@infomaster
Senin 6-7 mesaj yukardaki yazından alıntı yapmıştım alıntının bazı yerlerini sildiğim için yazı bana aitmiş gibi oldu .Aslında ben senin şeman üzerine bu yazıyı yazmıştım. Ledlerden tarama yoluyla fazla akım akıtacaksan 74hc595 port ucu yeteri kadar akım sağlayamaz ise 74hc595 in çıkışına ULN serisi entegre kullanabilirsin veya Tpic6b595 kullanabilirsin .
Tpic6b595 ??? 8O
bir ara bunu aramaktan gına gelmişti piyasada varmı ?
@bmutlu
:lol: :lol: :lol: O sözler bana yabancı gelmemişti zaten.
Shift register için UCN5833A, UCN5832A'yı inceliyorum şu sıralar. Allegro'nun sitesine bir bakın isterseniz. BiMOS II 32-BIT SERIAL-INPUT,
LATCHED DRIVERS olarak geçiyor.
İyi çalışmalar...
@aster
Deltaset elektronikten alabilirsin .
7x24 DOT MATRIX
KAYAN YAZI
Bu proje Sevgili lay'
dan.
http://www.picproje.net/forum/viewtopic.php?t=2402&highlight=kayan+yaz%FD
Alıntı:
Birkaç aylık bir
çalışmayı forumdaki arkadaşların yararına sunuyorum.
Upload edilen adresten, matrix.zip adlı dosyayı indirebilirsiniz.
http://www.mcu.cz/atm/
Dosya: matrix.zip
Boyut: 1.01 MB
PASS: ta5ccf
İşlev:
Bir PC/AT klavyeden girilen metni, dot matrix display'de izleme, bilginin
EEPROM'a kaydedilmesi.
lay
Teşekkürler lay .
Arkadaşlar burada konu edilen matrix.zip isimli dosyaya ulaşamıyorum, lütfen yardımlarınızı bekliyorum..
@ malitas,
Dostum bahsettiğin proje aşağıdaki linkte mevcut.Oradan indirebilirsiniz...
24 SÜTUN KAYAN YAZI PROJESİ
http://www.antrak.org.tr/gazete/122003/ali_yetis.htm
KAYAN YAZI-Bil. ProgramıProjenin Sahibi:
otm2002Alıntı YapMerhaba
Aşağıdaki adrese yürüyen yazı kontrol yazılımlarını koydum
erişim için(kullanıcı adı: user)(password : picproje)
www.uniteknik.com/dosyalar/yy.zip
Bahsi geçen yer...
https://www.picproje.org/index.php/topic,4732
Journal Kayan Yazı Hexleri veya asmsi...
(https://www.picproje.org/index.php/topic,5716)
PROFESYONEL KAYAN (yürüyen) YAZI
(https://www.picproje.org/index.php/topic,5882)
Projenin Sahibi: otm2002
http://www.armory.com/~spcecdt/electronics/LED_matrix/
Arkadaşlar, Malum antrakta 16f84lü bir devre var. fakat ROM az geldiği için fazla yazı yazamıyor. Nacizane ben de bunu 16f877ye uyarladım. sütun sayısı şimdilik 25 olmasına rağmen 100 gibi olabilir. seri porttan txt dosya yüklenecek. Daha başlangıç aşamasında. ve henüz denenmedi . Fakat azimli arkadaşlar, bu antrak projesinden esinlenerek daha iyisini yapabilir. text dosyayı harici epromdan okuyan gibi..
Resim Burada (http://img85.echo.cx/img85/5564/cozturkmovingdemo4fm.gif)(sade resim)
Cozturk verdiğin sitede nasil downlaod yapiliyor.. :)
:oops: afedersiniz arkadaşlar. bu mesajı yazmasam daha iyi olurdu. dosya filan göndermedim çünkü.
ne zaman gönderecksin ?
Alıntı yapılan: "cozturk"Arkadaşlar, Malum antrakta 16f84lü bir devre var. fakat ROM az geldiği için fazla yazı yazamıyor. Nacizane ben de bunu 16f877ye uyarladım. sütun sayısı şimdilik 25 olmasına rağmen 100 gibi olabilir. seri porttan txt dosya yüklenecek. Daha başlangıç aşamasında. ve henüz denenmedi . Fakat azimli arkadaşlar, bu antrak projesinden esinlenerek daha iyisini yapabilir. text dosyayı harici epromdan okuyan gibi..
Resim Burada(sade resim)
:( 8O 8O 8O :(
PC KONTROLLÜ AKAN YAZI PROJESİ
Tıklayın (http://www11.brinkster.com/eloumut/~akan_yazi)
Böyle yazsaydın bence daha şık olurdu Umut.
Benim sitem ve forumum (http://umut_k.sitemynet.com/anasayfa/)
Alıntı yapılan: "katana"Böyle yazsaydın bence daha şık olurdu Umut.
Benim sitem ve forumum
Sitemde bu devrenin linki yok...
Kayan yazıların baş belası titreşim olayı sutun tarama hızının dolayı oluşuyor. Burada sutun taraması yok. Dolayısı ile titreşimde yok. Bu çok ii.
Ben bir sutun taramalı devre yaptım. Fakat titreşim/parlaklık olayını bi türlü istediğim gibi yapamadım.
Bu devrenin çalışma mantığını anlatırsan sevinirim. Aklımca bir mantık oluşturdum aslında. Fakat kafama takılan burada uçan-kaçan yazı efektlerini nasıl yapacağız ?
Yani benim mantığıma göre bu devreye data clock verdikten sonra sağdan sola yada soldan sağa sutunlar bir ileri bir iler atlayarak gidecekler. Peki ben yazıyı ters yöne hareket ettirmek istersem ?
Bu gibi soruların bir cevabı varmı ?
Alıntı yapılan: "_PICMAN_"PC KONTROLLÜ AKAN YAZI PROJESİ
Proteus simulasyonuda benden olsun!
ayrıca klasörde diğer dökümanlarda var.
kayan or akan yazı
tesekkürler beyler projem için müthiş bi kaynak
Alıntı yapılan: "ramsess"tesekkürler beyler projem için müthiş bi kaynak
Bir şey değil.... ;)
Sayın Arkadaşlar ve üstadlarr ben bu sene okulda proje olarak antrak taki 24 sütün kayan yazı devresini yapacam fakat baskı devre çıkarmakta zorlanıyorum eğer elinizde hazır baskı devresi (pcb) si var ise lütven bana cevap verin teşekürlerr (hazıra konmak istemem ama çok uğraştım bir türlü olmadı ) ;-)
Scrolling 7 x 25 LED Dot Matrix Sign
(http://www.technology.niagarac.on.ca/students/k/vkennedy/ledfnt.jpg)
http://www.technology.niagarac.on.ca/students/k/vkennedy/
@mustafacam
yolladığın kayan or akan yazı dosyasında hata var
Dosyayı açtığımda hiç bir şey gözükmüyor hata sence nerden kaynaklanabilir
herkese başarılar
Sayın kalman arkadaşım gözükmemesinin sebebi acaba proteus un versiyonu olabilirmi ben 6.7 de açtım başarılar
teknikelektronikci
arkadaşlar.
klavye kontrollü bir kayan yazı devresi yaptım. programı pic basic ile yazdım. devre çok güzel çalışıyor. ama karakterler kayarken (sağdan sola doğru) sanki bir sütun yanda da gölgesi kayıyor. yanan ledin sağındaki led sönük olarak yanıyor. bunu nasıl engelleyebilirim. matrixi 74ls164 ile sürdüm. acaba 74hc164 ile değiştirsem düzelir mi. veya nasıl bir çözüm olabilir. saygılar
Alıntı yapılan: "vatandas30"arkadaşlar.
klavye kontrollü bir kayan yazı devresi yaptım. programı pic basic ile yazdım. devre çok güzel çalışıyor. ama karakterler kayarken (sağdan sola doğru) sanki bir sütun yanda da gölgesi kayıyor. yanan ledin sağındaki led sönük olarak yanıyor. bunu nasıl engelleyebilirim. matrixi 74ls164 ile sürdüm. acaba 74hc164 ile değiştirsem düzelir mi. veya nasıl bir çözüm olabilir. saygılar
Muhtemelen 74164 clk pals sonunda ilgili satıra bilgi gönderiyorsundur ve bir clk pals sonunda bunu kesmiyorsundur. İşlem basamakları şeklinde yazacak olursam; 1-74164 clk palsi ver. 2- ilgili porttan satır bilgilerini ver 3- belli bir süre bekle. 4- Satır bilgilerini sil ( 0 yap söndür ) 5. belli bir süre bekle 6-işlem 1 'e yeniden git... Burda kullanacağın belli bir süre bekle kısımlarını deneme yanılma ile bulabilrsin. Gözü rahatsız etmeyecek şekildeki titreşimleri ortadan kaldırmak ve bu oranda görüntü parlaklığı ile doğrudan ilişkilidir.
bilgi var porta.0 '74164 data giriş
clk var porta.1 '74164 clock giriş
sutun var portb
tarama: '16 sütunu göster
for ka=0 to 16
if ka=0 then sutun=sutun16
if ka=1 then sutun=sutun15
if ka=2 then sutun=sutun14
if ka=3 then sutun=sutun13
if ka=4 then sutun=sutun12
if ka=5 then sutun=sutun11
if ka=6 then sutun=sutun10
if ka=7 then sutun=sutun9
if ka=8 then sutun=sutun8
if ka=9 then sutun=sutun7
if ka=10 then sutun=sutun6
if ka=11 then sutun=sutun5
if ka=12 then sutun=sutun4
if ka=13 then sutun=sutun3
if ka=14 then sutun=sutun2
if ka=15 then sutun=sutun1
toggle clk
gosub bekle1
toggle clk
bilgi=0
next ka
bilgi=1
return
hocam tarama kısmı yukarıda. rica etsem dediklerini burada izah edebilir misin?
Select Case diye birşey olması lazım, okadar çok if..then yerine onu kullanabilirsin daha güzel görünür.
SELECT CASE x
CASE 1
y = 10
CASE 2, 3
y = 20
CASE IS > 5
y = 100
CASE ELSE
y = 0
END SELECT
haklısın. o şekilde yazmak aklıma gelmemişti.
mhk üstadın dediğini anladım fakat programa nasıl uyarlayacağımı tasarlayamadım.
bilgi var porta.0 '74164 data giriş
clk var porta.1 '74164 clock giriş
sutun var portb
tarama: '16 sütunu göster
bilgi=1 'Bilgiyi tarama için 74 ucuna girdik
clk=0:clk=1 'clk ile ilerlettik
bilgi=0 'her clk plaste bilgi bir kayacaktır.
for ka=0 to 16
if ka=0 then sutun=sutun16
if ka=1 then sutun=sutun15
if ka=2 then sutun=sutun14
if ka=3 then sutun=sutun13
if ka=4 then sutun=sutun12
if ka=5 then sutun=sutun11
if ka=6 then sutun=sutun10
if ka=7 then sutun=sutun9
if ka=8 then sutun=sutun8
if ka=9 then sutun=sutun7
if ka=10 then sutun=sutun6
if ka=11 then sutun=sutun5
if ka=12 then sutun=sutun4
if ka=13 then sutun=sutun3
if ka=14 then sutun=sutun2
if ka=15 then sutun=sutun1
gosub bekle1
sutun=0
gosub bekle2
clk=0:clk=1
next ka
return
Şeklinde olabilir. Denemediğim için yorum yapamam bekle1 ve bekle2 alt programlarındaki gecikmeleri deneyerek bulabilirsin. Gölge sorunu şu; port'a gösterilecek bilgiyi verdiğimizde görünür.( 74 bilgi girişinde sütun taramayı başlattığımızda) bu bilgiyi 0 yapmazsak, tarama 2.sütüna geçtiğinde bir önceki bilgi olduğundan yanacaktır. Bunun daha az parlak yanmasının ( Gölge gibi görünmesinin ) nedeni sütun taramasının hızlı değişmesi olacaktır.
hocam proteusta bir deneyeyim. gölgeyi göremem ama çalışıp çalışmadığına bakarım en azından. problem yoksa inşallah yarın devre üzerinde denerim.
ilgilendiğiniz için teşekkürler
proteusta denedim olmadı fakat senin dediğini anladım.
örneğin birinci sütuna bilgiyi gönderiyoruz. ikinci sütuna geçmeden sütunu sıfırlıyoruz. sonra ikinci sütuna geçip 2. bilgiyi gönderiyoruz.
şu haliyle çalıştı.
tarama: '16 sütunu göster
clock=0
bilgi=1
clock=1
bilgi=0
for ka=0 to 16
if ka=0 then sutun=sutun16
if ka=1 then sutun=sutun15
if ka=2 then sutun=sutun14
if ka=3 then sutun=sutun13
if ka=4 then sutun=sutun12
if ka=5 then sutun=sutun11
if ka=6 then sutun=sutun10
if ka=7 then sutun=sutun9
if ka=8 then sutun=sutun8
if ka=9 then sutun=sutun7
if ka=10 then sutun=sutun6
if ka=11 then sutun=sutun5
if ka=12 then sutun=sutun4
if ka=13 then sutun=sutun3
if ka=14 then sutun=sutun2
if ka=15 then sutun=sutun1
gosub bekle1
sutun=%11111111
pauseus 50
clock=0:clock=1
next ka
return
Arkadaşlar proteus ta kayan yazının simülasyonunu çalıştıramıyorum. Simülasyon saati yavaş ilerliyor. acaba sorun bilgisayarımdamı. Bilgisayarım P4 1.8Ghz note book.
evet arkadaşım bende calıştıramadım hata veriyor devreyi yeniden cizdim düzeldi...
benim devrede bir sorun yok satırlar çok yavaş taranıyor bunu görebiliyorum. Ayrıca alt köşedeki simülasyon saati çok yavaş ilerliyor 1 sn yi 5-6 sn de geçiyor.Devre çalışıyor bizzat denedim ama simülasyon çalışmıyor.
Arkadaşlar valla Allah hepinizden razı olsun.İlaç gibi geldi bu konu valla..
Ödevim vardı ama yardım edenim yoktu. :lol: Şimdi yapcem artık.Yeni üye oldum ama çok memnun kaldım valla..Siz benim yüzümü güldürdünüz ya Allah'da sizin yüzünüzü güldürsün.Tekrar tekrar teşekkürler................ :arrow: ;) :idea: :P :) :arrow: ;)
arkadaşlar ben sheft register kaymalı kayan yazı yaptım ama istenmeyen led kırpmaları oluyor onu engelleyemedim 74HC164 kullandım ama ne denediysem olmadı mesela nokta gecerken üstündeki ledler göz kırpıyor ne yapabilirim acaba clock tan olabilirmi yardımcı olursanınz sevinirim şimdiden tekekkürler....
bunu her led üzerinde mi yapıyor? Yani tüm ledlerde. Eğer bazı ledlerde yapıyorsa , o ledlerin bağlı olduğu sütunlardaki ledleri değiştirmeyi dene. Bazı ledler yanık olabilip, üzerindeki sinyali diğer sütun yada satırlara taşıyabiliyor. Bunu denemende yarar var. Eğer tüm ledler üzerinde böyle bir durum varsa başka kısımlara bakman gerekir.
bütün ledler üzerinde oluyor cözüm bulamadım...
Çalışan projeyi göremediğimiz için yorum yapmakta çok zor. Satırdan verdiğin sinyallere bir göz at. Nokta geçerken üzerindeki ledlerin kırpışması;
* Beslemeden
* Satır sinyallerinden
* 74164 entegresinden ( özellikle yüksek akımda kullanıyorsan )
* Yazılımda porta satır sinyali gönderirken 2 satıra birden sinyal gönderilmş olabilir ( şu şekilde ; 3 satır olduğunu varsayarsak ve portd ise bunlar;
portd.2=0:portd.1=0:portd.0=1
portd.2=0:portd.1=1:portd.0=0
portd.2=1:portd.1=0:portd.0=0
bu şekilde yazmak yerine;
portd=%00000001
portd=%00000010
portd=%00000100
şeklinde yazmak daha iyi olacaktır.
Bir çok neden olabilir aklıma gelenler bunlar iyi inceleme yap derim.
aşyadaki resimde görüldügü gibi nokta kayıp gittikce o sütündaki ledler yanıp sönüyor resimde pek belli olmuyor...
(http://img375.imageshack.us/img375/443/adsz3jr.jpg)
Flaşsız karanlık ortamda resim çekmeyi dene, hatta basit kısa fotoğraf makinası ile video formatında hareketrli çekip gösterebilirsen daha mantıklı olur.
Elimden geldigi kadar foto yakaladım umarım anlaşılır....
(http://img128.imageshack.us/img128/3548/adsz122sc.jpg)
(http://img454.imageshack.us/img454/9100/adsz5764552543pi.jpg)
(http://img454.imageshack.us/img454/4968/jktrdff6mw.jpg)
(http://img454.imageshack.us/img454/529/mugf61bx.jpg)
biraz daha uzaktan çekseydin daha iyi olurdu gibime geliyor..
Bilmiyorum diğer arkadaşlarda benimle aynı düşüncedelermi..
eyer sorun anlaşıldıysa problem yok dedigim gibi her karekter cıkarken mutlaka istenmeyen led kıplamarı oluyor
Görüntüye göre cevap yaz dersen yazmak zor. Lakin ne şekilde bir tasarım yaptığını bilmiyorum. Satır yada sütun tarama mı? Eğer satır tarama yaptıysan ve bilgileri shift registerden geçirdikten sonra satır tarama sinyalini veriyorsan ve belli bir süre bekliyorsan ondan sonra shift registerleri resetleyip satır sinyalini 0 yaptıktan sonra diğer satırlara geçiyorsan problem olmamalı. Yazılım ve donanım hakkında biraz bilgiye ihtiyacımız var...
Pano sift register kaymalı 74hct164 kullandım ledler maximum parlaklıkta data kontrol devresinden data ve clk ucları geliyor 50 satır yani 50 tane 74hct164 var sorunu oldukca donanımda aradım ama bi sonuc bulamadım devre umut arkadaşımızın yaptıgı devre site aşagıda...
kayan yazı (http://www11.brinkster.com/eloumut/~akan_yazi)
Anladığım kadarıyla 2n3055 transistörü erken devreye sokuyorsun. Yazılımı bilmiyorum lakin, tüm bilgileri seri olarak 74164 lerden geçirdikten sonra 2n3055 transistörünü iletime geçirmen gerekir. Diğer bir husus bu tip bir tasarım biraz tuhaf, 50 adet 74164 ile satır yada sütun tarama mantığı ile 6-7 adet kullanman yeterli olurdu. Diğer bir husus 74164 üzerindeki bilgilerin bilgi güncellemeden önce resetlenmesi iyi olurdu.( Reset uçlarını kullanarak) 7404 entegresini hangi amaç için kullandığını da bir türlü anlamadım. Ledleri 74164 lerden hemen sonra dirençsiz sürmekte hata, bu entegrelerin dayanabilecekleri akım sınırlıdır zaten. İllede bununla uğraşacağım dersen , yazılımı iyi kontrol et. Gönderilecek tüm yazı bilgileri 74164'lere yerleştikten sonra 2n3055 'i iletime geçir. Yinede satır yada sütun taramayı tavsiye ederim. Buraya bir gözat;
http://picproje.com/index.php/topic,5371&start=15
Merhaba arkadaşlar,
Yeni başlayanlar için kolaylık olsun diye kendi cizdiğim ekran devresinin PCB'si yolluyorum. Her bir kart 5 adet 7x5 matix displayli. kac adet display isterseniz, o kadar kartı peş peşe bağlamanız yeterli. Displayler 74HC595 ile sürülmüştür.
(http://img110.imageshack.us/img110/1449/5limatrixekran4rv.th.jpg) (http://img110.imageshack.us/my.php?image=5limatrixekran4rv.jpg)
Bu plaketi yapmak isteyen arkadaşlara cizimide gönderiyorum.
http://www.hemenpaylas.com/download/201958/Kayan_yazi_ekran.cdr.html
Dosya Coreldraw formatındadır. Corelden direkt cıktı alacaksınız.
Selamlar,
Hasan ARSLAN
En sonunda bu devreden vazgececem bıktım artık sabır taşlarım eridi kırıp atacam plateti o naktaya geldi başka bir devre yapacam arslan74 hocamızın yaptıgı devre güzelmiş biraz daha devreye acıklama yazarsan vevinirim ....
(http://img140.imageshack.us/img140/621/kayanyazi9eq.th.jpg) (http://img140.imageshack.us/my.php?image=kayanyazi9eq.jpg)
Resimde basit bir örnek var. Bunula cok rahat ve sorunsuz çalışır. Resimde bir adet 16F877 kullanımıştır. Ama cok rahat 16F876 ilede çalışır.
Kendi yaptığım başka bir devre şeması.
(http://img118.imageshack.us/img118/5763/kontrol25yo.th.jpg) (http://img118.imageshack.us/my.php?image=kontrol25yo.jpg)
Ve devrenin PCB resmi tarih 09.03.2004.
(http://img131.imageshack.us/img131/382/kontrolpcb9md.th.jpg) (http://img131.imageshack.us/my.php?image=kontrolpcb9md.jpg)
Çalışmalarınızda başarılar,
Hasan ARSLAN
@arslan74
Sayın hocam çok teşekkür ederiz bize verdiğiniz devre şeması ve baskı devre için.Fakat devrenin kodlarını vermemişsiniz..Bu halde devreyi yapmak mümkün olmayacaktır....Bir de bir sorum olacak........
Bu matrislerin yerine 10 mmlik ledler kullansak devre şemasını nasıl değiştirmemiz gerekir??? Yani matris gibi ledlerle devreyi oluştururum ancak sürücü devresinin gücü buna yetmeyeceği için nasıl bir sürücü devresi yapmamı tavsiyr edersiniz....???????????????? Saygılarımla.Herkese iyi günler........
Alıntı YapBu matrislerin yerine 10 mmlik ledler kullansak devre şemasını nasıl değiştirmemiz gerekir??? Yani matris gibi ledlerle devreyi oluştururum ancak sürücü devresinin gücü buna yetmeyeceği için nasıl bir sürücü devresi yapmamı tavsiyr edersiniz....????????????????
74HC595 cıkşa uln2003 bağlarsın ve ledleri onunla sürersen sorun olmaz.
Örnek kod vermedim, cünkü ihtiyac duyacağınızı zannetmedim. Sizde devreyi önce yapıb bir çalıştırın, birkaç deneme yapın ve eğer o zaman ihiyac uyarsanız size örnek kod veririm.
Selamlar,
Hasan ARSLAN
@arslan74
Sayın hocam cevabınız için çok teşekkür ederim...Tabiki ULN 2003 aklıma geldi....Ancak ben transistör le ilgili bir uygulama düşünmüştüm...
Yorumlarınız ve devreleriniz için tekrar tekrar teşekkür ederim...Devre üzerinde çalışmaya başlayacağım..(Biraz acemilik var daha.. :lol: )
Eğer işin içinden çıkamazsam siz sevgili büyüklerimden yardım isterim.. ;) Herkese iyi günler.....Saygılar....... :lol: :o :) :D :P
Hasan hocam ellerine sağlık teşekkür ederiz uğraşlarını bizimle paylaştığın için biz acemiler için büyük fırsat verdiklerin teşekkürler.
Yoğun istek üzerine Projenin kodlarını veriyorum. Kodlarda hiç bir sorun yok kesinlik çalışıyor. Çalıştıramayan arkadaşlarımızın proje üstünde biraz daha çalışmaları gerek.
http://www.hemenpaylas.com/download/222492/80_karakterlik_kayan_yazi_projesi__Ver2.1_.rar.html
Çalışmalarınızda başarılar,
@arslan74
Aslan hocam çok teşekkür ederim...Aslansınız valla.... :lol: :lol: Kodlar için çok teşekkür ederim........Herkese iyi günler...Saygılarımla.... ;) :lol:
arslan74 ve picman arkadaşlara sonsuz teşekkürler. Bu devreleri yapıp deneyeceğim. bu foruma uzun zamandır takip ediyorum ama böyle çalıştıkları söylenen kayan yazılar bunlar oldu. Bundan önce böyle devre linklerini ben görememiştim.
Aslan hocam kodlar için çok teşekkür ederiz. Allah yolunuzu açık etsin başarılar dilerim.
_PICMAN_ Arkadaşımaıza PC KONTROLLÜ AKAN YAZI PROJESİ için bir kaç sorum olacak;
1. Ledlerin bulunduğu devrede 74164'ün 13 nolu ayağında kondansatör semblolü var ama açık şemada bu yok. bu nedir.
2. "7414 Her 10 sıra için bir tane invert kullanacaksınız. " devrenizde bu kapılar paralel bağlanmış bu kapıların hepsini paralelmi bağlayacağız. yoksa her ontane için bir adet seri mi bağlanacak?
3. Baskılı devreyi gönderebilirmisiniz.
cpu:16f628
saat gösterme
umarım sizlere fikir verir.
'****************************************************************
'* Name : DAHİLİ KAYAN YAZI.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 17.04.2005 *
'* Version : 1.0 *
'* Notes :74HC138 KULLANILDI *
'* : *
'****************************************************************
TrisA = %11111100
TrisB = 0
PortA = 0
PortB = 0
cmcon = 7
OPTION_REG = $55
INTCON =$A0
on interrupt goto kesme
buff var byte[22]
ii var byte
kk var byte
aa var byte
bb var byte
cc var byte
mm var byte
oo var byte
murat var byte
ekran2 var byte
jj var word
;;;;;; saat degiskenleri ;;;;;
ONE var byte
TEN var byte
HUND var byte
saniye var byte
dakika var byte
dakika_1 var byte
saat var byte
saat_1 var byte
dakika_h var byte
dakika_l var byte
saat_h var byte
saat_l var byte
ticks var byte
hane var byte
iki_nkt var byte
mode var bit
guncelle var bit
;;;;;;;;;;; sabitler;;;;;;;;;;;;;;
T1CON.0=1
clear
guncelle = 1
mode = 1
gosub yukle
tekrar:
if PortA.3 = 0 then gosub art
if PortA.4 = 0 then gosub azal
if PortA.2=1 then
for mm=0 to 11
for kk=0 to 19
for jj=0 to 75
PortA.0 = 0
For ii=0 to 15
portA.1=0
PortA.1=1
PortA.0=1
PortB = Buff[ii]
if PortA.2 = 0 then tekrar
pauseus 15
PortB = 0
next
next
gosub syf_blr
next
cc=cc + 1
next
ekran2=ekran2 + 1
if ekran2=2 then gosub saat_bas ; if ekran2=2 OR ekran2=3 then gosub saat_bas
if ekran2=2 then ekran2=0 ; kac ekran gosterirsen sifirla
cc=0
else
gosub saat1
endif
goto tekrar
saat1:
for jj=0 to 150
PortA.0 = 0
For ii=0 to 15
portA.1=0
PortA.1=1
PortA.0=1
PortB = Buff[ii]
pauseus 15
PortB = 0
next
next
if guncelle = 1 then gosub saat_yaz
return
saat_bas:
gosub saat_yaz
for oo=0 to 150
for jj=0 to 75
PortA.0 = 0
For ii=0 to 15
portA.1=0
PortA.1=1
PortA.0=1
PortB = Buff[ii]
pauseus 15
PortB = 0
next
next
if guncelle = 1 then gosub saat_yaz
next
return
cevir:
asm
CLRF _TEN
CLRF _HUND ; init registers
H1
MOVLW 0x64 ; 100
SUBWF _ONE,F ; subtract 100 from number
BTFSC STATUS,C ; negative result?
GOTO H2 ; no? goto H2
GOTO H3 ; yes? goto H3 (100's done)
H2
INCF _HUND,F ; increment HUND register
GOTO H1 ; & loop back for another test
H3
MOVLW 0x64 ; 100
ADDWF _ONE,F ; add 100 back to number
TO1
MOVLW 0x0A ; 10
SUBWF _ONE,F ; subtract 10 from number
BTFSC STATUS,C ; negative result?
GOTO TO2 ; no? goto T2
GOTO TO3 ; yes? goto T3 (10's done)
TO2
INCF _TEN,F ; increment TEN register
GOTO TO1 ; & loop back for another test
TO3
MOVLW 0x0A ; 10
ADDWF _ONE,F ; add 10 back to number
MOVLW 0x00
endasm
return
syf_blr:
select case ekran2
case 0
gosub yukle
case 1
gosub yukle_1
;case 2
; gosub saat_bas
;case 3
; gosub yukle_3
; case 4
; gosub yukle_4
; case 5
; gosub yukle_5
end SELECT
return
saat_yaz:
ONE = saat
gosub cevir
saat_l = ONE
saat_h = TEN
ONE = dakika
gosub cevir
dakika_l = ONE
dakika_h = TEN
guncelle=0
hane=0
bb=saat_h * 6
gosub saat_yukle
hane=1
bb=saat_l * 6
gosub saat_yukle
hane=2
bb=dakika_h * 6
gosub saat_yukle
hane=3
bb=dakika_l * 6
gosub saat_yukle
return
saat_yukle:
for aa=0 to 5
lookup bb,[$3E,$51,$49,$45,$3E,$00,_ ;0
$00,$01,$7F,$00,$00,$00,_ ;1
$42,$61,$51,$49,$46,$00,_ ;2
$22,$41,$49,$49,$36,$00,_ ;3
$0F,$08,$08,$08,$7F,$00,_ ;4
$67,$45,$45,$45,$7D,$00,_ ;5
$3C,$4A,$49,$49,$38,$00,_ ;6
$7E,$09,$09,$09,$7E,$00,_ ;7
$36,$49,$49,$49,$36,$00,_ ;8
$06,$49,$49,$29,$1E,$00],murat ;9
if hane >=2 then
if iki_nkt=0 then
buff[aa+(hane*6)]=$00
buff[aa+(hane*6)+1]=$14
buff[aa+(hane*6)+2]=$00
iki_nkt=1
endif
buff[aa+(hane*6)+3]=murat
else
buff[aa+(hane*6)]=murat
endif
bb=bb+1
next
iki_nkt=0
return
art:
dakika = dakika + 1
if dakika >= 60 then
dakika = 0
saat = saat + 1
if saat >= 24 then
saat = 0
endif
endif
guncelle = 1
return
azal:
dakika=dakika-1
if dakika >= 60 then
dakika = 59
saat=saat-1
if saat >=24 then
saat=23
endif
endif
guncelle=1
return
yukle:
for aa=0 to 19
bb=(aa+kk) + (cc * 20)
lookup bb,[$7F,$02,$0C,$02,$7F,$00,_
$3F,$40,$40,$40,$3F,$00,_
$7E,$09,$19,$29,$46,$00,_
$7E,$09,$09,$09,$7E,$00,_
$01,$01,$7F,$01,$01,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$08,$14,$22,$41,$00,_
$3E,$41,$41,$41,$3E,$00,_
$7F,$41,$41,$41,$63,$00,_
$00,$00,$00,$00,$00,$00,_
$42,$61,$51,$49,$46,$00,_
$22,$41,$49,$49,$36,$00,_
$00,$00,$03,$00,$00,$00,_
$3E,$51,$49,$45,$3E,$00,_
$0F,$08,$08,$08,$7F,$00,_
$00,$00,$03,$00,$00,$00,_
$42,$61,$51,$49,$46,$00,_
$3E,$51,$49,$45,$3E,$00,_
$3E,$51,$49,$45,$3E,$00,_
$67,$45,$45,$45,$7D,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7E,$09,$09,$09,$7E,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7E,$09,$09,$09,$7E,$00,_
$00,$00,$00,$00,$00,$00,_
$7E,$09,$09,$09,$7E,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7E,$09,$09,$09,$7E,$00,_
$00,$00,$00,$00,$00,$00,_
$7E,$09,$09,$09,$7E,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00],murat
buff[aa]=murat
next
return
yukle_1:
for aa=0 to 19
bb=(aa+kk) + (cc * 20)
lookup bb,[$00,$00,$00,$00,$00,$00,_
$00,$01,$7F,$00,$00,$00,_
$00,$01,$7F,$00,$00,$00,_
$01,$71,$09,$05,$03,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,_
$7F,$49,$49,$49,$36,$00,_
$00,$00,$00,$00,$00,$00,_
$00,$00,$00],murat
buff[aa]=murat
next
return
;;;;;;;;;;;;;;;; KESME Programi ;;;;;;;;;;;;;;;;;;;;;;;;;
disable
kesme:
ticks = ticks+1
if ticks < 61 then cik
ticks=0
saniye = saniye+1
if saniye >= 60 then
saniye = 0
dakika = dakika+1
guncelle=1
if dakika >= 60 then
dakika=0
saat=saat+1
if saat >= 24 then
saat = 0
endif
endif
endif
cik:
INTCON.2 = 0
resume
ENABLE
end
Alıntı yapılan: "_PICMAN_"PC KONTROLLÜ AKAN YAZI PROJESİ
Tıklayın

bu şemada anlamadığım bir nokta var.
her bir sutün için bir tane 74hc164 shit register entegresi kullanılmış.
şimdi burada bütün 74hc164 entegrelerinin data ve clk pinleri bir biri ile bağlantılı peki nasıl oluyorda 1. sutüna farklı n. sutüna farklı bir data yazdırılabiliyor. yani data pininden seri olarak bir data gönderiliyor ve bütün 74hc164 entegreleri clock'lanıyor bu durumda bütün sutünlara aynı data yazılmış olmuyormu? acaba burada benim bilmediğim Qh ucunun farklı bir işlevimi var.
Sayın arkadaşım sen anlaşılan sift register mantıgını bilmiyorsun birbirine takip ederek gider yani bir tane data dirişi olur ve birde clk olur data ucundan seri olarak 74174 lere seri olarak gier 74164 ün qh yani enson led cıkışı birsonraki74164 ün data girişine baglanarak istedigin karar uzuata bilirsin normal olarak 50 satır yap devreyi dogru yap bi sorun cıkmaz
arkadaşlar. satır tarama işleminde satır bilgisi shift registerlere nasıl gönderiliyor. diyelim ki 40 sütunlu bir devrede bir satırda 40 hanelik bir bilgiyi göndermemiz gerekmez mi. öyleyse bunu nasıl yapacağız.
sutün taramada parlaklık sorunu yaşadığım için satır tarama yapacağım. yardımlarınızı bekliyorum
yok mu buraya bakan.
arkadaşlar ben hazır devre ve program aramıyorum. kendim yapmak istiyorum.sütun tarama yöntemini çözdüm. hemde klavye kontrollü.satır tarama da yatay olarak shift registerlere karakterleri nasıl yükleyeceğiz . üstelik registerler birbirine bağlı. bu kadar çok sütunlu bir bilgiyi yüklemeyi bilmiyorum. yoksa bir tanesine yükleyeceğiz de ondan sonra kendiliğinden kayacak mı.
her satırda yükleyeceğimiz bilgi değişiyor. yani her satır için bilgileri tekrar yüklemek gerekiyor. karakter tablosunu nasıl oluşturmam lazım ki her satır taramasında buradan sonuna eklensin.
yardımlarınızı bekliyorum.
Çok sütun yüklemene gerek yok zaten 74164 ler sen her karakter girdiğinde clk ile beraber bir önceki veriyi ötelemiş olacak.Aynı satır tarama prensibine göre verilerini gönderiyorsun, mantık aynı fakat satır tarama derdi yok.
cevabınız için teşekkür. mümkünse kısa bir örnek verebilir misiniz.
satır tarama da 1. satırın 1. bitini shift registere yükledik ve satırı açtık. 2 satıra geçtiğimizde ve satır bilgisini yüklediğimizde az önce yüklemiş olduğumuz bilgi de ötelenmiş olarak 2 satıra yansımaz mı.
Zaten 1. bit bir sonraki satıra ötelenmiş olacak arkadan gelen ise baştan ötelenerek devam edecek yani gönderdiğin karakterler Q7 de son buluncaya kadar bir dizi halinde devam edecek. Örnek bir program olarak elimde hali hazırda bir kod yok fakat ben tarama prensibine göre çalışan bir kayan yazı kullanıyorum bunu da 74164 ler ile yapıyorum baştan 1 gönderiyorum bu 1 satır ları baştan sona kadar tarıyor umarım yardımcı olabilmişimdir.
TARAMA:
PORTB=0
HIGH PORTA.2
pulsout PORTA.3,1
PORTB=SUTUN5
PAUSE 1
PORTB=0
LOW PORTA.2
pulsout PORTA.3,1
PORTB=SUTUN4
PAUSE 1
PORTB=0
LOW PORTA.2
pulsout PORTA.3,1
PORTB=SUTUN3
PAUSE 1
PORTB=0
LOW PORTA.2
pulsout PORTA.3,1
PORTB=SUTUN2
PAUSE 1
PORTB=0
LOW PORTA.2
pulsout PORTA.3,1
PORTB=SUTUN1
PAUSE 1
RETURN
vatandas30 bende su an satır tarama üzerine çalışıyorum.Mantığı kendi anladığım kadarı ile paylaşayım.
ilk olarak karakter bilgisini tuttuğun ve gösterecegin degişkenleri hazırlıyorsun. karakter degişkeninin ilk bitini gösterecegin degişkene atıyorsun.shiftout komutu ile gönderiyorsun.7 satır için aynısını yaptıktan sonra gösterdigin değişkenlerin bitlerini 1bit kayma yönünde kaydırıyorsun . daha sonra karakter değişkeninin 2. bitini göstereceğin değişkenin ilk bitine atıyorsun.aynı işlemleri tekrarlıyorsun.
NOT ; 164 lerde kalan bilgiyi reset hattını şaseye çekerek temize.
cobra07
senin verdiğin sütun tarama değil mi. ben zaten onu yaptım. benim aradığım satır tarama. yinede verdiğin cevap için teşekkür.
serroefe
satır tarama da önce 1. satır , arkasından 2. satır........ taranmayacak mı.
şimdi 1. satırın en baştaki sütununun bitini gönderdik.ve satırı açtık. buraya kadar tamam. hemen arkasından 2. satıra geçeceğiz. ikinci satırın bilgisini de gönderdik. 2. satırı açtığımızda 1. satırda yüklediğimiz bilgi otomatikmen bir kayacak. ve o da ikinci satırda gözükmez mi.
böyle olunca da yamuk yumuk birşey ortaya çıkmaz mı. yoksa 1. satırı açtıktan sonra resetleyip ondan sonra mı 2. satır bilgisini göndereceğiz.
Satırı gösterdikten sonra resetle diğer satıra o şekilde gec.Yada dataları göndemeden reset bilgisi gönder.(mantıklısı)
peki. zannedersem harflerin yazılış şekli de değişiyor. mesela A harfini sütun tarama için aşağıdaki şekilde kullanmıştım.
A:
sutun1=1
sutun2=238
sutun3=238
sutun4=238
sutun5=1
karakter tablosunu değiştirmek gerekli ben:
aa:
SUTUN5=%01111100
SUTUN4=%00010010
SUTUN3=%00010001
SUTUN2=%00010010
SUTUN1=%01111100
aa:
satır1=%00100
satır2=%01010
satır3=%10001
satır4=%10001
satır5=%11111
satır6=%10001
satır7=%10001
şeklinde düzenleme yaptım
aşağıdaki şekilde A harfini yazdırdım. yalnız shifout komutuyla veriler byte olarak girildiğine göre bir sonraki adımda bir bit değilde bir byte kaymaz mı. veya buradan sonra bir bit kaydırmayı nasıl yapacağım.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT, WDT_OFF
cmcon=7
DATAPIN1 VAR PORTA.0
CLOCKPIN1 VAR PORTA.1
LATCH VAR PORTA.2
TRISA=%000000
TRISB=%00000000
portb=%11111111
satir1 var byte
satir2 var byte
satir3 var byte
satir4 var byte
satir5 var byte
satir6 var byte
satir7 var byte
satir8 var byte
tarama:
gosub A
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir1]
high latch
pauseus 10
low latch
PORTB=%01111111
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir2]
high latch
pauseus 10
low latch
PORTB=%10111111
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir3]
high latch
pauseus 10
low latch
PORTB=%11011111
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir4]
high latch
pauseus 10
low latch
PORTB=%11101111
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir5]
high latch
pauseus 10
low latch
PORTB=%11110111
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir6]
high latch
pauseus 10
low latch
PORTB=%11111011
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir7]
high latch
pauseus 10
low latch
PORTB=%11111101
PAUSE 1
PORTB=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[satir8]
high latch
pauseus 10
low latch
PORTB=%11101110
PAUSE 1
PORTB=%11111111
goto tarama
A:
satir1=%00100
satir2=%01010
satir3=%10001
satir4=%10001
satir5=%11111
satir6=%10001
satir7=%10001
satir8=%10001
return
Pic ile74164 lerin bir bağlantısını göndersen belki daha iyi anlaşılır yapmak istediğin.
vatandas30 sen satır bilgilerini direk registerlere yüklemişsin. Benim anlatmak istedigim satır1 değişkeninin ilk bitini oluşturacağın farklı bir değişene atıyorsun .
"
satir1=%11001100
gsatir1=%00000000 = "gösterilecek satır"
gsatır=gsatır>>1
gsatır.1 = satır1.1
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir1]
NOT: 48 sütun olsa her satır için 48/8=6 değişken yapar toplamda
6*7=42 değişken ihtiyacın olur
yukarıdaki işlemleri tüm değişkenler için yapacaksın
Sanırım bu site sana yardımcı olabilir.
www.antrak.org.tr/gazete/102002/metin.htm - 5k -
serroefe yardımların için teşekkür ederim. şimdi anladım sanırım. biraz geç oldu ama yaşlılık işte kusura bakma.
Estagfurullah yardımcı olabildiysem ne mutlu.
kayan yazı devrelerinde 74ls164 entegresi yerine 74hc595 ,74hc4094 veya bu tip çıkışı latch li entegreler kullanırsanız data gönderirken satırları karartmak zorunda kalmazsınız ledler daha parlak yakarsınız.
satır tarama işini hallettim. eski pano devrem 74ls164 lü idi. değiştirmeme gerek kalmadı. parlaklıkda çok iyi.
yalnız tarama işinde bir problem var. yazı bir matrisden diğerine kayarken son sütunlar beraber yanıyor sonra düzeliyor. bu her matris geçişinde aynı. sanırım kaydırma kısmında bir hata yaptım.
32 sütunlusunu çalıştırdım. ama programı 80 sütun için değiştirdiğimde derleme yaparken şöyle bir hata çıktı." [218] address limit of 7ffh exceeded"
kullanıdım pic 16f628. acaba picin hafızası mı yetmedi.
vatandas 30 628 in belleği dolu görünüyor. Bir de 877 ye göre derle.
ayrıca yazılımı verdiğim örneğe göre mi yaptın . hafta sonu bende bişeyler yazmaya başlamayı düşünüyorum.(satır tarama ile)
evet senin verdiğim ipucundan yola çıkarak yazdım.
şu an 877 ye uyarlamaya çalışıyorum ama program derlenirken hata veriyor.
hata da şöyle yazıyor.
"code crosses boundary @800h"
programın tanımlama kısmında fazla bir değişiklik yapmadım. başa adcon1=7 ilave ettim o kadar.
picbasic ile mi yazıyorsun yoksa proton mu bende proton uzun kodlarda hata mesajı veriyorda.
edit:
başında error yazmıyorsa:
o mesaj bildiğim kadarı ile hata mesajı değil sadece picin hafızası banklardan oluştuğu için uyarı
pic basic ile yazıyorum
başında error yazmıyorsa:
o mesaj bildiğim kadarı ile hata mesajı değil sadece picin hafızası banklardan oluştuğu için uyarı
Benim 50 sütunluk yazıda 877 için o mesajdan 3 adet aldım . pic e yüklediğimde hic problem çıkarmadan çalıştı.
başında warning yazıyor. ama proteusta denediğimde çalışmıyor. 16f628 li olan çalıştı. gerçekte de çalıştı.
pardon yanlış devreyi kullanmışım. pano devresi 74164 lü . ben 74hc595 li olanı kullanmışım.
çalıştımı + karakterler karışıyor demişsin çözüme ulaştımı
efekt eklemeyi düşünüyormusun
evet çalıştı. yalnız bir sorun var. mesela A harfi en sağdaki matristen kaymaya başlıyor. bu matrisin son sütununa geldiğinden bir solundaki matrisin ilk sütunu da aktif oluyor. yani kaydırma işleminde bir hatam var.
efekt eklemeye gelince hele bir düzgün kaydırayım ondan sonra düşüneceğim. ben bunu klavye kontrollü yapıyorum. daha önce klavye kısmını hazırlamıştım.
son sütuna geldiginde data ve clk çıkışını 0 a çekip denesene
aynı sorun devam ediyor. sanırım burada bir hata var.
kaydir:
gsatir19=gsatir19<<1
gsatir18=gsatir18<<1
gsatir17=gsatir17<<1
gsatir16=gsatir16<<1
gsatir16=gsatir15<<1
gsatir14=gsatir14<<1
gsatir13=gsatir13<<1
gsatir12=gsatir12<<1
gsatir11=gsatir11<<1
gsatir10=gsatir10<<1
gsatir29=gsatir29<<1
gsatir28=gsatir28<<1
gsatir27=gsatir27<<1
gsatir26=gsatir26<<1
gsatir25=gsatir25<<1
gsatir24=gsatir24<<1
gsatir23=gsatir23<<1
gsatir22=gsatir22<<1
gsatir21=gsatir21<<1
gsatir20=gsatir20<<1
gsatir39=gsatir39<<1
gsatir38=gsatir38<<1
gsatir37=gsatir37<<1
gsatir36=gsatir36<<1
gsatir35=gsatir35<<1
gsatir34=gsatir34<<1
gsatir33=gsatir33<<1
gsatir32=gsatir32<<1
gsatir31=gsatir31<<1
gsatir30=gsatir30<<1
gsatir49=gsatir49<<1
gsatir48=gsatir48<<1
gsatir47=gsatir47<<1
gsatir46=gsatir46<<1
gsatir45=gsatir45<<1
gsatir44=gsatir44<<1
gsatir43=gsatir43<<1
gsatir42=gsatir42<<1
gsatir41=gsatir41<<1
gsatir40=gsatir40<<1
gsatir59=gsatir59<<1
gsatir58=gsatir58<<1
gsatir57=gsatir57<<1
gsatir56=gsatir56<<1
gsatir55=gsatir55<<1
gsatir54=gsatir54<<1
gsatir53=gsatir53<<1
gsatir52=gsatir52<<1
gsatir51=gsatir51<<1
gsatir50=gsatir50<<1
gsatir69=gsatir69<<1
gsatir68=gsatir68<<1
gsatir67=gsatir67<<1
gsatir66=gsatir66<<1
gsatir65=gsatir65<<1
gsatir64=gsatir64<<1
gsatir63=gsatir63<<1
gsatir62=gsatir62<<1
gsatir61=gsatir61<<1
gsatir60=gsatir60<<1
gsatir79=gsatir79<<1
gsatir78=gsatir78<<1
gsatir77=gsatir77<<1
gsatir76=gsatir76<<1
gsatir75=gsatir75<<1
gsatir74=gsatir74<<1
gsatir73=gsatir73<<1
gsatir72=gsatir72<<1
gsatir71=gsatir71<<1
gsatir70=gsatir70<<1
gsatir89=gsatir89<<1
gsatir88=gsatir88<<1
gsatir87=gsatir87<<1
gsatir86=gsatir86<<1
gsatir85=gsatir85<<1
gsatir84=gsatir84<<1
gsatir83=gsatir83<<1
gsatir82=gsatir82<<1
gsatir81=gsatir81<<1
gsatir80=gsatir80<<1
gsatir19.0=gsatir18.7
gsatir18.0=gsatir17.7
gsatir17.0=gsatir16.7
gsatir16.0=gsatir15.7
gsatir15.0=gsatir14.7
gsatir14.0=gsatir13.7
gsatir13.0=gsatir12.7
gsatir12.0=gsatir11.7
gsatir11.0=gsatir10.7
gsatir29.0=gsatir28.7
gsatir28.0=gsatir27.7
gsatir27.0=gsatir26.7
gsatir26.0=gsatir25.7
gsatir25.0=gsatir24.7
gsatir24.0=gsatir23.7
gsatir23.0=gsatir22.7
gsatir22.0=gsatir21.7
gsatir21.0=gsatir20.7
gsatir39.0=gsatir38.7
gsatir38.0=gsatir37.7
gsatir37.0=gsatir36.7
gsatir36.0=gsatir35.7
gsatir35.0=gsatir34.7
gsatir34.0=gsatir33.7
gsatir33.0=gsatir32.7
gsatir32.0=gsatir31.7
gsatir31.0=gsatir30.7
gsatir49.0=gsatir48.7
gsatir48.0=gsatir47.7
gsatir47.0=gsatir46.7
gsatir46.0=gsatir45.7
gsatir45.0=gsatir44.7
gsatir44.0=gsatir43.7
gsatir43.0=gsatir42.7
gsatir42.0=gsatir41.7
gsatir41.0=gsatir40.7
gsatir59.0=gsatir58.7
gsatir58.0=gsatir57.7
gsatir57.0=gsatir56.7
gsatir56.0=gsatir55.7
gsatir55.0=gsatir54.7
gsatir54.0=gsatir53.7
gsatir53.0=gsatir52.7
gsatir52.0=gsatir51.7
gsatir51.0=gsatir50.7
gsatir69.0=gsatir68.7
gsatir68.0=gsatir67.7
gsatir67.0=gsatir66.7
gsatir66.0=gsatir65.7
gsatir65.0=gsatir64.7
gsatir64.0=gsatir63.7
gsatir63.0=gsatir62.7
gsatir62.0=gsatir61.7
gsatir61.0=gsatir60.7
gsatir79.0=gsatir78.7
gsatir78.0=gsatir77.7
gsatir77.0=gsatir76.7
gsatir76.0=gsatir75.7
gsatir75.0=gsatir74.7
gsatir74.0=gsatir73.7
gsatir73.0=gsatir72.7
gsatir72.0=gsatir71.7
gsatir71.0=gsatir70.7
gsatir89.0=gsatir88.7
gsatir88.0=gsatir87.7
gsatir87.0=gsatir86.7
gsatir86.0=gsatir85.7
gsatir85.0=gsatir84.7
gsatir84.0=gsatir83.7
gsatir83.0=gsatir82.7
gsatir82.0=gsatir81.7
gsatir81.0=gsatir80.7
if kb=0 then
gsatir10.0 = satir1.7
gsatir20.0 = satir2.7
gsatir30.0 = satir3.7
gsatir40.0 = satir4.7
gsatir50.0 = satir5.7
gsatir60.0 = satir6.7
gsatir70.0 = satir7.7
gsatir80.0 = satir8.7
endif
if kb=1 then
gsatir10.0 = satir1.6
gsatir20.0 = satir2.6
gsatir30.0 = satir3.6
gsatir40.0 = satir4.6
gsatir50.0 = satir5.6
gsatir60.0 = satir6.6
gsatir70.0 = satir7.6
gsatir80.0 = satir8.6
endif
if kb=2 then
gsatir10.0 = satir1.5
gsatir20.0 = satir2.5
gsatir30.0 = satir3.5
gsatir40.0 = satir4.5
gsatir50.0 = satir5.5
gsatir60.0 = satir6.5
gsatir70.0 = satir7.5
gsatir80.0 = satir8.5
endif
if kb=3 then
gsatir10.0 = satir1.4
gsatir20.0 = satir2.4
gsatir30.0 = satir3.4
gsatir40.0 = satir4.4
gsatir50.0 = satir5.4
gsatir60.0 = satir6.4
gsatir70.0 = satir7.4
gsatir80.0 = satir8.4
endif
if kb=4 then
gsatir10.0 = satir1.3
gsatir20.0 = satir2.3
gsatir30.0 = satir3.3
gsatir40.0 = satir4.3
gsatir50.0 = satir5.3
gsatir60.0 = satir6.3
gsatir70.0 = satir7.3
gsatir80.0 = satir8.3
endif
if kb=5 then
gsatir10.0 = satir1.2
gsatir20.0 = satir2.2
gsatir30.0 = satir3.2
gsatir40.0 = satir4.2
gsatir50.0 = satir5.2
gsatir60.0 = satir6.2
gsatir70.0 = satir7.2
gsatir80.0 = satir8.2
endif
if kb=6 then
gsatir10.0 = satir1.1
gsatir20.0 = satir2.1
gsatir30.0 = satir3.1
gsatir40.0 = satir4.1
gsatir50.0 = satir5.1
gsatir60.0 = satir6.1
gsatir70.0 = satir7.1
gsatir80.0 = satir8.1
endif
if kb=7 then
gsatir10.0 = satir1.0
gsatir20.0 = satir2.0
gsatir30.0 = satir3.0
gsatir40.0 = satir4.0
gsatir50.0 = satir5.0
gsatir60.0 = satir6.0
gsatir70.0 = satir7.0
gsatir80.0 = satir8.0
endif
return
benim kastım shiftout komutlarından sonra data ve clk uçlarını şaseye çekmen.
onu yaptım zaten
sorunu çözdüm. ben kaydırmaları toptan yapmıştım.
gsatir14=gsatir14<<1
gsatir14.0=gsatir13.7
gsatir13=gsatir13<<1
gsatir13.0=gsatir12.7
gsatir12=gsatir12<<1
gsatir12.0=gsatir11.7
gsatir11=gsatir11<<1
bu şekilde yazdığım zaman düzeldi.
bende kodlardaki uzunluğu görünce dün gece daha kısa bi kaydırma yazmıştım.
include "MODEDEFS.BAS"
define osc 4
trisa=%00000000
sayi VAR byte
gsayi var byte
bsay var byte
say var byte
bsay =%00000000
' goto kay
ss:
pause 500
sayi=%10000011
gsayi = 0
say=0
kay:
low portb.2
high portb.2
if say = 8 then ss
gsayi = gsayi << 1
gsayi.0 = sayi.7
sayi = sayi<<1
say=say+1
' goto kay
basla:
shiftout porta.0,porta.1,0,[gsayi]
pause 500
low portb.2
high portb.2
'shiftout porta.0,porta.1,0,[bsay]
goto kay
şeklinde belki işe yarar diye.
serro efe
yazdığın bu kaydırma kısmını denedin mi. evet benim yazdığım bayağı uzun oldu kısaltamadım. ayrıca ekrana gönderme kısmını da kısaltamadım. böyle olunca da her komut işlenişinde ciddi bir gecikme oluyor. neyse ben 16f877 yi programlayıp devreyi çalıştırdım. parlaklık sütun taramayla kıyaslanamayacak kadar iyi. biraz daha artırmak için tarama sayısını düşürdüm.(20 ye) bu seferde gözle bariz bir şekilde anlaşılır titreme oldu ama parlaklık arttı tabii.
aynı zamanda tarama sayısını düşürünce yazının kayma hızı da artıyor doğal olarak. ama titreşim olmasın dersen tarama 30 un altına düşmemeli . bu kez de yazı çok yavaş kayıyor.
son olarak malzemeyi getirtip şunları deneyeceğim. 10 Mhz yerine 20Mhz kristal takacağım. bir de 74ls164 ler yerine 74hc164 takacağım. herhalde bunları yapınca hem parlaklık iyi olur , hem de yazı hızlı kayar.
saygılar
bu kodları isite simule ettim sağlıklı çalıştı.istiyosan sen de dene . üstteki sayi degişkeni sıra ile kayıp geliyor.
nasıl uyarlayacağımı bilemiyorum. burası bir satır için mi. bir de shiftout komutundan sonra neden pause 500 kullandın?. shitout komutu bitmeden zaten bir sonraki satıra geçmez ki.
o pause komutunu öylesine yazmıştım.
kaydırma ise karakterin tutulduğu degişkenden sıra ile gösterilecek değişkenin içersine almak için yani tek karakterin üst satırı gibi düşünebilirsin.
Alıntı yapılan: "vatandas30"evet senin verdiğim ipucundan yola çıkarak yazdım.
şu an 877 ye uyarlamaya çalışıyorum ama program derlenirken hata veriyor.
Vatandaş.. merhaba.
74164 shıft register ve pic kontrollü basit bir kayan yazı devresi konusunda yardımcı olabilirmisin? nezamandır 7 satır 16 sütun 74164 entegreli devre üzerinde çalışıyorum.ama başarılı olamadım.bu konu hakkında bilg verirseniz çok memnun olacağım.şimdiden teşekkür ediyorum.
COK TESEKKURLER :lol: :lol: :lol: :lol:
akkuzu.
devresi hakkında mı yoksa programı hakkında mı . ne tür bir bilgi istiyorsun.
vatandas 30 yaptığın klevye okuma uygulamasının mantığını biraz anlatabilirmisin.
ben bunu aşağıda linkini verdiğim mhk üstadın programından aldım. ve kendi programına uyguladım. ama önce klavyede kodlar nasıl üretiliyor bunu epey bir inceledim. osiloskopla falan baktım ve ürettiği kodları buldum. link şu:
https://www.picproje.org/index.php/topic,4607&start=0&postdays=0&postorder=asc&highlight=
klavyede bir tuşa basılınca clock sinyali ile senkronize olacak şekilde kodlar üretiliyor. bırakıldığında da hem bırakma kodu ve arkasından da genelde yine basma anındaki kod üretiliyor. yapacağınız programda karakterler çift olmaması için bırakılma anındaki kodları gözardı etmeniz gerekiyor. mhk üstat da bunu çok güzel yazmış. programı incelerseniz anlarsınız. klavyenin tuşlarına ait kodları da aşağıda veriyorum.
http://rapidshare.de/files/16255361/Klavye.pdf.html
türkçe karakterler tabloda yok. ama klavye resminin üzerinde var.
kolay gelsin.
Verdiğin bilgiler için teşekkür ederim.
Kaydirma kısmındaki kodları kısalta bildinmi. Ben bu gün daha önce verdiğim kaydırma üzerine biraz çalıştım.
kay:
low portb.2
high portb.2
if say = 8 then ss
satir1 = satir1 << 1
satir1.0 = sayi.7
sayi = sayi<<1
goto göster
(bir karakterin ilk satırı için.)
ben bu şekilde kaydırdım.
senin verdiğin kodlar anladığım kadarı ile bir değişken için. 80 sütunda 10 tane değişken var bir satırda.yani bu işlemi hemen hemen tüm değişkenler için yapmak gerekiyor. biraz kısalttım ama daha fazla kısaltamadım. ekrana gönderme kısmında da her satır için 9 kere shiftout komutunu kullanmam gerekiyor. bunu da array değişken kullanarak kısaltmaya çalıştım. (bit) ama bu seferde çok titreme oluyor.
Bende 56 sütun için 7 adet shiftout kullanıyorum.Bu kodları tüm değişkenler için uygulamak gerekiyor.
senin ekran kısmı da böyle mi. herhalde burası kısalmıyor. çok uğraştım ama kısaltamadım.
tarama:
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir19]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir18]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir17]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir16]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir15]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir14]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir13]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir12]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir11]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir10]
PORTC=%01111111
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir29]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir28]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir27]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir26]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir25]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir24]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir23]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir22]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir21]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir20]
PORTC=%10111111
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir39]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir38]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir37]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir36]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir35]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir34]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir33]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir32]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir31]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir30]
PORTC=%11011111
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir49]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir48]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir47]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir46]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir45]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir44]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir43]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir42]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir41]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir40]
PORTC=%11101111
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir59]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir58]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir57]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir56]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir55]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir54]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir53]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir52]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir51]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir50]
PORTC=%11110111
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir69]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir68]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir67]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir66]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir65]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir64]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir63]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir62]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir61]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir60]
PORTC=%11111011
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir79]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir78]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir77]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir76]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir75]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir74]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir73]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir72]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir71]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir70]
PORTC=%11111101
PAUSE 1
PORTC=%11111111
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir89]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir88]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir87]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir86]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir85]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir84]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir83]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir82]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir81]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir80]
PORTC=%11111110
PAUSE 1
PORTC=%11111111
return
(bu arada birşey soracağım. sen bu kodları buraya nasıl yapıştırıyorsun?)
Evet bende de aynı şekilde. ama kısaltmak istersen bir lookup tablosu oluşturup değişkenleri sıra ile alıp.tek shiftout ile kullanabilirsin.kodları ise üstte diyez
- sembolü var ona bikere tıkla sonra kodu yapıştır tekrar diyeze tıkla gönder.
lookup tablosu olmuyor. bildiğim kadarıyla bu tablonun kullanılabilmesi için bu değişkenlerin bir etiket altında olması lazım. yani;
lookup i, [etiket1, etiket2.......], j
Vatandas 30 senin etiket dediğin branch komutu ile kullanılıyor.
Benim ilk tasarladığım yazıda karakterlerin hepsini ayrı değişkenlere alarak lookup2 tablosundan seçip göstermiştim.Tabi karakter sayımda sınırlı kalmıştı.
Lookup2 komutunun değer yerlerine değişken alabiliyorsun
lookup2 x,[sayi1,sayi2,sayi3],z
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir89,gsatir88,gsatir87,gsatir86.....gsatırn]
Bir de böyle deneyin.Daha lezzetli olur. ;)
teşekkür ederim sayın katana.
böyle daha kısa oldu.
max değişkeni ifade etmek içindi.Bu şekilde max kaç değişken basılabiliyordu tam emin değilim ama aklımda 255 diye kalmış.Help' e bakmak lazım. Şu an ona imkanım yok.
Sayın Katana böylesi gerçekten daha lezzetliymiş.
Elinize sağlık :o
Alıntı yapılan: "vatandas30"akkuzu.
devresi hakkında mı yoksa programı hakkında mı . ne tür bir bilgi istiyorsun.
*********************************************
Vatandaş; ilgilendiğin için teşekkürler.benim istediğim mesela " E " harfini
adım adım nasıl kaydıracağız.74164 ve tabiki pic kullanarak.asm programı
ile anlatabilirsen ben ve konu ile ilgilenen tüm meraklı arkadaşlar istifade
eder diye düşünüyorum.şimdiden teşekkür ediyor,başarılar diliyorum.
akkuzu
ben programlarımı pic basic ile yazıyorum. o yüzden asm ile nasıl yazılır birşey diyemiyeceğim. ama pic basic ile yazarım diyorsan benim önceki mesajlarıma bir bak. oradan anlaşılır.
(http://static.instructables.com/pub/86/4b7fe7/e333df64cbd7ccdf3ba4917c.thumb.jpg)
(http://static.instructables.com/pub/eb/fa46c8/18e6e17ffba6f26395ef16ef.thumb.jpg)
Led Scrolling Marque (http://www.instructables.com/ex/i/CDDBE0821A0010299AD7001143E7E506/) adresinde PIC16f876 veya 877 kullanılarak hazırlanmış 512 Led lik bir kayan yazı projesi matriksler 8*8 olarak planlanmış ve toplam 8 matrix yanyana getirilerek uzun bir platform oluşturulmuştur.
Ayrıca kayan yazı rs232 kullanılarak bilgisayardan veya palm dan programlanabilmektedir. link de gerekli açıklamalar ingilizce olarak mevcuttur.
arkadaşlar
30cmx100cm kayan yazı yapacağım. panoyu ledlerle mi, yoksa hazır 10cm lik 5x7 dot matrislerle mi oluşturayım. siz hangisini tavsiye edersiniz. (iç ortamda kullanılacak). tavsiyeleriniz bekliyorum. saygılar
Hocam bence bu kadar büyük bir kayan yazı için o kadar ledle uğraşmanıza gerek yok.Direk dot matrix alıp kullanın.Hem daha az akım çektiklerini de unutmayalım.Ledler 20 mA gibi akımlar çekerken bazı matrixler 3-5 mA çekmektedir.Size fayda sağlayacağı kanısındayım.Zaten dış ortamda da değil iç mekanda kullanacakmışsınız.O zaman piyasayı biraz gezip parlaklığı sizi tatmin eden matrix alıverin.İyi günler.Saygılar. :)
keşifin sitesinde fym-40571 matris var. (5x7) bunları daha önce kullanan var mı? işimi görür mü? ayrıca bu matrisin bir dotunda iki led seri. 5 V la bunları direkt yakabilir miyiz? yoksa uln serisi bir entegre ile daha yüksek bir gerilimle mi sürmek gerekiyor. (çok soru sordum ama kusura bakmayın) saygılar
Hocam ben yaptığım eski devrelerimde tampon kapısı kullanırdım.Ancak daha sonra ULN'leri duyunca onlara geçtim.Nedeni? ULN open collector- entegre yanınca girişler ve çıkışlara birşey olmuyor.İkincisi transistörler gibi çok yer kaplamıyor.Üçüncüsü siz ne olur ne olmaz bir ULN kullanın.Sürücü entegrenizden direk çıkış vermeniz kötü sonuçlar meydana getirebilir.Dediğiniz displaylerden hiç kullanmadım.Onlar için birşey söyleyemeyeceğim.İnternette datasheet gibi birşeyleri yok mu?
Ayrıca şimdi aklıma geldi.Sürücü entegresi olarak TPIC serisi entegreler var.Baya kuvvetli entegreler.Onları da bir inceleminizi tavsiye ederim.Ben TPIC6B595 kullanmıştım bir devrem için.Hem sürücü hem de ULN'nin birleşimi gibi düşünebilirsiniz.Bir araştırın.İyi günler.Kolay gelsin. :)
Kardeşler arkadaşlar ve hocalarım benim elimde 21*120 led ile yapılmış bir pano var bu panoya bir devre tasarlamak istiyorum sizlerden yardım almak istiyorum....
Alıntı yapılan: "apoyirmi"Kardeşler arkadaşlar ve hocalarım benim elimde 21*120 led ile yapılmış bir pano var bu panoya bir devre tasarlamak istiyorum sizlerden yardım almak istiyorum....
Devreyi biraz açarmısın donsnımı nasıl ? 21*120 nasıl baglı bieaz devrenden bahset devre ne olarak düşünülmüş ?
arkadaşlar
100 mm lik 5x7 dotmatrislerle 50 sütun kayan yazı yaptım. hyperterminal ile istediğim metni (txt) formatında gönderebiliyorum. ama normal bir kullanıcı açısından hyperterminal kullanmak zor olabilir. buna göre hazır paket programı nasıl yaparım. fikri olanlara şimdiden teşekkürler.
İstediğin program Visual basic ile çok zor olmasa gerek.Yada C++ builder tavsiye ederim.
bilgisayar programlama dilinin hangisi olduğu farketmez resim ikon yazı felan kullanacaksan richedit - richview tavsiyem olur
programlama dillerinden anlamıyorum. bu işi basitçe yapabileceğim paket program vardır belki. ilginize teşekkür ederim.
arayüzü hangi platforma yapmayı düşünüyorsun ? yada yazan arkadaşların programını çözme yoluna gitmen lazım seriporttan bilgi takibi vs.
başkasının yaptığı programı kullanmak istemiyorum. ayrıca efektler için kendi gönderdiğim kodlar var. onlarınkinde mutlaka farklıdır. bu yüzden hazır olanları çözmem çok zamanımı alır.
arkadaşlar merhaba ben bu işte yeniyim konuyu baştan sona okudum ama pic programlaması falan bilmediğim için hiç bi şey anlamadım ben kendi işyerime reklam amaçlı ve hazır almayıp kendim yapmak istiyorum el işi ve özellikle insanın kendi el işi gibisi yoktur http://www11.brinkster.com/eloumut/~akan_yazi/?sayfa=9 bu sitede bi devre buldum ama yine bu konuda okudum maliyeti yüksekmiş bana daha hesaplı yapımı kolay bir devre sunabilecek arkadaş varmı beni sakın bedavacı olarak görmeyin inanın picle ilgili fazla bi şey bilmediğim için hazır istiyorum aslında bilsen zaten onuda kendim yapmak isterim
Selam , forum https://www.picproje.org/index.php/topic,11708&highlight=kayan+yaz%FD
deki kayan yazı devresini yapmak istiyorum , bundan önce 8x16 ve 8x32 kayan yazılar yapmıştım hepsi de katodları 74hc154 ile sürüyor , son yapacağım devrede fazla sayıda matrix olduğundan aynı anda yanacak sutun sayısı fazla ve 74 hc 154 lerin çıkışlarını yükseltmek gerekecek , 8x16 devreyi tasarlayan Yavuz Erol bey , PNP transistörlerle bu işlemi yapabileceğimizi yazıyordu ancak yüzlerce transistör ve direnç bağlamak zor iş , bunu uln 2803 gibi bir transistör entegresiyle yapabilirmiyim ? Çıkışı yine lojik 0 olmalı , hangi uln yi tavsiye edersiniz , direnç bağlamak gerekir mi ? Teşekkür ederim selamlar ...
ndogru bende 74154 kullanıyorum ve bnde uln serisi entegreyle yapacam ama sütünleri direk bağlıyacam pic çıkışına uln koyacam yani bir adet olacak kolay gelsin
üstadlar arkadaşlar benim bir problemim var 74154 ile amatör 2*8*8 matrislerle kayan yazı panosu nu yaptım ve entegre kısmının baskı devresini yapacam fakat bu 74154 ü nasıl bağlıyacağımı düşünüyorum aşağıdaki resimle ifade etmeye çalıştım eğer fikirlerinizi bildiririseiz sevinirim en çok düşündüren taraf seçenek 2 de sabit bir görüntü oluştururken problem çıkmaz ama bir kayan yazı yaparsam ileride (daha yapmadım) problem oluşurmu çünkü sonuçta yazı sağ taraftan itibaren kayacak ve for next döngüsüyle yapacak olursam seçenek 1 mantıklıymış gibi gelior ama bu konuda daha yeni olduğum için sizin fikirlerinize ihtiacım var teşekürler saygılar
http://img165.imageshack.us/img165/2966/denezn4.jpg
dostlarım ben C book indirmiştim bu siteden
tam kayan yazının yapımını anlatan kısmı yok
eğer sizin elinizde varsa C veya ASM
yardımcı olunuz
thx
pic proje ye kendi linkimi koyup kayan yazı projemi diğer merak eden
yapabilmek için çaba harcayan insanlarla paylaşmak istemiştim fakat birileri mesajı havaya uçurmuş. galiba bu forumu hazırlayan arkadaşlardan birileri de kayan yazı işleri ile uğraşıyor. herkesin eline
geçmesin mi istiyorlar? oysa ki ben de bu forumdan çok bilgi edinen bir kişiyim. herkese saygılar sevgiler.
http://www.inter-led.com/ornek-projeler.htm
Alıntı yapılan: "gurhanmurat"pic proje ye kendi linkimi koyup kayan yazı projemi diğer merak eden
yapabilmek için çaba harcayan insanlarla paylaşmak istemiştim fakat birileri mesajı havaya uçurmuş. galiba bu forumu hazırlayan arkadaşlardan birileri de kayan yazı işleri ile uğraşıyor. herkesin eline
geçmesin mi istiyorlar? oysa ki ben de bu forumdan çok bilgi edinen bir kişiyim. herkese saygılar sevgiler.
http://www.inter-led.com/ornek-projeler.htm
Böyle birşey olması mümkün
değil.Forum kurallarına aykırı bir şekilde mesaj yazdıysan mesajın silinmiştir.Artniyet aramamak gerekir.
Saygılarımla.
Alıntı yapılan: "gurhanmurat"pic proje ye kendi linkimi koyup kayan yazı projemi diğer merak eden
yapabilmek için çaba harcayan insanlarla paylaşmak istemiştim fakat birileri mesajı havaya uçurmuş. galiba bu forumu hazırlayan arkadaşlardan birileri de kayan yazı işleri ile uğraşıyor. herkesin eline
geçmesin mi istiyorlar? oysa ki ben de bu forumdan çok bilgi edinen bir kişiyim. herkese saygılar sevgiler.
http://www.inter-led.com/ornek-projeler.htm
Mesajlarınız her bölüme yazılmış.. Buna kısaca flood denir. Ve mesajlarınız reklam içerikli.
Art niyet diye birşey yoktur. Kurallar vardır.
selam arkadaşlar. elimde 16F84 le yapılöış 1 satır 4 karakter kayan yazı devresi var. 16F84'ün porta kısmı kullanılmış, portb boşta. acaba kodları değiştirerek port b'ye buton taksak, kayan metni değiştirmek için bilgisayara gerek kalmasa, bu yapılabilir mi? yada elinde böyle devre olan var mı?
devrenin dosya download linki;
http://www.transferbigfiles.com/Download.aspx?id=4413b0f1-6c85-4d80-b640-b61aef50710c
Yazdığım mesajı başka biyere yazdım ve bunun silmek istedim ama silemedim.
mesajının içeriğini değiştirebilirsin(edit) ancak tümünü site yetkilileri (admin,mod) dışındakiler silemez.
Herkese merhabalar uzun süredir üzerinde çalıştığım kayan yazımı bitirmiş olarak karşınızdayım. Öncelikle devre 60 sutun olup 5x7 dotmarix kullanılarak yapılmıştır. Devrenin baskı devresi tamamiyle bana aittir. Program Kısmı ise herkesinde tanıdığı sayın Logan arkadaşımıza aittir.Devre tek yüzlü plakete yapılmış olup atlamalar bulunmaktadır. Ben dotmatrix ve sürücü kısmını ayrı plaketlere yaptım çok hoş oldu bu benim pic kontrolllü ilk kayan yazı devrem devamlı geliştirmeye çalışıyorum.Ekte bulunan similasyon dosyası ile proje faklıdır çünkü İsiste cd4514 ile uln2803 sürme hatası alıyoruz bunun yerine tamamiyle aynı mantık ile çalışan 74154 ile similasyon etmeye karar verdim bildiğiniz üzere 4514 entegresi 74154 entegresinin invert edilmiş halidir bizde bu sayede uln ile sürerek dotmatrixlerde daha çok parlaklık elde etmiş olduk
Malzemeler ;
18F452 1 adet
Cd4514 4 adet
Uln2803 8 adet
10k Direnç 1 adet
4 mhz kristal 1 adet
22pf mercimek kondanstör 2 adet
7805 1 adet
12 adet 5x7 dotmatrix
50x10 tek yüzlü plaket 2 adet
Ekte Pcb+bas+hex+dsn+resim+vidyo bulunuyor
http://rapidshare.com/files/28572731/18F452.rar.html
Arkadaşlar
http://s11.yousendit.com/d.aspx?id=96CB7146E102FB6AC36916148214052C
linkini yenileyebilir miyiz??
Dosya indirilemiyor..
Sunucu bulunamıyor sayfası açılıyor..
Bu linkide yenileyebilirsek çok iyi olur..
http://rapidshare.com/files/28572731/18F452.rar.html
bu projeyi yaptım fakat yeni başlayan biri olduğum için hazır asm kolarında değişiklik yapıp başka bir karakter dizini oluşturdum herşey güzel akıyor fakat karakterler kayıp geçtikten sonra abuk subuk şeyler çıkıyor bunun nedeni nedir birde kayma hızı nereden ayarlanır(program aşşağıdadır bu orjinali karakterleri değiştirdiğimde başka değişmesi gereken yerler varmıdır)
; PIC0504.ASM
; PIC16C84 ILE YAPILAN 7*16=112 LED LI KAYAN YAZI DEVRESI
; 32 KARAKTER KULLANILABILIR
LIST P = 16C84, F = INHX8M, n = 66
PIC84 equ H'03FF'
;==========================================================================
;
; Register Definitions
;
;==========================================================================
W EQU H'0000'
F EQU H'0001'
;----- Register Files------------------------------------------------------
INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'
EEDATA EQU H'0008'
EEADR EQU H'0009'
PCLATH EQU H'000A'
INTCON EQU H'000B'
OPTION_REG EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
EECON1 EQU H'0088'
EECON2 EQU H'0089'
;----- STATUS Bits --------------------------------------------------------
IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'
;----- INTCON Bits --------------------------------------------------------
GIE EQU H'0007'
EEIE EQU H'0006'
T0IE EQU H'0005'
INTE EQU H'0004'
RBIE EQU H'0003'
T0IF EQU H'0002'
INTF EQU H'0001'
RBIF EQU H'0000'
;----- OPTION Bits --------------------------------------------------------
NOT_RBPU EQU H'0007'
INTEDG EQU H'0006'
T0CS EQU H'0005'
T0SE EQU H'0004'
PSA EQU H'0003'
PS2 EQU H'0002'
PS1 EQU H'0001'
PS0 EQU H'0000'
;----- EECON1 Bits --------------------------------------------------------
EEIF EQU H'0004'
WRERR EQU H'0003'
WREN EQU H'0002'
WR EQU H'0001'
RD EQU H'0000'
;==========================================================================
;
; RAM Definition
;
;==========================================================================
__MAXRAM H'AF'
__BADRAM H'07', H'30'-H'7F', H'87'
;==========================================================================
;
; Configuration Bits
;
;==========================================================================
_CP_ON EQU H'3FEF'
_CP_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FFF'
_PWRTE_OFF EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'
;----------- USER REGISTERS ----------------------------------------------
POINTER EQU H'000C'
HCOUNT equ H'000D'
LCOUNT equ H'000E'
TEMP1 EQU H'002B'
TEMP2 EQU H'002C'
TEMP3 EQU H'002D'
ZAMAN equ H'002E'
DISP EQU H'002F'
msb equ 0x29 ;general delay register
lsb equ 0x2A ;general delay register
FLCOUNT equ H'0027' ;flas counter
WAITC equ H'0026' ;wait and run
SPECIAL equ H'0025' ;special function register
COUNT1 equ H'0022' ;system timer counter
COUNT2 equ H'0021' ;system flas timer counter
SYSFUNC equ H'0020' ;system control register
LINE1 EQU H'0010'
LINE2 EQU H'0011'
LINE3 EQU H'0012'
LINE4 EQU H'0013'
LINE5 EQU H'0014'
LINE6 EQU H'0015'
LINE7 EQU H'0016'
LINE8 EQU H'0017'
LINE9 EQU H'0018'
LINE10 EQU H'0019'
LINE11 EQU H'001A'
LINE12 EQU H'001B'
LINE13 EQU H'001C'
LINE14 EQU H'001D'
LINE15 EQU H'001E'
LINE16 EQU H'001F'
SATIRLAR EQU H'0023'
;
;
;
START
call SETCPUPORTSTATUS
call STEP_CLEAR
KAYANYAZI_1
MOVLW H'0000'
MOVWF SATIRLAR
KAYANYAZI_2
INCFSZ SATIRLAR
GOTO KAYANYAZI_3
GOTO KAYANYAZI_4
KAYANYAZI_3
goto KAYANYAZI_5
KAYANYAZI_4
goto KAYANYAZI_1
KAYANYAZI_5
MOVLW H'00'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE1
MOVLW H'01'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE2
MOVLW H'02'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE3
MOVLW H'03'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE4
MOVLW H'04'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE5
MOVLW H'05'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE6
MOVLW H'06'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE7
MOVLW H'07'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE8
MOVLW H'08'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE9
MOVLW H'09'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE10
MOVLW H'0A'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE11
MOVLW H'0B'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE12
MOVLW H'0C'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE13
MOVLW H'0D'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE14
MOVLW H'0E'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE15
MOVLW H'0F'
ADDWF SATIRLAR,0
CALL FINDSHOW
movwf LINE16
MOVLW D'15'
MOVWF ZAMAN
CALL STEP_DELAY
goto KAYANYAZI_2
;****************************************************************************
;YAZILARINIZI ASAGIDAKI KOD'DA DEGISIKLIK YAPARAK HAZIRLAYINIZ
;****************************************************************************
FINDSHOW:
showdata:
addwf PCL,1
retlw B'00011111' ;
retlw B'00010101' ;
retlw B'00010101' ;
retlw B'00010001' ;
retlw B'00000000' ; E
retlw B'00011111' ;
retlw B'00000010' ;
retlw B'00000100' ;
retlw B'00011111' ;
retlw B'00000000' ; N
retlw B'00011111' ;
retlw B'00010001' ;
retlw B'00010001' ;
retlw B'00001110' ;
retlw B'00000000' ; D
retlw B'00001101' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00001101' ;
retlw B'00000000' ; ü
retlw B'00010010' ;
retlw B'00010101' ;
retlw B'00001001' ;
retlw B'00000000' ; S
retlw B'00000001' ;
retlw B'00000001' ;
retlw B'00011111' ;
retlw B'00000001' ;
retlw B'00000001' ;
retlw B'00000000' ; T
retlw B'00011111' ;
retlw B'00000101' ;
retlw B'00001101' ;
retlw B'00010010' ;
retlw B'00000000' ; R
retlw B'00011101' ;
retlw B'00000000' ; i
retlw B'00000001' ;
retlw B'00000010' ;
retlw B'00011100' ;
retlw B'00000010' ;
retlw B'00000001' ;
retlw B'00000000' ; Y
retlw B'00011111' ;
retlw B'00010101' ;
retlw B'00010101' ;
retlw B'00010001' ;
retlw B'00000000' ; E
retlw B'00011111' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00000000' ; L
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00011111' ;
retlw B'00010101' ;
retlw B'00010101' ;
retlw B'00010001' ;
retlw B'00000000' ; E
retlw B'00011111' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00000000' ; L
retlw B'00011111' ;
retlw B'00010101' ;
retlw B'00010101' ;
retlw B'00010001' ; E
retlw B'00000000' ;
retlw B'00011111' ;
retlw B'00000100' ;
retlw B'00001010' ;
retlw B'00010001' ;
retlw B'00000000' ; K
retlw B'00000001' ;
retlw B'00000001' ;
retlw B'00011111' ;
retlw B'00000001' ;
retlw B'00000001' ;
retlw B'00000000' ; T
retlw B'00011111' ;
retlw B'00000101' ;
retlw B'00001101' ;
retlw B'00010010' ;
retlw B'00000000' ; R
retlw B'00001110' ;
retlw B'00010001' ;
retlw B'00010001' ;
retlw B'00001110' ;
retlw B'00000000' ; O
retlw B'00011111' ;
retlw B'00000010' ;
retlw B'00000100' ;
retlw B'00011111' ;
retlw B'00000000' ; N
retlw B'00011101' ;
retlw B'00000000' ; i
retlw B'00011111' ;
retlw B'00000100' ;
retlw B'00001010' ;
retlw B'00010001' ;
retlw B'00000000' ; K
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00000000' ;
retlw B'00011111' ;
retlw B'00010101' ;
retlw B'00010101' ;
retlw B'00001010' ; B
retlw B'00000000' ;
retlw B'00001101' ;
retlw B'00010010' ;
retlw B'00010010' ;
retlw B'00001101' ;
retlw B'00000000' ; ö
retlw B'00011111' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00000000' ; L
retlw B'00001101' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00001101' ;
retlw B'00000000' ; ü
retlw B'00011111' ;
retlw B'00000010' ;
retlw B'00000100' ;
retlw B'00000010' ;
retlw B'00011111' ;
retlw B'00000000' ; M
retlw B'00001101' ;
retlw B'00010000' ;
retlw B'00010000' ;
retlw B'00001101' ;
retlw B'00000000' ; ü
retlw B'00000000' ;186
retlw B'00000000' ;187
retlw B'00000000' ;188
retlw B'00000000' ;189
retlw B'00000000' ;190
retlw B'00000000' ;191
retlw B'00000000' ;192
retlw B'00000000' ;193
retlw B'00000000' ;194
retlw B'00000000' ;195
retlw B'00000000' ;196
retlw B'00000000' ;197
retlw B'00000000' ;198
retlw B'00000000' ;199
retlw B'00000000' ;200
retlw B'00000000' ;201
retlw B'00000000' ;202
retlw B'00000000' ;203
retlw B'00000000' ;204
retlw B'00000000' ;205
retlw B'00000000' ;206
retlw B'00000000' ;207
retlw B'00000000' ;208
return
;****************************************************************************
STEP_CLEAR
movlw B'00000000'
movwf LINE1
movwf LINE2
movwf LINE3
movwf LINE4
movwf LINE5
movwf LINE6
movwf LINE7
movwf LINE8
movwf LINE9
movwf LINE10
movwf LINE11
movwf LINE12
movwf LINE13
movwf LINE14
movwf LINE15
movwf LINE16
MOVLW D'50'
MOVWF ZAMAN
CALL STEP_DELAY
RETURN
;****************************************************************************
STEP_DELAY
clrwdt
; call DELAYSYS ;20 msec delay
CALL RUNTIME
decfsz ZAMAN
goto STEP_DELAY
return
;****************************************************************************
RUNTIME
WRITEDISP
;test
;call delay20
;test
clrwdt
movlw D'0'
movwf PORTA
movf LINE1,0
movwf PORTB
call delay1
clrwdt
movlw D'1'
movwf PORTA
movf LINE2,0
movwf PORTB
call delay1
clrwdt
movlw D'2'
movwf PORTA
movf LINE3,0
movwf PORTB
call delay1
clrwdt
movlw D'3'
movwf PORTA
movf LINE4,0
movwf PORTB
call delay1
clrwdt
movlw D'4'
movwf PORTA
movf LINE5,0
movwf PORTB
call delay1
clrwdt
movlw D'5'
movwf PORTA
movf LINE6,0
movwf PORTB
call delay1
clrwdt
movlw D'6'
movwf PORTA
movf LINE7,0
movwf PORTB
call delay1
clrwdt
movlw D'7'
movwf PORTA
movf LINE8,0
movwf PORTB
call delay1
clrwdt
movlw D'8'
movwf PORTA
movf LINE9,0
movwf PORTB
call delay1
clrwdt
movlw D'9'
movwf PORTA
movf LINE10,0
movwf PORTB
call delay1
clrwdt
movlw D'10'
movwf PORTA
movf LINE11,0
movwf PORTB
call delay1
clrwdt
movlw D'11'
movwf PORTA
movf LINE12,0
movwf PORTB
call delay1
clrwdt
movlw D'12'
movwf PORTA
movf LINE13,0
movwf PORTB
call delay1
clrwdt
movlw D'13'
movwf PORTA
movf LINE14,0
movwf PORTB
call delay1
clrwdt
movlw D'14'
movwf PORTA
movf LINE15,0
movwf PORTB
call delay1
clrwdt
movlw D'15'
movwf PORTA
movf LINE16,0
movwf PORTB
call delay1
movlw H'00'
movwf PORTB
RETURN
;***************************************************************************
SETCPUPORTSTATUS
bsf STATUS,RP0
movlw H'00'
movwf TRISB ;PORTB pins : O-O-O-O-O-O-O-O
movlw B'00000000'
movwf TRISA ;PORTA pins : X-X-X-O-O-O-O-O
bcf STATUS,RP0
movlw H'00'
movwf PORTA
movwf PORTB
RETURN
;****************************************************************************
;*- Delay Routines -*
;****************************************************************************
vlong
movlw 0xff ;200msec
movwf msb
goto d1
DELAYSYS ;20 msec delay
movlw .26
movwf msb
CLRWDT
CALL RUNTIME
goto d1
delay20 ;20 msec delay
movlw .26
movwf msb
goto d1
delay16 ;16 msec delay
movlw .21
movwf msb
goto d1
delay1 ;750nsec delay
movlw .1
movwf msb
d1 movlw 0xff
movwf lsb
d2 decfsz lsb,F
goto d2
decfsz msb,F
goto d1
return
;****************************************************************************
;FINISH
goto START
end
Kodların üzerinde iyi bir temizlik yapman gerek. Baş kısımları incele.
Aşağıdaki bölümden yazı hızını ayarlayabilirsin. < işareti koyduğum yerleri bir dene. Ama ilk önce d1 movlw 0xff'i dene.
Yazdığın kelimeyi harf olarak uzat gereğince. Abuk subuk şeyler gelmeyecektir.
;****************************************************************************
;*- Delay Routines -*
;****************************************************************************
vlong
movlw 0xff ;200msec
movwf msb
goto d1
DELAYSYS ;20 msec delay
movlw .26 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
movwf msb
CLRWDT
CALL RUNTIME
goto d1
delay20 ;20 msec delay
movlw .26 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
movwf msb
goto d1
delay16 ;16 msec delay
movlw .21 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
movwf msb
goto d1
delay1 ;750nsec delay
movlw .1
movwf msb
d1 movlw 0xff ;<<<<<<<<<<<<<<<<<<<<<<<<<<
movwf lsb
d2 decfsz lsb,F
goto d2
decfsz msb,F
goto d1
return
slm arkadaslar bende sitede yeni sayılırım bende kendi yaptigim kayan yaziyı sizlerle paylaşmak istedim bu yazıya vb de bide pc programı yazmak istiyorum azda osla vb bilgim var yardımlarızla başarıcagima inaniyorum
http://rapidshare.com/files/118945085/kayan_yazi.rar.html
Paylaşımlarımızı
http://picproje.4shared.com a yaparsanız çalışmaların kaybolmaması herkeze ulaşması açısından daha iyi olur.
ya sütun taraması kolay ama benim bu sefer satır taraması yapmam lazım. Bu nasıl yapılıyor, kafam karıştı.
ya kerdeşim bu verdiğiniz sitelerin hepsi kırık link hiç biri işe yaramıyor lütfen çalışan ve aktif olan site adresleri ekleyelim tşk ederiz...
Verilen linklerin tarihine baktınmı?
proje verenlere çok teşşekür ediyorum yanlız verenlerin çoğu hep hex dosyasını vermiş hiç bir anlam veremiyorum hex dosyası kimin ne işine yarar projeyi vermiş yada vermemiş ne fark edicek program dosyası hex hiç bir işe yaramaz burada amaç nedir diye kendime soruyorum buraya gelenler balıkmı istiyor ? balık avlamayımı öğrenmek istiyor ? ben kendi şahşıma balık avlamayı öğrenmek isitiyorum bugünlerde elimde pek işim yok biraz kayan yazı ile uğraşıyım dedim ama çoğu proje de hep balık verilmiş balık avlamayı anlatan projelerdede çoğu asm ler pic basic proda yapılmış kaynak kodu olan bir tane proje dosyası göremedim bu projeleri veren arkadaşlardan ricam kaynak kodunada mutlaka yanına koyması
ibo1973
Alıntı Yapbu projeleri veren arkadaşlardan ricam kaynak kodunada mutlaka yanına koyması
Projeleri ekleyenlerden istersen bence daha iyi olur direkt muhatap olmuş olursun.
mikroC ile gelen basit bir kaydırma örneği. En azından mantığı anlaman için faydalı olur
char txt1[] = "mikroElektronika";
char txt2[] = "LV18FJ";
char txt3[] = "Lcd4bit";
char txt4[] = "example";
char i; // Loop variable
void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}
void main(){
ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,6,txt3); // Write text in first row
Lcd_Out(2,6,txt4); // Write text in second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,6,txt2); // Write text in second row
Delay_ms(2000);
// Moving text
for(i=0; i<5; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
while(1) { // Endless loop
for(i=0; i<10; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<10; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
kayan yazıda dotmatrix yerine led kullanınca yazılar geçmiyor? sebebi ne olabilir??
proteustata denediğimde olmuyor????
dotmatrix in çalışma akımları ledlere göre dahamı düşük?????
datasheetlere bakmaktan kafayı yiyecem.
Arkadaşlar konuyla ilgili bir sorum olucak. Hepimiz kayan yazı yapıyoruz öyle değilmi ?peki kayan yazılarda shift register yerine PWM enteregreleri kullansak? böyle yazıya koyudan açığa doğru veya tam tersi animasyonlar yada güneş ışığına göre parlaklıklarını değiştirse ? Varmı böyle bir şeyle uğraşan ?