Thank you. I found a bug, I'm ashamed. I used to output data code: unsigned int i; for (i = 0; i < (GDISP_SCREEN_WIDTH * (GDISP_SCREEN_HEIGHT / 8)); i++) { write_data(g, RAM(g) + i, 1); } as needed: unsigned int i; for (i = 0; i < (GDISP_SCREEN_WIDTH * (GDISP_SCREEN_HEIGHT / 8)); i++) { write_data(g, RAM(g)[i], 1); } sorry. uploaded working code repository.