/*********************************************************************** Uygulama Adı : LCD MENÜ UYGULAMASI Dosya Adı : lcdmenu.c Tarih : 07.04.2007 Yazan : Ersin ERSOY Amaç : LCD Menü ve bir 8051 Entegresi kullanarak basit bir menü yapısı oluşturmak Notlar : LCD menü özelliklerini kullanmak için "8051 Microdenetleyici uygulamaları" kitabı ile birlikte verilmiş T_LCD.h kütüphanesi kullanılmıştır, ancak bu kütüphanenin LcdAc ve VeriDizi fonksiyonlarında ufak değişiklikler yapılmıştır. *************************************************************************/ #include <89c51rd2.H> // işlemci başlık dosyası #include #include "T_LCD.h" // LCD başlık dosyası #define asagi P0_0 #define yukari P0_1 #define giris P0_2 #define anamenu P0_3 /*************************************************************************************** Fonksiyon adı : yaz Amaç : LCD ekrana yazma işlemini gerçekleştirecek fonksiyon Parametreler --------------------------------------- Menuno--> 1-4 Arası değer alabilir, menü isimlerini ifade eder. Satir--> LCD satır numarasını ifade eder, 1 ya da 2 olabilir. Oper--> Yazma işleminin amacını ifade eder, 0--> Menü oluşturma, 1 menü içine girme. *************************************************************************************/ void yaz(int menuno,int satir,int oper) { char giris[7]=" Giris"; char islem[7]=" Islem"; char ozet[6]=" Ozet"; char rapor[7]=" Rapor"; if (satir==1) { Komut(Sil); Komut(BirinciSatir); } if (satir==2) { Komut(IkinciSatir); } if (oper==0) //menüleri yazdırma { if (menuno==1) { VeriDizi(giris,1); } if (menuno==2) { VeriDizi(islem,1); } if (menuno==3) { VeriDizi(ozet,1); } if (menuno==4) { VeriDizi(rapor,1); } } if (oper==1)//menüye giriş işlemi { VeriDizi("Girildi",1); } } /*************************************************************************************** Fonksiyon adı : acilis Amaç : Menüyü İlk oluşturma işlemi için kullanılır. *************************************************************************************/ void acilis(void) { yaz(1,1,0); yaz(2,2,0); } void main (void) { int acilisindis; int cursor; LcdAc(); /* LCD Açılış İşlemleri */ acilisindis=1; // Tek bir seferliğine açılış işlemini gerçekleştirmek için set ediliyor. cursor=1; giris=0; asagi=0; yukari=0; anamenu=0; while(1) { if (acilisindis) { acilis(); acilisindis=0; Komut(BirinciSatir); } if (asagi) //Asagi butonuna basildi. { cursor++; /**************************************************** Cursor değeri 5 ise ilk menü de demektir. Cursor değeri 1-4 arasında olabilir. ***************************************************/ if (cursor==5) cursor=1; /************************************************************************************************ Cursor değerinin 1 olması durumunda birinci satıra yazılacak değer 4 numaralı menü değeri olacak. Aksi durumda mevcut cursor değerinin bir küçüğüne karşılık gelen menü yazılacak. *************************************************************************************************/ if ((cursor-1)==0) { yaz(4,1,0); } else { yaz(cursor-1,1,0); } yaz(cursor,2,0); Komut(IkinciSatir); } if (yukari) { cursor--; /**************************************************** Cursor değeri 0 ise son menü de demektir. Cursor değeri 1-4 arasında olabilir. ***************************************************/ if (cursor==0) cursor=4; yaz(cursor,1,0); /************************************************************************************************ Cursor değerinin 1 olması durumunda birinci satıra yazılacak değer 4 numaralı menü değeri olacak. Aksi durumda mevcut cursor değerinin bir küçüğüne karşılık gelen menü yazılacak. *************************************************************************************************/ if ((cursor+1)==5) { yaz(1,2,0); } else { yaz(cursor+1,2,0); } Komut(BirinciSatir); } if (anamenu) { //Anamenü ye basıldığında acilis davranaşı sergiliyor. cursor=1; acilis(); Komut(BirinciSatir); } if (giris) { yaz(cursor,1,0); yaz(0,2,1); } } }