PIC 18F2550 VE PIC 18F4550 USB/RS232 PROJE GELİŞTİRME DEVRESİ

picboard.2jpg

Pic 18f2550 için Eagle ile hazırlanmış proje geliştirme devresidir. PCB devreden dışarıya ilgili pine ait pinler çıkartılmış, Rs 232 ve usb bağlantısı hazırlanmıştır. Devrenin animasyonu için tıklayınız.

Okumaya devam et

Elektronik Devre kategorisine gönderildi | , , , , , , ile etiketlendi | Yorum bırakın

TPIC6B595 ve CCS C Sürücü Programı

tpic6b595

8 bit power shitf register olan bu entegre saat ve kayan yazı devrelerinde yaygın olarak kullanılır. Her çıkışına bağlı open Drain yapıdaki mosfetlerle 500mA her çıkış için akım sürebilir ve yüksek gerilimlerde (50V) çalışabilir. Bu önemli özellikleri sayesinde bir adet tpic6b595=74hc595+uln2003 toplamına eşit olur. Okumaya devam et

CCS C Örnekleri, CCS C Sürücü kategorisine gönderildi | , ile etiketlendi | Yorum bırakın

ATX PSU ile Laboratuvar Tipi Güç Kaynağı

supply

 

Hangi seviyede olursa olsun elektronik devre yapımı ile uğraşanların vazgeçilmezi olan güç kaynakları çeşitli özelliklerine ve en önemlisi gücüne göre değişik fiyatlarla piyasada satılmaktadır. ATX kasaları beslemek için kullanılan PSU’lar hassas kesinlikte çıkış vermesi, kısa devre korumasının olması, switch mode ile de yüksek güç vermesi nedeniyle laboratuvar tipi güç kaynağı yapmak için idealdir. Çıkma bir psu bulamayıp yenisini bile alsanız bu güç kaynaklarına vereceğiniz parayla eşdeğer gücü sağlayabilecek kaynağı yapımakta kullanılan trafoyu bile alamayabilirsiniz. Bu nedenle yapımına bakmakta fayda görüyorum.

Okumaya devam et

Çeşitli kategorisine gönderildi | , ile etiketlendi | Yorum bırakın

Ütü İle Baskı Devre Yapımı

pcb_finished

 

Breadboarlar üzerine yapıp denediğimiz devrelerimiz plaket üzerine aktarmak en sıkıntılı işlerden biriydi ta ki lazer yazıcılar yaygınlaşana kadar.

Ütü ile baskı devre yaparken üç ana aşama karşımıza çıkar. Bunlar kağıt seçimi ve kağıda baskı, ütüleme, kimyasal karışıma atma. Burada ütüleme kısmı hemen herkesin yaptığında aynıdır. Farklılıklar genel olarak kağıt seçiminde ve kimyasal karışımın hazırlanmasında ortaya çıkar. Burada kağıt olarak tavsiye edeciğimiz kuşe dergi sayfası olacaktır. Özellikle fuarlarda ücretsiz olarak dağıtılan electrotech dergisinin sayfaları çok performanslıdır. Sizde muadili bir kağı ile aynı işlemi gerçekleştirebilirsiniz.

Okumaya devam et

Çeşitli kategorisine gönderildi | , , ile etiketlendi | Yorum bırakın

TTL 74 Serisi Entegre Kataloğu

                                TTL (TRANSİSTOR-TRANSİSTOR LOGİC)
Terim olarak TTL transistor-transistor logic ifadesinin kısaltılması olarak kullanılmaktadır Entegre devrelerinin tasarımında bipolar transistorler kullanılmıştır.
TTL mantık ailesi hız ve güç parametreleri açısından yedi alt gruba ayrılırlar:
I. Standart TTL
II. Yüksek – Güçlü TTL
III. Düşük-Güçlü TTL
IV. Schottky TTL
V. Düşük-Güçlü Schottky TTL
VI. Gelişmiş Düşük-Güçlü Schottky TTL
VII. Gelişmiş Schottky TTL
TTL mantık ailesi 54 veya 74 numaralı önekine sahiptirler. 54 serisi askeria maçlıdır. Çalışma sıcaklığı aralığı -55°C ile +125°C arasında iken, 74 serisi entegreler için bu aralık 0°C ila +70°C arasındadır.
Bu mantık ailesindeki entegreler genellikle AA74YYXXX şeklinde tanımlanırlar. AA harfleri entegreyi üreten firmayı gösteren harf veya harflerdir. Texas Insturuments ön ek olarak ‘SN’, National Semiconductor ‘DM’, Signetics ‘S’ kısaltmalarını kullanmaktadırlar. YY harfleri entegrenin hangi TTL alt grubuna ait olduğunu gösterir. XXX entegrenin fonksiyonunu gösteren iki veya üç basamaklı bir sayıdır.

Okumaya devam et

Çeşitli kategorisine gönderildi | , , ile etiketlendi | Yorum bırakın

CCS C ile Yedi Segment Display Uygulamaları

ccs7seg

 

Aşağıdaki şekilde görüldüğü gibi led kullanılarak yapılan rakam, harf gösterici devre elemanlarına display denir. Yaygın olan yedi parçalı led göstergeler anodu şase (ortak) ve katodu şase olmak üzere iki tipte üretilir. Okumaya devam et

CCS C Örnekleri kategorisine gönderildi | , , ile etiketlendi | Yorum bırakın

CCS C ile Hesap Makinesi Proteus Simülasyonu

hesap-makinesi

 

Pic ile yapılan bu hesap makinesinde rs232 iletişimi kullanılarak klavyeden girilen sayılaramatematiksel işlem yapıldıktan bulunan sonuç terminale geri gönderilir. Okumaya devam et

CCS C Örnekleri kategorisine gönderildi | , , ile etiketlendi | Yorum bırakın

CCS C ile Yürüyen Işık Uygulaması

pr_01_37_max

 

Kitaptan kara şimşek led programı

 

/******************************************************
 Uygulama Adı : Yürüyen Işık
 PIC PROG/DEKA : Port B jumper'ı LED konumunda olmalı
*******************************************************/

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=4000000) // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i, led; //i ve led isminde tam sayı tipinde 8 bitlik değişkenler tanıtılıyor.

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

 set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor

 output_b(0x00); // B portu çıkışları sıfırlanıyor

 while(1)
 {
 led=1; //led değişkeni değeri 1 oluyor

 for(i=0;i<=7;i++) // for döngüsü oluşturuluyor
 {
 output_b(led); // led değişkeni değeri B portuna gönder
 led=led<<1; // led değişkeni değerini 1 bit sola kaydır
 delay_ms(100); // 100 msn'lik gecikme veriliyor
 }

 led=0x80; //led değişkenine değer yükleniyor
 output_b(led); //B portuna 0b10000000 bilgisi gönderiliyor
 delay_ms(100); // 100 msn'lik gecikme veriliyor
 
 for(i=0;i<=6;i++) // for döngüsü oluşturuluyor
 {
 led=led>>1; // led değişkeni değerini 1 bit sağa kaydır
 output_b(led); // led değişkeni değeri B portuna gönder
 delay_ms(100); // 100 msn'lik gecikme veriliyor
 }
 }
}




 

Yürüyen Işık Uygulaması

CCS C Örnekleri kategorisine gönderildi | , ile etiketlendi | Yorum bırakın

CCS C ile Tuş Takımı Uygulamaları

pr_01_37_max

 

Kontrol sistemlerinde dış dünyadan insanlar tarafından veri girişleri genellikle tuş takımı (keypad-klavye) ile yapılır. Tuş takımı butonlarla gerçekleştirilebileceği gibi çeşitli hazır tuş takımları piyasada bulunmaktadır. Tuş takımı isimlendirmelerinde ilk sayı sütun, ikinci sayı ise satır sayısını belirtir. Örneğin 4×3’lük bir keypad, 4 sütun ve 3 satırdır. Tuş takımında hangi tuşa basıldığını bulmak için çeşitli yöntemler kullanılabilir. Bu yöntemlerden biri tarama yöntemidir. Butonların bir ucu satır kısmına, bir ucu da sütun kısmına bağlıdır. Denetleyici ile tarama yapılırken satırlar çıkış, sütunlar ise giriş olarak tanımlanır.

Sütunlarda hep lojik-0 (GND-şase) vardır. Hangi tuşa basıldığını anlamak için önce satırlardan biri lojik-1 diğerleri lojik-0 yapılır. Sonra sütunlar okunur, hangi giriş lojik-1 ise o satıra ait sütundaki tuşa basılmış demektir. İstenen tuşa hangi değerin verileceği programcıya aittir. Butona basıldığında ve bırakıldığında bir ark (parazit) meydana gelir. Buna tuş sıçraması da (key debounce) denilir. Tuş sıçraması butona bir kez basıldığı halde butona birden fazla basılmış ve çekilmiş gibi durum yaratır.Bu sıçramayı önlemek için programda gerekli önlemler alınmalıdır. Tedbir olarak butona basıldıktan sonra 15-20 msn gecikme verilmesi gerekir veya butondan el çekilene kadar içinden çıkılmayacak bir döngü
kurulmalıdır. Ayrıca tuş takımında aynı anda iki tuşa birden basılabilir. Bu gibi durumlarda hangi tuşun geçerli olacağı programla belirtilerek istenmeyen durumlar önlenmelidir.

Basılan tuşu LCD ekranda gösteren program

/******************************************************
 PIC16F877 ile Tuş Takımı ve LCD Uygulaması
PIC PROG/DEKA : Port B jumper'ı LCD konumunda olmalı
*******************************************************/

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(d) //Port yönlendirme komutları B portu için geçerli

#define use_portb_lcd TRUE // LCD B portuna bağlı

#include <lcd.c> // lcd.c dosyası tanıtılıyor

#define sut1 pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2 pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3 pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4 pin_d3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sat1 pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2 pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3 pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4 pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

 char tus=0; // karakter tipinde değişken tanımlanıyor

//*********** Keypad Tarama Fonksiyonu *********

char keypad_oku() // Fonksiyon ismi
{
 output_d(0x00); // D portu çıkışı sıfırlanıyor

 output_high(sat1); // 1. satır lojik-1 yapılıyor
 if (input(sut1)) // 1. sütun okunuyor
 { delay_ms(20); tus=1; }
 if (input(sut2)) // 2. sütun okunuyor
 { delay_ms(20); tus=2; }
 if (input(sut3)) // 3. sütun okunuyor
 { delay_ms(20); tus=3; }
 if (input(sut4)) // 4. sütun okunuyor
 { delay_ms(20); tus=0xA; }
 output_low(sat1); // 1. satır lojik-0 yapılıyor

 output_high(sat2); // 2. satır lojik-1 yapılıyor
 if (input(sut1)) // 1. sütun okunuyor
 { delay_ms(20); tus=4; }
 if (input(sut2)) // 2. sütun okunuyor
 { delay_ms(20); tus=5; }
 if (input(sut3)) // 3. sütun okunuyor
 { delay_ms(20); tus=6; }
 if (input(sut4)) // 4. sütun okunuyor
 { delay_ms(20); tus=0xB; }
 output_low(sat2); // 2. satır lojik-0 yapılıyor

 output_high(sat3); // 3. satır lojik-1 yapılıyor
 if (input(sut1)) // 1. sütun okunuyor
 { delay_ms(20); tus=7; }
 if (input(sut2)) // 2. sütun okunuyor
 { delay_ms(20); tus=8; }
 if (input(sut3)) // 3. sütun okunuyor
 { delay_ms(20); tus=9; }
 if (input(sut4)) // 4. sütun okunuyor
 {delay_ms(20); tus=0x0C; }
 output_low(sat3); // 3. satır lojik-0 yapılıyor

 output_high(sat4); // 3. satır lojik-1 yapılıyor
 if (input(sut1)) // 1. sütun okunuyor
 { delay_ms(20); tus=0xE; }
 if (input(sut2)) // 2. sütun okunuyor
 { delay_ms(20); tus=0; }
 if (input(sut3)) // 3. sütun okunuyor
 { delay_ms(20); tus=0xF; }
 if (input(sut4)) // 4. sütun okunuyor
 {delay_ms(20); tus=0xD; }
 output_low(sat4); // 3. satır lojik-0 yapılıyor

 return tus; // Fonksiyon "tus" değeri ile geri döner
}

//********** ANA PROGRAM FONKSİYONU*******

void main ( )
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı

 set_tris_b(0x00); // B portu komple çıkış
 set_tris_d(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş

 lcd_init(); // LCD hazırlanıyor

 printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor

 while(1) // Sonsuz döngü
 {
 lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor

 if (keypad_oku()>9) // Eğer basılan tuş değeri 9'dan büyük ise
 printf(lcd_putc,"%d",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
 else // Eğer basılan tuş değeri 9'dan büyük değilse
 printf(lcd_putc,"%d ",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
 }
}

Tuş Takımı Uygulamaları

CCS C Örnekleri kategorisine gönderildi | , ile etiketlendi | Yorum bırakın

CCS C ile Timer Uygulamaları

pr_01_37_max

 

 

PIC16F877 ile Timer0 Uygulaması

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

int i=0; // Tamsayı tipinde değişken tanımlanıyor

//****************** Timer0 Kesmesi *****************************
#int_timer0 // Timer0 kesmesi
void timer0_kesme () // Kesme fonksiyonu ismi
{
 set_timer0(60); // TMR0 değeri belirleniyor
 i++; // i değeri 1 arttırılıyor
 if (i==10) // i değeri 10'a eşitse RB0 çıkışı lojik-1 olsun
 output_high(pin_b0);
 if (i==20) // i değeri 20'ye eşitse RB0 çıkışı lojik-1 olsun ve i değeri sıfırlansın
 {
 output_low(pin_b0);
 i=0;
 }
}

/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı


 set_tris_b(0x00); // B portu komple çıkış

 output_b(0x00); // B portu çıkışı ilk anda sıfırlanıyor

 setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); // Timer0 ayarları yapılıyor
 set_timer0(60); // TMR0 değeri belirleniyor


 enable_interrupts(INT_timer0); // int_timer0 kesmesini aktif yapar
 enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver

 while(1); // Sonsuz döngü

 }

PIC16F877 ile Timer1 Uygulaması

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

int i=0; // Tamsayı tipinde değişken tanımlanıyor

//****************** Timer0 Kesmesi *****************************
#int_timer1 // Timer1 kesmesi
void timer1_kesme () // Kesme fonksiyonu ismi
{
 set_timer1(63036); // TMR1 değeri belirleniyor

 i++; // i değeri 1 arttırılıyor

 if (i==50) // i değeri 50'ye eşit olursa RB0 lojik-1 olsun
 output_high(pin_b0);
 if (i==100) // i değeri 100'e eşit olursa RB0 lojik-0 ve i=0 olsun 
 {
 output_low(pin_b0);
 i=0;
 }
}

/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı


 set_tris_b(0x00); // B portu komple çıkış

 output_b(0x00); // B portu çıkışı ilk anda sıfırlanıyor

 setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); // Timer1 ayarları yapılıyor
 set_timer1(63036); // TMR1 değeri belirleniyor


 enable_interrupts(INT_timer1); // int_timer0 kesmesini aktif yapar
 enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver

 while(1); // Sonsuz döngü

 }

PIC16F877 ile Timer2 Uygulaması

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

unsigned int kesme=0; // Tamsayı tipinde 16 bitlik değişken tanımlanıyor

//****************** Timer2 Kesmesi *****************************
#int_timer2 // Timer2 kesmesi
void timer2_kesme () // Kesme fonksiyonu ismi
{
 kesme++; // kesme değeri 1 arttırılıyor
 output_high(pin_b0); // RB0 lojik-1 yapılıyor
 output_low(pin_b0); // RB0 lojik-0 yapılıyor
}

/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 birimi devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

 set_tris_a(0x01); // RA0 pini giriş
 set_tris_b(0x00); // B portu komple çıkış

 output_b(0x00); // B portu çıkışı ilk anda sıfırlanıyor

 setup_timer_2(T2_DIV_BY_16,250,16); // Timer2 ayarları yapılıyor

 enable_interrupts(INT_timer2); // int_timer2 kesmesini aktif yapar
 enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver

 while(1) // Sonsuz döngü
 {
 if (input(pin_a0)) // RA0 butonuna basıldığında
 output_b(kesme); // kesme değerini B portuna gönder
 }

 }

timer uygulamaları

CCS C Örnekleri kategorisine gönderildi | , , , ile etiketlendi | Yorum bırakın