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 »