7 Segment Display Kullanımı Ve LOOK-UP (dönüşüm tablosu) oluşturma

Benzer belgeler
1. PORTB ye bağlı 8 adet LED i ikili sayı sisteminde yukarı saydıracak programı

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

HUNRobotX - Makaleler - Gecikme Kodları Hazırlama ve Gecikme Rutini Hazırlayıcı. Makaleler Gecikme Kodları Hazırlama ve Gecikme Rutini Hazırlayıcı

PIC TABANLI, 4 BASAMAKLI VE SER

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Hacettepe Robot Topluluğu

HUNRobotX - Makaleler - Hız Ayarlı Çoklu DC Motor Kontrolü. Makaleler Hız Ayarlı Çoklu DC Motor Kontrolü

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Hacettepe Robot Topluluğu

LCD (Liquid Crystal Display )

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize

MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil Bahar

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

BSF STATUS,5 ;bank1 e geçiş CLRF TRISB ;TRISB= BCF STATUS,5 ;bank0 a geçiş

B.Ç. / E.B. MİKROİŞLEMCİLER

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

GENEL BİLGİ: GEREKLİ MALZEMELER:

UYGULAMA 05_01 MİKRODENETLEYİCİLER 5.HAFTA UYGULAMA_05_01 UYGULAMA_05_01. Doç.Dr. SERDAR KÜÇÜK

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

(VEYA-DEĞİL kapısı) (Exlusive OR kapısı) (Exlusive NOR kapısı)

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

Hacettepe Robot Topluluğu

LOJİK DEVRELER-I III. HAFTA DENEY FÖYÜ

LCD (Liquid Crystal Display)

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

DİRENÇLER DĠRENÇLER. 1. Çalışması:

GRAFİK TASARIM Hüseyin Güner

Şekil 1. 74LS47 entegresi bağlantı şeması

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek

BUTON KONTROLÜ. Pull-Down Bağlantı (Ters Bağlantı) Butona basılmadığında Giriş=1 Butona basıldığında Giriş=0

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

Kabuk Programlama (Bash)

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

TURN-OFF DEVRESİ BASKI DEVRE ÇIKARMA

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

BLGM423 Gömülü Sistem Tasarımı

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

YILDIZ TEKNİK ÜNİVERSİTESİ MAKİNE FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MEKATRONİK MÜHENDİSLİĞİNE GİRİŞ DERSİ. Işığa Dönen Kafa Projesi 2

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil Bahar-Final

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. Hafta V

Siz elinizdeki borudan su akımını aktırdıkça, klapa açılıyor, sizin akıttığınız akım ve barajdan akan akım birleşip barajdan aşağı akıyor.

DENEY in lojik iç şeması: Sekil 2

Tek kararlı(monostable) multivibratör devresi

PIC ASSEMBLY VE MAKROLAR

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

TECO N3 SERĐSĐ HIZ KONTROL CĐHAZI HIZLI BAŞLAT DÖKÜMANI. ADIM 1: Sürücü beslemesini ve motor uçlarını bağlama

Uygulama kağıtları ve Kısa Sınav kağıtlarına; Ad, Soyad, Numara ve Grup No (Ör: B2-5) mutlaka yazılacak.

5. BÖLÜM - DÖNGÜ (ÇEVRİM) ve Z BAYRAĞI

IŞIĞA YÖNELEN PANEL. Muhammet Emre Irmak. Mustafa Kemal Üniversitesi Mühendislik Fakültesi. Elektrik-Elektronik Mühendisliği Bölümü

DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK. Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC )

DELTA PLC EĞİTİM SETİ KİTAPÇIĞI

KONFİGÜRASYON BİTLERİ

HESAP MAKİNASI YAPIMI

DENEY 5: KOD DÖNÜŞTÜRÜCÜLERİN TASARIMI

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

Makine Mühendisliği İçin Elektrik-Elektronik Bilgisi. Ders Notu-5 AKTİF DEVRE ELEMANLARI Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU

LED YAKMAK. Circuit 2. Kablo LED. Direnç. Arduino LED. Direnç (330ohm)

ROKART VER 3.1 AYRINTILI MONTAJ KILAVUZU MALZEME LİSTESİ. DEVRENİN MONTAJINDA KULLANILAN ARAÇLAR Lehim teli watt havya Yankeski Maket bıçağı

8 Ledli Havada Kayan Yazı

BQ Modbus Analog Giriş Kartı 6 Kanal PT100 - PT1000. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ SAYISAL ELEKTRONİK LABORATUVAR DENEY RAPORU

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ÇİFT YÖNLÜ KAPI GEÇİŞ SAYMA SİSTEMİ 5. DÖNEM PROJESİ. Kadir ÜSTÜN

Kullanım Kılavuzu Eylül 2018

STAFF-02 IVR. KURULUM ve KULLANIM KİTAPÇIĞI. Kasım 2016 Rev.2.0

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

BJT TRANSİSTÖRLER: Üç Kullanım modu: 1- Lineer mod (amfi) 2- Satürasyon (kısa devre) 3- Cut-off (açık devre)

Bütün ümidim gençliktedir.

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

MATRİKS VERİ TERMİNALİ GELİŞMİŞ ALARM

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ

Transistörler yarıiletken teknolojisiyle üretilmiş, azınlık-çoğunluk yük taşıyıcılara sahip solidstate elektronik devre elemanlarıdır.

STAFF-02 SMS KURULUM ve KULLANIM KİTAPÇIĞI Aralık 2016 Rev.2.0 FW2.02

Microsoft Excel. Çalışma Alanı. Hızlı Erişim Çubuğu Sekmeler Başlık Formül Çubuğu. Ad Kutusu. Sütunlar. Satırlar. Hücre. Kaydırma Çubukları

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

Akış Kontrol Mekanizmaları

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

Windows Paint ile Fotoğraf Düzenleme

Komutların İşlem Süresi

Turgut Özal Üniversitesi WEB Sitesi Kullanım Kılavuzu

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ GÖMÜLÜ SİSTEMLER DENEY FÖYÜ

MONOFAZE MİKROİŞLEMCİLİ REDRESÖR KULLANIM KILAVUZU

Adım 1) Photoshop ekranının üst bölümünde bulunan Window seçeneğinden Animation u seçiyoruz. Ve alt kısımda uzun bir kutucuk açıldığını göreceksiniz.

PIC16F877A nın Genel Özellikleri

Transkript:

PIC Assembly Ders 5 7 Segment Display Kullanımı Ve LOOK-UP (dönüşüm tablosu) oluşturma Bu dersimize kadar bahsettiğimiz örneklerde mikrodenetleyicimizin dış dünyaya gönderdiği komutları mikrodenetleyicinin ilgili bacağına led bağlayarak devremizi oluşturmuştuk. Ledi bağlamamızdaki amaç görsel olarak bize bazı anlamlar ifade etmesiydi örneğin problemimizde mikrodenetleyicinin bir sistemi açıp kapadığını varsayarsak biz bu sistemi led kullanarak modellemiştik (klimayı aç/kapa örneğini hatırlayabilirsiniz). Bu modellemenin dışında led ler bize bazı sayısal anlamlar da ifade edebilmekteydi, yine bizden çözmemiz beklenen probleme bağlı olarak yanan led sayısı yada sırası bizim için mikrodenetleyicinin dış dünyaya verdiği çıktı idi. Mikrodenetleyicimizi kullanarak bir dijital sayaç programı yazmamızın istendiğini varsayın..yazdığımız programda çıkış olarak doğrudan rakamları ifade edebilmemiz gerekiyor. Örneğin sayaçta 8 ifade edebilmek için mikrodenetleyici 8 i belirtecek bazı çıkış vermeli. Peki bu 8 rakamını ifade tarzları nasıl olabilir? Mikrodenetleyicinizin çıkışına bağladığınız ledlerin 8 tanesini yakarak kullanıcıya sayacın 8 olduğunu belirtebilirsiniz. Tabi kullanıcının sayacın 8 de olduğunu anlaması için kaç tane ledin yandığını sayması gerekecek.

8 sayısını ikilik sisteme çevirip, yanan ledlerin kaçıncı sırada olduklarına göre ikilik sistemde hesaplayabilirsiniz. Bu durumda kullanıcının sayacın 8 de olduğunu bilmesi için ikilik sistemi 10luk sisteme çevirebiliyor olması lazım. Geldik en kolay yönteme, ledleri 8 sayısını oluşturabilecek şekilde dizip yakarsınız. Böylece kullanıcı herhangi bir zihinsel işlem yapmasına gerek kalmadan sizin ifade ettiğiniz rakamın kendisini görecektir. 7 segment display kullanımı da bu noktdan çıkmıştır. Kullanıcıya doğrudan rakamları ifade edebilmektedir. Şekilde de görüldüğü gibi 7 segment, (adından da anlaşılacağı gibi) 7 parçadan oluşmuş ledler topluluğudur. Bu 7 farklı ledlerin yanma kombinasyonuna göre farklı rakamlar oluşmaktadır.

Şimdi led lerin yapısından basitçe bahsedelim. Bildiğiniz gibi ideal olarak Led (Light Emitting Diode ) in anotu ve katatu arasına Pozitif gerilim uygularsanız led ışık vermeye başlar. Verdiği ışığın parlaklığı da led in üzerinden geçen akımla orantılıdır. Mikrodenetleyicimizden +5Volt verdiğimizde yanan ledleri nasıl sürdüğümüze bir bakalım. +5V gelince Anot ve katot arasında pozitif bir gerilim oluşmakta ve led yanmakta. Görüldüğü gibi kullandığımız ledlerin katot bacağı ortak olarak toprağa gitmekte. Bu tüm bacaklar toprak hattında birleşmekte.

Bir başka şekilde mikrodenetleyicimizden 0 V verdiğimiz ledleri nasıl yakabileceğimize bakalım. Bu sefer de tüm ledlerin anotlarının ortak olarak +5V a bağlandığını görebilirsiniz. 7 Segment üreticileri Bu 7 farklı ledi tek bir paket içerisinde ürettikleri için bu ortak bacakları (anot veya katot) üretim aşamasındayken birbirine bağlayıp sadece ortak bacak olarak 7 segment paketine koymuşlardır. Bunlar nasıl olsa birleşeceği için her led için iki bacak koymak boş yere alan israfı oluşturacaktı.

7 Segmentler hangi bacaklarının ortak olduğuna göre sınıflandırılır. Eğer katot bacakları ortak iste ORTAK KATOT(common cathode), anot bacakları ortak ise ORTAK ANOT (common anode) olarak adlandırılırlar. Ayrıca bazı 7Segmentlerde ondalık noktasını belirtebilmek için nokta da bulunmaktadır. (http://robot.ee.hacettepe.edu.tr/dosyalar/makaleler/9_geri_sayim_cihazi.pdf adresindeki makalemizde de 7segmentler anlatılmıştır makalemizden de faydalanabilirsiniz.) Ortak Katotlu 7 segment kullanarak bazı rakamları oluşturalım: Her bacağın sorumlu olduğu bir kısım mevcuttur. 8 sayısını oluşturmak için tüm bacaklara +5V vermeliyiz. 7 rakamını oluşturmak için 7segmentin bacaklarına +5V vermeliyiz.

7 Segmentlerde herhangi bir rakamı gösterebilmek için gördüğünüz gibi 7segment in bazı pinlerini ( ortak katot için 1) (ortak anot için 0) ayarlamamız gerekiyor. Eğer 7 Segmentin tüm bacakları PortB ye bağlı olduğunu düşünürsek 8 sayısı için portb = b 01111111 7 sayısı için portb = b 00000111' 6 sayısı için portb = b'01111101'.... PortB nin alt 7 biti 7 segmentin parçalarını kontrol etmek için kullanılıyor. 8. bit istenirse ondalık noktasına bağlanabilir. Rakamları ifade etmek için gereken Portb çıkışlarının doğrudan sayılarla bir ilişkisi yok. Gördüğünüz gibi bir rakamı ifade edebilmemiz için Portb ye sabit bazı değerleri atamalıyız. Örnek: SAYAC yazmacının içeriği 0 ve 9 arasında değiştiğine göre bu yazmacın içeriğini portb ye bağlı 7segmentte gösteriniz. SIFIRMI MOVFW SAYAC XORLW D 0 BTFSS STATUS,Z GOTO SIFIR_DEGIL MOVLW B 00111111' MOVWF PORTB GOTO DONGU SIFIR_DEGIL MOVFW SAYAC SUBLW D 1 BTFSS STATUS,Z GOTO BIR_DEGIL MOVLW B'00000110' MOVWF PORTB GOTO DONGU BIR_DEGIL MOVFW SAYAC XORLW D 2 BTFSS STATUS,Z GOTO IKI_DEGIL MOVLW B'01011011' MOVWF PORTB GOTO DONGU IKI_DEGIL Sayac içeriğini W ya attıktan sonra 0 sayısıyla W yazmacını XOR(eşit değil) işlemine tabi tutuyoruz. Eğer W sayıya eşit ise işlemin sonucu 0 olacaktır dolayısıyla STATUS,Z biti 1 olacaktır. Eğer W daki değer XOR işlemine girdiği sayıdan farklı ise sonuç 0 olmayacak STATUS,Z biti de 0 olacaktır. Bu sayde STATUS,Z bitini kontrol ederek iki sayının birbirine eşit olup olmadığını da kontrol ettik. XOR işleminden kafası karışanlar eşitliği kontrol etmek için Çıkarma komutunu da kullanabilirler. W dan bir sayıyı çıkardığınızda sonuç 0 ise(status,z=1) çıkarılan sayı w ya eşit demektir. Bu tip kodları SAYAC registerının aralığına göre yazıyoruz. Eğer Hangi sayı olduğunu bulursak 7 segmentte gösterebilmek için gerekli çıkışları portb den yönlendiriyoruz.

Yukarda yaptığımız işlemi tekrar özetleyecek olursak önce SAYAC ın içeriğinin ne olduğunu buluyoruz sonra bulduğumuz sayıyı oluşturacak 7 SEGMENT kısımlarını yakıyoruz. Bu işlem SAYAC yazmacının içerebileceği sayılara göre uzayıp gidiyor. Bu noktada LOOK-UP tablosu bize yardımcı olmak için imdadımıza yetişecektir. LOOK-UP tablosuna geçmeden önce mikrodenetleyicimizin program kodlarını nasıl işlediğine değinelim. ORG 0X08 MOVLW D 4 ;8. program satırı MOVWF SAYAC1 ;9. program satırı MOVLW D 8 ;10. program satırı MOVWF SAYAC2 ;11. program satırı MOVLW D 15 ;12. program satırı MOVWF SAYAC3 ;13. program satırı ORG satırı kendisinden sonra gelen komutun program hafızasında kaçıncı satıra yazılacağını belirttiğini hatırlıyorsunuzdur. Burdaki kodlarımız 8. program satırından başlayarak 13. program satırında son buluyor. Mikrodenetleyici bir komutu işlerken hangi satırı işleyeceğini özel bir yazmaca (PCL program counter low) bakarak karar veriyor. Örneğin PCL in içeriği 8 iken MOVLW D 4 komutunu işliyor. Bu komutu işlemeyi bitirdiği zaman PCL in değerini mikrodenetleyici kendisi 1 arttırıyor ve PCL in içeriği otomatikman 9 oluyor. PIC hangi komutu işleyeceğini bu PCL yazmacına bakarak karar verdiği için 9. program satırını işlemeye koyuyor. PCL her komuttan sonra mikrodenetleyici tarafından 1 arttırıldığı için eğer siz PCL e müdahle etmezseniz yada GOTO veya BTFSS tarzı bir dallanma yoksa bir komutu bitirince bir alttaki komutu işlemeye devam ediyor. Diyelimki PCL e müdahele ediyoruz: ORG 0X08 INCF PCL ;8. program satırı MOVLW D 8 ;9. program satırı MOVWF SAYAC2 ;10. program satırı MOVLW D 15 ;11. program satırı MOVWF SAYAC3 ;12. program satırı PCL in içeriği 8 ise PIC 8. satırdaki komutu işleyecektir. 8. satırda yanda görebileceğiniz gibi INCF PCL komutu var yani PCL i bir arttır. Bu komut PCL in içeriğini bir arttırıp 9 yapacaktır. Ve bir komut işlendiği için mikrodenetleyici kendisi de PCL in içeriğini bir arttıracak böylece PCL in içeriği 10 olacak INCF PCL komutu bitince PCL in değeri böylelikle 10 oldu. Mikrodenetleyici yeni işleyeceği komutu bu yazmaca bakarak seçiyor dediğimize göre mikrodenetleyici artık 10. satırdaki komutu işleyecektir. Bu şekilde 9. program satırını atlamış olduk bu yöntem bizim LOOK-UP(dönüşüm tablosu) oluşturmamızı sağlayacaktır.

Dönüşüm tablosu diyip duruyorsun peki bu ne diyenlerin merakını gidermeden önce bir başka komuttan daha bahsetmemiz gerekiyor. Bu komut da RETLW komutu bu komut MOVLW ve RETURN komutunun birleşmiş halidir. Bildiğiniz gibi bir altprogramdan çıkmak için return komutunu kullanıyorduk, MOVLW komutunu ise W ya bir sabit değer atmak için kullanıyorduk. Böylelikle RETLW komutu bizim W ya bir değer atayıp altprogramdan çıkmamızı sağlayacak. ALTPROGRAM. RETLW D 10 ;W ya 10 atayıp altprogramdan çıkıyoruz. Bu W ya sabit bir değer atama işi Dönüşüm tablosu ve 7Segment Display arasındaki bağlantı hakkında size bir ipucu verebiliyordur. Đlk yazdığımız programa bakarsanız SAYAC ın içeriğine göre önce W ya bir değer atıyorduk sonra da bu değeri PORTB ye atayarak 7Segmentte istediğimiz değerin oluşmasını sağlıyorduk. w ya atama işini artık dönüşüm tablosunda (altprogramda) yapacağız. Nihayet söyledik Dönüşüm Tablosu bir altprogramdır. ANAPROGRAM MOVFW SAYAC CALL DONUSUM_TABLOSU MOVWF PORTB GOTO DONGU DONUSUM_TABLOSU ADDWF PCL RETLW B'00111111' ; 7 segmentte 0 görünmesi için gereken değer RETLW B'00000110' ; 1 RETLW B'01011011' ; 2 RETLW B'01001111' ; 3 RETLW B'01100110' ; 4 RETLW B'01101101' ; 5 RETLW B'01111101' ; 6 RETLW B'00000111' ; 7 RETLW B'01111111' ; 8 RETLW B'01101111' ; 9 Anaprogramda ilk önce W ya SAYAC yazmacının içeriğini atıyoruz ve ardından donusum tablosu altprogramını çağırıyoruz. Bu noktada W nun içeriği SAYAC yazmacının içeriği olduğunu unutmayınız!! Donusum tablosuna girince W ile PCL yazmacını topluyoruz. Yani dolaylı yoldan SAYAC yazmacı ile PCL i toplamış oluyoruz. Bu noktadan sonra sayı vererek gidelim. Örneğin Sayac yazmacının içeriği 0 olsun PCL ile toplayınca PCL in değeri değişmedi. Toplama komutu bitince mikrodenetleyici PCL i bir arttırdı dolayısıyla bir

alttaki komutu işlemeye başladı. Peki bu komutta ne var? 7 segmentte 0 ı (SAYAC YAZMACINI) gösterebilmemiz için gerekli değeri W ya atıp altprogramdan çıkıyoruz. Ana programda kaldığımız yer MOVWF PORTB komutu, bu komut W daki değeri PORTB ye atacaktır böylece 7 segmentte 0 sayısını göstermiş olacağız. Dönüşüm tablosuna girdiğimizde W nun değeri 1 olsaydı yani SAYAC yazmacı 1 olsaydı ne olacaktı? ADDWF PCL komutundan dolayı PCL in içeriği 1 artacaktı.komut işlendiği için de mikrodenetleyici PCL in içeriğini 1 arttırınca toplamda PCL in değeri 2 artmış olacaktı. Bu da demek oluyorki enson işlediğimiz komuttan 2 sonraki komutu işleyeceğiz. Bu noktada da RETLW B. Komutunda 1 sayısını 7 segmentte göstermek için gerekli değeri W ya atıp ana programa geri döneceğiz. Ana programda da w daki değeri Portb ye atıp 7segmentte 1 sayısının görünmesini sağlayacağız. Dönüşüm Tablosunu elbette sadece 7Segmentler için kullanmıyoruz. Dönüşüm tablosu bir değeri başka bir değere çevirmek istediğimiz tüm işlemlerde kullanabiliriz.örneğin yazdığımız programda sinus alma işlemi yaptığımızı varsayalım. ANA_PROGRAM MOVFW DERECE CALL SINUS_DONUSUM_TABLOSU MOVWF SIN_DERECE GOTO BIYERLERE SINUS_DONUSUM_TABLOSU ADDWF PCL RETLW D..... BIRDEN FAZLA 7SEGMENT BAĞLAMA 7 segmentin ne olduğunu ve dönüşüm tablosunun nasıl hazırlanabileceğini öğrendik. Şimdi tekrar dersin başındaki örneğe geri dönelim. Örnekteki sayaç şimdi de 108 değerinde olsun. Kullanıcıya 7Segment vasıtasıyla 108 sayısını nasıl belirtiriz? En rahat yöntem 3 tane 7 segment display kullanarak her rakamı bir 7segmentin göstermesi olacaktır fakat burada ufak bir problem karşımıza çıkabilir. 7 segmentin yapısı gereği 7 tane girişe ihtiyaç vardır ve eğer siz her 7 segmentin sadece 1 rakamı göstermesini istiyorsanız mikrodenetleyicinin 3*7=21 tane bacağına ihtiyacınız olacak.mikrodenetleyicinizdeki bacak sayısı az ise bu sizin için önemli bir problem olacaktır. 7segmentlerin muhatabı insanlar olacağından bu sorunun üstesinden gelebilmek için insanların fark edemeyeceği düzeyde değişiklikler yapabiliriz. Bu sorunu çözmek için sinemalarda kullanılan tekniğin bir benzerini kullanacağız. Bildiğiniz gibi sinema filmlerinde filmin her saniyesinde 24 kare yer almaktadır. Đnsan gözü bir saniyede geçen 24 kare arasındaki aralıkları fark edemiyor ve de görüntüyü kare kare olarak değil de sürekli hareket eden bir biçimde algılıyor.

Birden fazla 7Segmenti bağlarken her 7 segmentin sayıları ifade eden bacaklarını birbirlerine paralel olarak bağlıyoruz. Bu sistemle eğer 1 sayısını görüntüleyecek çıkışları verirsek 3 7Segmentte de 1 sayısı görülecektir. Fakat biz sadece ilk 7segmentte 1 sayısının görülmesini istiyoruz dolayısıyla istediğimiz 7Segmenti çalıştırabilecek bir sistem geliştirmeliyiz. Bu sistemi geliştirmeden önce 7 segmentteki ortak bacağı hatırlayalım. Eğer ortak katot a sahip 7segmentleri kullanıyorsanız ve eğer bu ortak katot 0V a bağlı değilse verdiğiniz giriş ne olursa olsun 7segmentin hiçbir parçası yanmayacak dolayısıyla bu 7segment pasif durumda olacaktır. Kullanacağımız sistemde istediğimiz 7Segmenti pasif yapabilmemiz için bazı 7segmentlerin ortak bacaklarının bağlantısını bir transistor vasıtasıyla keseceğiz.

Önce transistorun ne olduğuna da temel olarak değinmemiz gerekirse NPN tipi bir transistor için eğer Base ile emiter arası 0.6V tan büyük ise Kollektor ve emiter arasında akım geçer yani kollektor ve emiter arasında bir bağlantı oluşur. Fakat Base ile emiter arası 0.6V tan düşük ise Kollektor ve emiter arasında akım geçmeyecek dolayısıyla herhangi bir bağlantı olmayacaktır.(7 segmentleri sürmek için BC337 gibi bir transistör kullanabilirsiniz) Yukarıdaki devrede eğer transistorun base i 0.6V tan büyük ise 7segmentin ortak bacağı toprağa bağlanacak ve 7segment aktif olarak çalışabilecek fakat transistorun base i 0.6Vtan küçük ise 7 segmentin ortak bacağının topraktan bağlantısı kesilecek böylelikle 7 segment pasif duruma geçecektir. Bizim burada yapacağımız işlem bir süre ilk 7 segmenti aktif yapıp display e 1 değerini yazdırmak, ardından ilk 7segmenti pasif 2. 7segmenti aktif yapıp display e 0 değerini yazdırmak yine bir süre sonra son 7 segmenti aktif diğerlerini pasif yapıp displayde 8 değerini göstermek. Aslında olayın sinemada kullanılan sistemle olan benzerliği bu noktada ortaya çıkmaktadır. siz ilk 7segmente 1 değerini yazdırırken diğer 7segmentler boş olacak yani herhangi bir değer görülmeyecek. Đkinci 7segmente 0 yazdırırken de diğer 7segmentlerde hiçbir değer olmayacak. Eğer siz 7segmentlerin tek başına aktif olduğu süreyi insan gözünün fark edebileceği süreden daha kısa bir süre alırsanız, insan gözü 1, 0 ve 8 rakamlarını 3 7segmentte aynı anda görür ve

hepsinin tek tek yandığını fark edemez. Bu sayede toplamda PIC in 10 bacağını kullanarak normalde 21 PIC bacağıyla yapabileceğimiz işlemi gerçekleştirebiliriz. Alıştırmalar: 1) 7 segment display in her segmentini portb nin hangi bacağının kontrol ettiğini belirledikten sonra 0 dan 9 a kadar rakamları ifade edebileceğiniz bir dönüşüm tablosu hazırlayınız. 2) PORTA,0 a bağlı bir butona her basıldığında 7 segmentte gösterilen değeri 1 azaltan PORTA,1 e bağlı bir butona basıldığında da 7segmentte gösterilen değeri 1 arttıran bir program yazınız. 7 segmentte gösterilen ilk değerin 5 olduğunu varsayın. 3) 108 değerini 7 segmentlerle gösterebilecek bir program yazınız 4) ders 3 ün sonundaki alıştırmalarda yaptığınız 6. alıştırmayı 7 segment kullanacak şekilde geliştirin. 7 segmentte göstermeniz gereken değer zaten ARACSAYISI yazmacında olacaktır. Kaynaklar ve ilgili makaleler: Çoklu 7segment displaylerle yapılmış güzel bir geri sayım cihazı örneği için http://robot.ee.hacettepe.edu.tr/dosyalar/makaleler/9_geri_sayim_cihazi.pdf adresindeki makalemizi inceleyebilirsiniz. dersleri yazarken herhangi bir kaynaktan faydalanmadım ama pic programlamayı öğrenirken Orhan altınabaşak ın kitabını takip ettiğim için farkında olmadan bazı yerler benzemiş olabilir