Teknomerkez
TR EN ES
Konular

JAL ile Programlı PIC16F84 Entegreli LCD Göstergeli Ayarlanabilir Saat Devresi

Yazar: Mehmet Yılmaz
Tarih: 30.09.2007
Türkçe

Bu devre, saat olarak kullanılmak amacıyla tasarlanmıştır. Bu devre ile saati istediğimiz değere ayarlayabiliriz. Kristal osilatör referaslı olarak çalıştığı için bir kez ayarlandıktan sonra geri kalma veya ileri gitme gibi sorunlar ortaya çıkmaz. Ayarlaması çok basit ve pratiktir. Saat devresi olarak sunulan pek çok devrenin aksine bu devre eksiksiz saat özelliklerinin hepsini üzerinde taşımaktadır.

Devrenin Çalışması ve Yapısı:

Devrede PIC 16F84 mikrokontrolör entegresi kullanılmıştır. Programı ise JAL ile hazırlanmıştır. Devreyi ve aynı zamanda saati sıfırlamak amacıyla bir adet buton kullanılmıştır. PIC16F84 entegresinin 4 nolu RESET ucuna bağlı olan bu butona basılıp bırakıldığı anda devre ve saat değerleri sıfırlanır yani resetlenmiş olur. Saati ve dakikayı ayarlamak amacıyla iki adet buton kullanılmıştır. Saati ayarlamak için PIC16F84 entegresinin 18 nolu RA1 ucuna bağlı olan B2 butonuna basılınca o anda göstergede bulunan saat değeri bir artırılır. Sürekli basılı tutulursa yarım saniye aralıklarla saat değeri birer birer artar. Bu artırma sırasında saniyenin değeri ise sıfırlanır. Saat için her yapılan ayarlamadan sonra saniye değeri sıfırdan saymaya başlar. Dakikayı ayarlamak için, aynı saati ayarladığımız yöntemi kullanırız. Dakikayı ayarlamak için PIC16F84 entegresinin 17 nolu RA0 ucuna bağlı olan B1 butonuna basılınca o anda göstergede bulunan dakika değeri bir atırılır. Sürekli basılı tutulursa yarım saniye aralıklarla dakika değeri birer birer artar. Bu artırma sırasında saniyenin değeri ise sıfırlanır. Dakika için her yapılan ayarlamadan sonra saniye değeri sıfırdan saymaya başlar.

Devrede 2 satırlı 16 karakterli LCD ekran kullanılmıştır. Göstergenin birinci satırında “Saat” ibaresi yazılıdır. İkinci satırda ise saat bulunmaktadır. LCD ekranın kontrast ayarını yapmak için RV1 10K ayarlı direnci kullanılmıştır. Devrenin mikrokontrolör yazılımında sayıcı olarak Timer0 zamanlayıcı/sayıcı'sı kullanılmıştır. Timer0'ın zaman aşımı kesmesi özelliğinden yararlanılarak zaman ve saydırma işlemi gerçekleştirilmiştir. Devrede kullanılan osilatörün frekansı 4.194304 Mhz olarak seçilmiştir. Programda kullanılan işlemler açık olarak yazıldığından ve bölümler halinde düzenlendiğinden yeterince bilgiyi içermektedir.

Devrenin Şeması:

Şekil 1: LCD göstergeli ayarlı saat devresi şeması.

Devrenin resmi:

Resim 1: Tamamlanmış devrenin çalışır şekildeki görünümü.

Devrenin Malzeme Listesi:

U1: PIC 16F84
LCD1: İki satır LCD
R1, R2: 470
R3: 1K
RV1: 1K trimpot
XTAL: 4.194304MHz
C1, C2: 22pF
B1-B3: Buton

Ekler:

JAL Devreye ait programın Jal ile hazırlanmış dosyasına bakmak için tıklayınız.
Devreye ait programın Jal ile hazırlanmış dosyasını sıkıştırılmış zip dosya olarak indirmek için tıklayınız.
Devreye ait programın HEX yazılım dosyasını sıkıştırılmış zip dosya olarak indirmek için tıklayınız.

Devrenin JAL ile hazırlanan programı:

-- ====================================
-- mehmet.yilmaz@teknomerkez.net
-- 29.09.2007
-- LCD ayarli saat uygulamasi
-- ====================================
include 16f84_4 -- 4.194304 Mhz'lik osilator kullanilacak
include jlib
include hd447804  -- LCD ekran icin kullanilacak
-- === PORTLARIN YONLENDIRILMESI ===
pin_a0_direction = input
pin_a1_direction = input
-- === DEGISKENLER ===
var byte saat = 0
var byte dakika = 0
var byte saniye = 0
var byte clock = 0
-- === AYARLAMALAR ===
hd44780_clear
-- === ALT PROGRAMLAR ===
procedure saat_yazisi is
  hd44780 = "S"
  hd44780 = "a"
  hd44780 = "a"
  hd44780 = "t"
end procedure
procedure saat_ayarla is
 if pin_a1 == high then
  delay_500ms
  saat = ( saat   1 ) % 24
  saniye = 0
 end if
 if pin_a0 == high then
  delay_500ms
  dakika = ( dakika   1 ) % 60
  saniye = 0
 end if
end procedure
procedure saat_sayaci is
 pragma interrupt
 clock = ( clock   1 ) % 32
 if  clock == 0 then
  saniye = ( saniye   1 ) % 60
  if saniye == 0 then
   dakika = dakika   1
   if dakika == 60 then
    dakika = 0
    saat = saat   1
    if saat == 24 then
     saat = 0
    end if
   end if
  end if
 end if
 intcon_t0if = low
end procedure
option = 0b10000110 -- 1/128
tmr0   = 0
intcon_t0if = low
intcon_t0ie = true
intcon_gie  = true
-- === PROGRAM BASI ===
forever loop
  saat_ayarla
  hd44780_line1
  saat_yazisi
  hd44780_line2
  print_decimal_2 ( hd44780, saat, "0" )
  hd44780 = ":"
  print_decimal_2 ( hd44780, dakika, "0" )
  hd44780 = ":"
  print_decimal_2 ( hd44780, saniye, "0" )
end loop
-- === PROGRAM SONU ===

Yorumlarınız

çetin - 24.10.2007
mrb hocam ya bu devrenın kodlarını nasıl bulabılırım
bana yardımcı olursanız swvınırım.bırde birde lcd ekranı nasıl bulabılırım
Mehmet Yılmaz - 24.10.2007
Sayın Çetin, Kodlar "Ekler:" başlığı altında ek dosyada verildi. LCD ekranı elektronik malzeme satıcılarından alabilirsiniz.
samet - 29.10.2007
hocam merhaba.bu jal dediğiniz şey programmı?programsa nasıl indirebilirim.yardımcı olursanız sevinirim hocam pic konusunda daha yeniyimde.bide kodları bi zamet gönderirseniz.
Mehmet Yılmaz - 29.10.2007
Sayın Samet, kodlar yazının eklerinde "ls-004_hex.zip" ekinde. İndirip PIC16F84'ü bu dosya ile programlayıp çalıştırabilirsin.
JAL, PICBASIC gibi PIC programlamada kullanılan bir programdır. http://www.projearsivim.com/ sitesinde türkçe bilgiler bulabilirsin.
samet - 19.11.2007
hocam saat devresini ısıs da çizdim fakat çalıştıramadım.hocam eğer ısıs da çizilmiş hali varsa yardımcı olurmusunuz ve gönderirmisiniz
SALİH - 26.11.2007
sayın hocam ısıs de bu devreyi çizdim ama çalışmadı sizde ısı ver areste çizilmiş hali varsa gönderirmisiniz saygılar
SALİH - 09.12.2007
sayın hocam bu devrenin asembly kodalrını nerden bulabilirim şimdiden tsk
oguzhan - 11.12.2007
hocam öncelikle teşekkür ederim çalışmanız için...bu devrenin baskı devre şemasını çıkarmadım sizde varsa mailime atabilir misiniz?çok sevinirim.. teşekkür ederim
ilkay - 30.12.2007
ya hocam devre için teşekkürederim ama ben bu devreyi çalıştıramadım hex uzantılı dosyayı indirdim picin içine attım ama lcd de sadece çizgi çıkıyo çalışmıyo kodlerde bi hata olabilirmi sizce neden çalışmıyo olabilir devree kesinlikle çalışıyomu bu verdiginiz las.hex dosyasındaki kodlarla en kısa zamnda cvp yazarsanız sevinirim teşekkürler...
talha - 15.03.2008
hocam bu devreyi ilkay yapamaış zannediyorum proğramda hata çıkmış.bu devre kesin olarak çalışıyor mu yoksa çalışmıyor mu.
yağızcan - 03.07.2008
merhabalar hocam ben serkan ayyıldızın jal ile pic programlama adındaki kitabını aldım sizin yaptığınız gibi saat yaptım ve çalıştırdım bunu 16f628 in dahili osc.sini kullanarak yaptım ama bir dakikada 4 saniye gecikmeli kayma yaparak çalışıyor. sizin devrenizi yapmak istiyorum tam gerçek zamanlı olarak çalışması için 4 mhz lik kristal var piyasada ( 4.194304 olmasımı gerekir ) bu konuda gerçek zamanı test ettinizmi çünkü projemde 1 yıllık saat programı olacağından sapma olmaması gerektiği için sizi rahatsız ettim. şimdiden çok teşekkürler iyi çalışmalar.
Mehmet Yılmaz - 03.07.2008
Sayın yağızcan, Devrede 4.194304 Mhz'lik osilator kullanilması gerekiyor. Eğer JAL programını incelerseniz

option = 0b10000110 -- 1/128

satırında tanımlanan option değeri ile elde edilen bölüm saniyeyi tam zamanlı olarak veriyor. Sizin yaptığınız gibi dahili osilatör kullanırsanız bölüm küsüratlı çıkar.
Option değeri açıklamaları için http://www.teknomerkez.net/makale.asp?konu=333 adresine bakınız.
yağızcan - 14.07.2008
çok teşekkür ederim hocam şimdi sıra dedikleriniz yönünde projemi yeniden yapıp olumlu sonuçlar almaya geldi iyi çalışmalar
yağızcan nazik - 16.07.2008
merhabalar hocam ben yağızcan. daha önce size jal ile yaptığınız bir saatteki osc ile ilgili soru sormuştum. bir sorum ve bir ricam olucak sizlere, pic 16f628 ve pic 16f88 kullanırken harici osc yi aktifleştiremiyeriyorum. dahili osc kullanınca programlar normal çalışıyor fakat dışarıdan kristal kullanınca devre hiç çalışmıyor. kristale bağlı kondansatör değerleri sizin saatinizde yaptığınızın aynısı ve option değerleride aynısı ve kristal de aynısı fakat aktifleştiremiyorum. bir de ricama gelicek olursak sizinle telefon yada yüzyüze görüşüp bazı projelerimizi anlatmak istiyoruz. eğer sizin açınızdanda bir mahsuru yoksa sizinle canlı olarak temasa geçebileceğimiz bir telefon numarası isteyebilirmiyiz şimdiden teşekkür ederim iyi çalışmalar
ahmet - 04.09.2008
ELLERİNE SAĞLIK DEVREYİ YAPTIM %100 CALISIYOR
sercan - 16.10.2008
merhaba sayın hocam ben JAL ile Programlı PIC 16F84 Entegreli LCD Göstergeli Ayarlanabilir Saat Devresini aldım ama data sheet ney onu bulamadım hoca istedi bır soylerseniz cok güzel olucak saygılarım la

Bir yorum ekleyin

İsim:
E-posta:
Yorumunuz:
Güvenlik Kodu:
 
Tüm alanları doldurmak zorunludur. Yorumunuz kontrol edilince yayınlanacaktır. E-posta adresi yayınlanmaz.
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>