LPC2104 Mikro Denetleyicisini KEIL İle Programlamak



Benzer belgeler
TUŞ TAKIMI (KEYPAD) UYGULAMALARI

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

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

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

# 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

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

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

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

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

BÖLÜM 4 KAREKTER LCD ve ADC İŞLEMLERİ

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

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

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Örnek 1: Sağdan sola ledleri yakmak.

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

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

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

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

LCD (Liquid Crystal Display )

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

KONTROL VE OTOMASYON KULÜBÜ

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

Algoritma ve Programlama: Karar Yapıları ve Döngüler

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

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

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

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

Hacettepe Robot Topluluğu

BİLG Dr. Mustafa T. Babagil 1

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Sistem Programlama Deney 1

SQL Uyarı Programı Kurulum ve Kullanımı

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

ZTerminal KULLANMA KILAVUZU. yazılımı. USB Terminal

Ders - 7 while döngüsü

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

Teknosem ANASAYFA. Program komut butonları ve program zaman parametrelerinin bulunduğu sayfadır.

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

C ile Uygulamalar 1 - Cevaplar

LCD (Liquid Crystal Display)

NESNEYE YÖNELİK PROGRAMLAMA

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

Diziler (Arrays) Çok Boyutlu Diziler

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Bölüm 2 - C ile Programlamaya Giriş

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

ARDUİNO PROGRAMLAMA 1.ARDUİNO YU TANIMAK

Birol Çapa Özen Özkaya Güz Dönemi Eğitimleri

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

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

Fonksiyonlar (Altprogram)

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Giris {\} /\ Suhap SAHIN Onur GÖK

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

C dilinde if-else yapısı

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

C ile Uygulamalar 2 - Cevaplar

1 PROGRAMLAMAYA GİRİŞ

IOT UYGULAMALARINA GİRİŞ

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

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

FPGA İLE UYGULAMA ÖRNEKLERİ

WIRELESS TECHNOLOGIES Uygulama Notu. ARX-34 ve ATX-34 KULLANARAKDATA GÖNDERMEK VE ALMAK ÇN GEREKL YAZILIM ve DONANIM

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Internet Programming II

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

VTIY DERS-4 YARDIMCI NOTLARI -2018

PIC TABANLI, 4 BASAMAKLI VE SER

XC8 ile PİC uygulamaları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

Model BLW-210PI

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Q-P 50 B KULLANIM KILAVUZU

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

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

TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ MİKROBİLGİSAYAR TABANLI SİSTEM TASARIMI DERSİ

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Android Ders Notları

C PROGRAMLAMA D İ L İ

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

Transkript:

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak Program yazabilmek için öncelikle komutları tanımamız ve ne işe yaradıklarını bilmemiz gerekir. Komutlar yeri geldikçe çalışma içerisinde anlatılacaktır. Öncelikle basit bir led yak söndür programı yazabilmemiz için gerekli komutları göreceğiz. Uygulamalarımız.. Ders1 = LED yak söndür uygulaması Ders2 = 1 buton 1LED uygulaması Ders3 = Karaşişek uygulaması Ders4 = 7 segment display de butonlar ile arttırıp azaltma uygulaması Ders5 = 7 segment display in keypad ile kontrolü (Keypad.h dosyası oluşturma) Ders6 = 7 segment display ve keypad ile şifreli kilit uygulaması (şifre=3639) Ders7 = LCD uygulaması

IODIR0 Mikro denetleyici pinlerini giriş ya da çıkış olarak yönlendirmek için kullanılır. Burada pic mikro denetleyicilere göre ters bir durum mevcuttur. 1 çıkış 0 giriş yapmak için kullanılır. Örnek: IODIR0 = 0x000000FF; //ilk 8 bit çıkış diğer bitleri giriş olarak ayarla IOSET0 Mikro denetleyici pinlerini 1 yapmak için kullanılır. Sadece seçilen pinler 1 yapılır. Seçilmeyen pinlerin durumunda bir değişiklik olmaz. Örnek: IOSET0 = 0x000000FF; //Sadece ilk 8 bit 1 yap diğer bitlerin durumunu değiştirme IOCLR0 Mikro denetleyici pinlerini 0 yapmak için kullanılır. Sadece seçilen pinler 0 yapılır. Seçilmeyen pinlerin durumunda bir değişiklik olmaz. Örnek: IOCLR0 = 0x000000FF; //Sadece ilk 8 bit 0 yap diğer bitlerin durumunu değiştirme IOPIN0 Mikro denetleyici pinlerini 1 ya da 0 yapmak için kullanılır. Sadece seçilen pinler 1 seçilmeyenler ise 0 yapılır. Örnek: IOPIN0 = 0x000000FF; // ilk 8 bit 1 yap diğer bitleri 0 yap Öncelikle KEIL derleyicisi kurulur ve sırasıyla aşağıdaki resimlerdeki gibi bir proje dosyası oluşturulmaya çalışılır.

DERS1 Pin 0 a bağlanmış bir led i 500 milisaniye boyunca 1, 500 milisaniye boyunca 0 yapan programı yazınız. #include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor. /* Gecikme Fonksiyonu */ void Gecikme (long int sure) long int i,k; // 16 bitlik i degiskeni tanimlaniyor. for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön for (k=0;k<=12000;k++) /* Ana Fonksiyon */ int main (void) IODIR0 = 0x00000001; while (1) //giris cikis ayarlama komutu 1 cikis 0 giris // 1. biti cikis digerleri giris //sonsuz döngü IOSET0 = 0x00000001; //1. biti 1 yap Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de) IOCLR0 = 0x00000001; //1. biti 0 yap Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)

DERS2 Pin 1 e bağlanmış bir butona basıldığında pin 0 a bağlanmış led i yakan, bırakıldığında söndüren programı yazınız. #include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor. /* Ana Fonksiyon */ int main (void) IODIR0 = 0x00000001; while (1) //// 1. biti cikis digerleri giris //sonsuz döngü if (IOPIN0&0x00000002) // İkinci pindeki buton IOCLR0 = 0x01; // Birse else IOSET0 = 0x01; // Sifirsa

DERS3 İlk 8 pine bağlı ledler ile kara şimşek programını yazınız. #include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor. unsigned int sayac=0,sayac2=1; /* Gecikme Fonksiyonu */ void Gecikme (long int sure) long int i,k; // 16 bitlik i degiskeni tanimlaniyor. for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön for (k=0;k<=12000;k++) /* Ana Fonksiyon */ int main (void) IODIR0 = 0x000000FF; while (1) //giris cikis ayarlama komutu 1 cikis 0 giris // ilk 8. biti cikis digerleri giris //sonsuz döngü

for (sayac=1;sayac<=8;sayac++) // 8 defa ayni islemi yapmak için for döngüsü IOPIN0 = sayac2; // 0. portta sayac2 nin bilgisini gönder sayac2 = sayac2 * 2; // sayac2 nin içerisindeki sayı ile 2 yi çarp Gecikme(10); // 10 msn bekle sayac2=64; // sayac2 ye 64 yükle for (sayac=1;sayac<=8;sayac++) // 8 defa ayni islemi yapmak için for döngüsü IOPIN0 = sayac2; // 0. portta sayac2 nin bilgisini gönder sayac2 = sayac2 / 2; // sayac2 nin içerisindeki sayiyi 2 ye böl Gecikme(10); // 10 msn bekle sayac2=2; // sayac2 ye 2 yükle

DERS4 7 segment display de butonlar ile arttırıp azaltma uygulamasını yapınız. #include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor. unsigned char sayac=0,sayac2=1; unsigned char segment[11]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /* Gecikme Fonksiyonu */ void Gecikme (long int sure) long int i,k; // 16 bitlik i degiskeni tanimlaniyor. for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön for (k=0;k<=12000;k++) /* Ana Fonksiyon */ int main (void) IODIR0 = 0x000000FF; while (1) // ilk 8. biti cikis digerleri giris //sonsuz döngü if(iopin0&0x00000100) //P0.8 pini ni kontrol et // Birse sayac++; // Sayacı bir arttır Gecikme(25); // 25 msn bekle if(sayac==10)sayac=0; // Eğer sayac 10 ise sayaca 0 yükle if(iopin0&0x00000200) //P0.9 pini ni kontrol et // Birse sayac--; // Sayacı bir azalt Gecikme(25); // 25 msn bekle if(sayac==255)sayac=9; // Eğer sayac 255 ise sayaca 9 yükle if(sayac2!=sayac) // Eğer sayac sayac2 ye eşit değilse sayac2=sayac; //sayac2 ye sayacın içerisindekini yükle IOPIN0 = segment[sayac]; //7 segment display de değeri göster.

#DEFINE #define ile bir pini tanımlamayı ve kullanmayı göreceğiz. Peki, neden define kullanmalıyız? Program içerisinde birçok yerde aynı pin aynı görevde kullanılacaksa ve bu pin kullanıcı tarafından gerektiğinde değiştirilmesi isteniyorsa, kullanıcıya kolaylık sağlaması için define ı kullanabiliriz. Örnek: #define Led 0x00000001; #define Buton 0x00000002; //0. Pin kullanılmak istendiğinde Led olarak kullanılabilir. //1. Pin kullanılmak istendiğinde Buton olarak kullanılabilir. İf (IOPIN0&Buton) IOSET0=Led; else IOCLR0=Led;

DERS5 7 segment display in keypad ile kontrolünü yapınız. Bu uygulamayı Keypad.h dosyası oluşturarak gerçekleştiriniz. Keypad.h dosyası Ekler bölümünde bulunmaktadır. Main.c dosyası ********************************* #include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor. #include "Keypad.h" unsigned unsigned char Keypad; char segment[12]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39,0x0f; /* Ana Fonksiyon */ int main (void) IODIR0 = 0x0000F0FF; while (1) // ilk 8. biti cikis digerleri giris //sonsuz döngü Keypad = KeypadOku(); if(keypad!=55) // eger tusa basilmissa, basilan tusu göster IOPIN0 = segment[keypad];

DERS6 7 segment display ve keypad ile şifreli kilit uygulamasını yapınız. Gecikme.h ve Keypad.h Ekler sayfasında bulunmaktadır. #include <LPC21xx.H> #include "Keypad.h" #include "Gecikme.h" //islemcinin kaynak dosyasi ekleniyor. unsigned char Sayac=0,Keypad,Alinan[4],Sifre[4]=3,6,3,9; unsigned char Segment[12]=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x39,0x0F; /* Ana Fonksiyon */ int main (void) IODIR0 = 0x0000F8FF; // ilk P0.0 - P0.7 ile P0.11 - P0.15 i cikis digerleri giris while (1) //sonsuz döngü

et Keypad=KeypadOku(); if(keypad!=55) // eger tusa basilmissa, basilan tusu göster IOPIN0 = Segment[Keypad]; // Basili tusu göster Alinan[Sayac] = Keypad; // Basislan tusun degerini kaydet Gecikme(1,50); // 50msn bekle (tusu birakmayi bekle) Alinan[3]==Sifre[3]) if (Sayac==3) // Eger 4 tane rakam girildiyse dogrulugunu kontrol if(alinan[0]==sifre[0] && Alinan[1]==Sifre[1] && Alinan[2]==Sifre[2] && Sayac++; else IOPIN0 = 0x00000089; // P0.7 yi ve displayin alt ve üst ledini yak IOPIN0 = 0x00000840; // P0.11 i ve displayin orta ledini yak // Sayac değişkenini 1 arttir

DERS7 LCD ye yazı ve değişken yazdırma uygulaması. LCD.c Ekler bölümünde bulunmaktadır. #include <LPC21xx.H> #include "Gecikme.h" #include "LCDE.c" //islemcinin kaynak dosyasi ekleniyor. unsigned int Deger=255; /* Ana Fonksiyon */ int main (void) IODIR0 = 0x000000FF; Gecikme(1,50); lcd_baslat(); // ilk P0.0 - P0.7 ile P0.11 - P0.15 i cikis digerleri giris Gecikme(1,200); lcd_yazi(1,1,"emrah BUDAK"); lcd_yazi(2,1,"arm LCD Uygulamasi"); Gecikme(1,200); lcd_temizle(); lcd_yazi(1,1,"emrah BUDAK"); lcd_yazi(2,1,"deger= "); lcd_veri(2,8,3,deger); while (1)

Bir eksikliğimiz varsa affola

Ekler: Gecikme.h dosyası ***************************** /* Gecikme Fonksiyonu */ void Gecikme (char Secim, long int Sure) long int i,k; // 16 bitlik i degiskeni tanimlaniyor. for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön if(secim==1) for (k=0;k<=12000;k++) Keypad.h dosyası ************************************* /* Keypad'dan bilgi alma fonksiyonu */ #define Satir1 0x00001000 //P0.12 #define Satir2 0x00002000 //P0.13 #define Satir3 0x00004000 //P0.14 #define Satir4 0x00008000 //P0.15 #define Sutun1 0x00000100 //P0.08 #define Sutun2 0x00000200 //P0.09 #define Sutun3 0x00000400 //P0.10 int KeypadOku () unsigned char Keypad; Keypad=55; // 1. satiri seç IOSET0=Satir1; IOCLR0=Satir2; IOCLR0=Satir3; IOCLR0=Satir4; if(iopin0&sutun1)keypad=1; if(iopin0&sutun2)keypad=2; if(iopin0&sutun3)keypad=3; // 2. satiri seç IOCLR0=Satir1; IOSET0=Satir2; IOCLR0=Satir3; IOCLR0=Satir4; if(iopin0&sutun1)keypad=4; if(iopin0&sutun2)keypad=5; if(iopin0&sutun3)keypad=6; // 3. satiri seç

IOCLR0=Satir1; IOCLR0=Satir2; IOSET0=Satir3; IOCLR0=Satir4; if(iopin0&sutun1)keypad=7; if(iopin0&sutun2)keypad=8; if(iopin0&sutun3)keypad=9; // 4. satiri seç IOCLR0=Satir1; IOCLR0=Satir2; IOCLR0=Satir3; IOSET0=Satir4; if(iopin0&sutun1)keypad=10; if(iopin0&sutun2)keypad=0; if(iopin0&sutun3)keypad=11; return Keypad; LCDE.c dosyası //**********************************************************************// // LCDE.c // // // // Emrah BUDAK // // 16/06/2011 // //**********************************************************************// // Komutlar // // // // lcd_baslat(); // Baslangicta kesinlikle yazilmalidir // // lcd_temizle (); // Lcd yi temizlemek için kulanilir // // lcd_yazi(a,b,"deneme"); // Lcd ye yazi yazdirmak için kullanilir // // lcd_veri(a,b,c,deger); // Lcd ye degisken yazdirmak için kullanilir// // // // a= satir // // b= sutun // // c= kaç basamakli olacakgi (1-6) // // Deger= Maksimum 6 basamakli bir sayi int - char // //**********************************************************************// #define LCD_D4 0x10 //P0.04 #define LCD_D5 0x20 //P0.05 #define LCD_D6 0x40 //P0.06 #define LCD_D7 0x80 //P0.07 #define LCD_EN 0x08 //P0.22 #define LCD_RS 0x04 //P0.23

#define LCD_DATA #define LCD_IOALL (LCD_D4 LCD_D5 LCD_D6 LCD_D7) (LCD_D4 LCD_D5 LCD_D6 LCD_D7 LCD_EN LCD_RS) #define lcd_rs_set() IOSET0 = LCD_RS #define lcd_rs_clr() IOCLR0 = LCD_RS #define lcd_en_set() IOSET0 = LCD_EN #define lcd_en_clr() IOCLR0 = LCD_EN #define lcd_temizle() lcd_komut(0x01) #define lcd_cursor_home() lcd_komut(0x02) #define lcd_display_on() lcd_komut(0x0e) #define lcd_display_off() lcd_komut(0x08) #define lcd_cursor_blink() lcd_komut(0x0f) #define lcd_cursor_on() lcd_komut(0x0e) #define lcd_cursor_off() lcd_komut(0x0c) #define lcd_cursor_left() lcd_komut(0x10) #define lcd_cursor_right() lcd_komut(0x14) #define lcd_display_sleft() lcd_komut(0x18) #define lcd_display_sright() lcd_komut(0x1c) void lcd_baslat(void); void lcd_yaz(unsigned char c); void lcd_komut(unsigned char c); void lcd_4bit_gonder(unsigned char Deger); void lcd_bilgi_yaz(unsigned char Deger); void lcd_4bit_gonder(unsigned char Deger) IOCLR0 = (LCD_DATA); IOSET0 = (Deger<<4); void lcd_bilgi_yaz(unsigned char Deger) lcd_en_set(); lcd_4bit_gonder((deger>>4)&0x0f); lcd_en_clr(); Gecikme(1,1); lcd_en_set(); lcd_4bit_gonder((deger)&0x0f);

lcd_en_clr(); Gecikme(1,1); void lcd_yaz(unsigned char c) lcd_rs_set(); lcd_bilgi_yaz(c); void lcd_komut(unsigned char c) lcd_rs_clr(); lcd_bilgi_yaz(c); void lcd_baslat() //IODIR0 = LCD_IOALL; lcd_rs_clr(); lcd_en_clr(); Gecikme(0,2800); lcd_bilgi_yaz(0x30); lcd_bilgi_yaz(0x30); lcd_bilgi_yaz(0x30); lcd_en_set(); lcd_4bit_gonder(0x02); lcd_en_clr(); Gecikme(1,1); //2 satir 4 bit lcd_komut(0x28); //LCD kapat lcd_komut(0x08); //LCD ac lcd_komut(0x0c); //Clear Display lcd_komut(0x01); //Entry mode //lcd_bilgi_yaz(0x06); void lcd_yazi(unsigned char satir, unsigned char sutun, unsigned char* str)

int i; if (satir==1) lcd_komut(0x80 (sutun-1)); if (satir==2) lcd_komut(0x80 (0x40+(sutun-1))); for (i=0;i<16 && str[i]!=0;i++) lcd_yaz(str[i]); void lcd_veri(unsigned char satir, unsigned char sutun, unsigned char bit, unsigned char str) int a,b; if (satir==1) lcd_komut(0x80 (sutun-1)); if (satir==2) lcd_komut(0x80 (0x40+(sutun-1))); if(bit==6) a=str/100000; a=str/10000; a=str/1000; a=str/100; b=str/10; b=b-(a*10); lcd_yaz(0x30 b); a=str%10; if(bit==5) a=str/10000; a=str/1000; a=str/100;

b=str/10; b=b-(a*10); lcd_yaz(0x30 b); a=str%10; if(bit==4) a=str/1000; a=str/100; b=str/10; b=b-(a*10); lcd_yaz(0x30 b); a=str%10; if(bit==3) a=str/100; b=str/10; b=b-(a*10); lcd_yaz(0x30 b); a=str%10; if(bit==2) a=str/100; b=str/10; b=b-(a*10); lcd_yaz(0x30 b); a=str%10; if(bit==1) a=str%10;