From bce35ca678e0e29bb078b5853ba3279cbb8d9139 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 7 Mar 2014 20:40:38 +0200 Subject: [PATCH] Add Python LCD driver --- usr/lib/lcd.py | 165 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 usr/lib/lcd.py diff --git a/usr/lib/lcd.py b/usr/lib/lcd.py new file mode 100644 index 000000000..0d035e6f5 --- /dev/null +++ b/usr/lib/lcd.py @@ -0,0 +1,165 @@ +import spi, gpio +from time import sleep + +rst = gpio.GPIO(gpio.PA8) +rs = gpio.GPIO(gpio.PC9) +cs = gpio.GPIO(gpio.PA15) + +def reset(): + rst.low() + sleep(100) + rst.high() + sleep(100) + +def write_command(c): + cs.low() + rs.low() + spi.write(c) + cs.high() + +def write_data(data): + cs.low() + rs.high() + for b in data: + spi.write(b) + cs.high() + +def clear(c=0x00): + write_command(0x2C) + for i in range(120*160): + write_data(c) + write_data(c) + +def write_image(image): + write_command(0x2C) + cs.low() + rs.high() + spi.write_image(image) + cs.high() + +def init(): + #HW reset + reset() + + #LCD init sequence + #Sleep exit + write_command(0x11) + sleep (120) + + #ST7735R Frame Rate + write_command(0xB1) + write_data(0x01) + write_data(0x2C) + write_data(0x2D) + + write_command(0xB2) + write_data(0x01) + write_data(0x2C) + write_data(0x2D) + + write_command(0xB3) + write_data(0x01) + write_data(0x2C) + write_data(0x2D) + write_data(0x01) + write_data(0x2C) + write_data(0x2D) + + write_command(0xB4) + #Column inversion + write_data(0x07) + + #ST7735R Power Sequence + write_command(0xC0) + write_data(0xA2) + write_data(0x02) + write_data(0x84) + + write_command(0xC1) + write_data(0xC5) + write_command(0xC2) + write_data(0x0A) + write_data(0x00) + + write_command(0xC3) + write_data(0x8A) + write_data(0x2A) + + write_command(0xC4) + write_data(0x8A) + write_data(0xEE) + + #VCOM + write_command(0xC5) + write_data(0x0E) + + #MX, MY, MV, RGB mode + write_command(0x36) + write_data(0x60) + + #ST7735R Gamma Sequence + write_command(0xe0) + write_data(0x0f) + write_data(0x1a) + write_data(0x0f) + write_data(0x18) + write_data(0x2f) + write_data(0x28) + write_data(0x20) + write_data(0x22) + write_data(0x1f) + write_data(0x1b) + write_data(0x23) + write_data(0x37) + write_data(0x00) + write_data(0x07) + write_data(0x02) + write_data(0x10) + + write_command(0xe1) + write_data(0x0f) + write_data(0x1b) + write_data(0x0f) + write_data(0x17) + write_data(0x33) + write_data(0x2c) + write_data(0x29) + write_data(0x2e) + write_data(0x30) + write_data(0x30) + write_data(0x39) + write_data(0x3f) + write_data(0x00) + write_data(0x07) + write_data(0x03) + write_data(0x10) + + # set column address + write_command(0x2a) + write_data(0x00) + write_data(0x00) + write_data(0x00) + write_data(0x9F) + + # set row address + write_command(0x2b) + write_data(0x00) + write_data(0x00) + write_data(0x00) + write_data(0x77) + + #Enable test command + write_command(0xF0) + write_data(0x01) + + #Disable ram power save mode + write_command(0xF6) + write_data(0x00) + + #65k mode + write_command(0x3A) + write_data(0x05) + + #Display on + write_command(0x29) +