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(); }
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(); }
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; }
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(); }
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 }
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(); }
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(); }