PIC16F628, Jal ve Ledlerle Yapılan Işık Gösteri Devresi
Mehmet Yılmaz
mehmet.yilmaz@teknomerkez.net
Bu yazıda ledlerle yapılmış basit bir ışık gösterisi devresi tanıtılacaktır. Mikrokontrolör olarak Microchip PIC16F628 kullanılmıştır. PIC'in kodlanması JAL V2.4l ile yapılmıştır. Bu kodlamada JalEdit programı kullanılmıştır.
Kodlamada portlara yön verilerek bekleme yapılması sağlanmıştır. Devrenin Jal kaynak dosyalarını indirmek için tıklayınız. Jal kodlamada Jal V2 derleyici ve Jallib kütüphanesi kullanılmıştır. Gerekli linkler için tıklayınız .
Devreye ait şema ve baskı devre dosyalarını indirmek için tıklayınız. Devre şeması ve baskı devresi KiCad ile hazırlanmıştır. Gerekli linkler için tıklayınız .
Devreye ait Proteus ISIS simülasyon dosyasını indirmek için tıklayınız.
Devrenin çalışma voltaj aralığı 78L05 entegresinin giriş aralığı olup, 6,5 volt ile 30 volt arasıdır.
Devre Şeması
Devre şemasını PDF dosya olarak açmak için tıklayınız.
Malzeme Listesi :
U1: PIC16F628A
U2: 78L05 (smd, kılıf: SO-8)
C1: 100nF (smd, kılıf: 1206)
D1, D2, D3, D4, D5, D6, D7, D8: Led 5mm, kırmızı
R1, R2, R3, R4, R5, R7, R8: 470 Ohm (SMD, kılıf:807)
R6: 470 Ohm (smd, kılıf: 1206)
P1: Besleme girişi.
Plaket: 3x6,2 cm tek yüz
Baskı devre lehim yüzü taslağı
Lehim tarafı yerleşim planı
Malzeme tarafı yerleşimi
Montaja hazır baskı devre
Montajı yapılmış halde baskı devre
Montajlı baskı devre lehim tarafı
Çalışan devre videosu
Devrenin Jal V2.4l compiler ile derlenen kodları:
-- ------------------------------------------------------
-- BASLIK: JAL VE MICROCHIP PIC16F628 ILE ISIK GOSTERISI
--
-- YAZAR: Mehmet YILMAZ, mehmet.yilmaz@teknomerkez.net
--
-- TARIH: 30.12.2009
--
-- Derleyici: JAL V2.4l
--
-- Bu dosyada jallib kutuphanesi kullanilmistir
-- (http://jallib.googlecode.com)
--
-- Released under the BSD license
-- (http://www.opensource.org/licenses/bsd-license.php)
--
-- ------------------------------------------------------
--
include 16f628
pragma target clock 4_000_000
pragma target fuses 0x3F10
--
enable_digital_io()
--
portb_direction = output
porta_direction = output
--
forever loop
portb = 0b00000001
_usec_delay (50000 )
portb = 0b00000010
_usec_delay (50000 )
portb = 0b00000100
_usec_delay (50000 )
portb = 0b00001000
_usec_delay (50000 )
portb = 0b00010000
_usec_delay (50000 )
portb = 0b00100000
_usec_delay (50000 )
portb = 0b01000000
_usec_delay (50000 )
portb = 0b10000000
_usec_delay (50000 )
--
portb = 0b00000001
_usec_delay (50000 )
portb = 0b00000011
_usec_delay (50000 )
portb = 0b00000110
_usec_delay (50000 )
portb = 0b00001100
_usec_delay (50000 )
portb = 0b00011000
_usec_delay (50000 )
portb = 0b00110000
_usec_delay (50000 )
portb = 0b01100000
_usec_delay (50000 )
portb = 0b11000000
_usec_delay (50000 )
portb = 0b10000000
_usec_delay (50000 )
--
portb = 0b00000001
_usec_delay (50000 )
portb = 0b00000011
_usec_delay (50000 )
portb = 0b00000111
_usec_delay (50000 )
portb = 0b00001110
_usec_delay (50000 )
portb = 0b00011100
_usec_delay (50000 )
portb = 0b00111000
_usec_delay (50000 )
portb = 0b01110000
_usec_delay (50000 )
portb = 0b11100000
_usec_delay (50000 )
portb = 0b11000000
_usec_delay (50000 )
portb = 0b10000000
_usec_delay (50000 )
--
portb = 0b00000001
_usec_delay (50000 )
portb = 0b00000011
_usec_delay (50000 )
portb = 0b00000111
_usec_delay (50000 )
portb = 0b00001111
_usec_delay (50000 )
portb = 0b00011110
_usec_delay (50000 )
portb = 0b00111100
_usec_delay (50000 )
portb = 0b01111000
_usec_delay (50000 )
portb = 0b11110000
_usec_delay (50000 )
portb = 0b11100000
_usec_delay (50000 )
portb = 0b11000000
_usec_delay (50000 )
portb = 0b10000000
_usec_delay (50000 )
portb = 0b10000000
_usec_delay (50000 )
for 4 loop
portb = 0b00001111
_usec_delay (50000 )
portb = 0b11110000
_usec_delay (50000 )
end loop
for 4 loop
portb = 0b00000000
_usec_delay (100000 )
portb = 0b11111111
_usec_delay (100000 )
end loop
for 10 loop
portb = 0b01010101
_usec_delay (50000 )
portb = 0b10101010
_usec_delay (50000 )
end loop
for 3 loop
portb = 0b10000001
_usec_delay (50000 )
portb = 0b01000010
_usec_delay (50000 )
portb = 0b00100100
_usec_delay (50000 )
portb = 0b00011000
_usec_delay (50000 )
portb = 0b00100100
_usec_delay (50000 )
portb = 0b01000010
_usec_delay (50000 )
portb = 0b10000001
_usec_delay (50000 )
end loop
for 2 loop
portb = 0b11000011
_usec_delay (50000 )
portb = 0b01100110
_usec_delay (50000 )
portb = 0b00111100
_usec_delay (50000 )
portb = 0b00011000
_usec_delay (50000 )
portb = 0b00111100
_usec_delay (50000 )
portb = 0b01100110
_usec_delay (50000 )
portb = 0b11000011
_usec_delay (50000 )
end loop
for 4 loop
portb = 0b00000011
_usec_delay (100000 )
portb = 0b00001100
_usec_delay (100000 )
portb = 0b00110000
_usec_delay (100000 )
portb = 0b11000000
_usec_delay (100000 )
portb = 0b00110000
_usec_delay (100000 )
portb = 0b00001100
_usec_delay (100000 )
end loop
for 6 loop
portb = 0b00000001
_usec_delay (30000 )
portb = 0b00000010
_usec_delay (30000 )
portb = 0b00000100
_usec_delay (30000 )
portb = 0b00001000
_usec_delay (30000 )
portb = 0b00010000
_usec_delay (30000 )
portb = 0b00100000
_usec_delay (30000 )
portb = 0b01000000
_usec_delay (30000 )
portb = 0b10000000
_usec_delay (30000 )
portb = 0b01000000
_usec_delay (30000 )
portb = 0b00100000
_usec_delay (30000 )
portb = 0b00010000
_usec_delay (30000 )
portb = 0b00001000
_usec_delay (30000 )
portb = 0b00000100
_usec_delay (30000 )
portb = 0b00000010
_usec_delay (30000 )
portb = 0b00000001
_usec_delay (30000 )
end loop
end loop