Elektronik / Mikrodenetleyici Projeleri/

PIC18F4550 USB kayan yazı panosu visual basic proton

Sponsorlu Bağlantılar

Kayan yazı devresi bilgisyarın USB portu üzerinden gönderilen metini görüntülüyor. Metin göndermek için kullanılan program visual basic ile hazırlanmış exe ve kaynak kodları var. Devre PIC18F4550 üzerine kurulu 8×32 dot matris ledler 2 adet 74hc154 ile sürülüyor pic yazılımı proton ide ile hazlanmış.

pic18f4550-vb-isis-usb-8x32-dot-matrix-led-leds-74hc154

dotmatris3.bas yazılım içeriği;

'***********************************************
'*  Name    : DOTMATRIS3.BAS                                    *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 13.12.2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'********************************************

' select MCU and clock speed
Device = 18F4550
XTAL = 48

' descriptor file, located in \inc\usb_18 - a copy
' is located in the same folder as this file
USB_DESCRIPTOR = "dotmatris3DESC.inc"

' USB Buffer...
Symbol USBBufferSizeMax = 33
Symbol USBBufferSizeTX  = 8
Symbol USBBufferSizeRX  = 33
Dim    USBBuffer[USBBufferSizeMax] As Byte

' some useful flags...
Dim PP0 As Byte SYSTEM        ' USBPOLL status return
Symbol CARRY_FLAG = STATUS.0  ' high if microcontroller does not have control over the buffer
Symbol ATTACHED_STATE = 6     ' is USB attached

' *********************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBPoll, USBIn or USBOut *
' * every couple of milliseconds or so                       *
' *********************************************
i VAR Byte
i1 VAR Byte
p1 VAR Word
p2 VAR Byte
'PORTA değişkenleri
pa1 VAR Byte
pa2 VAR Byte
pa3 VAR Byte
pa4 VAR Byte
pa5 VAR Byte
pa6 VAR Byte
pa7 VAR Byte
pa8 VAR Byte
pa9 VAR Byte
pa10 VAR Byte
pa11 VAR Byte
pa12 VAR Byte
pa13 VAR Byte
pa14 VAR Byte
pa15 VAR Byte
pa16 VAR Byte
pa17 VAR Byte
pa18 VAR Byte
pa19 VAR Byte
pa20 VAR Byte
pa21 VAR Byte
pa22 VAR Byte
pa23 VAR Byte
pa24 VAR Byte
pa25 VAR Byte
pa26 VAR Byte
pa27 VAR Byte
pa28 VAR Byte
pa29 VAR Byte
pa30 VAR Byte
pa31 VAR Byte
pa32 VAR Byte
'şekil değişkenleri
d1 VAR Byte
d2 VAR Byte
d3 VAR Byte
d4 VAR Byte
d5 VAR Byte
d6 VAR Byte
d7 VAR Byte
d8 VAR Byte
d9 VAR Byte
d10 VAR Byte
d11 VAR Byte
d12 VAR Byte
d13 VAR Byte
d14 VAR Byte
d15 VAR Byte
d16 VAR Byte
d17 VAR Byte
d18 VAR Byte
d19 VAR Byte
d20 VAR Byte
d21 VAR Byte
d22 VAR Byte
d23 VAR Byte
d24 VAR Byte
d25 VAR Byte
d26 VAR Byte
d27 VAR Byte
d28 VAR Byte
d29 VAR Byte
d30 VAR Byte
d31 VAR Byte
d32 VAR Byte
kontrol Var Byte

TRISB=%00000000
TRISD=%00000000
PORTB=1
PORTD=0

'=====Bekleme ayarları=====
p1=800'delayus 'sütun geçişleri arasındaki bekleme(TİTREMEYİ ÖNLEYECEK DEĞER)
'=====Görüntü oluşturan değişkenler tanımlanıyor=====
'görünmesini istediğiniz şekli oluşturmak için,
'görünen için=1 siyah kalan için=0 olarak değer verin.
'değerlerin anlaşılabilir olması açısından binary
'olarak verilmiştir.
'Teknoloji
d1=%00000001
d2=%00000001
d3=%01111111
d4=%00000001
d5=%00111001
d6=%01010100
d7=%01011000
d8=%00000000
d9=%01111111
d10=%00010000
d11=%00101000
d12=%01000100
d13=%00000000
d14=%01111100
d15=%00000100
d16=%01111000
d17=%00000000
d18=%00111000
d19=%01000100
d20=%00111000
d21=%00000000
d22=%01111111
d23=%00000000
d24=%00111000
d25=%01000100
d26=%00111000
d27=%00000000
d28=%10000000
d29=%01111101
d30=%00000000
d31=%01111101
d32=%00000000
'PORTA tanımlaması
pa1=0
pa2=1
pa3=2
pa4=3
pa5=4
pa6=5
pa7=6
pa8=7
pa9=8
pa10=9
pa11=10
pa12=11
pa13=12
pa14=13
pa15=14
pa16=15
pa17=16
pa18=17
pa19=18
pa20=19
pa21=20
pa22=21
pa23=22
pa24=23
pa25=24
pa26=25
pa27=26
pa28=27
pa29=28
pa30=29
pa31=30
pa32=31

GoTo ProgramLoop
basla:
'If  UIR And %01000000 Then GoTo  verial
'i=i+1
'If i=i1 Then kaydir
If UIR.3=1 Then GoTo ProgramLoop1

PORTB=pa1
PORTD=d1
DelayUS p1
PORTB=pa2
PORTD=d2
DelayUS p1
PORTB=pa3
PORTD=d3
DelayUS p1
PORTB=pa4
PORTD=d4
DelayUS p1
PORTB=pa5
PORTD=d5
DelayUS p1
PORTB=pa6
PORTD=d6
DelayUS p1
PORTB=pa7
PORTD=d7
DelayUS p1
PORTB=pa8
PORTD=d8
DelayUS p1
PORTB=pa9
PORTD=d9
DelayUS p1
PORTB=pa10
PORTD=d10
DelayUS p1
PORTB=pa11
PORTD=d11
DelayUS p1
PORTB=pa12
PORTD=d12
DelayUS p1
PORTB=pa13
PORTD=d13
DelayUS p1
PORTB=pa14
PORTD=d14
DelayUS p1
PORTB=pa15
PORTD=d15
DelayUS p1
PORTB=pa16
PORTD=d16
DelayUS p1
PORTB=pa17
PORTD=d17
DelayUS p1
PORTB=pa18
PORTD=d18
DelayUS p1
PORTB=pa19
PORTD=d19
DelayUS p1
PORTB=pa20
PORTD=d20
DelayUS p1
PORTB=pa21
PORTD=d21
DelayUS p1
PORTB=pa22
PORTD=d22
DelayUS p1
PORTB=pa23
PORTD=d23
DelayUS p1
PORTB=pa24
PORTD=d24
DelayUS p1
PORTB=pa25
PORTD=d25
DelayUS p1
PORTB=pa26
PORTD=d26
DelayUS p1
PORTB=pa27
PORTD=d27
DelayUS p1
PORTB=pa28
PORTD=d28
DelayUS p1
PORTB=pa29
PORTD=d29
DelayUS p1
PORTB=pa30
PORTD=d30
DelayUS p1
PORTB=pa31
PORTD=d31
DelayUS p1
PORTB=pa32
PORTD=d32
DelayUS p1
GoTo basla 'Göstermeye yeniden başla
'=====Kaydırma işlemi yapılıyor=====

GoSub AttachToUSB
ProgramLoop1:
UIR.3=0
ProgramLoop:

GoSub DoUSBIn

kontrol=USBBuffer[0]
If kontrol=5 Then GoTo basla
If kontrol=6 Then GoTo yukle
' GoSub DoUSBOut

GoTo ProgramLoop
yukle:
d1=USBBuffer[1]
d2=USBBuffer[2]
d3=USBBuffer[3]
d4=USBBuffer[4]
d5=USBBuffer[5]
d6=USBBuffer[6]
d7=USBBuffer[7]
d8=USBBuffer[8]
d9=USBBuffer[9]
d10=USBBuffer[10]
d11=USBBuffer[11]
d12=USBBuffer[12]
d13=USBBuffer[13]
d14=USBBuffer[14]
d15=USBBuffer[15]
d16=USBBuffer[16]
d17=USBBuffer[17]
d18=USBBuffer[18]
d19=USBBuffer[19]
d20=USBBuffer[20]
d21=USBBuffer[21]
d22=USBBuffer[22]
d23=USBBuffer[23]
d24=USBBuffer[24]
d25=USBBuffer[25]
d26=USBBuffer[26]
d27=USBBuffer[27]
d28=USBBuffer[28]
d29=USBBuffer[29]
d30=USBBuffer[30]
d31=USBBuffer[31]
d32=USBBuffer[32]

GoTo basla

' ******************************************
' * receive data from the USB bus                            *
' ******************************************
DoUSBIn:
USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
Return

' **************************************
' * transmit data                                            *
' **************************************
DoUSBOut:
USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
Return

' **********************************
' * wait for USB interface to attach                 *
' **********************************
AttachToUSB:
Repeat
USBPoll
Until PP0 = ATTACHED_STATE
Return

Hazırlayan: Eyüp – Kaynak: elektrobilim.org Alternatif link: PIC18F4550 USB kayan yazı panosu visual basic proton

Dosya indirme LINK listesi (TXT formatında) link-13235.zip şifre-pass: 320volt.com

  • hsey

    merhaba çok güzel bir çalışma olmuş sormak istediğim matrix sayısını nasıl çoğaltabiliriz? videoda 5 karekter görünüyor isis programında 4 matrıx var?
    teşekkürler….

  • eyup

    evet 5 karakter görünüyor ama 4 adet 8×8 dotmatrix kullandım
    bu projeyi ben yapmıştım bitirme ödevi olarak yapmak isteyen arkadaşlara yardımcı olabilirim

  • zafer

    Merhaba ben biraz farklı bir şey arıyorum yardımcı olursanız çok mutlu olurum.

    1×500 (yani tek sıra led) olacak şekilde yapabilirmiyiz .. aynı bu şekilde…

    ledleri bir boru üzerine dizicem ve boruyu kendi ekseninde içinden mil geçirerek döndüreceğim.. yani havaya yazmış gibi borunun üzerinde istediğimiz yazı oluşacak.

    Böyle birşey yapabilirmiyiz. Ben aslında Fizikçiyim butür çalışmaları da çok seviyorum kendi yaptığım ufak tefen çalışmalarımda var ama bu istediğim şeyi yapamadım… Yardımcı olursanız yada nasıl bir yol izlemem gerektiğini söylerseniz çok mutlu olurum …

    yapmak istediğim çalışmanın görsel ifadesi:

    ***************************************************************
    Merhaba bu bir denemedir…

    Led şerit kendi eksenne paralel şekilde döndürüldüğünde. Yazı aşağıdan yukarı veya yukarıdan aşağı oluşacak… (yandan değilde yukarıdan oluşmaya başlayacak yani)

    2006 da Bilim teknik dergisi kendin yap bölümünde benzeri ufak bir çalışma vardı ama o hem pic, hem küçük, hemde yazı soldan sağa oluşuyor.

    Şimdiden Teşekkürler..

  • hakan

    Eyüp hocam merhaba ya bende bitirme projesi olarak usb kontrollü kayan yazı aldım benim bu devreye sıcaklık zaman gibi eklentilerde bulunmam mümkün olabilirmi acaba bana yardımcı olursanız çok sevinirim.

  • eyup

    Evet mümkün visual basic ve pic basic bilyorsan rahatlıkla yapabilirsin.
    Proje konusun da elimden gelen yardımı yaparım.

    • Emre Destici

      eyup hocam projenın pcp dosyası varmı acaba varsa gonderebilirmisniz

  • hakan

    teşekkür ederim ben size gerekli yerde başvuracağım çok sağolun

  • eyup

    zafer hocam sizin bahsettiğiniz devreyi anladım 500 adet led’i sürmek için 500/16=32 adet encoder entegresine ihtiyacımız var döndürme işi için ise step motor kullana bilirsiniz ama hızı yeterli olur mu bilmiyorum. DC motor kullanırsanız dönüşün hızını ölçebilecek dil rölesine ihtiyaç duyarsınız. Pic programlamadan pic basic dilinden anlıyorsanız mekanik kısmı fizikçi olduğunuz için yapabileceğinizi umuyorum.

  • faruk

    bu devredeki dotmatris sayısını yazılımda bir değişiklik yapmadan arttırabilir miyiz.eğer degişiklik gerekiyorsa yazılımda çok büyük bir değişiklik gerekir mi.

  • hakan

    eyüp hocam sizden visual basic komutlarını alma şansım varmı acaba teşekkürler

  • eyüp

    https://docs.google.com/leaf?id=0BwivV1q401vqNjAzMjA4NjYtNzAyYy00OTU0LWEzNTgtZDFkMGQ3OTZjZjll&hl=trz bu linkte tüm kodlar mevcut

  • ali osman aydın

    iyi günler eyüp hocam.ben de kayan yazı projesi yapıyorum da. yalnız bunun simülasyonu nasıl yapılıyor bilmiyorum. hangi aşamaları izleyerek simülasyon yapmalı.bir de videoda izlediğim kadarıyla harfler tek tek geçmiyor sanki 2 şer 2 şer geçiyor.teker teker geçmesi için ne yapmalı acaba? aklıma takılan bir husus da harflerin, sayıların yani karakterlerin tanımlanması. bunları nerede yaptınız acaba ? bu tanımlamalar visual basic de mi yer alıyor. yani mesela A B C D harfleri nerede tanımlı acaba ? bizi bu konuda bilgilendirirseniz çok seviniriz

  • eyüp

    Harfler beşer beşer geçiyor sonradan teker teker geçenini yapmıştım kodları kaybettim. Kodları bulabilirsem eklerim. Harflerin kodlaması visual basic yani bilgisayar tarafından yapılan arayüz programı içinde yapılmış. yukarıda görülen dotmatris3.bas dosyası pic’e yüklenen picbasic kodlarıdır.

    Kodlara ulaşmak için;

    http://www.elektrobilim.org/forum/showthread.php?s=701b327c2a05fcc992a487d1e2428dc8&t=6093

    sayfaya bakın tüm kodlar mevcut

    Pojenin baskı devresi mevcut değil çünkü delikli plaket üzerine kurmuştum ama üzerinde çalışıyorum bitirirsem onuda eklerim.

    visual basic harf kodlaması
    aşağıdaki gibidir

    Private Sub harf_coz(harf As String)
    Select Case harf
    Case "A": BufferOut(3 + (say - 1) * 6) = 126
    BufferOut(4 + (say - 1) * 6) = 17
    BufferOut(5 + (say - 1) * 6) = 17
    BufferOut(6 + (say - 1) * 6) = 17
    BufferOut(7 + (say - 1) * 6) = 126
    BufferOut(8 + (say - 1) * 6) = 0
    
    Case "B": BufferOut(3 + (say - 1) * 6) = 127
    BufferOut(4 + (say - 1) * 6) = 73
    BufferOut(5 + (say - 1) * 6) = 73
    BufferOut(6 + (say - 1) * 6) = 73
    BufferOut(7 + (say - 1) * 6) = 54
    BufferOut(8 + (say - 1) * 6) = 0
    
    Case "C": BufferOut(3 + (say - 1) * 6) = 62
    BufferOut(4 + (say - 1) * 6) = 65
    BufferOut(5 + (say - 1) * 6) = 65
    BufferOut(6 + (say - 1) * 6) = 65
    BufferOut(7 + (say - 1) * 6) = 34
    BufferOut(8 + (say - 1) * 6) = 0
    
    Case "Ç": BufferOut(3 + (say - 1) * 6) = 30
    BufferOut(4 + (say - 1) * 6) = 33
    BufferOut(5 + (say - 1) * 6) = 97
    BufferOut(6 + (say - 1) * 6) = 33
    BufferOut(7 + (say - 1) * 6) = 18
    BufferOut(8 + (say - 1) * 6) = 0
    
    
  • eyüp

    Program 8×32 satır ve sütuna göre yapılmış. Sütun sayısını artırmak için programda ve devrede biraz değişiklik yapılması gerek.

    Bir şey daha diyeyim dotmatrix panoların sürülmesi direk pic ile yapıldı dolayısıyla yüksek akım çekmesine sebeb oldu videoda görüldüğü gibi bazı satırlar parlak bazıları sönük yanıyor.

    bunu engellemek için portd çıkışına sürücü entegre eklenmesi lazı uln… entegreleri gibi datasheetlerine bakarak yapılabilir 32 sütundan fazla yapılacaksa mutlaka eklenmeli yada portd’nin herbir pinine transistörlerle anahtarlama devresi yapılabilir.

  • hakan

    Eyüp hocam ben bu projeye 6 adet daha matris ve 3 tane daha 74hc154 ekledim bu 74hc lerin E1ve E2 girişlerini vedeğilin çıkışlarından mı alacağım yoksa ayrı ayrı vedeğil mi eklemem gerekiyor.Teşekkürler

  • Mehmet

    Selam eyüp hocam eğer hala buralarda iseniz ben de daha açık vb6 ve pic kodlarını alabilir miyim, halletmeye çalıştım da biraz karıştı. Ben de Fıratlıyım 2007 mezunu elektronik öğretmeniyim. Benim uğraş alanım biraz daha farklı eğer daha sade kodlarını mail ya da burdan verebilirseniz minnettar kalırım teşekkürler…

  • Mehmet

    Eyüp hocam eğer yardımcı olursanız mail adresim dhy3@mynet.com burda istiyor ama ben yine de vereyim yardımcı olursanız sevinirim, vb6 ve pic arasında kurulacak en basit iletişim 16f84a ile denemek istiyorum,,,

  • Ahmet

    devrenin kopyasını yaptım ama bi türlü tanıtamadım bilgisayara hocam yardımcı olursanız çok sevinirim yok acil yardımınıza ihtiyacım var…

  • halil tosun

    devrede kullanılan matrixler ortak anot mu yoksa katot mu bir yardımcı olun teşekkürler

  • tahsin öcal

    pardon hocam varmış pic basic kodları baktım yükledim ama hex dosyasını çıkartamadım hata verdi

    redefinition of label dim …………..hatası verdi ne yapmam lazım

  • caner arslan

    bu devrenin hex kodu varmı iyi akşamlar