/******************************************************************************************************************* Uygulama Adı : LCD MENÜ UYGULAMASI Dosya Adı : lcdmenu.c Tarih : 07.04.2007 Yazan : Ersin ERSOY Amaç : Microcontroller kullanarak basit bir LCD menü oluşturmak Notlar : -C derleyecisi olarak "CCS C Compiler" kullanılmıştır. -LCD ye erişmek için bu derleyici içinde hazır olarak verilen lcd.c sürücüsü kullanılmıştır. *******************************************************************************************************************/ #include <16F873A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #include /*************************************************************************************** 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) { if (satir==1) { lcd_putc("\f"); lcd_gotoxy(1,1); } if (satir==2) { lcd_gotoxy(1,2); } if (oper==0) //menüleri yazdırma { if (menuno==1) { lcd_putc(" Giris "); } if (menuno==2) { lcd_putc(" Islem "); } if (menuno==3) { lcd_putc(" Ozet "); } if (menuno==4) { lcd_putc(" Rapor "); } } if (oper==1)//menüye giriş işlemi { lcd_putc("Girildi"); } } /*************************************************************************************** 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); lcd_gotoxy(1,1); lcd_putc(">"); } /* void main() { char k; lcd_init(); lcd_putc("\fReady...\n"); while (TRUE) { lcd_putc(k); } } */ void main (void) { int cursor; lcd_init(); /* LCD Açılış İşlemleri */ cursor=1; acilis(); while(1) { if (input(PIN_A0)) //Asagi butonuna basildi. { delay_ms(300); 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); lcd_gotoxy(1,2); lcd_putc(">"); } if (input(PIN_A1)) { delay_ms(300); 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); } lcd_gotoxy(1,1); lcd_putc(">"); } if (input(PIN_A2)) { //Anamenü ye basıldığında acilis davranaşı sergiliyor. delay_ms(300); cursor=1; acilis(); lcd_gotoxy(1,1); } if (input(PIN_A3)) { delay_ms(300); yaz(cursor,1,0); yaz(0,2,1); } } }