*/ void desenhaCabecalho(void){ char charVector[50]; /* Draw text, image and basic shapes on the LCD */ ili9325_set_foreground_color(COLOR_BLACK); ili9325_draw_string(10, 5, (uint8_t *)"AULA20-UART"); ili9325_set_foreground_color(COLOR_BLACK); ili9325_draw_string(10, 25, (uint8_t *)"Henrique Rosa v1.0"); //printf("-- Compiled: %s %s --\n\r\n\r", __DATE__, __TIME__); sprintf(charVector, "%s %s", __DATE__, __TIME__); ili9325_set_foreground_color(COLOR_BLACK); ili9325_draw_string(0, 45, (uint8_t *)charVector); ili9325_draw_filled_rectangle(10, 65, ILI9325_LCD_WIDTH - 10, 68); ili9325_draw_filled_rectangle(10, 71, ILI9325_LCD_WIDTH - 10, 74);
*/ void clearLine(uint8_t posX, uint8_t posY) { /* char charVector [30]; char espacoEmBranco [] = {" "}; //Vetor = 20 x ' ', criado para apagar linha. sprintf(charVector, "%s", espacoEmBranco); printf(charVector); ili9325_set_foreground_color(color); ili9325_draw_string(posX, posY, (uint8_t *)charVector); */ ili9325_set_foreground_color(COLOR_WHITE); ili9325_draw_filled_rectangle(posX, posY, ILI9325_LCD_WIDTH, posY + 15);
*/ static void configure_lcd(void) { /* Configure SMC interface for Lcd */ smc_set_setup_timing(SMC,ILI9325_LCD_CS,SMC_SETUP_NWE_SETUP(2) | SMC_SETUP_NCS_WR_SETUP(2) | SMC_SETUP_NRD_SETUP(2) | SMC_SETUP_NCS_RD_SETUP(2)); smc_set_pulse_timing(SMC, ILI9325_LCD_CS , SMC_PULSE_NWE_PULSE(4) | SMC_PULSE_NCS_WR_PULSE(4) | SMC_PULSE_NRD_PULSE(10) | SMC_PULSE_NCS_RD_PULSE(10)); smc_set_cycle_timing(SMC, ILI9325_LCD_CS, SMC_CYCLE_NWE_CYCLE(10) | SMC_CYCLE_NRD_CYCLE(22)); #if !defined(SAM4S) smc_set_mode(SMC, ILI9325_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE | SMC_MODE_DBW_8_BIT); #else smc_set_mode(SMC, ILI9325_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE); #endif /* Initialize display parameter */ g_ili9325_display_opt.ul_width = ILI9325_LCD_WIDTH; g_ili9325_display_opt.ul_height = ILI9325_LCD_HEIGHT; g_ili9325_display_opt.foreground_color = COLOR_BLACK; g_ili9325_display_opt.background_color = COLOR_WHITE; /* Switch off backlight */ //aat31xx_disable_backlight(); /* Initialize LCD */ ili9325_init(&g_ili9325_display_opt); /* Set backlight level */ aat31xx_set_backlight(AAT31XX_MAX_BACKLIGHT_LEVEL); ili9325_set_foreground_color(COLOR_WHITE); ili9325_draw_filled_rectangle(0, 0, ILI9325_LCD_WIDTH, ILI9325_LCD_HEIGHT); /* Turn on LCD */ ili9325_display_on();
/** * \brief Application entry point for smc_lcd example. * * \return Unused (ANSI-C compatibility). */ int main(void) { sysclk_init(); board_init(); /* Initialize debug console */ configure_console(); /* Enable peripheral clock */ pmc_enable_periph_clk(ID_SMC); /* Configure SMC interface for Lcd */ smc_set_setup_timing(SMC,ILI9325_LCD_CS,SMC_SETUP_NWE_SETUP(2) | SMC_SETUP_NCS_WR_SETUP(2) | SMC_SETUP_NRD_SETUP(2) | SMC_SETUP_NCS_RD_SETUP(2)); smc_set_pulse_timing(SMC, ILI9325_LCD_CS , SMC_PULSE_NWE_PULSE(4) | SMC_PULSE_NCS_WR_PULSE(4) | SMC_PULSE_NRD_PULSE(10) | SMC_PULSE_NCS_RD_PULSE(10)); smc_set_cycle_timing(SMC, ILI9325_LCD_CS, SMC_CYCLE_NWE_CYCLE(10) | SMC_CYCLE_NRD_CYCLE(22)); #if !defined(SAM4S) smc_set_mode(SMC, ILI9325_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE | SMC_MODE_DBW_8_BIT); #else smc_set_mode(SMC, ILI9325_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE); #endif /* Initialize display parameter */ g_ili9325_display_opt.ul_width = ILI9325_LCD_WIDTH; g_ili9325_display_opt.ul_height = ILI9325_LCD_HEIGHT; g_ili9325_display_opt.foreground_color = COLOR_BLACK; g_ili9325_display_opt.background_color = COLOR_WHITE; /* Switch off backlight */ aat31xx_disable_backlight(); /* Initialize LCD */ ili9325_init(&g_ili9325_display_opt); /* Set backlight level */ aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL); ili9325_set_foreground_color(COLOR_WHITE); ili9325_draw_filled_rectangle(0, 0, ILI9325_LCD_WIDTH, ILI9325_LCD_HEIGHT); /* Turn on LCD */ ili9325_display_on(); /* Draw text, image and basic shapes on the LCD */ ili9325_set_foreground_color(COLOR_BLACK); ili9325_draw_string(10, 20, (uint8_t *)"ili9325_lcd example"); ili9325_set_foreground_color(COLOR_RED); ili9325_draw_circle(60, 160, 40); ili9325_set_foreground_color(COLOR_GREEN); ili9325_draw_circle(120, 160, 40); ili9325_set_foreground_color(COLOR_BLUE); ili9325_draw_circle(180, 160, 40); ili9325_set_foreground_color(COLOR_VIOLET); ili9325_draw_line(0, 0, 240, 320); while (1) { } }
/** * \brief Initialize the ILI9325 lcd driver. * * \note Make sure below works have been done before calling ili9325_init()\n * 1. ILI9325 related Pins have been initialized correctly. \n * 2. SMC has been configured correctly for access ILI9325 (8-bit system interface for now). \n * * \param p_opt pointer to ILI9325 option structure. * * \return 0 if initialization succeeds, otherwise fails. */ uint32_t ili9325_init(struct ili9325_opt_t *p_opt) { /* Check ILI9325 chipid */ uint16_t chipid = ili9325_read_register(ILI9325_DEVICE_CODE_REG); /* Driver Code Read (R00h) */ if (chipid != ILI9325_DEVICE_CODE) { return 1; } /* Turn off LCD */ ili9325_write_register(ILI9325_DISP_CTRL1, ILI9325_DISP_CTRL1_GON | ILI9325_DISP_CTRL1_DTE | ILI9325_DISP_CTRL1_D(0x03)); /* Start initial sequence */ /* Disable sleep and standby mode*/ ili9325_write_register(ILI9325_POWER_CTRL1, 0x0000); /* Start internal OSC */ ili9325_write_register(ILI9325_START_OSC_CTRL, ILI9325_START_OSC_CTRL_EN); /* Set SS bit and direction output from S720 to S1 */ ili9325_write_register(ILI9325_DRIVER_OUTPUT_CTRL1, ILI9325_DRIVER_OUTPUT_CTRL1_SS); /* Set 1 line inversion */ ili9325_write_register(ILI9325_LCD_DRIVING_CTRL, ILI9325_LCD_DRIVING_CTRL_BIT10 | ILI9325_LCD_DRIVING_CTRL_EOR | ILI9325_LCD_DRIVING_CTRL_BC0); /* Disable resizing feature */ ili9325_write_register(ILI9325_RESIZE_CTRL, 0x0000); /* Set the back porch and front porch */ ili9325_write_register(ILI9325_DISP_CTRL2, ILI9325_DISP_CTRL2_BP(0x07) | ILI9325_DISP_CTRL2_FP(0x02)); /* Set non-display area refresh cycle ISC[3:0] */ ili9325_write_register(ILI9325_DISP_CTRL3, 0x0000); /* Disable FMARK function */ ili9325_write_register(ILI9325_DISP_CTRL4, 0x0000); /* 18-bit RGB interface and writing display data by the system interface */ ili9325_write_register(ILI9325_RGB_DISP_INTERFACE_CTRL1, 0x0000); /* Set the output position of frame cycle */ ili9325_write_register(ILI9325_FRAME_MAKER_POS, 0x0000); /* RGB interface polarity */ ili9325_write_register(ILI9325_RGB_DISP_INTERFACE_CTRL2, 0x0000); /* Power on sequence */ /* Disable sleep and standby mode */ ili9325_write_register(ILI9325_POWER_CTRL1, 0x0000); /* Selects the operating frequency of the step-up circuit 1,2 and Sets the ratio factor of Vci */ ili9325_write_register(ILI9325_POWER_CTRL2, 0x0000); /* Set VREG1OUT voltage */ ili9325_write_register(ILI9325_POWER_CTRL3, 0x0000); /* Set VCOM amplitude */ ili9325_write_register(ILI9325_POWER_CTRL4, 0x0000); ili9325_delay(200); /* Enable power supply and source driver */ /* Adjusts the constant current and Sets the factor used in the step-up circuits.*/ ili9325_write_register(ILI9325_POWER_CTRL1, ILI9325_POWER_CTRL1_SAP | ILI9325_POWER_CTRL1_BT(0x02) | ILI9325_POWER_CTRL1_APE | ILI9325_POWER_CTRL1_AP(0x01)); /* Select the operating frequency of the step-up circuit 1,2 and Sets the ratio factor of Vci */ ili9325_write_register(ILI9325_POWER_CTRL2, ILI9325_POWER_CTRL2_DC1(0x02) | ILI9325_POWER_CTRL2_DC0(0x02) | ILI9325_POWER_CTRL2_VC(0x07)); ili9325_delay(50); /* Internal reference voltage= Vci */ ili9325_write_register(ILI9325_POWER_CTRL3, ILI9325_POWER_CTRL3_PON | ILI9325_POWER_CTRL3_VRH(0x0B)); ili9325_delay(50); /* Set VDV[4:0] for VCOM amplitude */ ili9325_write_register(ILI9325_POWER_CTRL4, ILI9325_POWER_CTRL4_VDV(0x11)); /* Set VCM[5:0] for VCOMH */ ili9325_write_register(ILI9325_POWER_CTRL7, ILI9325_POWER_CTRL7_VCM(0x19)); /* Set Frame Rate */ ili9325_write_register(ILI9325_FRAME_RATE_AND_COLOR_CTRL, ILI9325_FRAME_RATE_AND_COLOR_CTRL_FRS(0x0D)); ili9325_delay(50); /* Adjust the Gamma Curve */ ili9325_write_register(ILI9325_GAMMA_CTRL1, 0x0000); ili9325_write_register(ILI9325_GAMMA_CTRL2, ILI9325_GAMMA_CTRL2_KP3(0x02) | ILI9325_GAMMA_CTRL2_KP2(0x04)); ili9325_write_register(ILI9325_GAMMA_CTRL3, ILI9325_GAMMA_CTRL3_KP5(0x02) | ILI9325_GAMMA_CTRL3_KP4(0x00)); ili9325_write_register(ILI9325_GAMMA_CTRL4, ILI9325_GAMMA_CTRL4_RP1(0x00) | ILI9325_GAMMA_CTRL4_RP0(0x07)); ili9325_write_register(ILI9325_GAMMA_CTRL5, ILI9325_GAMMA_CTRL5_VRP1(0x14) | ILI9325_GAMMA_CTRL5_VRP0(0x04)); ili9325_write_register(ILI9325_GAMMA_CTRL6, ILI9325_GAMMA_CTRL6_KN1(0x07) | ILI9325_GAMMA_CTRL6_KN0(0x05)); ili9325_write_register(ILI9325_GAMMA_CTRL7, ILI9325_GAMMA_CTRL7_KN3(0x03) | ILI9325_GAMMA_CTRL7_KN2(0x05)); ili9325_write_register(ILI9325_GAMMA_CTRL8, ILI9325_GAMMA_CTRL8_KN5(0x07) | ILI9325_GAMMA_CTRL8_KN4(0x07)); ili9325_write_register(ILI9325_GAMMA_CTRL9, ILI9325_GAMMA_CTRL9_RN1(0x07) | ILI9325_GAMMA_CTRL9_RN0(0x01)); ili9325_write_register(ILI9325_GAMMA_CTRL10, ILI9325_GAMMA_CTRL10_VRN1(0x00) | ILI9325_GAMMA_CTRL10_VRN0(0x0E)); /* Use the high speed write mode (HWM=1) */ /* When TRI = 1, data are transferred to the internal RAM in 8-bit x 3 transfers mode via the 8-bit interface. */ /* DFM Set the mode of transferring data to the internal RAM when TRI = 1. */ /* I/D[1:0] = 11 Horizontal : increment Vertical : increment, AM=0:Horizontal */ ili9325_write_register(ILI9325_ENTRY_MODE, ILI9325_ENTRY_MODE_TRI | ILI9325_ENTRY_MODE_DFM | ILI9325_ENTRY_MODE_ID(0x01) |ILI9325_ENTRY_MODE_BGR); /* Sets the number of lines to drive the LCD at an interval of 8 lines. */ /* The scan direction is from G320 to G1 */ ili9325_write_register(ILI9325_DRIVER_OUTPUT_CTRL2, ILI9325_DRIVER_OUTPUT_CTRL2_GS | ILI9325_DRIVER_OUTPUT_CTRL2_NL(0x27)); /* Vertical Scrolling */ /* Disable scrolling and enable the grayscale inversion */ ili9325_write_register(ILI9325_BASE_IMG_DISP_CTRL, ILI9325_BASE_IMG_DISP_CTRL_REV); ili9325_write_register(ILI9325_VERTICAL_SCROLL_CTRL, 0x0000); /* Disable Partial Display */ ili9325_write_register(ILI9325_PARTIAL_IMG1_DISP_POS, 0x0000); ili9325_write_register(ILI9325_PARTIAL_IMG1_AREA_START_LINE, 0x0000); ili9325_write_register(ILI9325_PARTIAL_IMG1_AREA_END_LINE, 0x0000); ili9325_write_register(ILI9325_PARTIAL_IMG2_DISP_POS, 0x0000); ili9325_write_register(ILI9325_PARTIAL_IMG2_AREA_START_LINE, 0x0000); ili9325_write_register(ILI9325_PARTIAL_IMG2_AREA_END_LINE, 0x0000); /* Panel Control */ ili9325_write_register(ILI9325_PANEL_INTERFACE_CTRL1, ILI9325_PANEL_INTERFACE_CTRL1_RTNI(0x10)); ili9325_write_register(ILI9325_PANEL_INTERFACE_CTRL2, ILI9325_PANEL_INTERFACE_CTRL2_NOWI(0x06)); ili9325_write_register(ILI9325_PANEL_INTERFACE_CTRL4, ILI9325_PANEL_INTERFACE_CTRL4_DIVE(0x01) | ILI9325_PANEL_INTERFACE_CTRL4_RTNE(0x10)); ili9325_set_window(0, 0,p_opt->ul_width,p_opt->ul_height); ili9325_set_foreground_color(p_opt->foreground_color); ili9325_set_cursor_position(0, 0); return 0; }