void loop(void) { lcdCls(); //displayMainScreen(); Menu_Show(); workFlags.mainScreen = 1; for(;;) { if (input.changed) { input.changed = 0; if (workFlags.mainScreen) { Menu_Show(); workFlags.mainScreen = 0; } else { if (input.down) { Menu_SelectNext(); } else if (input.up) { Menu_SelectPrev(); } else if (input.middle) { Menu_Click(); } else if (input.left) { if (!Menu_isTopLevel()) { Menu_Back(); Menu_Show(); } else { Menu_Reset(); displayMainScreen(); } } } } } }
void xpcc::SiemensS65Common<SPI, CS, RS, Reset>::lcdSettings(bool landscape) { // Hardware reset is low from initialize xpcc::delayMilliseconds(50); Reset::set(); xpcc::delayMilliseconds(50); writeCmd(0x07, 0x0000); //display off xpcc::delayMilliseconds(10); //power on sequence writeCmd(0x02, 0x0400); //lcd drive control writeCmd(0x0C, 0x0001); //power control 3: VC //step 1 writeCmd(0x0D, 0x0006); //power control 4: VRH writeCmd(0x04, 0x0000); //power control 2: CAD writeCmd(0x0D, 0x0616); //power control 4: VRL writeCmd(0x0E, 0x0010); //power control 5: VCM writeCmd(0x0E, 0x1010); //power control 5: VDV writeCmd(0x03, 0x0000); //power control 1: BT //step 2 writeCmd(0x03, 0x0000); //power control 1: DC writeCmd(0x03, 0x000C); //power control 1: AP xpcc::delayMilliseconds(40); writeCmd(0x0E, 0x2D1F); //power control 5: VCOMG //step 3 xpcc::delayMilliseconds(40); writeCmd(0x0D, 0x0616); //power control 4: PON //step 4 xpcc::delayMilliseconds(100); //display options if (landscape) { writeCmd(0x05, 0x0030); //Entry mode AM=0, ID0=1, ID1=1 } else { // portrait mode writeCmd(0x05, 0x0038); //Entry mode AM=1, ID0=1, ID1=1 } //setArea(0, 0, (S65_WIDTH-1), (S65_HEIGHT-1)); // writeCmd(0x16, 176<<8); //set y // writeCmd(0x17, 132<<8); //set x //display on sequence (bit2 = reversed colors) writeCmd(0x07, 0x0005); //display control: D0 writeCmd(0x07, 0x0025); //display control: GON writeCmd(0x07, 0x0027); //display control: D1 writeCmd(0x07, 0x0037); //display control: DTE xpcc::delayMilliseconds(10); lcdCls(0x03e0); }
void xpcc::SiemensS65<SPI, CS, RS, Reset>::lcdSettings() { // Hardware reset is low from initialize xpcc::delay_ms(50); Reset::set(); xpcc::delay_ms(50); writeCmd(0x07, 0x0000); //display off xpcc::delay_ms(10); //power on sequence writeCmd(0x02, 0x0400); //lcd drive control writeCmd(0x0C, 0x0001); //power control 3: VC //step 1 writeCmd(0x0D, 0x0006); //power control 4: VRH writeCmd(0x04, 0x0000); //power control 2: CAD writeCmd(0x0D, 0x0616); //power control 4: VRL writeCmd(0x0E, 0x0010); //power control 5: VCM writeCmd(0x0E, 0x1010); //power control 5: VDV writeCmd(0x03, 0x0000); //power control 1: BT //step 2 writeCmd(0x03, 0x0000); //power control 1: DC writeCmd(0x03, 0x000C); //power control 1: AP xpcc::delay_ms(40); writeCmd(0x0E, 0x2D1F); //power control 5: VCOMG //step 3 xpcc::delay_ms(40); writeCmd(0x0D, 0x0616); //power control 4: PON //step 4 xpcc::delay_ms(100); //display options #if defined(S65_MIRROR) writeCmd(0x05, 0x0008); //Entry mode -- #else writeCmd(0x05, 0x0038); //Entry mode ++ #endif //setArea(0, 0, (S65_WIDTH-1), (S65_HEIGHT-1)); // writeCmd(0x16, 176<<8); //set y // writeCmd(0x17, 132<<8); //set x //display on sequence (bit2 = reversed colors) writeCmd(0x07, 0x0005); //display control: D0 writeCmd(0x07, 0x0025); //display control: GON writeCmd(0x07, 0x0027); //display control: D1 writeCmd(0x07, 0x0037); //display control: DTE xpcc::delay_ms(10); lcdCls(0x03e0); }
void demo() { lcdCls(); for (uint8_t i = 0x20; i <= 128; ++i) { lcdChar(i, LCD_XOR); } lcdUpdate(); _delay_ms(2000); lcdStrPos (3,11); lcdStr_P(PSTR("Free string"), LCD_WHITE); lcdStrPos (22,37); lcdStr_P(PSTR("positioning"), LCD_WHITE); lcdUpdate(); _delay_ms(3000); lcdCls(); lcdStr_P(PSTR("Lines, rectangles, circles."), LCD_BLACK); lcdUpdate(); _delay_ms(1000); lcdNewLine(); lcdStr_P(PSTR("Filled or unfilled."), LCD_BLACK); lcdUpdate(); _delay_ms(1000); lcdNewLine(); lcdStr_P(PSTR("Solid or XORed filling, text."), LCD_BLACK); lcdUpdate(); _delay_ms(5000); lcdRect(0, 0, LCD_Y_RES, LCD_X_RES, LCD_BLACK, LCD_FILL_BLACK); lcdStrPos(36,0); lcdStr_P(PSTR("MENU"), LCD_XOR); lcdRect(5,7,LCD_Y_RES-8, LCD_X_RES-10,LCD_WHITE, LCD_FILL_WHITE ); for (int i = 1; i < 8; ++i) { lcdStrPos(10, i*8); lcdInt(i, LCD_BLACK); lcdStr_P(PSTR(". Sample"), LCD_BLACK); lcdLine(5,8*i-1,LCD_X_RES-10, LCD_HORIZ, LCD_BLACK); } lcdUpdate(); _delay_ms(2000); lcdCircle(LCD_X_RES/2,LCD_Y_RES/2,30, LCD_XOR, LCD_FILL_XOR); lcdUpdate(); _delay_ms(2000); lcdBresenhamLine(0, 0, LCD_X_RES-1, LCD_Y_RES-1, LCD_XOR); lcdUpdate(); _delay_ms(2000); lcdBresenhamLine(0, LCD_Y_RES-1, LCD_X_RES-1, 0, LCD_XOR); lcdUpdate(); _delay_ms(5000); lcdCls(); lcdStr_P(PSTR("Per-pixel horizontal fill speed test in:"), LCD_BLACK);lcdUpdate();lcdNewLine(); _delay_ms(1000); lcdStr_P(PSTR("3..."), LCD_BLACK);lcdUpdate(); _delay_ms(1000); lcdStr_P(PSTR("2..."), LCD_BLACK);lcdUpdate(); _delay_ms(1000); lcdStr_P(PSTR("1..."), LCD_BLACK);lcdUpdate(); _delay_ms(1000); for (uint8_t x = 0; x < LCD_X_RES; ++x) { for (uint8_t y = 0; y < LCD_Y_RES; ++y) { lcdPixel(x,y,LCD_PIXEL_XOR); lcdUpdate(); } } _delay_ms(1000); lcdNewLine(); lcdStr_P(PSTR("Vertical in:"), LCD_XOR);lcdUpdate();lcdNewLine(); _delay_ms(1000); lcdStr_P(PSTR("3..."), LCD_XOR);lcdUpdate(); _delay_ms(1000); lcdStr_P(PSTR("2..."), LCD_XOR);lcdUpdate(); _delay_ms(1000); lcdStr_P(PSTR("1..."), LCD_XOR);lcdUpdate(); _delay_ms(1000); for (uint8_t y = 0; y < LCD_Y_RES; ++y) { for (uint8_t x = 0; x < LCD_X_RES; ++x) { lcdPixel(x,y,LCD_PIXEL_XOR); lcdUpdate(); } } _delay_ms(2000); lcdCls(); lcdStr_P(PSTR("Every pixel was filled with it's XORed value and updated."), LCD_XOR);lcdUpdate(); _delay_ms(5000); lcdCls(); lcdStr_P(PSTR("That's it!"), LCD_XOR); lcdNewLine(); lcdStr_P(PSTR("Thanks!"), LCD_XOR);lcdUpdate(); _delay_ms(5000); }