Exemple #1
0
 */
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);
Exemple #2
0
 */
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);
Exemple #3
0
 */
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();
Exemple #4
0
/**
 * \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) {
	}
}
Exemple #5
0
/**
 * \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;
}