Basic example showing how to drive the LCD

Dependencies:   BSP_DISCO_F769NI

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "stm32f769i_discovery_lcd.h"
00003 #include "stlogo.h"
00004 
00005 uint32_t Xsize = 0;
00006 uint32_t Ysize = 0;
00007 
00008 /**
00009   * @brief  Show LCD Features
00010   * @param  feature : feature index
00011   * @retval None
00012   */
00013 static void LCD_Show_Feature(uint8_t feature)
00014 {
00015     Point Points[] = {{20, 150}, {80, 150}, {80, 200}};
00016     Point Points2[3];
00017 
00018     Points2[0].X = Xsize - 80;
00019     Points2[0].Y = 150;
00020     Points2[1].X = Xsize - 20;
00021     Points2[1].Y = 150;
00022     Points2[2].X = Xsize - 20;
00023     Points2[2].Y = 200;
00024 
00025     BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
00026     BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
00027     BSP_LCD_FillRect(12, 92, Xsize - 24, Ysize - 104);
00028     BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00029 
00030     switch (feature) {
00031         case 0:
00032             /* Text Feature */
00033 
00034             BSP_LCD_DisplayStringAt(14, 100, (uint8_t *)"Left aligned Text", LEFT_MODE);
00035             BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Center aligned Text", CENTER_MODE);
00036             BSP_LCD_DisplayStringAt(14, 130, (uint8_t *)"Right aligned Text", RIGHT_MODE);
00037             BSP_LCD_SetFont(&Font24);
00038             BSP_LCD_DisplayStringAt(14, 180, (uint8_t *)"Font24", LEFT_MODE);
00039             BSP_LCD_SetFont(&Font20);
00040             BSP_LCD_DisplayStringAt(Xsize / 2 - 20, 180, (uint8_t *)"Font20", LEFT_MODE);
00041             BSP_LCD_SetFont(&Font16);
00042             BSP_LCD_DisplayStringAt(Xsize - 80, 184, (uint8_t *)"Font16", LEFT_MODE);
00043             break;
00044 
00045         case 1:
00046 
00047             /* Draw misc. Shapes */
00048             BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00049             BSP_LCD_DrawRect(20, 100, 60, 40);
00050             BSP_LCD_FillRect(100, 100, 60, 40);
00051 
00052             BSP_LCD_SetTextColor(LCD_COLOR_GRAY);
00053             BSP_LCD_DrawCircle(Xsize - 120, 120, 20);
00054             BSP_LCD_FillCircle(Xsize - 40, 120, 20);
00055 
00056             BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
00057             BSP_LCD_DrawPolygon(Points, 3);
00058 
00059             BSP_LCD_SetTextColor(LCD_COLOR_RED);
00060             BSP_LCD_DrawEllipse(130, 170, 30, 20);
00061             BSP_LCD_FillEllipse(200, 170, 30, 20);
00062 
00063             BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00064             BSP_LCD_DrawHLine(20, Ysize - 30, Xsize / 5);
00065             BSP_LCD_DrawLine(100, Ysize - 20, 230, Ysize - 50);
00066             BSP_LCD_DrawLine(100, Ysize - 50, 230, Ysize - 20);
00067 
00068             BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
00069             BSP_LCD_FillPolygon(Points2, 3);
00070             break;
00071 
00072         case 2:
00073             /* Draw Bitmap */
00074             BSP_LCD_DrawBitmap(20, 100, (uint8_t *)stlogo);
00075             HAL_Delay(500);
00076 
00077             BSP_LCD_DrawBitmap(Xsize / 2 - 40, 100, (uint8_t *)stlogo);
00078             HAL_Delay(500);
00079 
00080             BSP_LCD_DrawBitmap(Xsize - 100, 100, (uint8_t *)stlogo);
00081             HAL_Delay(500);
00082 
00083             BSP_LCD_DrawBitmap(20, Ysize - 80, (uint8_t *)stlogo);
00084             HAL_Delay(500);
00085 
00086             BSP_LCD_DrawBitmap(Xsize / 2 - 40, Ysize - 80, (uint8_t *)stlogo);
00087             HAL_Delay(500);
00088 
00089             BSP_LCD_DrawBitmap(Xsize - 100, Ysize - 80, (uint8_t *)stlogo);
00090             HAL_Delay(500);
00091             break;
00092     }
00093 }
00094 
00095 
00096 int main()
00097 {
00098     uint8_t LCD_Feature = 0;
00099 
00100     BSP_LCD_Init();
00101     // BSP_LCD_InitEx(LCD_ORIENTATION_PORTRAIT);
00102     BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
00103     BSP_LCD_SelectLayer(0);
00104 
00105     Xsize = BSP_LCD_GetXSize();
00106     Ysize = BSP_LCD_GetYSize();
00107 
00108     BSP_LCD_Clear(LCD_COLOR_WHITE);
00109     BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
00110     BSP_LCD_FillRect(0, 0, Xsize, 80);
00111     BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
00112     BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
00113     BSP_LCD_SetFont(&Font24);
00114     BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"MBED LCD EXAMPLE", CENTER_MODE);
00115     BSP_LCD_SetFont(&Font12);
00116     BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"DISCOVERY STM32F769NI", CENTER_MODE);
00117 
00118     BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
00119     BSP_LCD_DrawRect(10, 90, Xsize - 20, Ysize - 100);
00120     BSP_LCD_DrawRect(11, 91, Xsize - 22, Ysize - 102);
00121 
00122     HAL_Delay(1000);
00123 
00124     while (1) {
00125         LCD_Show_Feature(LCD_Feature);
00126         HAL_Delay(3000);
00127 
00128         LCD_Feature++;
00129         if (LCD_Feature == 3) {
00130             LCD_Feature = 0;
00131         }
00132     }
00133 }