Example #1
0
//flushes the buffers to the lcd and resets everything
//so call this only once per loop, since this draws the frame
void flush_to_lcd()
{
	for (int32_t i = 0; i < buffered_amount; i++)
	{
		start_drawing[i] = drawable_buffer[i].get_start();
		end_drawing[i] = drawable_buffer[i].get_end();
	}
	
	command_lcd(0x4e, 0);
	command_lcd(0x4f, 0);
	lcd_com(0x22);
	//lets iterate thru all y-lines
	for (int32_t y = 0; y < SCREENY; y++)
	{
		//empty the line buffer with black
		draw_line_to_buf(0,SCREENX,0x0);
		
		//iterate thru all drawable objects
		for (int32_t i = 0; i < buffered_amount; i++)
		{
			if (start_drawing[i] > y) continue;
			if (end_drawing[i] < y) continue;
			//draw 1 pixel height y-slice of the drawable object to the linebuffer
			drawable_buffer[i].draw(y);
		}
		
		//pulse the current linebuffer to the lcd
		draw_linebuffer();
	}

	//reset drawable objects
	buffered_amount = 0;
	text_buffer_pointer = 0;
}
Example #2
0
File: lcd.c Project: vmouse/Cowshed
//------------Функция инициализации ЖКИ----------------- =34
void lcd_init(void)       //Режим 4 бит, мигающий курсор =35
{
    DDR_lcd |= 0x0F;//для младших разрядов
	//DDR_lcd |= 0xF0;//для старших разрядов
	DDR_RS |= _BV(RS);
	DDR_EN |= _BV(EN);
    lcd_com(0x33);
    _delay_ms(100);          //Подготовка =36
    lcd_com(0x32); 
	lcd_com(0x28);
    lcd_com(0x28);
    lcd_com(0x28);        //4 бит, 2 строки =37
	lcd_com(0x08);             //Полное выключение дисплея =38
	lcd_com(0x01); 
	_delay_ms(200);   //Очистка дисплея =39
    lcd_com(0x06);                  //Сдвиг курсора вправо =40
    lcd_com(0x0C);    //Включение дисплея, мигающий курсор =41
}                         //Окончание функции "lcd_init" =42