void enter_menu(uint8_t menu_no, uint8_t submenu_no) { char s[20]; if(menu_no==0 && submenu_no==2) // Menu 1.2 rez=enter_integer(rez,-10,100,1,3, "WARTOSC" , "s"); LcdClearLine(3); LcdGotoXY(1,3); sprintf(s,"ENTER %1u.%1u:%d",menu_no + 1, submenu_no, rez); LcdStr(FONT_1X, FONT_POSITIVE, (unsigned char*)s); delay_ms(1000); LcdClearLine(3); }
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + FUNCTION NAME: void LcdClearDisplay(void) + + DESCRIPTION: it clears the display (the content of the DDRAM!) + + INPUT: None + + RETURN: None + + NOTES: + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ void LcdClearDisplay(void) { U8 page; for(page=1; page<9; page++) { LcdClearLine(page); } }
void slide_up() { uint8_t i; for(i=5;i>1;i--) { LcdRectangle(0,8,83,(i * 8) - 1,TRANSPARENT); LcdClearLine(i+1); delay_ms(50); } }
void slide_down() { uint8_t i; for(i=1;i<6;i++) { LcdClearLine(i+1); LcdRectangle(0,8,83,(i+1)*8,TRANSPARENT); if(i==5) LcdLine(0,47,83,47,PIXEL_ON); delay_ms(50); } }
void HalLcdWriteString (char *str, uint8 option) { uint8 x=0,y=0,strLen; uint8 lcdBuf[HAL_LCD_MAX_CHARS+1]; x=0; y = (option-1)*2; strLen = (uint8)osal_strlen( (char*)str ); /* Check boundries */ if ( strLen > HAL_LCD_MAX_CHARS ) strLen = HAL_LCD_MAX_CHARS; osal_memset(lcdBuf, 0, HAL_LCD_MAX_CHARS+1); osal_memcpy( lcdBuf, str, strLen ); LcdClearLine(y, 2); LCD_P8x16Str(x, y, lcdBuf); }
void show_menu(uint8_t menu_no, uint8_t submenu_no) { LcdClearLine(2); LcdGotoXY(1,2); LcdStr(FONT_1X,FONT_POSITIVE, (unsigned char*)menu_strings[submenu_item][menu_item]); }
void show_graphic_menu(uint8_t menu_no, uint8_t submenu_no) { volatile uint8_t i,j; volatile uint8_t x_size, y_size; int a; i=1; y_size = sizeof(menu_strings)/sizeof(menu_strings[0]); // makzymalna ilosc podmenu x_size = sizeof(menu_strings[0])/sizeof(menu_strings[0][0]); // ilosc menu a=0; do // rzeczywista ilosc podmenu { // a=strlen(menu_strings[i][menu_no]); // }while(a>0 && i++ < (y_size - 1) ); // y_size=i; // LcdFillLine(1); LcdGotoXY(2,1); LcdStr(FONT_1X,FONT_NEGATIVE,"MENU"); for(i=2;i<7;i++) LcdClearLine(i); // wyczyszczenie sektora wyswietlajacego pozycje menu if(submenu_no==0) // jezeli menu glowne { i=0; if (menu_no<5) j=0; // jezeli ilosc pozycji przekracza wielkosc ekranu else j=menu_no-4; // to menu trzeba przewijac do { LcdClearLine(i+2); LcdGotoXY(2, i+2); if(j==menu_no) // podswietlanie wybranego menu LcdStr(FONT_1X,FONT_NEGATIVE,(unsigned char*)menu_strings[0][j]); // else LcdStr(FONT_1X,FONT_POSITIVE,(unsigned char*)menu_strings[0][j]); j++; }while((++i)!=x_size && i < 6); LcdRectangle(0, 0, 83, 47,TRANSPARENT); // rysowanie ramki LcdVerticalScrollBar(((menu_no*100)/(x_size-1)),79,8,83,47);// i suwaka pionowego } else if(submenu_no>0) // jezeli podmenu { i=0; if (submenu_no<5) j=1; // jezeli ilosc pozycji podmenu przekracza romiar ekranu else j=submenu_no-4; // to menu trzeba przewijac do { i++; LcdGotoXY(2,1); LcdStr(FONT_1X,FONT_NEGATIVE,"MENU>"); LcdStr(FONT_1X,FONT_NEGATIVE,(unsigned char*)menu_strings[0][menu_no]); LcdClearArea(i + 1,2,14); LcdGotoXY(2,i + 1); if(j==submenu_no) // podswietlanie wybranej pozycji menu LcdStr(FONT_1X,FONT_NEGATIVE,(unsigned char*)menu_strings[j][menu_no]); else LcdStr(FONT_1X,FONT_POSITIVE,(unsigned char*)menu_strings[j][menu_no]); j++; }while(j!=y_size && i < 6); LcdRectangle(0, 0, 83, 47,TRANSPARENT); // ramka LcdVerticalScrollBar((100 * (submenu_no-1)/(y_size-2)),79,8,83,47); // suwak } }
void menu(void) { Key_t key; uint8_t x_size, y_size, exit; menu_item=0; submenu_item=0; exit=0; y_size = sizeof(menu_strings)/sizeof(menu_strings[0]); // ilosc podmenu x_size = sizeof(menu_strings[0])/sizeof(menu_strings[0][0]); // ilosc menu LcdClearLine(2); LcdClearLine(3); show_menu(menu_item, submenu_item); do { key=getkey(); if(key==KEY_R) // menu(submenu) + { if(submenu_item==0) // jezelipoziom glowny menu { if((++menu_item)==x_size) menu_item=0; // menu + } else // jezeli poziom podmenu if((++submenu_item)==y_size) submenu_item=y_size - 1; // submenu max if((menu_strings[submenu_item][menu_item])=="") submenu_item--; // puste submenu show_menu(menu_item, submenu_item); } else if(key==KEY_L) // menu(submenu) - { if(submenu_item==0) // jezeli poziom glowny menu { if((--menu_item)<0) menu_item=x_size-1; // menu - } else // jezeli poziom podmenu if((--submenu_item)==0) submenu_item=1; // submenu = 1 show_menu(menu_item, submenu_item); } else if(key==KEY_OK) // ENTER { if(submenu_item==0) // jezeli poziom glowny menu if(menu_strings[1][menu_item]!="") // jezeli menu poziada jakies podmenu { submenu_item++; // submenu + ( w zasadzie submenu = 1) show_menu(menu_item, submenu_item); } else // jezeli menu nie posiada zadnych podmenu enter_menu(menu_item, submenu_item); // wejscie w obsluge menu else // jezeli poziom podmenu enter_menu(menu_item, submenu_item); // wejscie w obsluge podmenu } if(key==KEY_UP) // ESC { if(submenu_item>0) // jezeli poziom podmenu submenu_item=0; // wyjscie do poziomu glownego menu else // jezeli poziom glowny menu exit=1; // wyjscie z obslugi menu show_menu(menu_item, submenu_item); } }while(exit==0); // koniec procedury exit_from_menu(); }