PIC Assembly - PIC C PIC 16F877A İle LED Küp Uygulaması By Burak Ablay Posted on 20 Ocak 2015 6 min read 20 0 16,282 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar,bu yazımızla led küp yapımı hakkında bilgiler vereceğiz.. DEVRE ŞEMASI YAPIMI Arkadaşlar bu çalışmada önemli olan nokta ledlerin düzgün şekilde şekillendirilmesidir.Devre şemasında da görüldüğü üzere ledlerin katot uçları birbirleriyle kısa devre yapılacaktır.Devreyi 4 düzlem olarak düşünürsek 4 adet katot ucu çıkartılacaktır.Bu katot uçları PNP transistörün emiterine girilicektir . 16F877 nin PORTC çıkışlarını Lojik 0 yaptığımız zaman iletime geçme mantığıyla çalışmaktadır.Yani Emiter ve Kollektör kısa devre olacaktır.Ledlerin anot uçları ise 4 düzlem üst üste yerleştirildiğinde ayn hizaya gelen anot uçları kısa devre edilecektir.Bu şekilde 16 adet uç çıkacaktır. Bu uçları PORTB VE PORTD ye bağlayınız. Düzlemler ve Ledlerin son hali ALTTAN GÖRÜNÜŞÜ C Programı aşağıda gösterilmektedir…. [php] #include <pic.h> #include <stdlib.h> // Konfigurasyon ayarlari (4MHz rezonator) __CONFIG(XT&WDTDIS&PWRTEN&LVPDIS); //============================================================ void bekle(int b) {for(int i=0;i<b;i++) for(int j=0;j<100;j++); } // ANA PROGRAM //============================================================ main (void) { unsigned const char secme[4]={0xFE,0xFD,0xFB,0xF7}; unsigned const char yaziB[9]={0XF3,0XF9,0XFB,0XF9,0X1F,0XF8,0XF3,0XF6,0XF5}; unsigned const char yaziD[9]={0XD0,0XF0,0XF0,0XF0,0X10,0XF0,0XD0,0X90,0XF0}; unsigned const char led[4]={0xF1,0XF2,0XF4,0XF8}; unsigned const char led1[4]={0xFE,0xFD,0xFB,0xF7}; unsigned char a,i,c,k,t,x,y,m; //——————————————————– // Port konfigurasyonu //——————————————————– TRISB=0x00; // Hepsi cikis (8 adet LED icin) TRISD=0x00; // Hepsi cikis (8 adet LED icin) TRISC=0x00; // Hepsi cikis (4 adet transistoru secmek icin) //——————————————————– //——————————————————– // Baslangic durumu ayarlari //——————————————————– PORTC=0xFF; // hicbir transistor secili degil PORTB=0x00; // Data lojik 0 PORTD=0x00; // LED’ler sonuk //——————————————————– //————————————- for(a=0;a<4;a++){ PORTC=secme[a]; // duzlemi sec for(i=0;i<8;i++){ // RD0’dan RD7’ye PORTD=1<<i; bekle(50); } PORTD=0; for(i=0;i<8;i++){ // RB0’dan RB7’ye PORTB=1<<i; bekle(50); } PORTB=0; } // (2) 64 adet LED’i S seklinde yakmak icin //————————————- c=40; for(a=0;a<4;a++){ PORTC=secme[a]; // duzlemi sec for(i=0;i<4;i++){ // RD0’dan RD3’e PORTD=0x01<<i; bekle(c); } for(i=0;i<4;i++){ // RD7’dan RD4’e PORTD=0x80>>i; bekle(c); } PORTD=0; for(i=0;i<4;i++){ // RB0’dan RB3’e PORTB=0x01<<i; bekle(c); } for(i=0;i<4;i++){ // RB7’dan RB4’e PORTB=0x80>>i; bekle(c); } PORTB=0; } //————————————- //YAZIIII : R O B O T U R K A for(k=0;k<9;k++){ for(a=0;a<4;a++){ PORTC=secme[a]; // duzlemleri sirayla sec PORTD=yaziD[k]; PORTB=yaziB[k]; bekle(200); } } // (5) yukari-asagi led düzlemleri //————————————- for(k=0;k<5;k++){ for(a=0;a<4;a++){ PORTC=led[a]; // duzlemleri sirayla sec PORTD=0xFF; PORTB=0xFF; bekle(100); } // sonra asagi dogru for(a=4;a>0;a–){ PORTC=led[a-1]; // duzlemleri sirayla sec PORTD=0xFF; PORTB=0xFF; bekle(100); } } } [/php] KODUN HEX DOSYASINA BURADAN ULAŞABİLİRSİNİZ… DEVRENİN VİDEOSUNA BURADAN ULAŞABİLİRSİNİZ..