Hacettepe Robot Topluluğu



Benzer belgeler
Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

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

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

# 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

PIC TABANLI, 4 BASAMAKLI VE SER

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

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

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

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

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İ

LCD (Liquid Crystal Display )

Hacettepe Robot Topluluğu

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

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

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

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

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

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

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

Hacettepe Robot Topluluğu

8 Ledli Havada Kayan Yazı

LCD (Liquid Crystal Display)

Hacettepe Robot Topluluğu

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

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

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

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur:

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

Komutların İşlem Süresi

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

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

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

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

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

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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

BÖLÜM 2 2. PROGRAMLAMA MANTIĞI

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

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İ

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Ü

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

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

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

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Ü

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

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

Hacettepe Robot Topluluğu

# 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

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

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 ASSEMBLY VE MAKROLAR

ÖĞRENME FAALİYETİ-1 ÖĞRENME FAALİYETİ 1

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

ÇİZGİ İZLEYEN ROBOT YAPIMI

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

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İ

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

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

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

Yrd. Doç.Dr. Bülent ÇOBANOĞLU. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 1

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

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

BQ300 RF Röle Kontrol Ünitesi. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Mikro denetleyicili Uygulama devresi bileşenleri

Işıkla Bilgi İletiminin Tarihçesi. Işık Kuramının Tarihçesi

Alıcı Devresi; Sinyali şu şekilde modüle ediyoruz;

Mikroişlemci Programlama Aşamaları

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

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

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Ü

idea rsbasic KOMUTLARI

Hacettepe Robot Topluluğu

Microprocessors and Programming

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İ-3

MİKRO DENETLEYİCİLER 1 DERS NOTLARI (Final) Prof. Dr. Hakan Ündil Güz

PROGRAMLANABİLİR ZAMANLAYICI

MANCHESTER MODUL ASM YAZILIM NOTU

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.

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

ONDOKUZ MAYIS ÜNİVERSİTESİ

AKÜ TAKVİYE CİHAZLI POWER BANK 9000

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Komutların İşlem Süresi

BQ301 RF Ekstra Röle Kontrol Ünitesi. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

HUNRobotX - Makaleler - PIC 16 Serisi ile Çarpma İşlemi. Makaleler PIC 16 Serisi ile Çarpma İşlemi

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

2019

Transkript:

Hacettepe Robot Topluluğu

Makaleler PIC ile LED Yakıp Söndüren Devre

PIC ile LED Yakıp Söndüren Devre Canol Gökel - 13 Ekim 2006 Giriş Merhaba arkadaşlar, bu makalemizde PIC'e yeni başlayanlar için basit bir devre yapacağız. Mikrokontrolörümüzü kullanarak bir LED'i yakıp söndüreceğiz. Günlük hayatta lambaları yakıp söndürme işlemi iki şekilde yapılır; birincisinde, bir düğmeye basarsınız (yani bir anahtarı kapatırsınız) ve düğme basılı olduğu sürece (anahtar kapalı kaldığı sürece) lamba yanık kalır. İkinci şekilde ise; bir düğmeye basarsınız (anahtar kapanır ve hemen tekrar açılır, yani bir sinyal gönderir) ve lamba yanar, tekrar basarsınız (yine aynı şekilde anahtar kapanır ve hemen kendiliğinden açılır) lamba söner. Birinci şekilde yapılacak bir devre mikrokontrolör gerektirmeyeceğinden biz ikinci şekilde çalışan bir devre hazırlayacağız. Assembly Programı İlk olarak mikrokontrolörümüz için bir program yazacağız. Programı assembly dili ile kodlayacağız. Elbette mikrokontrolöre HEX uzantısına dönüştürülmüş (yani derlenip makine koduna çevrilmiş) halini yükleyeceğiz. Bu işlemi MPLAB ya da MPASM programını kullanarak yapabilirsiniz. Biraz görsellik katıp anlamanızı kolaylaştırmak açısından bir akış diagramı hazırlayarak işe başlayabiliriz: Değişkenleri ayarla, giriş/çıkış pin'lerini ayarla D ü ğ m e d e n s i n y a l geliyor m u? Evet Lamba yanıyor mu? Evet Lambayı söndür Hayır Hayır Lambayı yak

Diagramı açıklayacak olursak: İlk olarak yapılması gereken ufak ayarlar yapılıyor. Örneğin değişken adlarını ayarlıyoruz, hangi geçidin hangi pin'inin giriş hangi pin'inin çıkış olacağını belirliyoruz vs... Daha sonra programımız sürekli olarak düğmenin bağlı olduğu pin'i kontrol ediyor. Eğer o pin'den bir sinyal gelirse lambanın bağlı olduğu pin'i high mode a çekiyor, yani +5V yapıyor. Böylece lambamız yanıyor. Ondan sonra yaptığı şey yine giriş pin'ini kontrol etmek ve yeni sinyaller beklemek. Tekrar bir sinyal aldığı taktirde pin'i low mode a çekecek yani 0V yapacak ve lamba sönecek. Bu kontrol işlemi PIC'e güç verdiğiniz sürece devam edecek. Şimdi programımızın kodlarını yazalım. Programın gerekli yerlerine açıklamalar koydum ama PIC assembly dilini zaten bildiğinizi varsayarak yalnızca programın mantığı ile ilgili açıklamalar yazdım. ; noktalama işaretinden sonra yazılan yazılar yorum lardır ve derleyici tarafından dikkate alınmaz. Ben de açıklamaları yorum şeklinde programa dahil ettim. list p=16f84 ; Mikrokontrolörün modelini belirttik. #include <p16f84.inc> ; PIC16F84'e has bazı değişkenleri programa dahil ; ettik. CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; PIC'in ayarlarını yaptık. Örneğin WDT timer'ını kapattık, ; kristal osilatör kullanacağımızı belirttik. ; Şimdi değişkenleri ayarlayacağız: #DEFINE DUGME PORTB, 1 ; Düğmemizin bağlı olduğu pin'i tanımladık. #DEFINE LED PORTB, 2 ; LED'imizin bağlı olduğu pin'i tanımladık. #DEFINE YANIK 0X20, 0 ; LED'in anlık durumunu (yanık ya da ; sönük) aklında tutan değişkenimizi ; (daha doğrusu bit'imizi) tanımladık. SAYAC_1 EQU 0X21 ; Program içinde kullanacağımız sayaç için gerekli SAYAC_2 EQU 0X22 ; olan değişkenler. ORG 0x000 GOTO main ; PIC'e ilk çalıştırılacak olan alt programa gitmesini ; söyledik. GECIKME ; Düğmeye basıldığında oluşan arkı algılamamak için bir bekleme yapacağız. ; Bu gecikme prosedüründe iki değişkene 255 değeri atıyoruz daha sonra da ; bunları azaltmakla zaman harcayarak bir bekleme rutini gerçekleştiriyoruz. MOVLW D'255' MOVWF SAYAC_1 MOVWF SAYAC_2 SAYAC_AZALT MOVWF SAYAC_1 SAYAC_1_AZALT DECFSZ SAYAC_1 GOTO SAYAC_1_AZALT

DECFSZ SAYAC_2 GOTO SAYAC_AZALT RETURN TERSLE ; LED yanıksa söndüren, sönükse yakan alt programımız. BTFSC YANIK ; YANIK bit'ini kontrol et. GOTO $+2 ; YANIK bit'i 1 ise 2 satır sonraya git. GOTO $+3 ; YANIK bit'i 0 ise 3 satır sonraya git. CALL LED_SONDUR ; LED'i söndürme alt programını çağır. GOTO $+2 CALL LED_YAK ; LED'i yakma alt programını çalıştır. CALL GECIKME ; Düğmeye bastıktan sonra oluşacak olan arklar CALL GECIKME ; geçinceye kadar bekle. CALL GECIKME RETURN ; Ana programa geri dön. LED_YAK ; LED'i yakan alt program. BSF LED ; LED'i yak. BSF YANIK ; YANIK bit'ini 1 yap. RETURN LED_SONDUR ; LED'i söndüren alt program. BCF LED ; LED'i söndür. BCF YANIK ; YANIK bit'ini 0 yap. RETURN main ; İlk olarak çalıştırılacak olan kısım. BSF STATUS, RP0 ; Kodlama yaptığımız bank'ı değiştiriyoruz. CLRF TRISA ; A portunun tüm pin'lerini çıkış yapıyoruz. ; Aslında A portunu kullanmadığımızdan çok da önemli ; değil. MOVLW B'00000010' MOVWF TRISB ; B portunun 1. bitini giriş diğer bit'lerini çıkış ; yaptık. BCF STATUS, RP0 ; Tekrar bank değiştirdik. CLRF PORTB ; PIC'e ilk güç verdiğimizde düğmeye basılıymış ; gibi gözükmesin diye B portunun değerlerini low ; yaptık. Elbette yalnızca 1. bit'i low yapmak da ; yeterdi. LED_YAK_SONDUR ; Düğmenin basılıp basılmadığını kontrol ettiğimiz kısım. BTFSC DUGME ; Düğme basılı mı? CALL TERSLE ; Basılıysa LED'in durumunu tersle. GOTO LED_YAK_SONDUR ; Düğmenin basılı olup olmadığını tekrar ; kontrol et. END

Devre Programımızı yazdıktan sonra derleyicimizle derliyoruz ve PIC'imize derlenmiş kodu yüklüyoruz. Bu adımları bu makalede adım adım anlatamayacağım çünkü o konulardan ayrı bir yazı konusu çıkar. Şimdi devre şemasına kısaca bir göz artalım: 0V +5V 0V +5V PIC 16F84 10KΩ Düğmenin PIC ile birleşen kısmına direnç koymamızın nedeni düğme basılı değil iken PIC'in giriş pin'inine 0V vermek istememiz. Düğmeye basıldığında 5V'luk değer kısa devre aracılığı ile PIC'le buluşacak direnç üzerinde de 5V'luk bir gerilim farkı oluşarak 5V'un ve toprağın kısa devre olmasını engelleyecek. Bunun dışında kristalli olan kısım ve PIC'in bacaklarına bağlanan kablolar dışında devrenin mantığını anlamış olmanız gerekiyor (zaten geriye bir tek LED'li ve düğmeli kısım kaldı). Eğer anlamadıysanız elektronik konusunda biraz daha çalışmalısınız. Daha sonra yeniden bu yazıya dönebilirsiniz.

Benim hazırladığım devrenin birkaç açıdan fotoğrafı: HUNRobotX - Makaleler - PIC ile LED Yakıp Söndüren Devre Şimdi devreye +5V vererek sisteminizi çalıştırabilirsiniz. Yani breadboard'un kırmızı çizgili sütununa güç kaynağınızın +5V'luk ucunu mavi çizgili sütununa ise toprak ucunu bağlayacaksınız. Eğer çalışmazsa kabloların breadboard'a tam olarak yerleştiğinden ve PIC'in doğru bacaklarına doğru voltajı uyguladığınızdan emin olun. Yine çalışmazsa düğmeye bastığınızda doğru bacağa +5V'un ulaştığını avometrenizle kontrol edin. Eğer yine çalışmazsa yazdığınız programın yukarıdaki ile aynı olduğundan ve programın HEX kodunu PIC'e doğru bir biçimde yüklediğinizden emin olun. Bir de devreniz çalışmadığı taktirde PIC'in ısınıp ısınmadığını ara ara kontrol edin, eğer PIC çok ısınırsa mutlaka güç kaynağını devreden sökün ve bağlantıları gözden geçirin. Sorularınız için sitemizin forum bölümünü ziyaret edebilirsiniz. İyi çalışmalar. Bağlantılar http://robot.ee.hacettepe.edu.tr/ http://www.microchip.com/