SoaRingEagLe* Teğmen
Mesaj Sayısı : 255 Rep Puan : 683 Teşekkür : 8 Kayıt tarihi : 04/10/09 Yaş : 32 Nerden : Bursa İş/Hobiler : Grafiker Lakap : EagLe*
| Konu: Pic 16F84 ile Signboard (İşaret Tahtası) Uygulaması C.tesi Ekim 10, 2009 12:37 pm | |
| Pic 16f84 ile yapılmış olan bir signboard ( İşaret tahtası ) uygulaması görülmektedir. Bu devrede toplam 16*16 256 adet LED lamba kullanılmıştır. Lambalar 74154 entegresi tarama mantığında 74373 entegreleri ise 16 adet satıra denk gelen dataları sürme işleminde kullanılmıştır. 74373 entegresi, 8 bitlik latch entegredir. Tabi ki uygun işaret için gerekli datalar ise pic16f84 entegresi tarafından gönderilmektedir. Sizlerde isterseniz istediğiniz amblemi kodlarda değişiklik yaparak oluşturabilirsiniz. Devre PROTEUS 6.2 de hem simülasyonu yapılarak çalıştırılmış, hem de elemanlarla birlikte bir breadboard üzerine kurularak denenmiştir. Sadece entegre çıkışları doğrudan ledlere gönderildiği için ledler sönük yandığı gözlemlenmiştir. Uygun transistörler ile sürüldüğünde daha iyi sonuçlar alınabilir. Bu uygulama signboard uygulamalarının ilki olduğu için eksiklikler tabi ki vardır. İnşallah bundan sonraki uygulamalar daha gelişmiş olacağı kanısındayım. Küçük bir hatırlatma, bu devrede asıl işi yapan kısım kuşkusuz mikro denetleyicideki programdır. Program assembly dilinde yazılmış olup bu devreyi uygulamayı düşünen arkadaşlarıma tavsiyem ise, programın çalışma mantığını anlayarak programı daha kapsamlı bir signboard haline getirmek sizlerin elindedir. 16*16 signboard değilde 32*32 signboard yada daha yukarısı neden olmasın. Çalışmam esnasında istemeden eksiklikler oluştuysa sizlerden özür diliyor, benden yardım isteyen arkadaşlara da bu sitedeki mail adresime mail atarak ilettiklerinde yardımcı olabileceğimi belirtmek isterim... Devrenin Şeması:
Ekler: signboard.zip (Devre için gerekli dosyaların hepsini tıklayarak indirebilirsiniz.) Devrenin ASM kodları aşağıdadır. Not: Aşağıdaki kodları kopyalama yöntemiyle kullandığınızda hata verebilir. Ekteki ASM dosyayı kullanınız. ; PICSIGNBOARD ; PIC16C84 ILE YAPILAN 16*16=256 LED LI KARE SHOW DEVRESİ ; 32 KARAKTER KULLANILABILIR LIST P = 16F84 ;PIC84 equ H'03FF' INCLUDE "P16F84.INC" ;----------- USER REGISTERS -------------------------- 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' LINE17 EQU H'0020' LINE18 EQU H'0021' LINE19 EQU H'0022' LINE20 EQU H'0023' LINE21 EQU H'0024' LINE22 EQU H'0025' LINE23 EQU H'0026' LINE24 EQU H'0027' LINE25 EQU H'0028' LINE26 EQU H'0029' LINE27 EQU H'002A' LINE28 EQU H'002B' LINE29 EQU H'002C' LINE30 EQU H'002D' LINE31 EQU H'002E' LINE32 EQU H'002F' TARA EQU H'000C' SATIRLAR EQU H'0031' I EQU H'0032' ZAMAN equ H'003E' DISP EQU H'003F' msb equ 0x39 lsb equ 0x3A START call SETCPUPORTSTATUS MOVLW B'11111110' ;BTL simgesinin olusması icin gerekli kodlar giriliyor MOVWF LINE1 ;BTL ( Bilgisayar Teknik Lisesi ) MOVLW B'11111110' MOVWF LINE2 MOVLW B'10010010' MOVWF LINE3 MOVLW B'11111100' MOVWF LINE4 MOVLW B'10010010' MOVWF LINE5 MOVLW B'11000000' MOVWF LINE6 MOVLW B'10010010' MOVWF LINE7 MOVLW B'11000000' MOVWF LINE8 MOVLW B'01101100' MOVWF LINE9 MOVLW B'11000000' MOVWF LINE10 MOVLW B'00000000' MOVWF LINE11 MOVLW B'11000000' MOVWF LINE12 MOVLW B'00010000' MOVWF LINE13 MOVLW B'11000000' MOVWF LINE14 MOVLW B'00010000' MOVWF LINE15 MOVLW B'10000000' MOVWF LINE16 MOVLW B'11110000' MOVWF LINE17 MOVLW B'10000111' MOVWF LINE18 MOVLW B'00010001' MOVWF LINE19 MOVLW B'00000000' MOVWF LINE20 MOVLW B'00010011' MOVWF LINE21 MOVLW B'00000000' MOVWF LINE22 MOVLW B'00000011' MOVWF LINE23 MOVLW B'01111111' MOVWF LINE24 MOVLW B'00000011' MOVWF LINE25 MOVLW B'01000000' MOVWF LINE26 MOVLW B'00000011' MOVWF LINE27 MOVLW B'01000000' MOVWF LINE28 MOVLW B'01111111' MOVWF LINE29 MOVLW B'01000000' MOVWF LINE30 MOVLW B'11111111' MOVWF LINE31 MOVLW B'01000000' MOVWF LINE32 ANA BCF PORTA,0 ;DATA1 DISABLE BCF PORTA,1 ;DATA2 DISABLE BSF PORTA,2 ;LOAD DISABLE BSF PORTA,3 ;74154 DISABLE CLRF TARA ;74154 0. SIRA ENABLE (TARAMA=0) MOVLW .16 ;DÖNGÜ SAYISI YÜKLENDI MOVWF I ; ( I = 15) MOVLW LINE1 ;İLK SIRA DATA1 YÜKLENDI FSR YE MOVWF FSR DEVAM MOVF INDF,W MOVWF PORTB BSF PORTA,0 ;DATA1 ENABLE ;CALL GECIK BCF PORTA,0 ;DATA1 DISABLE INCF FSR ; İKİNCİ SIRA DATA2 YÜKLENDİ FSR YE MOVF INDF,W MOVWF PORTB BSF PORTA,1 ;DATA2 ENABLE ;CALL GECIK BCF PORTA,1 ;DATA2 DISABLE CLRF PORTB BCF PORTA,2 ;LOAD ENABLE 0 YÜKLENEREK MOVF TARA,W MOVWF PORTB BCF PORTA,3 ;74154 ENABLE 0 YÜKLENEREK CALL GECIKME BSF PORTA,2 ;LOAD DISABLE 1 YÜKLENEREK BSF PORTA,3 ;74154 DISABLE 1 YÜKLENEREK INCF FSR MOVLW B'00000001' ADDWF TARA,1
DECFSZ I GOTO DEVAM GOTO ANA ; ;************************************************* ***** SETCPUPORTSTATUS bsf STATUS,RP0 movlw H'00000000' movwf TRISB movlw B'00000000' movwf TRISA bcf STATUS,RP0 RETURN ;************************************************* ***** ;*- Gecikme Döngüleri -* ;************************************************* ***** GECIK ;(lsb = ff icin 750nsec gecikme) movlw .1 movwf msb d3 movlw .1 movwf lsb d4 decfsz lsb,F goto d4 decfsz msb,F goto d3 return GECIKME ;750 MİKRO SANİYE movlw .2 movwf msb d1 movlw .255 movwf lsb d2 decfsz lsb,F goto d2 decfsz msb,F goto d1 return ;************************************************* ***** FINISH goto START end | |
|