diff --git a/lib/gfx/LCD/LCD_Driver.c b/lib/gfx/LCD/LCD_Driver.c index 55c872a824ad9ef355bdb9eb4db7018c6d44eeaa..9a1c0edcb6b6efeab052bae3a9922c8996d7ed61 100644 --- a/lib/gfx/LCD/LCD_Driver.c +++ b/lib/gfx/LCD/LCD_Driver.c @@ -54,6 +54,13 @@ parameter : *******************************************************************************/ void LCD_SetBacklight(UWORD Value) { + // Turn off the display if the backlight is off to save power + if (Value > 0) { + LCD_Wake(); + } else { + LCD_Sleep(); + } + DEV_Set_BL(Value); } @@ -88,6 +95,24 @@ void LCD_WriteReg(UBYTE da) //DEV_Digital_Write(DEV_CS_PIN,1); } +/****************************************************************************** +function: + Turn on display controller +******************************************************************************/ +void LCD_Wake(void) +{ + LCD_WriteReg(0x11); //Sleep exit +} + +/****************************************************************************** +function: + Turn off display controller +******************************************************************************/ +void LCD_Sleep(void) +{ + LCD_WriteReg(0x10); //Sleep in +} + /****************************************************************************** function: Common register initialization @@ -97,7 +122,7 @@ void LCD_Init(void) LCD_Reset(); //************* Start Initial Sequence **********// - LCD_WriteReg(0x11); //Sleep exit + LCD_Wake(); DEV_Delay_ms(120); LCD_WriteReg(0x21); LCD_WriteReg(0x21); diff --git a/lib/gfx/LCD/LCD_Driver.h b/lib/gfx/LCD/LCD_Driver.h index 49358115beea4ac4a7f8ec30b2b827149c6dfdad..765dec853ca2968f6cad96ba5493a262c8f5d585 100644 --- a/lib/gfx/LCD/LCD_Driver.h +++ b/lib/gfx/LCD/LCD_Driver.h @@ -45,6 +45,8 @@ void LCD_SetCursor(UWORD x1, UWORD y1, UWORD x2,UWORD y2); void LCD_SetUWORD(UWORD x, UWORD y, UWORD Color); void LCD_Init(void); +void LCD_Wake(void); +void LCD_Sleep(void); void LCD_SetBacklight(UWORD Value); void LCD_Clear(UWORD Color); void LCD_ClearWindow(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD UWORD);