Geri git   Programlama ve Elektronik > Devreler > Dijital Devreler > Microcontroller Devreleri > PIC Devreleri > PIC16F877 Devreleri
Kayıt ol Yardım Community Bugünki Mesajlar Arama

PIC16F877 Devreleri PIC16F877 ile Yapılmış Devreler

Cevapla
 
Seçenekler Stil
Alt 5. December 2012, 08:42 PM   #1 (permalink)
parametre
Misafir
 
Mesajlar: n/a
Standart PIC16F877A ile C Dili Kullanılarak LED Küpü (3D) Uygulaması

- Besleme Devresi -


- PIC Devresi -


- PCB Yerleşimi -


- LED Yerleşimi -


[Sadece Üyelere Linkler Açıktır.Üye Olun !!! Tıklayarak Üye Olun !!!]

- Diğer İndirme Seçeneği -
[Sadece Üyelere Linkler Açıktır.Üye Olun !!! Tıklayarak Üye Olun !!!]

Kod:
// PIC16F877A ile LED kupu uygulamasi

#include <pic.h>
#include <delay.c>
#include <stdlib.h>

// Konfigurasyon ayarlari (4MHz rezonator)
__CONFIG(XT&WDTDIS&PWRTEN&LVPDIS);

//============================================================
//			ANA PROGRAM
//============================================================
main (void)
{

unsigned const char secme[4]={0xFE0xFD0xFB0xF7};
unsigned char aicktxym;
unsigned const char donus1[6]={0x100x010x020x040x080x80};
unsigned const char donus2[6]={0x080x800x400x200x100x01};

unsigned const char altD[4]={0x0F0xF00x000x00};
unsigned const char altB[4]={0x000x000x0F0xF0};

unsigned const char ustD[4]={0x000x000xF00x0F};
unsigned const char ustB[4]={0xF00x0F0x000x00};

unsigned const char dizi[4]={0x880x440x220x11};

unsigned const char xyzD[4]={0x1F0x010x010x01};
unsigned const char xyzB[4]={0x110x000x000x00};

unsigned const char izgaraD[4]={0x9F0x090x090x9F};
unsigned const char izgaraB[4]={0xF90x900x900xF9};

unsigned const char kucukizgaraD[4]={0x000x600x600x00};
unsigned const char kucukizgaraB[4]={0x000x060x060x00};

unsigned const char havaifisekD[36]={0xF00x000x000x00
	 	 		     0xF00x000x000x00
	 	 		     0xF00xF00x000x00
	 	 		     0xF00xF00xF00x00
		 		     0xF00xF00xF00xF0
		 		    
				     0x000x000x000x0F
	 	 		     0x000x000x0F0x0F
	 	 		     0x000x0F0x0F0x0F
	 	 		     0x0F0x0F0x0F0x0F
 	 	 		     };
		       
unsigned const char havaifisekB[36]={0x0F0x000x000x00
		       	     	     0x0F0x000x000x00
 		       	     	     0x0F0x0F0x000x00
	 	 		     0x0F0x0F0x0F0x00
	 	 		     0x0F0x0F0x0F0x0F
	 	 		    
	 	 		     0x000x000x000xF0
	 	 		     0x000x000xF00xF0
	 	 		     0x000xF00xF00xF0
	 	 		     0xF00xF00xF00xF0
	 	 		     };
	 	 		        
//--------------------------------------------------------
// 		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
//--------------------------------------------------------

//-------------------------------------
// (1) 64 adet LED'i sirayla yakmak icin
//-------------------------------------
for(a=0;a<4;a++){

	PORTC=secme[a]; // duzlemi sec

	for(i=0;i<8;i++){ // RD0'dan RD7'ye
		PORTD=1<<i; 
		DelayMs(100);
	}

	PORTD=0;

	for(i=0;i<8;i++){ // RB0'dan RB7'ye
		PORTB=1<<i;
		DelayMs(100);
		}

	PORTB=0;
}
//-------------------------------------


//-------------------------------------
// (2) 64 adet LED'i S seklinde yakmak icin
//-------------------------------------
c=80;
for(a=0;a<4;a++){

	PORTC=secme[a]; // duzlemi sec

	for(i=0;i<4;i++){ // RD0'dan RD3'e
		PORTD=0x01<<i; 
		DelayMs(c);
	}
	for(i=0;i<4;i++){ // RD7'dan RD4'e
		PORTD=0x80>>i; 
		DelayMs(c);
	}
	
	PORTD=0;

	for(i=0;i<4;i++){ // RB0'dan RB3'e
		PORTB=0x01<<i; 
		DelayMs(c);
	}
	for(i=0;i<4;i++){ // RB7'dan RB4'e
		PORTB=0x80>>i; 
		DelayMs(c);
	}

	PORTB=0;
}
//-------------------------------------

//-------------------------------------
// (3) x-y-z koordinat ekseni
//-------------------------------------
for(k=0;k<200;k++){ // 200 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=xyzD[a];
	PORTB=xyzB[a];
	DelayMs(1);
	PORTB=0; PORTD=0;
	}
}
//-------------------------------------


//-------------------------------------
// (4) Kup izgara
//-------------------------------------
// Once buyuk izgara
for(t=0;t<2;t++){ // 2 kez tekrarla

for(k=0;k<200;k++){ // 200 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=izgaraD[a];
	PORTB=izgaraB[a];
	DelayMs(1);
	PORTB=0; PORTD=0;
	}
}
//-------------------------------------


// Sonra kucuk izgara
for(k=0;k<200;k++){ // 200 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=kucukizgaraD[a];
	PORTB=kucukizgaraB[a];
	DelayMs(1);
	PORTB=0; PORTD=0;
	}
}
}
//-------------------------------------


//-------------------------------------
// (5) yukari-asagi
//-------------------------------------
for(t=0;t<2;t++){
	
// once yukari dogru
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
		if(a==i){
		PORTC=secme[a]; // duzlemleri sirayla sec
		PORTD=0xFF;
		PORTB=0xFF;
		}
		DelayMs(1);
	PORTD=0;PORTB=0;
	}
}
}

// sonra asagi dogru
for(i=4;i>0;i--){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=4;a>0;a--){ 
		if(a==i){
		PORTC=secme[a-1]; // duzlemleri sirayla sec
		PORTD=0xFF;
		PORTB=0xFF;
		}
		DelayMs(1);
	PORTD=0;PORTB=0;
	}
}
}
}
//-------------------------------------


//-------------------------------------
// (6) yukari asagi eklemeli
//-------------------------------------
for(t=0;t<2;t++){
	
// once yukari dogru
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
		if(i>=a){
		PORTC=secme[a]; // duzlemleri sirayla sec
		PORTD=0xFF;
		PORTB=0xFF;
		}
		DelayMs(1);
	PORTD=0;PORTB=0;
	}
}
}

// sonra asagi dogru
for(i=4;i>0;i--){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=4;a>0;a--){ 
		if(i>=a){
		PORTC=secme[a-1]; // duzlemleri sirayla sec
		PORTD=0xFF;
		PORTB=0xFF;
		}
		DelayMs(1);
	PORTD=0;PORTB=0;
	}
}
}
}
//-------------------------------------


//-------------------------------------
// (7) sola-saga
//-------------------------------------
for(t=0;t<2;t++){
	
//once sola
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=altD[i]; 
	PORTB=altB[i];
	DelayMs(1);
	}
}
PORTD=0;PORTB=0;
}

// sonra saga
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=ustD[i]; 
	PORTB=ustB[i];
	DelayMs(1);
	}
}
PORTD=0;PORTB=0;
}
}

//-------------------------------------


//-------------------------------------
// (8) one-arkaya
//-------------------------------------
for(t=0;t<2;t++){

// once onden arkaya dogru
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=dizi[i];
	PORTB=dizi[i];
	DelayMs(1);
	}
}
PORTB=0; PORTD=0;
}

// sonra arkadan one dogru
for(i=0;i<4;i++){

for(k=0;k<40;k++){ // 40 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=dizi[3-i];
	PORTB=dizi[3-i];
	DelayMs(1);
	}
}
PORTB=0; PORTD=0;
}
}

//-------------------------------------


//-------------------------------------
// (9) Dairesel donus
//-------------------------------------

PORTB=0; PORTD=0;
for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=donus1[i]; // dikey duzlem
	DelayMs(1);
	}
}
}
PORTD=0;

for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTB=donus2[i]; // dikey duzlem
	DelayMs(1);
	}
}
}
PORTB=0;
//-------------------------------------


//-------------------------------------
// (10) Dairesel donus-2
//-------------------------------------

PORTB=0; PORTD=0;
for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=PORTD|donus1[i]; // dikey duzlem
	DelayMs(1);
	}
}
}

for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<4;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTB=PORTB|donus2[i]; // dikey duzlem
	DelayMs(1);
	}
}
}

//-------------------------------------


//-------------------------------------
// (11) Dairesel donus-3 
//-------------------------------------

PORTB=0; PORTD=0;
for(t=1;t<=4;t++){
	
for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<t;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTD=PORTD|donus1[i]; // dikey duzlem
	DelayMs(1);
	}
}
}

PORTD=0;
	
for(i=0;i<6;i++){

for(k=0;k<20;k++){ // 20 kez tara
	for(a=0;a<t;a++){ 
	PORTC=secme[a]; // duzlemleri sirayla sec
	PORTB=PORTB|donus2[i]; // dikey duzlem
	DelayMs(1);
	}
}
}
PORTB=0;
}
//-------------------------------------


//-------------------------------------
// (12) Yatayda karasimsek (duzlemler sirayla)
//-------------------------------------
c=100;

for(a=0;a<4;a++){ // yukari dogru

	PORTC=secme[a]; // duzlemi sec

	PORTD=0x0F; 
	DelayMs(c);
	PORTD=0xF0; 
	DelayMs(c);PORTD=0;
	PORTB=0x0F; 
	DelayMs(c);
	PORTB=0xF0; 
	DelayMs(c);

	PORTB=0xF0; 
	DelayMs(c);
	PORTB=0x0F; 
	DelayMs(c);PORTB=0;
	PORTD=0xF0; 
	DelayMs(c);
	PORTD=0x0F; 
	DelayMs(c);
		
}
//-------------------------------------


//-------------------------------------
// (13) Alt ve ust duzlemde eszamanli karasimsek (tersten)
//-------------------------------------
c=100;

for(i=0;i<4;i++){ // tekrar sayisi

for(t=0;t<4;t++){ // duzlem secimi

for(k=0;k<50;k++){ // 50 kez tara

	PORTB=0; PORTD=0;
	PORTC=secme[0]; // 1. duzlemi sec
	PORTD=altD[t];
	PORTB=altB[t];
	DelayMs(1);

	PORTB=0; PORTD=0;
	PORTC=secme[3]; // 4. duzlemi sec
	PORTB=ustB[t];
	PORTD=ustD[t];
	DelayMs(1);
}
}

for(t=0;t<4;t++){

for(k=0;k<50;k++){ 

	PORTB=0; PORTD=0;
	PORTC=secme[0]; // 1. duzlemi sec
	PORTD=ustD[t];
	PORTB=ustB[t];
	DelayMs(1);

	PORTB=0; PORTD=0;
	PORTC=secme[3]; // 4. duzlemi sec
	PORTB=altB[t];
	PORTD=altD[t];
	DelayMs(1);
}
}
}
//-------------------------------------

//-------------------------------------
// (14) rastgele sayi uretimi
//-------------------------------------

for(t=0;t<10;t++){

x=rand();
y=rand();
	
for(k=0;k<100;k++){ 
for(a=0;a<4;a++){
	PORTB=0; PORTD=0;
	PORTC=secme[a]; // duzlemi sec

	PORTD=x;
	PORTB=y;
	DelayMs(1);
}
}
}
//-------------------------------------


//-------------------------------------
// (15) Havaifisek
//-------------------------------------

for(t=0;t<9;t++){

for(k=0;k<40;k++){ // 40 kez tara
for(a=0;a<4;a++){
	PORTB=0; PORTD=0;
	PORTC=secme[a]; // duzlemi sec

	PORTD=havaifisekD[4*t+a];
	PORTB=havaifisekB[4*t+a];
	DelayMs(1);
}
}
}
//-------------------------------------


//-------------------------------------
// (16) Yukselen-alcalan 4 kose kule
//-------------------------------------
for(a=0;a<4;a++){ 
	
for(k=0;k<150;k++){ // 150 kez tara
	PORTB=0; PORTD=0;
	PORTC=secme[a]; // duzlemi sec

	PORTD=0x09;
	PORTB=0x90;
	DelayMs(1);
}
}
for(a=0;a<4;a++){
for(k=0;k<150;k++){ // 150 kez tara
	PORTB=0; PORTD=0;
	PORTC=secme[3-a]; // duzlemi sec

	PORTD=0x09;
	PORTB=0x90;
	DelayMs(1);
}
}
//-------------------------------------


//-------------------------------------
// (17) Dans eden kuleler
//-------------------------------------

t=15; // gecikme

for(m=0;m<8;m++){
		
for(i=0;i<4;i++){
for(k=0;k<t;k++){ // t kez tara
	for(a=0;a<4;a++){ 
		if(i>=a){
		PORTC=secme[a]; // duzlemleri sirayla sec
		PORTD=1<<m;
		PORTB=0x80>>m;
		}
	DelayMs(1);
	PORTB=0; PORTD=0;
	}

}
}

// sonra asagi dogru
for(i=4;i>0;i--){

for(k=0;k<t;k++){ // t kez tara
	for(a=4;a>0;a--){ 
		if(i>=a){
		PORTC=secme[a-1]; // duzlemleri sirayla sec
		PORTD=1<<m;
		PORTB=0x80>>m;
		}
		DelayMs(1);
	PORTD=0;PORTB=0;
	}
}
}
DelayMs(4*t);

}

//-------------------------------------


//-------------------------------------
// (18) Spiral hareket
//-------------------------------------
// once saat yonunde sonra ters yonde yukari

for(m=7;m<30;m+=5){

PORTB=0; PORTD=0;

for(a=0;a<4;a++){

	PORTC=secme[a]; // duzlemleri sirayla sec
		for(i=0;i<6;i++){
		PORTD=donus1[i]; 
		DelayMs(m);
		}
PORTD=0;

	PORTC=secme[a]; // duzlemleri sirayla sec
		for(i=0;i<6;i++){
		PORTB=donus2[i]; 
		DelayMs(m);
		}
PORTB=0;
}


// ters
PORTB=0; PORTD=0;

for(a=0;a<4;a++){


	PORTC=secme[3-a]; // duzlemleri sirayla sec
		for(i=0;i<6;i++){
		PORTD=donus1[5-i]; 
		DelayMs(m);
		}
PORTD=0;

	PORTC=secme[3-a]; // duzlemleri sirayla sec
		for(i=0;i<6;i++){
		PORTB=donus2[5-i]; 
		DelayMs(m);
		}
PORTB=0;
}
}

//-------------------------------------

}
//---------------PROGRAM SONU----------------------------
  Alıntı ile Cevapla
Alt 6. December 2012, 11:40 AM   #2 (permalink)
Tekniker
 
ULAGA - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Dec 2007
Mesajlar: 448
Standart Cevap: PIC16F8787A ile C Dili Kullanılarak LED Küpü (3D) Uygulaması

Konu tekrar düzenlendi.
Açılan konunun başlığı ve içeriği bu şekilde zengin olursa çok sevinirim.
Bunu bir çok kez dile getirdim.
ULAGA isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 9. December 2012, 01:52 PM   #3 (permalink)
Moderator
 
Dragon - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Mar 2008
Mesajlar: 93
Standart Cevap: PIC16F877A ile C Dili Kullanılarak LED Küpü (3D) Uygulaması

bu proje birçok sitede var ama bu kadar açıklayıcı olanını görmedim. Artık böyle güzellikler nadir kardeşimizin klasikleri oldu. TEşekkür ederim sağol
Dragon isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı