Mikroişlemciler Laboratuar Deney Föyü

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

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

YILDIZ TEKNİK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ. EasyPic6 Deney Seti Kullanım Kılavuzu

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

# 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

PİC BASİC PROFESSİONAL

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

LCD (Liquid Crystal Display )

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

# 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

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

LCD (Liquid Crystal Display)

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

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

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

Bank değiştirme Bir banktan diğerine geçmek için STATUS register denilen özel registerin 5. ve 6. bitinin durumunu değiştirmek gerekir.

PIC16F877A nın Genel Özellikleri

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

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

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

Komutların İşlem Süresi

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

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

PIC TABANLI, 4 BASAMAKLI VE SER

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

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

Mikroişlemciler 2013/2014 Bahar Y.Y. Laboratuvar Deney Kitabı

EEM 419-Mikroişlemciler Güz 2017

DENEY-7. 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

BÖLÜM 1: MİKRODENETLEYİCİLER

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

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

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.

KONFİGÜRASYON BİTLERİ

ÖĞRENME FAALİYETİ-1 1. MİKRODENETLEYİCİ PROGRAMI YAZMA

Mikroişlemciler. Microchip PIC

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

EasyPic 6 Deney Seti Tanıtımı

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

DENEY 9-A : PIC 16F877 ve LM-35 ile SICAKLIK ÖLÇÜM UYGULAMASI

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ü

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İ) ELEKTRİK ELEKTRONİK TEKNOLOJİSİ

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

DC motorların sürülmesi ve sürücü devreleri

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

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

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

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

ONDOKUZ MAYIS ÜNİVERSİTESİ

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

BÖLÜM 1

BİLİŞİM TEKNOLOJİLERİ

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

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

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

PIC Mikrodenetleyicileri

Hacettepe Robot Topluluğu

MİKRODENETLEYİCİ GELİŞTİRME SETİ TASARIM VE UYGULAMALARI. öğrencilerine eğitimleri esnasında iş hayatında karşılaşabilecekleri kontrol işlemleri ve

BÖLÜM 1 ALT PROGRAMLAR 1.1.ALTPROGRAM NEDİR?

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

Hacettepe Robot Topluluğu

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İ) BİLİŞİM TEKNOLOJİLERİ MİKRODENETLEYİCİLER 1

Hyper Terminal programı çalıştırıp Uygun COM portu ve iletişim parametrelerinin ayarları yapılıp bekletilmelidir.

Mikroişlemciler. Giriş

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

Sistem Gereksinimleri: Uygulama Gelistirme: PIC Mikroislemcisinin Programlanmasi: PIC Programlama Örnekleri -1

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

Microprocessors and Programming

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

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

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İ

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

DENEY 10-A : PIC 16F877 ile DARBE GENİŞLİK MODÜLASYONU (PWM) SİNYAL KONTROL UYGULAMASI

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

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Ü

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

8 Ledli Havada Kayan Yazı

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Ü

PIC MİKRODENETLEYİCİ KULLANARAK BİR SİSTEMİN TELEFONLA UZAKTAN KONTROLÜ

DOKUMANLAR

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

SAYISAL MANTIK LAB. PROJELERİ

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

Mikroişlemciler. Giriş

T.C. MİLLÎ EĞİTİM BAKANLIĞI ELEKTRİK ELEKTRONİK TEKNOLOJİSİ MİKRODENETLEYİCİYLE ANALOG İŞLEMLER 523EO0022

Çizgi İzleyen Robot Yapımı

Hacettepe Robot Topluluğu

PIC MCU ile UYGULAMALAR

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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İ) ELEKTRİK ELEKTRONİK TEKNOLOJİSİ

KESME (INTERRUPT) NEDİR?

Transkript:

YILDIZ TEKNİK ÜNİVERSİTESİ MAKİNE FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ Mikroişlemciler Laboratuar Deney Föyü

İçindekiler DENEYLER... 3 BUTON UYGULAMASI... 3 BUZZER... 4 7 SEGMENT DISPLAY İLE SAYICI... 5 0-9 DIGIT COUNTER... 7 MATRİS LED DİSPLAY... 9 ANALOG DİGİTAL ÇEVRİM... 11 STEP MOTOR... 14 DC MOTOR... 16 DENEYLERDE KULLANILAN PROGRAMLARIN TANITILMASI... 18 MPLAB X IDE PROJE OLUŞTURMA... 19 PIC C COMPLIER PROJE OLUŞTURMA... 23 PIC16F87XA Komut Açıklamaları... 29 2

DENEYLER: BUTON UYGULAMASI Problem: 16F877 mikrodenetleyicinin PORT A0 girişine bağlı olan butona bastığımızda PORTD ye bağlı olan ledlerin yanması istenmektedir. Bu işlemi gerçekleştiren programı yazınız. Deneyin Amacı : 16f877 de PORTA nın I/0 haline getirilmesi PORTA nın RA0 pinine bağlı bir butonun test edilmesi ve bu şarta bağlı olarak PORTD YE bağlı LED lerin yakılması Bit test komutlarından BTFSS f,b komutunun öğretilmesi Devre Şeması: Deney Seti Bağlantıları 3

BUZZER Problem: 16F877 mikrodenetleyicinin PORT B0 çıkışından kare dalga üreterek buzzer da kesik kesik ses üretilmesi istenmektedir. Bu işlemi gerçekleştiren programı yazınız. Buzzer içinde yaklaşık 1khz lik bir osilatör hazır olarak bulunmaktadır. Yapmamız gereken tek şey J23 soketine herhangi bir PORTB den lojik 1 göndermektir. Deneyin Amacı : Zaman gecikmesi altprogramlarını kullanmak Bu sayede kare dalga üretmek Devre Şeması: Deney Seti Bağlantıları 4

7 SEGMENT DISPLAY İLE SAYICI Problem: 16F877 mikrodenetleyicinin D0..D7 portları 7 parçalı gösterge sürücüsünün ABCDEFG VE DP uçlarına, B0..B3 portları Dijit Seçme uçlarına bağlanmıştır. Çevrim tablosundaki karakterleri sırasıyla gösteren programı assembler dili ile yazınız. Çevrim / Bakış tabloları ile bir kodu başka bir koda dönüştürmek için kullanılırlar. Örneğin PIC mikro denetleyiciyi portlarına bağlı 7 Segment display / gösterge üzerinde hexadecimal (onaltılık tabandaki) sayıları göstermek, sıcaklık dönüşümü(derece-fahrenayt gibi) yapma, sinus, kosinus alma gibi işlemlerde dönüşüm/çevrim tabloları kullanılar. 7 Segment display kodlaması için aşağıdaki tablo kullanılır. Çevrim tablosunda uygun kodu seçmek için program sayıcıyı (PCL Program Counter), seçilen kodu ana programa göndermek için de RETLW komutunu kullanırız. 5

Çevrim tablosundaki verilere sıralı olarak erişerek PCL ye yani o anki adrese istediğimiz sayıyı ekleyerek istediğimiz adrese / elemana ulaşırız. PCL nin o anki değerine ADDWF ile istediğimiz sayıyı ekleriz. Kullanım Şekli: ADDWF PCL, F İstediğimiz değeri geri döndürecek komut ise RETLW (RETLW h 3F gibi) dir. Deneyin Amacı: Gösterge sürme işlemini kavrayabilmek Devre Şeması: Açıklamalar: 7 parçalı gösterge ünitesi tarama yaparak tek bir sürücü entegresi ile 4 adet göstergeyi sürebilecek şekilde yapılmıştır. Ortak Katot tipinde olan göstergelerden aktif edilmek istenenin girişini 1 yapmak gereklidir. Devrenin Kurulması: DENEY SETİ üzerindeki tüm, PORT lara ait sabitleme anahtarlarını OFF konumuna getirin. SDS1 ve SDS2 anahtarlarını ON konumuna getirin. (PORTD ve PORTB) SDS2 anahtarlarından birini kapatırsanız tek display aktif olur. MPLABX programında yazdığınız kodları derleyiniz ve oluşan HEX uzantılı dosyayı Pic16F877A ya yükleyin. 6

0..9 DIGIT COUNTER Problem: 16F877 mikrodenetleyicinin D0..D7 portları 7 parçalı gösterge sürücüsünün ABCDEFG VE DP uçlarına, B0..B3 portları Dijit Seçme uçlarına bağlanmıştır. Saniyede 1 ileriye doğru sayan 0-9 ileri sayıcı programını yazınız. 1 saniyelik zaman geçikmesini TIMER kullanarak ayarlayınız. Açıklamalar: 16F877 nin D ve B portları ile kontrol edilen 7 Segment displaylerde 0-9 arası yaklaşık 1 sn aralıklar ile artan ileri sayıcı programını TMR0 registerını zamanlayıcı şeklinde kullanarak yazınız. TMR0 ile GEÇİKME OPTION Register TMR0 sayıcısının FF (255) den 00 a geçmesi TMR0 kesmesine sebep olur ve bu kesme sonucunda INTCON kesme kaydedicisinin 2. (T0IF) biti 1 değerini alır. Bu kesmeyi kullanabilmek için daha öncesinde INTCON kaydedicisinin TOIE bitinin 1 yapılarak kesmeye izin verilmesi gerektiği unutulmamalıdır. 7

INTCON Register TMR0 hem yazılabilir, hem okunabilir bir sayıcıdır. OPTION kaydedicisi ile belirlenebilen frekans bölme seçeneği vardır. Saymaya ana programda, alt programlarda ve kesme alt programlarında da devam eder. Bu bir avantajdır. En önemli özelliği ise, saydığı değer FFh sayısından 00h sayısına geçerken oluşan taşmada, INTCON kaydedicisinde T0IF bayrağı 1 değerini alır ve bu değer kullanılarak bir kesme alt programı çalıştırılabilir. Öncesinde TOIE biti «1 «yapılarak TMRO da taşma olması halinde kesmeye izin verilmesi sağlanmalıdır. Kesme gecikmesi (Overflow time) Devrenin Kurulması: Bu formülden TMR0 başlangıç değeri de çekilebilir. O zaman, TMR0 = 256 (Gecikme zamanı * fosc ) / (4 * Prescaler) DENEY SETİ üzerindeki tüm, PORT lara ait sabitleme anahtarlarını OFF konumuna getirin. SDS1 ve SDS2 anahtarlarını ON konumuna getirin. (PORTD ve PORTB) SDS2 anahtarlarından birini kapatırsanız tek display aktif olur. MPLABX programında yazdığınız kodları derleyiniz ve oluşan HEX uzantılı dosyayı Pic16F877A ya yükleyin. 8

MATRİS LED DİSPLAY Problem: 16F877A mikrodenetleyiciyinin B0..B6 portlarını nokta matris göstergenin satır tarama uçlarına, D0..D4 portlarını sütun tarama uçlarına bağlayarak ekranda A,B,C,D harfinin 1 saniye aralıklarla görülmesini sağlayan programı yazınız. (1 sn zaman geçikmesini timer0 kesmesi kullanarak ayarlayınız.) Deneyin Amacı: Tarama yöntemini kavrayarak matris ekranlarda TMR0 zaman geçikmesi kullanarak karakter yazmak. Devre Şeması: Açıklamalar: Yandaki şekilde 7x5 matris LED in iç bağlantısı gözükmektedir. Matris LED display ler satır ve sütun olmak üzere bilgi uçlarına sahiptir. Matris LED displayleri sürmek için tarama metodu kullanılır. Yani ilk başta ilk sütun aktif edilir daha sonra ilk sütunda bulunan istenen LED i yakmak için ilgili satır veya satırlar aktif edilir. Ardından ikinci sütun aktif edilir ve bu sütunda yanması istenen LED ler için gerekli satırlar aktif edilir. Bu işlemler tarama mantığına göre diğer sütunlar içinde devam ettirilir. Böylece matris LED de gösterilmek istenilen karakter şekil oluşturulmuş olur. 9

Sütun Tarama Sistemi: Bu sistemde bilgi satırdan verilir ve sütün teker teker taranarak displayde bilgi oluşturulur. 1.Sütun aktif diğer sütunlar pasif, satır bilgisi olarak b x0000011 GEÇİKME 2. Sütun aktif diğer sütunlar pasif, satır bilgisi olarak b x1101101 GEÇİKME 3. Sütun aktif diğer sütunlar pasif, satır bilgisi olarak b x1101110 GEÇİKME 4. Sütun aktif diğer sütunlar pasif, satır bilgisi olarak b x1101101 GEÇİKME 5. Sütun aktif diğer sütunlar pasif, satır bilgisi olarak b x0000011 GEÇİKME Matris display de oluşan görüntünün yeterli bir süre göze görünmesi için yukarıda verilen döngü, komple belirli bir sayıda örneğin 25 kez tekrar edilmelidir. Devrenin Kurulması : Yazdığınız programı yükledikten sonra Deney Setimiz üzerinde ki PORTB ve PORTD çıkışlarını matris led displaye şekildeki gibi bağlıyoruz. Sorular: 1. PORTB nin sıfırıncı pinine bağlı olan butona her beş basma işleminde matris led displaydeki değeri bir artıran programı yazınız.(sayma işlemi 0-5 arasıda yapılması yeterlidir. Programı RB0 kesmesi kullanarak yazınız) 2. Adınızı harf harf 1 sn aralıklarla matris ekrana yazan programı yazınız. 10

ANALOG DİGİTAL ÇEVRİM Problem-1: 16F877A nın A1 portuna bir potansiyometre bağlıyarak portun girişine gelen voltajı değiştirin. Gelen voltaj değerini analog ve digital olarak LCD ekranda görüntüleyiniz. Deneyin Amacı: ADC mantığının kavranarak LCD ekranda yazı yazılması Teorik Bilgiler : Analog bilgiyi dijital bilgiye dönüştürmek için PIC 16F877 entegresi kullanıldığında ek devrelere ihtiyaç duyulmamaktadır.pic16f877 de 8 tane 10 bitlik A/D çevirme kanalı bulunur. A / D kanalları için RA4 hariç diğer A ve E portları kullanılır. Analog-dijital çevirici (A / D) analog voltaj değerini digital değere dönüştürmektir. Analogdijital dönüştürücü analog voltajı ikili sayılara dönüştürür. Bu ikili sayılar farklı uzunlukta ( 2, 4, 8, 10-bit ) olabilir. Daha fazla uzulukta bit kullanarak, daha yüksek çözünürlükte analog digital dönüşüm yapılabilir. ADC nin digital bilgiye dönüştürüleceği en küçük gerilim değerine adım büyüklüğü denir. Adım büyüklüğü aşağıdaki formülle bulunur. Adım Büyüklüğü = V ref (+) V ref ( ) 2 n (n, ADC nin bit sayısını(çözünürlüğünü)belirtir.) V ref (+), V ref ( ) değerleri setup_adc_ports() komotuyla istenilen pinler için tanımlanarak belirleneceği gibi otomatik olarak V dd beslemesini V ref (+), V ss beslemesini V ref ( ) olarak ayarlıyabiliriz. örneğin: Analog pin girişine 0 ile 5 volt arası analog gerilim uygulanıldığında 2 ve 3 bit çözünürlükteki karşılıkları tablo ve grafiksel olarak aşağıda verilmiştir. Adım Büyüklüğü = V ref (+) V ref ( ) = 5 0 = 1.25 2 n 2 2 Adım Büyüklüğü = V ref (+) V ref ( ) = 5 0 = 0.625 2 n 2 3 Analog giriş 0 ile 1.25 arasında ise 00 Sayısal Bilgi Karşılığı 1.25 ile 2.5 arasında ise 01 2.5 ile 3.75 arasında ise 10 3.75 ile 5 arasında ise 11 Analog giriş Sayısal Bilgi Karşılığı 0 ile 0.625 arasında ise 000 0.625 ile 1.25 arasında ise 001 1.25 ile 1.875 arasında ise 010 1.875 ile 2.5 arasında ise 011 2.5 ile 3.125 arasında ise 100 Devrenin Şeması: 3.125 ile 3.75 arasında ise 101 3.75 ile 4.375 arasında ise 110 4.375 ile 5 arasında ise 111 11

Problem-2: 16F877A nın A1 portuna LDR ışık sensörü bağlıyarak voltaj değerini analog ve digital olarak LCD ekranda görüntüleyiniz. Foto direnç, üzerine düşen ışık arttıkça direnç değeri lineer olmayan bir şekilde azalır. LDR nin aydınlıkta direnci minimum, karanlıkta maksimumdur. Yandaki şekil için; Karanlık- LDR high- voltaj high Aydınlık - LDR low voltaj low 12

EK-1(ADC CCS-C KOMUTLARI) CCS-C Derleyicisinde Pic mikro denetleyicilerinin ADC donanımlarını kullanabilmek için aşağıdaki fonksiyonlar hazır olarak gelmektedir. setup_adc() A/D birimlerinin ayarları yapılır. setup_adc(adc_off); // ADC modülü kapalı setup_adc(adc_clock_internal); // ADC için dahili clock kullanılacak setup_adc(adc_clock_div_2); setup_adc(adc_clock_div_8); setup_adc(adc_clock_div_32); // Clock 2'ye bölünerek kullanılacak // Clock 8'e bölünerek kullanılacak // Clock 32'ye bölünerek kullanılacak setup_adc_ports() V ref (+), V ref ( ) ve analog olarak kullanılacak kanalların seçimi yapılır. set_adc_channel() ADC modülüne sahip 16F877A mikro denetleyicisi 8 adet analog kanal bulunmaktadır. Analog kanal seçimi bu komutla yapılr. set_adc_chanel(1); // RA1 kanalından gelen sinyal A/D işlemi uygulanır. Kanal ayarlaması yapıldıktan sonra yanlış okuma yapmamak için kısa bir süre beklenmesi gerekmektedir. Bu yüzden bu fonksiyonun ardından ortalama 20us lik bir gecikme kullanmak gerekmektedir. read_adc() Bu fonksiyon belirtilen kanaldan alınan sinyalin digital karşılığını okur ve geri döner. deger=read_adc(); //digital karşılığını okur ve deger değişkenine aktarır. #device ADC 16F877A ADC çözünürlüğü 10 bittir. Bu komutla isteğe bağlı olarak çözünürlük değiştirilebilir. #device ADC=10 // 10 bitlik ADC kullanılıyor. 13

STEP MOTOR Problem: 16F877 mikrodenetleyicinin B4..B7 portları step motor sürücü devresine, C0, C1 portları birer butona bağlanmıştır. Butonlara her basışta step motoru sağa veya sola doğru 1 adım döndüren programı yazınız. Deneyin Amacı : Step motoru sürme tekniğini kavrayabilmek Devre Şeması: Açıklamalar: Devrenin amacı, motorun ortak kablolarına, motor çalışma gerilimini uyguladıktan sonra, motorun diğer uçlarını, belli bir sırada toprağa göndererek, bir adım hareketi elde etmektir. Transistorun Base ucuna, mikrokontrolörden +5V geldiğinde, transistor tetiklenir ve Collector- Emiter iletime geçer. Dolayısıyla transistorun Collector ucuna bağlı kablolar toprağa ulaşır. Devredeki diyotlar, motorun üretmiş olduğu ters EMK dan, transistorları korumak için kullanılmışlardır. Yani, motor adım attıktan sonra oluşacak ters EMK, bu diyotlar sayesinde absorbe edilir. Step Motor Sürme Teknikleri: Tam Adım Sürme: Motor sargılarının ikisinin sıra ile aynı anda uyarıldığı şekline denir. İki faz uyartımda rotorun geçici durum tepkisi tek-faz uyartıma göre daha hızlıdır. Ancak burada güç kaynağından çekilen güç, iki katına çıkmıştır. 14

Yarım Adım Sürme: Bu uyartım modunda tek faz ve iki faz art arda uygulanır. Burada rotor, her bir uyartım sinyali için yarım adımlık bir hareket yapmaktadır. Bu uyartım modu sayesinde örneğin fabrika çıkışı 2 derece olan bir motorun adım açısını 1 dereceye düşürmüş oluruz. Adım A B A B 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 1 1 0 5 0 0 1 0 6 0 0 1 1 7 0 0 0 1 8 1 0 0 1 NOT= Step motor, belirli adımlarla devrini tamamlar.360 lik bir dönme için gerekli adım miktarı, statora sarılan sargıların faz sayısına ve rotorunun çıkıntılı kutup sayısına bağlıdır. 15

DC MOTOR Problem: 16F877 mikrodenetleyicinin C2 portundan bir PWM sinyali üreterek DC motorun hız kontrolünü sağlayınız. DC motor sürücü devresine, D0, D1 portları birer butona bağlanmıştır. D0 butonu motorun hızının artmasını, D1 butonu motor hızının azalmasını sağlamalıdır. Deneyin Amacı: PWM ile DC motor hız kontrolünün gerçekleştirilmesi Devre Şeması: Açıklamalar: Mikrodenetleyici programı ile üretilen PWM sinyali RC2/CCP1 ucundan alınarak transistorun base girişine uygulanır. Transistorun PWM sinyalinin Ton sürelerinde iletimde Toff sürelerinde ise yalıtımdadır. Transistorun iletimde olduğu sürelerde Motor içerisinden bir akım geçer. Motorun dönme hareketi sırasındaki hızı ve devir sayısı Vm gerilimi ve aktarma oranına bağlıdır. PWM tekniği ile motor güçü çok hızlı bir şekilde anahtarlanarak motorun hızı kontrol edilir. Devredeki diyot, motorun üretmiş olduğu ters EMK dan, transistoru korumak için kullanılmıştır. 16

PWM için Kullanılan PIC-C Komutları PIC16F877 Mikrodenetleyicide PIC-C dili kullanarak PWM sinyali üretmek için 3fonksiyonu kullanmak yeterlidir. SET_PWM1_DUTY() [SET_PWM2_DUTY()] PWM sinyalinin Ton süresini ayarlar. SETUP_TIMER_2() Timer2 yazmacını PWM sinyali için uygun değere ayarlar. Timer2 yazmacına sahip mikrodenetleyiciler için kullanılabilir. Kullanımı: setup_timer_2 (mod, periyot, son bölücü) Bu fonksiyonda mod, T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4,T2_DIV_BY_16 ifadelerinden biridir. Mod osilatör saat darbesinin kaça bölüneceğini bildirir. Periyot: Fonksiyon periyot katsayısıdır. Saat darbesi değerinin sıfırlandığı zamanı belirleyen 0-255 arasındaki int tamsayı tipinde bir değişkendir. Son bölücü: Bir kesme sinyalinden önce zamanlayıcının kaç defa sıfırlanacağını belirleyen 1-16 arasında bir sayıdır. Örneğin bu sayı 1 olursa zamanlayıcı 1 kere, 2 olursa 2kere resetlenir. SET_CCP1() [SET_CCP2()] CCP modülünün çalışma modunu ayarlar. Kullanımı: setup_ccp1 (mod)setup_ccp2 (mod) mod bir sabittir. Her mikrodenetleyicinin başlık dosyasında geçerli sabitler tanımlanmıştır. Mod değeri için kullanılan sabit ifadeler PWM modu için aşağıda verilmiştir. CCP_PWM : Darbe genişlik modülatörünü (PWM) aktif yapar. 17

DENEYLERDE KULLANILAN PROGRAMLARIN TANITILMASI: MPLAB X IDE MPLAB X IDE, Microchip denetleyiciler ve sayısal sinyal denetleyiciler (dspic) için uygulama geliştirmekte kullanılan bir yazılım programıdır. Proje oluşturma işlemi bitirildikten sonra, programların derlenmesi, çalıştırılması ve hata testlerinin yapılması MPLAB-X aracılığı ile gerçekleştirilebilir. Bunlardan.hex uzantılı dosya, mikro denetleyiciye yüklenecek dosyadır. Yani orijinal programın makine diline çevrilmiş halini içerir..lst uzantılı dosya ise dokümantasyon amaçlı olarak kullanılır. MPLAB X IDE birçok PIC mikro denetleyiciyi ve tüm dspic leri destekler. MPLAB-X internetten ücretsiz olarak indirebilirsiniz. 18

MPLAB X IDE PROJE OLUŞTURMA 19

Programcı / Debugger aracını kullanacaksak ise bu bölümde onu seçiyoruz.hiçbir araç kullanmayacaksak simulator modunda çalıştırıyoruz. 20

Yeşil Desteklenen, Sarı Tam Desteklenmeyen, Kırmızı Hiç Desteklenmeyen araçları göstermektedir. Bu adımda kullanmak istediğimiz derleyiciyi belirliyoruz. 21

Projeye boşluk kullanmadan bir isim belirlememiz gerekmektedir. Kaynak dosyamızı new sekmesinden, hangi programlama dilinde yazacağımıza göre seçiyoruz. 22

PIC C COMPLIER PROJE OLUŞTURMA 23

24

25

Gerekli ayarları yaptıktan sonra OK tuşuna basarak, işlemci için gerekli kodlarınızı yazmaya başlayabilirsiniz. 26

Yazılım bizim seçtiğimiz ayarları main.h dosyası içine kaydetmektedir. Kullandığımız veya kullanmadığımız her özellik bunu içinde yer almaktadır. Gördüğünüz gibi program sizin ayarlarınıza göre gerekli ayarları yapıp sizin kod yazmanız için hazır hale getirmiştir. TODO: USER CODE yazan yerden sonra kodlarınızı yazmaya başlayabilirsiniz. 27

28

PIC16F87XA Komut Açıklamaları TABLE 15-2: PIC16F87XA INSTRUCTION SET Mnemonic, 14-Bit Opcode Status Description Cycles Operands MSb LSb Affected Notes BYTE-ORIENTED FILE REGISTER OPERATIONS ADDWF f, d Add W and f 1 00 0111 dfff ffff C,DC,Z 1,2 ANDWF f, d AND W with f 1 00 0101 dfff ffff Z 1,2 CLRF f Clear f 1 00 0001 lfff ffff Z 2 CLRW - Clear W 1 00 0001 0xxx xxxx Z COMF f, d Complement f 1 00 1001 dfff ffff Z 1,2 DECF f, d Decrement f 1 00 0011 dfff ffff Z 1,2 DECFSZ f, d Decrement f, Skip if 0 1(2) 00 1011 dfff ffff 1,2,3 INCF f, d Increment f 1 00 1010 dfff ffff Z 1,2 INCFSZ f, d Increment f, Skip if 0 1(2) 00 1111 dfff ffff 1,2,3 IORWF f, d Inclusive OR W with f 1 00 0100 dfff ffff Z 1,2 MOVF f, d Move f 1 00 1000 dfff ffff Z 1,2 MOVWF f Move W to f 1 00 0000 lfff ffff NOP - No Operation 1 00 0000 0xx0 0000 RLF f, d Rotate Left f through Carry 1 00 1101 dfff ffff C 1,2 RRF f, d Rotate Right f through Carry 1 00 1100 dfff ffff C 1,2 SUBWF f, d Subtract W from f 1 00 0010 dfff ffff C,DC,Z 1,2 SWAPF f, d Swap nibbles in f 1 00 1110 dfff ffff 1,2 XORWF f, d Exclusive OR W with f 1 00 0110 dfff ffff Z 1,2 BIT-ORIENTED FILE REGISTER OPERATIONS BCF f, b Bit Clear f 1 01 00bb bfff ffff 1,2 BSF f, b Bit Set f 1 01 01bb bfff ffff 1,2 BTFSC f, b Bit Test f, Skip if Clear 1 (2) 01 10bb bfff ffff 3 BTFSS f, b Bit Test f, Skip if Set 1 (2) 01 11bb bfff ffff 3 LITERAL AND CONTROL OPERATIONS ADDLW k Add Literal and W 1 11 111x kkkk kkkk C,DC,Z ANDLW k AND Literal with W 1 11 1001 kkkk kkkk Z CALL k Call Subroutine 2 10 0kkk kkkk kkkk CLRWDT - Clear Watchdog Timer 1 00 0000 0110 0100 TO,PD GOTO k Go to Address 2 10 1kkk kkkk kkkk IORLW k Inclusive OR Literal with W 1 11 1000 kkkk kkkk Z MOVLW k Move Literal to W 1 11 00xx kkkk kkkk RETFIE - Return from Interrupt 2 00 0000 0000 1001 RETLW k Return with Literal in W 2 11 01xx kkkk kkkk RETURN - Return from Subroutine 2 00 0000 0000 1000 SLEEP - Go into Standby mode 1 00 0000 0110 0011 TO,PD SUBLW k Subtract W from Literal 1 11 110x kkkk kkkk C,DC,Z XORLW k Exclusive OR Literal with W 1 11 1010 kkkk kkkk Z Note 1: When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, 1), the value used will be that value present on the pins themselves. For example, if the data latch is 1 for a pin configured as input and is driven low by an external device, the data will be written back with a 0. 2: If this instruction is executed on the TMR0 register (and where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 module. 3: If Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP. Note: Additional information on the mid-range instruction set is available in the PICmicro Mid-Range MCU Family Reference Manual (DS33023). DS39582B-page 160 2003 Microchip Technology Inc. 29

PIC16F87XA 15.2 Instruction Descriptions ADDLW Add Literal and W [ label ] ADDLW k Operands: 0 k 255 Status Affected: (W) + k (W) C, DC, Z The contents of the W register are added to the eight-bit literal k and the result is placed in the W register. BCF Bit Clear f [ label ] BCF f,b 0 b 7 Status Affected: 0 (f<b>) None Bit b in register f is cleared. ADDWF Add W and f [ label ] ADDWF f,d d Status Affected: C, DC, Z (W) + (f) (destination) Add the contents of the W register with register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. BSF Bit Set f [ label ] BSF f,b 0 b 7 Status Affected: 1 (f<b>) None Bit b in register f is set. ANDLW AND Literal with W [ label ] ANDLW k Operands: 0 k 255 Status Affected: (W).AND. (k) (W) Z The contents of W register are AND ed with the eight-bit literal k. The result is placed in the W register. BTFSS Bit Test f, Skip if Set [ label ] BTFSS f,b 0 b < 7 skip if (f<b>) = 1 Status Affected: None If bit b in register f is 0, the next instruction is executed. If bit b is 1, then the next instruction is discarded and a NOP is executed instead, making this a 2 TCY instruction. ANDWF AND W with f [ label ] ANDWF f,d d Status Affected: Z (W).AND. (f) (destination) AND the W register with register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. BTFSC Bit Test, Skip if Clear [ label ] BTFSC f,b 0 b 7 skip if (f<b>) = 0 Status Affected: None If bit b in register f is 1, the next instruction is executed. If bit b in register f is 0, the next instruction is discarded and a NOP is executed instead, making this a 2 TCY instruction. 30

PIC16F87XA CALL Call Subroutine CLRWDT Clear Watchdog Timer [ label ] CALL k Operands: 0 k 2047 Status Affected: None (PC)+ 1 TOS, k PC<10:0>, (PCLATH<4:3>) PC<12:11> Call Subroutine. First, return address (PC+1) is pushed onto the stack. The eleven-bit immediate address is loaded into PC bits <10:0>. The upper bits of the PC are loaded from PCLATH. CALL is a two-cycle instruction. Operands: Status Affected: [ label ] CLRWDT None 00h WDT 0 WDT prescaler, 1 TO 1 PD TO, PD CLRWDT instruction resets the Watchdog Timer. It also resets the prescaler of the WDT. Status bits, TO and PD, are set. CLRF Clear f COMF Complement f [ label ] CLRF f Status Affected: 00h (f) 1 Z Z The contents of register f are cleared and the Z bit is set. [ label ] COMF f,d d [0,1] Status Affected: Z (f) (destination) The contents of register f are complemented. If d is 0, the result is stored in W. If d is 1, the result is stored back in register f. CLRW Operands: Status Affected: Clear W [ label ] CLRW None 00h (W) 1 Z Z W register is cleared. Zero bit (Z) is set. DECF Decrement f [ label ] DECF f,d d [0,1] Status Affected: Z (f) - 1 (destination) Decrement register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f.. 31

PIC16F87XA DECFSZ Decrement f, Skip if 0 [ label ] DECFSZ f,d d [0,1] Status Affected: None (f) - 1 (destination); skip if result = 0 The contents of register f are decremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. If the result is 1, the next instruction is executed. If the result is 0, then a NOP is executed instead, making it a 2 TCY instruction. INCFSZ Increment f, Skip if 0 [ label ] INCFSZ f,d d [0,1] Status Affected: None (f) + 1 (destination), skip if result = 0 The contents of register f are incremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. If the result is 1, the next instruction is executed. If the result is 0, a NOP is executed instead, making it a 2 TCY instruction. GOTO Unconditional Branch [ label ] GOTO k Operands: 0 k 2047 Status Affected: None k PC<10:0> PCLATH<4:3> PC<12:11> GOTO is an unconditional branch. The eleven-bit immediate value is loaded into PC bits <10:0>. The upper bits of PC are loaded from PCLATH<4:3>. GOTO is a two-cycle instruction. IORLW Inclusive OR Literal with W [ label ] IORLW k Operands: 0 k 255 Status Affected: (W).OR. k (W) Z The contents of the W register are OR ed with the eight-bit literal k. The result is placed in the W register. INCF Increment f [ label ] INCF f,d d [0,1] Status Affected: Z (f) + 1 (destination) The contents of register f are incremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. IORWF Inclusive OR W with f [ label ] IORWF f,d d [0,1] Status Affected: Z (W).OR. (f) (destination) Inclusive OR the W register with register f. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. 2003 Microchip Technology Inc. DS39582B-page 163 32

PIC16F87XA RLF Rotate Left f through Carry [ label ] RLF f,d d [0,1] Status Affected: C See description below The contents of register f are rotated one bit to the left through the Carry flag. If d is 0, the result is placed in the W register. If d is 1, the result is stored back in register f. C Register f SLEEP Operands: Status Affected: [ label ] SLEEP None 00h WDT, 0 WDT prescaler, 1 TO, 0 PD TO, PD The power-down status bit, PD, is cleared. Time-out status bit, TO, is set. Watchdog Timer and its prescaler are cleared. The processor is put into Sleep mode with the oscillator stopped. RETURN Operands: Return from Subroutine [ label ] RETURN None Status Affected: None TOS PC Return from subroutine. The stack is POPed and the top of the stack (TOS) is loaded into the program counter. This is a two-cycle instruction. SUBLW Subtract W from Literal [ label ] SUBLW k Operands: 0 k 255 k - (W) W) Status Affected: C, DC, Z The W register is subtracted (2 s complement method) from the eight-bit literal k. The result is placed in the W register. RRF Rotate Right f through Carry [ label ] RRF f,d d [0,1] Status Affected: C See description below The contents of register f are rotated one bit to the right through the Carry flag. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. C Register f SUBWF Subtract W from f [ label ] SUBWF f,d d [0,1] Status Affected: (f) - (W) destination) C, DC, Z Subtract (2 s complement method) W register from register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. DS39582B-page 164 2003 Microchip Technology Inc. 33

PIC16F87XA SWAPF Swap Nibbles in f [ label ] SWAPF f,d d [0,1] Status Affected: None (f<3:0>) (destination<7:4>), (f<7:4>) (destination<3:0>) The upper and lower nibbles of register f are exchanged. If d is 0, the result is placed in the W register. If d is 1, the result is placed in register f. XORWF Exclusive OR W with f [ label ] XORWF f,d d [0,1] Status Affected: Z (W).XOR. (f) destination) Exclusive OR the contents of the W register with register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. XORLW Exclusive OR Literal with W [ label ] XORLW k Operands: 0 k 255 Status Affected: (W).XOR. k W) Z The contents of the W register are XOR ed with the eight-bit literal k. The result is placed in the W register. 34