16×2 LCD için Karakter Oluşturucu ve Kod Üreteci


Bu konu ile ilgili daha önceki yazıları okuduysanız 3 sene önce visual basic ile bunun için şurada görebileceğiniz üzere bir masaüstü programı yazmıştım.
Yabancı kaynakları gezerken Arduino için hazırlanmış şu sayfayı [Character Creator for Arduino] gördüm ve ben de neden CCS’de yazdığımız kodlara göre olmasın ki dedim ve [Bruno Maia]‘nın yapmış olduğu bu uygulamayı değiştirerek CCS için kullanılabilecek hale getirdim. Düzenlemiş olduğum bu araçtan elde ettiğiniz kodun üzerinde ufak tefek değişiklikler yaparak cıvıl cıvıl karakterler, demolar hazırlayabilirsiniz. İyi çalışmalar.

Karakter oluşturucuyu kullanmak için tıklayınız

Yüzey Montaj Lehimleme ve Vidalar Hakkında Herşey

Çizgi-Tagem’in hazırlamış olduğu SMD malzeme lehimleme ile ilgili tüm detaylar ve bunun sonunda elektronik hobi ile uğraşanların, prototip oluşturmaya çalışan kişilerin ya da mühendislerin ihtiyaç duyabileceği şekilde vidalar ile ilgili herşey hakkında temel bilgiler içerir.

 

 

Yararlı olabileceğini düşünüyorum. PDF dosyasını okumak için tıklayınız.

PIC16f628A ile Saat, Takvim, Alarm (7 Segment Display)

Öncelikle kullanımı hakkında ufak bir bilgi verdikten sonra devre şeması ve kodunu da aktaracağım.

Yukarıdaki videoda proteus simülasyonunu görmektesiniz. 7 segment üzerinde sırasıyla 8 saniye saat bilgisi ve 2 saniye tarih bilgisi gösterilmektedir. Saat gösterimi esnasında  yarım saniye aralıklarla saniye ışığı yanıp sönmektedir. Simülasyonda zaman farklı gittiği için bu süreler daha farklı görülmektedir. Saat üzerinde 3 adet buton bulunmaktadır. Bunları yukarı, aşağı ve tamam olarak adlandırdım. Tamam’a basmadığımız sürece yukarı ve aşağı tuşlarının hiçbir işlevi yoktur. Tamam’a bastığımız zaman ayar moduna gireriz ve her tamama basışımızda sırasıyla

1-Saat,
2-Dakika,
3-Gün,
4-Ay,
5-Yıl,
6-Alarm Saati,
7-Alarm Dakikası
seçenekleri ile karşılaşırız. Yukarı ve aşağı tuşları ile bu seçenekleri istediğimiz gibi ayarlayabilir ve 8.kez Tamam’a basarak ayar modundan çıkabiliriz. Devamı

2×16 LCD Kayan Yazı Uygulaması

Vakit buldukça uğraşmakta olduğum ufak bir projem var ve hazırladığım bir kaç fonksiyonun sizin de işinize yarayabileceğini düşünüyorum. Eksiklikler olabilir, geliştirilebilir ve ilham verebilir diye paylaşmak istedim.

Sola Kaydırma fonksiyonu

void solaKaydir(char* str, int32 hiz, int satir) {

   int uzunluk, i;

   uzunluk = strlen(str) + 16;//boşluğun da kayması için karakter sayısına 16 daha eklenmeli
   lcd_gotoxy(16, satir);//Yazı yazmaya ensağdan başla

   printf(lcd_putc, "%s", str);//yazıyı ekrana yazdır.
   delay_ms(hiz);

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

      lcd_send_byte(0, 24);//1 sola kaydır komutu
      delay_ms(hiz);//belirtilen hız kadar bekle
   }
   lcd_putc("\f");//ekranı temizle
}

Devamı

2×16 LCD Sık Kullanılan Komut Seti

No.
Tanım Onaltılık Onluk
1 Function Set: 8-bit, 1 Line, 5×7 Dots 0×30 48
2 Function Set: 8-bit, 2 Line, 5×7 Dots 0×38 56
3 Function Set: 4-bit, 1 Line, 5×7 Dots 0×20 32
4 Function Set: 4-bit, 2 Line, 5×7 Dots 0×28 40
5 Girdi modu 0×06 6
6 Gösterim kapalı, imlec kapalı
(DDRAM içeriği temizlenmez)
0×08 8
7 Gösterim açık, imleç açık 0x0E 14
8 Gösterim açık, imleç kapalı 0x0C 12
9 Gösterim açık, imleç yanıp söner 0x0F 15
10 1 Sola Kaydır 0×18 24
12 1 Sağa Kaydır 0x1C 30
13 İmleci 1 sola kaydır (lcd_putc(“\b”) aynısı) 0×10 16
14 İmleci 1 sağa kaydır 0×14 20
15 Ekranı temizle (DDRAM içeriği de temizlenir) 0×01 1
16 İmleç pozisyonunu ayarla (DDRAM) 0×80+add* 128+add*
17 CGRAM pozisyonunu ayarla 0×40+add** 64+add**

Sık kullanılabilecek LCD komut seti

Yukarıdaki komutlar LCD uygulamalarınıza renk katabilecek fonksiyonlar yazmanızı sağlar. Yeni komutlara ihtiyaç duydukça güncelleyebilirim.

CCS Pic C Compiler’a göre örnek kullanım

lcd_init(); //LCD ayarla
lcd_send_byte(0, 1); // Ekranı temizle lcd_putc("\f"); ile aynı
lcd_gotoxy(1,1);
lcd_send_byte(0, 15);  // İmleç yanıp söner

while(true) {
   lcd_putc("\fE.Merkezim"); // ekranı siler ve yazıyı yazar
   delay_ms(1000); // 1sn bekler
   lcd_send_byte(0, 16); // İmleci 1 sola kaydır lcd_putc("\b") ile aynı
   delay_ms(2000); // bu beklemede imlecin m harfi üzerine gelip yanıp söndüğünü görebilirsiniz
   lcd_putc(".org"); // Ekranda artık E.Merkezi.org yazar
   delay_ms(2000);
}

Ipad 3D Görüntü

http://www.youtube.com/watch?v=bBQQEcfkHoE

Aslında bu videoyu siteye eklediğim youtube eklentisini denerken keşfettim. Belki ilham verici olur diye kaldırmak istemedim.

Ipad’in ön yüzündeki kamera ile yüz tarama yapılıyor ve gözlerinize göre görüntüyü sanki 3 boyutlu birşeye bakıyormuşsunuz hissi uyandırıyor. Videonun bir kısmında siyah ve beyaz çizgili bir görüntü sahnesi var, orada sanki elinde bir ipad değil de derinliği olan bir kutu tutuyormuşsunuz gibi. Başarılı bir uygulama olmuş.

Sinüs ve Cosinüs Dalgalar

Cosinus ve Sinüs Dalga arasındaki faz farkı

Cosinus sinyal sinüs sinyal ile aynı şekle sahiptir. Ancak cosinus sinyal, sinüs’den  +90o öndedir ya da sinüs sinyal, cosinüs’den -90o geridedir şeklinde ifade edilir.

Cosinüs ve Sinüs Dalga arasındaki ilişki

cos(wt + θ) = sin(wt + θ + 90o)

sin(wt + θ) = cos(wt + θ – 90o)

İki sinusoidal sinyali karşılaştırabilmek için 3 şart gereklidir.

  1. Aynı frekansa sahip olmalıdırlar.
  2. Aynı türden olmalıdırlar.
  3. Aynı işarete sahip olmalıdırlar.

Bu yüzden iki sinyal arasındaki faz farkını hesaplamak için birbirleri arasında aşağıda görüldüğü gibi çevrim yapmamız gerekir.

-sin(wt) = sin(wt ± 180o)

-cos(wt) = cos(wt ± 180o)

-cos(wt) = sin(wt ± 270o)

±sin(wt) = cos(wt ± 90o)

±cos(wt) = sin(wt ± 90o)

-sin(wt) = sin(-wt)

-cos(wt) = cos(-wt)

CCS ile Pic C Programlama

2008′de açılmış ve benim henüz yeni farketmiş olduğum bir site: http://www.teknobakis.com. Kocaeli Üniversitesi Elektronik ve Haberleşme Mühendisliği Bölümü mezunu Emrah AYDIN bu site üzerinde gerçekten çok güzel emekler harcamış. Sitede başka bilgiler de yer alıyor, fakat kendisi de özellikle Pic C programlama üzerine yoğunlaşmış bu açıkça görülüyor. Ben de çok yararlı olabileceğini düşündüğüm için Emrah Aydın’ın yazmış olduğu konuların listesini buradan link veriyorum. Kesinlikle işinize yarayacaktır.

CCS-C ile PIC Programlama konusunda sitede yayınlanmış olan yazıların listesi

  1. Giriş
  2. PIC mikro denetleyicilerini tanıyalım
  3. CCS-C Compiler Resimli Anlatım
  4. Temel C Bilgisi – 1
  5. Temel C Bilgisi – 2
  6. Temel C Bilgisi – 3
  7. Dahili Giriş Çıkış Komutları ile PIC Portlarının Kullanımı
  8. Bit ve Byte İşlemleri Dahili Fonksiyonları
  9. Önişlemci Direktifleri – 1
  10. Önişlemci Direktifleri – 2
  11. Önişlemci Direktifleri – 3
  12. Gecikme Fonksiyonlarının Kullanımı
  13. PIC’lerin Temel Donanımsal Bağlantıları
  14. Portlar Led Buton ve Röle Kullanımı
  15. PIC Timer Modülleri ve Kullanımı – 1
  16. PIC Interrupts (Kesmeler)
  17. PIC Timer Modülleri ve Kullanımı – 2
  18. PIC Timer Modülleri ve Kullanımı – 3
  19. İşlemci Kontrol Fonksiyonları
  20. Adc Kontrol fonksiyonları

0 – 99 Dijital Sayıcı

Bir önceki yazıda 0-9 sayıcı devresinden bahsetmiştik. Şimdi yine o devreyi baz alarak sayma hanesini bir artıracağız. Bu yüzden öncelikle 0-9 sayıcı konusunu okumalısınız.

Şekil 1 – 0-99 Sayıcı Devre Şeması

Devre şemasında görüldüğü üzere bir önceki devrenin TCU ve TCD bacaklarına aynı devreden bağlayarak sayıcı hanesini çoğaltmış bulunduk. Bu şekilde bağlanmasının temelinde 74192 entegresinin özelliği yatıyor. 74192 entegresi 0′dan 9′a kadar sayan bir entegredir ve entegre çıkışını 9′a kadar saydırıp 9′dan sonra da artırmaya devam edersek entegre TCU çıkışını aktif edecektir. TCU ve TCD bacakları aktif sıfır uçlar olduğu için aktif durumunda TCU ucunu  ’0′ göreceğiz. Eğer bu bacağı bir sonraki devrenin ‘UP’; yukarı saydıran bacağına bağlarsak, 1′ler hanesini her 0-9 saydırmamızdan sonra tıpkı bir butonla tetiklemiş gibi 10′lar hanesini 1 artırmış oluruz.  Aynı şekilde 1′ler hanesini geriye saydırırsak 74192 entegresi 0′dan sonra TCD bacağını aktif edecektir. Bu durumda 1′ler hanesinin TCD çıkışını 10′lar hanesinin DN girişine bağlarsak her 9-0 saydırmamızda 10′lar hanesinin DN girişini aktif etmiş oluruz. Böylece iki devre birbiri ile kaskat çalışmış olur. İstersek 10′lar hanesinin TCU ve TCD çıkışlarını da ekleyeceğimiz başka bir 74192 sayıcı katının girişlerine bağlarsak devremiz 0-999 olur. Hatta istersek bu şekilde sonsuz 74192 entegresini sonsuz şekilde birbirine kaskat bağlarsak 0-∞ sayıcı bile yapabiliriz.

TCU ve TCD çıkışları aktif sıfır, UP ve DN girişleri aktif bir. Peki birbirini nasıl tetikliyorlar diye soracak olursanız: UP ve DN girişleri yükselen kenar ile tetiklenirler, bu yüzden birbirlerini araya başka bir eleman koymadan tetikleyebilme özelliğine sahiptirler.

İyi çalışmalar..

0 – 9 Hareket Sensörlü Dijital Sayıcı

0 – 9 Hareket sensörlü dijital sayıcı devresi iki ayrı elektronik sensör devresinden alınan bilgilere göre çalışmaktadır. Devre özellikle bir ortama giren ve çıkan, hareketli nesneleri saymak için tasarlanmıştır. Örneğin; otoparka giren ve çıkan araçları ya da bir binaya giren ve çıkan insanları sayma işlemi bu devre ile gerçekleştirilebilir. Devre, Şekil-1’de görüldüğü üzere temelde sensör, reset, sayıcı (hafıza), decoder ve gösterge katından oluşmaktadır.

Şekil 1 – Devre Blok Şeması


Sensör katında sensörleri temsil edebilecek ileri ve geri artırımlar için 330 ohm’luk direnç ve butonlardan oluşan iki adet Pull-Down devresi kullanılmıştır. Butonlar basılı durumda değilken sayıcı katına lojik 1 ( +5V ) gitmektedir.

Reset katında 330 ohm’luk direnç ve bir butondan oluşan Pull-Up devresi kullanılmıştır.

Sayıcı katı sadece 0-9 ileri-geri sayıcı 74192 entegresidir. 74192 entegresi 4 bitlik bilgi girişi (D0 D1 D2 D3), 4 bitlik bilgi çıkışı (Q0 Q1 Q2 Q3), yükleme aktif girişi (LOAD), RESET girişi, UP ve DOWN girişleri, BORROW ve CARRY çıkışlarından oluşmaktadır. UP ve DOWN girişleri yükselen kenar ile tetiklenmektedir. Bu yüzden Pull-Down devrelerinde butona basıp çektiğimiz anda lojik 0’dan lojik 1’e yükselme olacağından sayıcı tetiklenerek çıkışı bir artıracaktır ya da bir azaltacaktır. Devrede LOAD girişi pasif yapılarak 74192 bilgi girişi iptal edilmiştir.

Kodlayıcı (Decoder) katında 7447 entegresi bulunmaktadır. 7447 entegresi sayıcı katından gelen BCD kodu, entegre çıkışında 7 segment bir göstergenin anlayabileceği 7 bitlik koda dönüştürerek kodlama işlemi yapmaktadır.

Gösterge katında ise 7 adet 330 ohm direnç ve 1 adet ortak anot 7 segment gösterge bulunmaktadır.

Şekil 2 – Devre Açık Şeması


Devrenin simülasyonu Proteus Isis programı ile gerçekleştirildikten sonra breadboard üzerinde doğru bağlantı şekli ile malzemelerin yerleşimi sağlanarak devreye enerji verilerek çalıştırılmıştır.

En Üst
 

Bad Behavior has blocked 140 access attempts in the last 7 days.