Ejemplo n.º 1
0
void lcd_transfer_sub_page(uint8_t page, uint8_t offset) {
    uint8_t idx;
    uint8_t *memory = lcd_memory;

    buffer += page * LCD_PAGE_SIZE + offset;

    /* enable and reset com interface of the ST7565R */
    dog_spi_enable_client();

    /* set write position */
    dog_cmd_mode();
    dog_spi_out(0x0b0 | page);		/* select current page (ST7565R) */
    dog_spi_out(0x010);				/* set upper 4 bit of the col adr to 0 */
    dog_spi_out(0x000);				/* set lower 4 bit of the col adr to 0 */

    /* send a complete page */
    dog_data_mode();

#ifdef LCD_REVERSE
    idx = 0;
    while (idx != LCD_PAGE_WIDTH) {
        dog_spi_out(buffer[idx++]);
    }
#else /* DOG_REVERSE */
    idx = LCD_PAGE_WIDTH;
    while (idx != 0) {
        dog_spi_out(buffer[--idx]);
    }
#endif

    /* disable com interface of the ST7565R */
    dog_spi_disable_client();
}
Ejemplo n.º 2
0
uint8_t dog_GetSPIByte(void)
{
  uint8_t result;
  dog_spi_enable_client();
  dog_cmd_mode();
  result = dog_spi_out(0x0e3);	/* NOP command for UC1610 and ST7565 */
  dog_spi_disable_client();
  return result;
}
Ejemplo n.º 3
0
void dog_SetInvertPixelMode(uint8_t val)
{
  val &= 1;
  val |= 0x0a6;			/* invert pixel mode */
  dog_spi_enable_client();  
  dog_cmd_mode();
  dog_spi_out(val);		
  dog_data_mode();
  dog_spi_disable_client();
}
Ejemplo n.º 4
0
void dog_SetContrast(uint8_t val)
{
  val &= 63;
  dog_spi_enable_client();  
  dog_cmd_mode();
  dog_spi_out(0x081);		/* set contrast */
  dog_spi_out(val);		/* contrast value */
  dog_data_mode();
  dog_spi_disable_client();
}
Ejemplo n.º 5
0
void dog_SetUC1610GrayShade(uint8_t val)
{
#if defined(DOGXL160_HW_BW) || defined(DOGXL160_HW_GR)
  val &= 3;
  dog_spi_enable_client();  
  dog_cmd_mode();
  dog_spi_out(0x0d0 | val);		/* set RMS gray level separation value */
  dog_data_mode();
  dog_spi_disable_client();
#endif
}
Ejemplo n.º 6
0
static void dog_transfer_page(void)
{
  uint8_t idx;

  /* enable and reset com interface of the ST7565R */
  dog_spi_enable_client();
  
  /* set write position */
  dog_cmd_mode();
  
  dog_spi_out(0x0b0 | dog_curr_page );		/* select current page  */
  dog_spi_out(0x010 );		/* set upper 4 bit of the col adr to 0 */
  dog_spi_out(0x000 );		/* set lower 4 bit of the col adr to 0 */
  
  /* send a complete page */
  
  dog_data_mode();

//#ifdef DOG_REVERSE
  if (dog_reverse) {
  idx = 0;
  while( idx != DOG_PAGE_WIDTH )
  {
    dog_spi_out(dog_page_buffer[idx]); 
    idx++;
  }
//#else
  } else {
  idx = DOG_PAGE_WIDTH;
  while( idx != 0 )
  {
    idx--;
    dog_spi_out(dog_page_buffer[idx]); 
  }
//#endif
  }

  /* disable com interface of the ST7565R */

  dog_spi_disable_client();
}
Ejemplo n.º 7
0
static void dog_init_display(void)
{
  dog_Delay(10);
  dog_spi_disable_client();	/* force reset of the spi subsystem of the ST7565R */
  dog_Delay(10);
  dog_spi_enable_client();
  dog_Delay(10);
  dog_cmd_mode();
  /* mostly taken from the EA dogm description */
  switch (dog_model)
  {
	  case DOGM128_HW:
//#ifdef DOGM128_HW
  dog_spi_out(0x040);		/* set display start line to 0 */
  dog_spi_out(0x0a1);		/* ADC set to reverse */
  dog_spi_out(0x0c0);		/* common output mode */
  dog_spi_out(0x0a6);		/* display normal, bit val 0: LCD pixel off. */
  dog_spi_out(0x0a2);		/* LCD bias 1/9 */
  dog_spi_out(0x02f);		/* all power  control circuits on */
  dog_spi_out(0x0f8);		/* set booster ratio to */
  dog_spi_out(0x000);		/* 4x */
  dog_spi_out(0x027);		/* set V0 voltage resistor ratio to large */
  dog_spi_out(0x081);		/* set contrast */
  dog_spi_out(0x018);		/* contrast value, EA default: 0x016 */
  dog_spi_out(0x0ac);		/* indicator */
  dog_spi_out(0x000);		/* disable */
  dog_spi_out(0x0af);		/* display on */
//#endif
  break;

	  case DOGM132_HW:
//#ifdef DOGM132_HW
  dog_spi_out(0x040);		/* set display start line to 0 */
  dog_spi_out(0x0a1);		/* ADC set to reverse */
  dog_spi_out(0x0c0);		/* common output mode */
  dog_spi_out(0x0a6);		/* display normal, bit val 0: LCD pixel off. */
  dog_spi_out(0x0a2);		/* LCD bias 1/9 */
  dog_spi_out(0x02f);		/* all power  control circuits on */
  dog_spi_out(0x0f8);		/* set booster ratio to */
  dog_spi_out(0x000);		/* 4x */
  dog_spi_out(0x023);		/* set V0 voltage resistor ratio to large */
  dog_spi_out(0x081);		/* set contrast */
  dog_spi_out(0x01f);		/* contrast value, EA default: 0x01f */
  dog_spi_out(0x0ac);		/* indicator */
  dog_spi_out(0x000);		/* disable */
  dog_spi_out(0x0af);		/* display on */
//#endif
  break;

	  case DOGS102_HW:
//#ifdef DOGS102_HW
  dog_spi_out(0x040);		/* set display start line to 0 */
  dog_spi_out(0x0a1);		/* ADC set to reverse */
  dog_spi_out(0x0c0);		/* common output mode */
  dog_spi_out(0x0a6);		/* display normal, bit val 0: LCD pixel off. */
  dog_spi_out(0x0a2);		/* LCD bias 1/9 */
  dog_spi_out(0x02f);		/* all power  control circuits on */
  dog_spi_out(0x027);		/* regulator, booster and follower */
  dog_spi_out(0x081);		/* set contrast */
  dog_spi_out(0x00e);		/* contrast value, EA default: 0x010 */
  dog_spi_out(0x0fa);		/* Set Temp compensation */ 
  dog_spi_out(0x090);		/* 0.11 deg/c WP Off WC Off*/
  dog_spi_out(0x0af);		/* display on */
//#endif
  break;
  }

  dog_spi_out(0x0a5);		/* display all points */
  dog_Delay(300);
  dog_spi_out(0x0a4);		/* normal display  */
  dog_Delay(300);
  dog_spi_disable_client();
}