int main(int argc, char **argv) { if(wiringPiSetup() == -1) { printf("wiringPiSetup() failed\n"); return EXIT_FAILURE; } // 540kHz speed - recomended by ST7920 spec //if ((lcd_fd = wiringPiSPISetupMode(0, 540000, 0x07)) < 0) { if ((lcd_fd = wiringPiSPISetup(0, 540000)) < 0) { printf("Can't open the SPI bus\n"); return EXIT_FAILURE; } char mode = 0x07; ioctl(lcd_fd, SPI_IOC_WR_MODE, &mode); init_gpio(); reset_lcd(); init_lcd(); set_extended_mode(0, 0, 0); set_extended_mode(0, 1, 1); clear_lcd(); show_image(raspberry_pix); return EXIT_SUCCESS; }
int Dpy::set_contrast(int value) { int ret = -2; unsigned char oldreg; set_extended_mode(); if (value > CONTRAST_MAX || value < 0 ) return (-2); oldreg = contrast_set; contrast_set = (value & WSTAR_CONTRAST_LOW_MASK); ret = write_cmd(contrast_set); if(ret < 0) { contrast_set = oldreg; return(ret); } oldreg = pow_icon_contrast; pow_icon_contrast |= ((value >> 4) & WSTAR_POW_ICON_CONTRAST_CNTH_MASK); ret = write_cmd(pow_icon_contrast); if(ret < 0) { pow_icon_contrast = oldreg; return(ret); } return (ret); }
int Dpy::init() { int ret; this->backlight_state = true; this->display_mode = WSTAR_DISPLAY_STATE | WSTAR_DISPLAY_CMD; this->function_set = WSTAR_FUNCTION_8BIT | WSTAR_FUNCTION_TWO_LINE_5X8 | WSTAR_FUNCTION_CMD; this->entry_mode = WSTAR_ENTRY_MODE_CMD; this->cursor_display_shift = WSTAR_CUR_DPY_SHIFT_RIGHT | WSTAR_CUR_DPY_SHIFT_SCREEN | WSTAR_CUR_DPY_SHIFT_CMD; this->ddram_addr = WSTAR_DDRAM_CMD; // Extended instruction set (IS=1) this->bias_osc_frequency_adj = 0x04 | WSTAR_BIAS_OSC_CMD; this->icon_ram_address = WSTAR_ICON_RAM_ADD_CMD; this->pow_icon_contrast = WSTAR_POW_ICON_CONTRAST_BOOST | WSTAR_POW_ICON_CONTRAST_CMD; this->follower = FOLLOWER_DEFAULT | WSTAR_FOLLOWER_ON | WSTAR_FOLLOWER_CMD; this->contrast_set = CONTRAST_DEFAULT | WSTAR_CONTRAST_LOW_CMD; set_backlight(backlight_state); ret = write_cmd(function_set); ret = set_extended_mode(); ret = write_cmd(bias_osc_frequency_adj); ret = write_cmd(contrast_set); ret = write_cmd(pow_icon_contrast); ret = write_cmd(follower); ret = write_cmd(display_mode); return(ret); }