Jalv2 ile Sayıcı Devreleri

| Haziran 11, 2023 Tarihinde güncellendi
Jalv2 ile Sayıcı Devreleri

16F628 Entegresi kullanılarak Hazırlanmış ve Jalv2 ile kodlanmış 3 adet sayıcı devresi
ve kaynak kodları Yer almaktadır. Çalışma videoları içerisindedir.

1) 0-99 Sayıcı Devresi

0’dan başlayarak 99’a kadar saymak yapabilir. İleri ve geri saydırılabilmektedir.

2) 0-999 Sayıcı Devresi

0’dan başlayarak 999’a kadar saymak yapabilir. İleri ve geri saydırılabilmektedir.

3) 0-9999 Sayıcı Devresi

0’dan başlayarak 9999’a kadar saymak yapabilir. İleri ve geri saydırılabilmektedir.

Devreler PIC16F628 Mikrodenetleyicisi üzerine kurulu olup programı tarama yöntemi kullanılarak, Jalv2 dili ile yazılmıştır. Devre plakete yapıldığında sağ tarafta bulunan mavi çerçeve içindeki dirençler, sadece simülasyonun sağlıklı çalışması için kullanıldığından dolayı kullanılmayacaktır. Devreler de harici kristal yerine 16F628 içerisindeki kristal dahili osilatör kullanılmıştır. Uygulamada kristal elemanlarını kullanmaya gerek yoktur.

Sercan TEK

boll

16F628 ile 0..99 İleri ve Geri Sayıcı Devresi

16f628-ile-0-99-ileri-ve-geri-sayici-devresi

Geri butonuna basıldığında sayı 1 eksilir. İleri butonuna basıldığında ise sayı 1 artmaktadır. Sayı 99 olduğunda sıfırlanmaktadır.

Malzeme Listesi:

  • 1 x 16F628
  • 2 x 7 segmentli display(Ortak Katot)
  • 3 x Buton
  • 2 x Bc237 Transistör
  • 7 x 330 Ohm Direnç
  • 3 x 10K Direnç
  • 2 x 1K direnç
  • 1 x 100 nf Seramik Kondansatör

Jalv2 Kaynak Kodu :


-- ------------------------------------------------------------
 -- Programın Adı : Sayıcı Devresi 0..99 (ileri - geri)
 -- Programcı : SsEeRrCcAaNn -- Sercan TEK --
 -- Tarih : 12.11.2011
 -- Kütüphaneler : 16F628a
 -- Compiler : Jalv2 2.4o
 -- ------------------------------------------------------------

------------------------ Kullanılacak Pıc ---------------------
include 16F628a
pragma target clock 4_000_000 -- Kristal 4 MHZ
pragma target osc INTOSC_NOCLKOUT -- Dahili OSC
pragma target WDT DISABLED -- WDT Kapalı
pragma target PWRTE ENABLED -- power up timer Açık
pragma target MCLR External -- mclr pini kullanılıyor
pragma target LVP DISABLED -- LVP Kapalı

enable_digital_io() -- Tüm pinler Dijital

------------------ Pin Yönlendirme İşlemleri ------------------

portb_direction = all_output -- Portb komple çıkış (Display)
alias display is portb

pin_a6_direction = input -- Geri Butonu
alias geri is pin_a6

pin_a7_direction = input -- İleri Butonu
alias ileri is pin_a7

pin_a2_direction = output -- Onlar Display
alias onlar is pin_a2

pin_a3_direction = output -- Birler Display
alias birler is pin_a3

-- Başlangıç Ayarları
birler = false
onlar = false
display = low
--------------------------------------------------------------

var byte Sayi = 0 -- Artıp azaltacağımız Sayımız

-- Gerekli Gecikmeleri Sağlayan Alt Program
procedure bekle_1ms(word in n) is
for n loop -- Döngü kadar 1 ms Gecikme Yap
_usec_Delay(1000) -- 1 ms gecikme Yaratır.
end loop
end procedure

-- Parametre olarak girilen sayının 7segment karşılığı verilir
Function digit(byte in int) return byte is -- Ortak Katot
case int of
0: return 63
1: return 6
2: return 91
3: return 79
4: return 102
5: return 109
6: return 125
7: return 7
8: return 127
9: return 111
end case
end function

-- Butonlara Basılıp basılmadığını Kontrol Eder
procedure Buton_Kontrol is
if (ileri == true) then -- İleri Butonuna Basıldı
bekle_1ms(35) -- Buton Ark Süresi Gecikme
sayi = (sayi + 1) % 100 -- Sayıyı 1 arttır 0..99 arası Kalsın
end if

if (geri == true) then -- Geri Butonuna Basıldı
bekle_1ms(35) -- Buton Ark Süresi Gecikme
if sayi > 0 then -- Sayı 0 dan büyükmü ?
sayi = (sayi - 1) -- Büyük ise sayıyı 1 azalt
end if
end if
end procedure

-- Sayı değişkenini Displaylerde gösteren alt program
procedure goster is
for 20 loop -- 20*5 = her sayı 100 ms ekranda kalır
display = digit(sayi / 10) -- Sayının onlar basamağı gösteriliyor
onlar = high -- Onlar basamağı Aktif
bekle_1ms(5) -- 5 ms Bekle
onlar = false -- onlar basamağı Pasif

display = digit(sayi % 10) -- Sayının birler basamağı gösteriliyor
birler = high -- Birler basamağı Aktif
bekle_1ms(5) -- 5 ms Bekle
birler = false -- Birler basamağı Pasif
end loop
end procedure

forever loop -- Sonsuz Döngü
buton_kontrol -- Butonları Kontrol Et
goster -- Sayıyı göster
end loop

boll

16F628 ile 0..999 İleri ve Geri Sayıcı Devresi

16f628-ile-0-999-ileri-ve-geri-sayici-devresi

Devrede geri butonuna basıldığında sayı 1 eksilir. İleri butonuna basıldığında ise sayı 1 artmaktadır. Sayı 999 olduğunda sıfırlanmaktadır.

Malzeme Listesi:

  • 1 x 16F628
  • 3 x 7 segmentli display(Ortak Katot)
  • 3 x Buton
  • 3 x Bc237 Transistör
  • 7 x 330 Ohm Direnç
  • 3 x 10K Direnç
  • 3 x 1K direnç
  • 1 x 100 nf seramik kondansatör

Jalv2 Kaynak Kodu :


-- ------------------------------------------------------------
 -- Programın Adı : Sayıcı Devresi 0..999
 -- Programcı : SsEeRrCcAaNn -- Sercan TEK --
 -- Tarih : 12.11.2011
 -- Kütüphaneler : 16F628a
 -- Compiler : Jalv2 2.4o
 -- ------------------------------------------------------------

------------------------ Kullanılacak Pıc ---------------------
include 16F628a
pragma target clock 4_000_000 -- Kristal 4 MHZ
pragma target osc INTOSC_NOCLKOUT -- Dahili OSC
pragma target WDT DISABLED -- WDT Kapalı
pragma target PWRTE ENABLED -- power up timer Açık
pragma target MCLR External -- mclr pini kullanılıyor
pragma target LVP DISABLED -- LVP Kapalı

enable_digital_io() -- Tüm pinler Dijital

------------------ Pin Yönlendirme İşlemleri ------------------

portb_direction = all_output -- Portb komple çıkış (Display)
alias display is portb

pin_a6_direction = input -- Geri Butonu
alias geri is pin_a6

pin_a7_direction = input -- İleri Butonu
alias ileri is pin_a7

pin_a1_direction = output -- Yüzler Display
alias Yuzler is pin_a1

pin_a2_direction = output -- Onlar Display
alias onlar is pin_a2

pin_a3_direction = output -- Birler Display
alias birler is pin_a3

-- Başlangıç Ayarları
birler = false
onlar = false
yuzler = false
display = low
--------------------------------------------------------------

var word Sayi = 0 -- Artıp azaltacağımız Sayımız

-- Gerekli Gecikmeleri Sağlayan Alt Program
procedure bekle_1ms(word in n) is
for n loop -- Döngü kadar 1 ms Gecikme Yap
_usec_Delay(1000) -- 1 ms gecikme Yaratır.
end loop
end procedure

-- Parametre olarak girilen sayının 7segment karşılığı verilir
Function digit(byte in int) return byte is -- Ortak Katot
case int of
0: return 63
1: return 6
2: return 91
3: return 79
4: return 102
5: return 109
6: return 125
7: return 7
8: return 127
9: return 111
end case
end function

-- Butonlara Basılıp basılmadığını Kontrol Eder
procedure Buton_Kontrol is
if (ileri == true) then -- İleri Butonuna Basıldı
bekle_1ms(50) -- Buton Ark Süresi Gecikme
if sayi < 999 then -- Sayıyı 1 arttır 0..999 arası Kalsın sayi = (sayi + 1) else sayi = 0 end if end if if (geri == true) then -- Geri Butonuna Basıldı bekle_1ms(50) -- Buton Ark Süresi Gecikme if sayi > 0 then -- Sayı 0 dan büyükmü ?
sayi = (sayi - 1) -- Büyük ise sayıyı 1 azalt
end if
end if
end procedure

-- Sayı değişkenini Displaylerde gösteren alt program
procedure goster is
var byte basamak[3]
basamak[2] = byte((sayi / 100)) -- Yüzler basamağı Alındı
basamak[1] = byte((sayi % 100)/10) -- Onlar Basamağı Alındı
basamak[0] = byte((sayi % 100)% 10) -- Birler basamağı Alındı

for 11 loop -- 11*4 = her sayı 44 ms ekranda kalır
display = digit(basamak[2]) -- Sayının yuzler basamağı gösteriliyor
yuzler = high -- Yüzler basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
yuzler = false -- Yüzler basamağı Pasif

display = digit(basamak[1]) -- Sayının Onlar basamağı gösteriliyor
onlar = high -- onlar basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
onlar = false -- onlar basamağı Pasif

display = digit(basamak[0]) -- Sayının birler basamağı gösteriliyor
birler = high -- Birler basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
birler = false -- Birler basamağı Pasif
end loop

end procedure

forever loop -- Sonsuz Döngü
buton_kontrol -- Butonları Kontrol Et
goster -- Sayıyı göster
end loop

boll

16F628 ile 0..9999 İleri ve Geri Sayıcı Devresi

16f628-ile-0-9999-ileri-ve-geri-sayici-devresi

Geri butonuna basıldığında sayı 1 eksilir. İleri butonuna basıldığında ise sayı 1
artmaktadır. Sayı 9999 olduğunda sıfırlanmaktadır.

Malzeme Listesi:

  • 1 x 16F628
  • 4 x 7 segmentli display(Ortak Katot)
  • 3 x Buton
  • 4 x Bc237 Transistör
  • 7 x 330 Ohm Direnç
  • 3 x 10K Direnç
  • 4 x 1K direnç
  • 1 x 100 nf Seramik Kondansatör

Jalv2 Kaynak Kodu :


-- ------------------------------------------------------------
 -- Programın Adı : Sayıcı Devresi 0..9999
 -- Programcı : SsEeRrCcAaNn -- Sercan TEK --
 -- Tarih : 12.11.2011
 -- Kütüphaneler : 16F628a
 -- Compiler : Jalv2 2.4o
 -- ------------------------------------------------------------

------------------------ Kullanılacak Pıc ---------------------
include 16F628a
pragma target clock 4_000_000 -- Kristal 4 MHZ
pragma target osc INTOSC_NOCLKOUT -- Dahili OSC
pragma target WDT DISABLED -- WDT Kapalı
pragma target PWRTE ENABLED -- power up timer Açık
pragma target MCLR External -- mclr pini kullanılıyor
pragma target LVP DISABLED -- LVP Kapalı

enable_digital_io() -- Tüm pinler Dijital

------------------ Pin Yönlendirme İşlemleri ------------------

portb_direction = all_output -- Portb komple çıkış (Display)
alias display is portb

pin_a6_direction = input -- Geri Butonu
alias geri is pin_a6

pin_a7_direction = input -- İleri Butonu
alias ileri is pin_a7

pin_a0_direction = output -- Binler Display
alias Binler is pin_a0

pin_a1_direction = output -- Yüzler Display
alias Yuzler is pin_a1

pin_a2_direction = output -- Onlar Display
alias onlar is pin_a2

pin_a3_direction = output -- Birler Display
alias birler is pin_a3

-- Başlangıç Ayarları
birler = false
onlar = false
yuzler = false
binler = false
display = low
--------------------------------------------------------------

var word Sayi = 0 -- Artıp azaltacağımız Sayımız

-- Gerekli Gecikmeleri Sağlayan Alt Program
procedure bekle_1ms(word in n) is
for n loop -- Döngü kadar 1 ms Gecikme Yap
_usec_Delay(1000) -- 1 ms gecikme Yaratır.
end loop
end procedure

-- Parametre olarak girilen sayının 7segment karşılığı verilir
Function digit(byte in int) return byte is -- Ortak Katot
case int of
0: return 63
1: return 6
2: return 91
3: return 79
4: return 102
5: return 109
6: return 125
7: return 7
8: return 127
9: return 111
end case
end function

-- Butonlara Basılıp basılmadığını Kontrol Eder
procedure Buton_Kontrol is

if (ileri == true) then -- İleri Butonuna Basıldı
bekle_1ms(50) -- Buton Ark Süresi Gecikme

if sayi < 9999 then sayi = (sayi + 1) -- Sayıyı 1 arttır 0..9999 arası Kalsın else sayi = 0 end if end if if (geri == true) then -- Geri Butonuna Basıldı bekle_1ms(50) -- Buton Ark Süresi Gecikme if sayi > 0 then -- Sayı 0 dan büyükmü ?
sayi = (sayi - 1) -- Büyük ise sayıyı 1 azalt
end if
end if
end procedure

-- Sayı değişkenini Displaylerde gösteren alt program
procedure goster is
var byte basamak[4]
basamak[3] = byte(sayi / 1000) -- Binler Basamağı Alındı
basamak[2] = byte((sayi % 1000) / 100) -- Yüzler basamağı Alındı
basamak[1] = byte(((sayi % 1000) % 100) / 10) -- Onlar Basamağı Alındı
basamak[0] = byte(((sayi % 1000) % 100) % 10) -- Birler Basamağı Alındı

for 11 loop -- 11*4 = 44 ms biri gözüküyor
display = digit(basamak[3]) -- Sayının binler basamağı gösteriliyor
binler = high -- binler basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
binler = false -- binler basamağı Pasif

display = digit(basamak[2]) -- Sayının Yüzler basamağı gösteriliyor
yuzler = high -- Yüzler basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
yuzler = false -- Yüzler basamağı Pasif

display = digit(basamak[1]) -- Sayının onlar basamağı gösteriliyor
onlar = high -- onlar basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
onlar = false -- onlar basamağı Pasif

display = digit(basamak[0]) -- Sayının birler basamağı gösteriliyor
birler = high -- Birler basamağı Aktif
bekle_1ms(4) -- 4 ms Bekle
birler = false -- Birler basamağı Pasif
end loop
end procedure

forever loop -- Sonsuz Döngü
buton_kontrol -- Butonları Kontrol Et
goster -- Sayıyı göster
end loop

boll

Uygulamalara ait proteus isis simülasyon ve jalv2 kod dosyaları: jalv2-ile-sayici-devreleri.7z

jalv2-ile-sayici-devreleri

Şifre-Pass: 320volt.com

Yayım tarihi: 2011/11/13 Etiketler: , , , , , , ,



7 Yorum “Jalv2 ile Sayıcı Devreleri

  1. semihsemih

    merhaba öncelikle ellerinize sağlık fakat devre ISIS de hata veriyor nedeni ne olabilir?? Şimdiden teşekkkürler

    CEVAPLA
  2. YasinYasin

    Merhaba Ben bu devrelerden birini yapmak istiyorum.
    Bu kullanılan entegre 16F628 kodlamamız mı gerekiyor yoksa direk entegreyi alıp kullanıyormuyuz….

    CEVAPLA
    1. KapibaraKapibara

      Programlanması gerekiyor verilen kodlar ile.
      Entegreyi aldığınızda içi boş geliyor.

      CEVAPLA
  3. mehmetmehmet

    selamlar;öncelikle çalışma çok güzel olmuş,elinize sağlık.verdiğiniz bu komutlarda butona basıp bıraktığımızda bir defa saysın istiyorsak hangi komutları hangi satıra girmemiz gerekli.program,butona basılı tuttuğumuz sürece saymaya devam ediyor.teşekkürler..

    CEVAPLA
  4. mehmetmehmet

    merhabalar.yazılımda butona basılı tutulduğu sürece sayım devam ediyor.bunu butona basıp çektikten sonra bir ileri veya geri gitsin istiyorsak,hangi kodu nereye yazmalıyız.teşekkürler.

    CEVAPLA
  5. tim patitim pati

    Devrede kullanılan transistörler çok mu gerekliydi? Akım doğrudan entegreden çekiliyor (girerken de çıkarken de), transistörler en fazla lojik konum değiştiriyor, yazılımda bunu ters yapıp transistörler ortadan kaldırılabilirdi gibi duruyor. Yanlışım var mı?

    CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir