Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

Jalv2 ile Sayıcı Devreleri

Sponsorlu Bağlantılar

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 alternatif link: jalv2-ile-sayici-devreleri.rar

  • ahmed bou

    can not be open with proteus 7.10 :(((

  • semih

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