示例#1
0
/*
 * clear_screen - clear screen 'cause lcm command 
 *                may result in other side effect 
 *                so clear screen manual.
 *  @return : status 
 */
int clear_screen(void)
{
    /*
     * lcm clear is OK 
     */  
    return lcm_clear();
}
示例#2
0
void lcm_init()
{
    bcm2835_spi_begin();
    bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE3);
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_64);
    /* 64=250ns=4MHz | works up to 16 | unstable 8 | unusable 4 */
    bcm2835_spi_chipSelect(BCM2835_SPI_CS_NONE);

    bcm2835_gpio_fsel(A0, BCM2835_GPIO_FSEL_OUTP);
    bcm2835_gpio_fsel(RST, BCM2835_GPIO_FSEL_OUTP);

    bcm2835_delayMicroseconds(1);

    // Reset
    bcm2835_gpio_write(RST, LOW);
    bcm2835_delayMicroseconds(10);
    bcm2835_gpio_write(RST, HIGH);

    lcm_set_command();
    bcm2835_spi_transfer(0xAE); // turn off the screen

    bcm2835_spi_transfer(0xD5); // set display clock divide ratio/oscillator frequency
    bcm2835_spi_transfer(0x80); // suggested ratio: 0x80

    bcm2835_spi_transfer(0xA8); // set multiplex
    bcm2835_spi_transfer(0x3F); // height: 64

    bcm2835_spi_transfer(0xD3); // set display offset
    bcm2835_spi_transfer(0x00); // offset: 0

    bcm2835_spi_transfer(0x40 | 0x0); // set start line

    bcm2835_spi_transfer(0x8D); // set charge pump
    bcm2835_spi_transfer(0x14); // charge pump: disable

    bcm2835_spi_transfer(0x20); // set memory mode
    bcm2835_spi_transfer(0x00); // mode: 0

    bcm2835_spi_transfer(0xA0 | 0x1); // set seg/column mapping

    bcm2835_spi_transfer(0xC8); // set com/row scan direction

    bcm2835_spi_transfer(0xDA); // set com pins hardware configuration
    bcm2835_spi_transfer(0x12); // compins: 0x12

    bcm2835_spi_transfer(0x81); // set contrast control register
    bcm2835_spi_transfer(0xCF); // brightness: 0xCF

    bcm2835_spi_transfer(0xD9); // set pre-charge period
    bcm2835_spi_transfer(0xF1); // pre-charge: 15 clocks / discharge: 1 clock

    bcm2835_spi_transfer(0XDB); // set vcom detect
    bcm2835_spi_transfer(0x40); // vcom deselect level: 0x40

    bcm2835_spi_transfer(0xA4); // disable entire display

    bcm2835_spi_transfer(0xA6); // disable inverse display (normal display)

    bcm2835_spi_transfer(0xAF); // turn on the screen

    lcm_clear();
}