Anda di halaman 1dari 6

sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit sbit

LCD_RS LCD_EN LCD_D4 LCD_D5 LCD_D6 LCD_D7

at at at at at at

RB4_bit; RB5_bit; RB0_bit; RB1_bit; RB2_bit; RB3_bit; at at at at at at TRISB4_bit; TRISB5_bit; TRISB0_bit; TRISB1_bit; TRISB2_bit; TRISB3_bit;

LCD_RS_Direction LCD_EN_Direction LCD_D4_Direction LCD_D5_Direction LCD_D6_Direction LCD_D7_Direction

int menuUtama; int Submenu; unsigned char nilai[16]; int angka; int hasil; unsigned char hasilAkhir[16]; int state; int app; int luasLingkaran; int luasBujurSangkar; int Pi = 22/7; void buttonPressed() { IntToStr(angka, nilai); LCD_CMD(_LCD_CLEAR); LCD_OUT(1,1,nilai); delay_ms(500); } void calculator () { PORTD = 16; if (PORTD.B0 == 1) { angka = (angka * 10) + 1; buttonPressed(); } if (PORTD.B1 == 1) { angka = (angka * 10) + 2; buttonPressed(); } if (PORTD.B2 == 1) { angka = (angka * 10) + 3; buttonPressed(); } if (PORTD.B3 == 1) { hasil = angka; delay_ms(500); angka = 0; state = 1; LCD_CMD(_LCD_CLEAR); }

PORTD = 32; if (PORTD.B0 == 1) { angka = (angka * 10) + 4; buttonPressed(); } if (PORTD.B1 == 1) { angka = (angka * 10) + 5; buttonPressed(); } if (PORTD.B2 == 1) { angka = (angka * 10) + 6; buttonPressed(); } if (PORTD.B3 == 1) { hasil = angka; delay_ms(500); angka = 0; state = 2; LCD_CMD(_LCD_CLEAR); }

PORTD = 64; if (PORTD.B0 == 1) { angka = (angka * 10) + 7; buttonPressed(); } if (PORTD.B1 == 1) { angka = (angka * 10) + 8; buttonPressed(); } if (PORTD.B2 == 1) { angka = (angka * 10) + 9; buttonPressed(); } if (PORTD.B3 == 1) { hasil = angka; delay_ms(500); angka = 0; state = 3; LCD_CMD(_LCD_CLEAR); }

PORTD = 128; if (PORTD.B1 == 1) { angka = (angka * 10) + 0; buttonPressed(); } if (PORTD.B3 == 1) { hasil = angka; delay_ms(500);

angka = 0; state = 4; LCD_CMD(_LCD_CLEAR); } if (PORTD.B2 == 1) { switch (state) { case 1 : hasil = hasil + angka; IntToStr(hasil, hasilAkhir); LCD_CMD(_LCD_CLEAR); LCD_OUT(2, 1, hasilAkhir); delay_ms(500); break; case 2 : hasil = hasil - angka; IntToStr(hasil, hasilAkhir); LCD_CMD(_LCD_CLEAR); LCD_OUT(2, 1, hasilAkhir); delay_ms(500); break; case 3 : hasil = hasil * angka; IntToStr(hasil, hasilAkhir); LCD_CMD(_LCD_CLEAR); LCD_OUT(2, 1, hasilAkhir); delay_ms(500); break; case 4 : hasil = hasil / angka; IntToStr(hasil, hasilAkhir); LCD_CMD(_LCD_CLEAR); LCD_OUT(2, 1, hasilAkhir); delay_ms(500); break; case 5 : hasil = angka; luasLingkaran = Pi * hasil * hasil; IntToStr(luasLingkaran, hasilAkhir); LCD_CMD(_LCD_CLEAR); LCD_OUT(1, 1, "luas lingkaran : " ); LCD_OUT(2, 1, hasilAkhir); delay_ms(500); break; } } if (PORTD.B0 == 1) { LCD_CMD(_LCD_CLEAR); angka = 0; hasil = 0; nilai[16] = 0; hasilAkhir[16] = 0; state = 0; } } void updateMenu() { switch (menuUtama) { case 1 : Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "Kalkulator");

delay_ms(500); break; case 2 : Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "Luas"); if (subMenu == 1) { Lcd_Out(2,1, "Lingkaran"); } if (subMenu == 2) { Lcd_Out(2,1, "Bujur Sangkar"); } delay_ms(500); break; case 3 : Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "Keliling"); if (subMenu == 1) { Lcd_Out(2,1, "Segitiga"); } if (subMenu == 2) { Lcd_Out(2,1, "Persegi"); } delay_ms(500); break; } } void main() { Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1, "Kelompok A"); ADCON1 = 7; TRISA = 255; TRISD = 15; menuUtama = 1; subMenu = 1; angka = 0; nilai[16] = 0; hasil = 0; hasilAkhir[16] = 0; state = 0; app = 0; luasLingkaran = 0; luasBujurSangkar = 0; while(1) { if (PORTA.B3 == 0) { if (menuUtama < 3) { menuUtama = menuUtama + 1; updateMenu(); } } if (PORTA.B0 == 0) { if (menuUtama > 1) {

menuUtama = menuUtama - 1; updateMenu(); } } if (PORTA.B2 == 0) { if (subMenu < 2) { subMenu = subMenu + 1; updateMenu(); } } if (PORTA.B1 == 0) { if (subMenu > 1) { subMenu = subMenu - 1; updateMenu(); } } if (PORTA.B4 == 0) { if (menuUtama == 1) { Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "calculator mode"); Lcd_Out(2,1, "activated"); app = 1; } if (menuUtama == 2 && subMenu == 1) { Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "luas lingkaran"); Lcd_Out(2,1, "activated"); app = 1; state = 5; delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "InputaCycleRound"); } if (menuUtama == 2 && subMenu == 2) { Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "luas bujursangkar"); Lcd_Out(2,1, "activated"); app = 1; state = 6; delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "InputSide1"); } if (menuUtama == 3 && subMenu == 1) { Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "keliling segitiga"); Lcd_Out(2,1, "activated"); app = 1; state = 7; } if (menuUtama == 3 && subMenu == 2) {

Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1, "keliling persegi"); Lcd_Out(2,1, "activated"); app = 1; state = 8; } } switch (app) { case 1 : calculator(); break; } } }

Anda mungkin juga menyukai