Ejemplo n.º 1
0
void ssd1306_init(ssd1306_t *ssd, i2c_dev_t *i2c_dev) 
{
   assert(ssd);
   assert(i2c_dev);
   
   ssd->i2c_dev = i2c_dev;
   ssd->width  = 128;
   ssd->height = 64;
   ssd->buf = (uint8_t *)malloc((ssd->width * ssd->height / 8)); 

   ssd1306_cmd1(ssd, SSD_DISPLAY_OFF);
   ssd1306_cmd2(ssd, SSD1306_SETDISPLAYCLOCKDIV, 0x80);
   ssd1306_cmd2(ssd, SSD1306_SETMULTIPLEX, 0x3F);
   ssd1306_cmd2(ssd, SSD1306_SETDISPLAYOFFSET, 0x00);
   ssd1306_cmd1(ssd, SSD1306_SETSTARTLINE);
   ssd1306_cmd2(ssd, SSD1306_CHARGEPUMP, 0x14); 
   ssd1306_cmd2(ssd, SSD1306_MEMORYMODE, 0x00);
   ssd1306_cmd1(ssd, SSD1306_SEGREMAP | 0x1);
   ssd1306_cmd1(ssd, SSD1306_COMSCANDEC);
   ssd1306_cmd2(ssd, SSD1306_SETCOMPINS, 0x12);
   ssd1306_cmd2(ssd, SSD_SET_CONTRAST, 0xCF);
   ssd1306_cmd2(ssd, SSD1306_SETPRECHARGE, 0xF1);
   ssd1306_cmd2(ssd, SSD1306_SETVCOMDETECT, 0x40);
   ssd1306_cmd1(ssd, SSD1306_DISPLAYALLON_RESUME);
   ssd1306_cmd1(ssd, SSD1306_Normal_Display);

   ssd1306_cmd3(ssd, 0x21, 0, 127); 
   ssd1306_cmd3(ssd, 0x22, 0, 7); 
   ssd1306_cmd1(ssd, SSD_DEACTIVATE_SCROLL);
   
   ssd1306_clear(ssd);
   ssd1306_update(ssd);
   ssd1306_cmd1(ssd, SSD_DISPLAY_ON);
}
Ejemplo n.º 2
0
void blit(char *data)
{
   for (int x = 0; x < ssd.width; x++)
      for (int y = 0; y < ssd.height; y++)
         ssd1306_set_pixel(&ssd, x, y, data[x + y * ssd.width]);   
   ssd1306_update(&ssd);
}
Ejemplo n.º 3
0
void ssd1306_init(I2C_HandleTypeDef* hi2c)
{
    ssd1306_sendCmd(hi2c, SSD1306_DISPLAY_OFF);
    ssd1306_sendCmd(hi2c, SSD1306_SET_DISPLAY_CLOCK_DIV_RATIO);
    ssd1306_sendCmd(hi2c, 0x80);
    ssd1306_sendCmd(hi2c, SSD1306_SET_MULTIPLEX_RATIO);
    ssd1306_sendCmd(hi2c, 0x3F);
    ssd1306_sendCmd(hi2c, SSD1306_SET_DISPLAY_OFFSET);
    ssd1306_sendCmd(hi2c, 0x0);
    ssd1306_sendCmd(hi2c, SSD1306_SET_START_LINE | 0x0);
    ssd1306_sendCmd(hi2c, SSD1306_CHARGE_PUMP);
	ssd1306_sendCmd(hi2c, 0x14);
    ssd1306_sendCmd(hi2c, SSD1306_MEMORY_ADDR_MODE);
    ssd1306_sendCmd(hi2c, 0x00);
    ssd1306_sendCmd(hi2c, SSD1306_SET_SEGMENT_REMAP | 0x1);
    ssd1306_sendCmd(hi2c, SSD1306_COM_SCAN_DIR_DEC);
    ssd1306_sendCmd(hi2c, SSD1306_SET_COM_PINS);
    ssd1306_sendCmd(hi2c, 0x12);
    ssd1306_sendCmd(hi2c, SSD1306_SET_CONTRAST_CONTROL);
	ssd1306_sendCmd(hi2c, 0xCF);
    ssd1306_sendCmd(hi2c, SSD1306_SET_PRECHARGE_PERIOD);
	ssd1306_sendCmd(hi2c, 0xF1);
    ssd1306_sendCmd(hi2c, SSD1306_SET_VCOM_DESELECT);
    ssd1306_sendCmd(hi2c, 0x40);
    ssd1306_sendCmd(hi2c, SSD1306_DISPLAY_ALL_ON_RESUME);
    ssd1306_sendCmd(hi2c, SSD1306_NORMAL_DISPLAY);
	ssd1306_sendCmd(hi2c, SSD1306_DISPLAY_ON);

    ssd1306_clear();
    ssd1306_update(hi2c);
}
Ejemplo n.º 4
0
void update(void)
{
   ASSERT_INIT();
   ssd1306_update(&ssd);
}