12F675 - LM35 thermometer (7 segment) powered by Jalv2
--------------------------------------------------------------- -- Programın : 1' hassasiyetli LM35 Termometre Devresi -- (0..99) arası Ölçüm -- Author : Sercan TEK - Turkey/Tekirdağ -- Version : 2 -- Date : 19.12.2011 -- chip : 12F675 ve 74hc164 -- compiler : jal jalv24q6 (compiled Oct 25 2016) -- size : 766 Byte --------------------------------------------------------------- -- Yenilikler -- -- Versiyon 2 -- -- -> Transistörler BC547 yerine BC337 olarak değiştirildi. -- -> 330 Ohm dirençler transistörün emiteri yerine kollek- -- törüne seri olarak bağlantı. -- -> Yukarıdaki nedenlerden dolayı baskı devresi yeniden -- düzenlendi. -- -> ilk Çalıştırmada Displaylere animasyon eklendi. -- -> Hazır adc kütüphanesi yerine adc rutine yeniden yazıldı. -- Bu sayede harici kütüphane ihtiyacı, sadece adreslerin -- tanımlı olduğu 12F675.jal oldu. -- -- NOT : Daha önce devreyi yapan arkadaşlar İsteğe Bağlı yeni -- yazılımı yükleyip kullanabilirler. Donanımsal olarakta -- sadece BC547 yerine BC337 takabilirler. Transistör -- Değiştirmedeki amaç ise Olası parlaklık sorununu engel- -- lemektir. Ayrıca BC337'nin yüksek güçlü olmasıdır. -- -- Link : http://code.google.com/p/jalv2-kaynak/downloads/list ---- ------------------------------------------------------------ include 12f675 pragma target clock 4_000_000 -- kristal 4 Mhz pragma target OSC INTOSC_NOCLKOUT -- dahili OSC pragma target WDT disabled -- watchdog Kapalı pragma target MCLR INTERNAL -- mclr kullanılmıyor enable_digital_io() pin_A0_direction = input pin_A1_direction = output pin_A2_direction = output pin_A3_direction = output pin_A4_direction = output pin_A5_direction = output alias birler is pin_a5 -- birler hanesi pin_a5 alias onlar is pin_a4 -- onlar hanesi pin_a4 ----------------------------- ADC İşlemleri --------------------------- ADCON0_VCFG = false -- Harici Vref yok JANSEL_ANS0 = true -- Sadece AN0 kuıllanılacak pin_A0_direction = input -- AN0 Giriş ayarlandı ADCON0_ADFM = true -- sonuc sag yaslı gelsin ANSEL_ADCS = 0b_001 -- ADC Çevrim Clock Seçeneği = OSC/8 function adc_oku return word is pragma inline ADCON0_ADON = True -- ADC Çevrimi Çalıştırıldı _usec_Delay(3) ADCON0_GO = true -- ADC Çevrimi işlem yapıyor while ADCON0_GO loop end loop -- ADC Çevriminin bitmesini Bekle return ((ADRESH *256) + ADRESL) -- Okunan Degerleri Geri Döndür end function --------------------------------------------------------------------------- -------------------- 74HC164 için pin tanımlamaları ------------------- var volatile bit clock_pin is pin_a1 -- Clock Pini var volatile bit data_pin is pin_a2 -- Data Pini procedure display_yolla(byte in giris_bilgi) is -- veri gönderme var bit veri_biti at giris_bilgi : 0 -- verinin sıfırıncı biti for 8 loop -- 8 kere döngü data_pin = veri_biti -- Verinin Düşük bitini gönder giris_bilgi = giris_bilgi >> 1 -- Veriyi bir sag kaydır clock_pin = high -- Clock ver clock_pin = low end loop end procedure ----------------------------------------------------------------------- procedure animasyon is pragma inline var byte temp for 2 loop -- İki kere bir yöne animasyon temp = 0b_1000_0000 for 6 loop onlar = false birler = false display_yolla(temp) onlar = true birler = true temp = temp >> 1 _usec_delay(80000) end loop end loop for 2 loop -- İki kere diğer yöne animasyon temp = 0b_0000_0100 for 6 loop onlar = false birler = false display_yolla(temp) onlar = true birler = true temp = temp << 1 _usec_delay(80000) end loop end loop end procedure animasyon procedure derece_al(byte out hane_10,byte out hane_1) is pragma inline var word temp_deger...Read more »