Skip to content

Instantly share code, notes, and snippets.

@yoggy
Last active December 26, 2015 07:49
Show Gist options
  • Select an option

  • Save yoggy/7117774 to your computer and use it in GitHub Desktop.

Select an option

Save yoggy/7117774 to your computer and use it in GitHub Desktop.
I2CLCD control sample code (for Akizuki AQM0802A)
#!/usr/bin/python
#
# I2CLCD control sample code (for Akizuki AQM0802A)
#
# setup
# $ sudo apt-get install i2c-tools
# $ sudo apt-get install python-smbus
#
# check
# $ sudo i2cdetect -y 0
# or
# $ sudo i2cdetect -y 1
#
import smbus
class AkiI2CLCD:
def __init__(self, i2c_bus, addr=0x3e):
self.i2c_bus = i2c_bus
self.addr = addr
self._init()
def _init(self):
self.send_command(0x38) # function set (8bit, 2lines, enable instraction set 0)
self.send_command(0x39) # function set (8bit, 2lines, enable instraction set 1)
self.send_command(0x14) # (IS1) internal osc freq
self.send_command(0x56) # (IS1) power, icon, contrast...
self.send_command(0x6c) # (IS1) follower control
self.send_command(0x06) # entry mode
self.send_command(0x0c) # display on(db2), cursor off(db1), cursor position off(db0)
#self.send_command(0x0f) # display on(db2), cursor on(db1), cursor position on(db0)
def _send(self, rsrw, data):
self.i2c_bus.write_byte_data(self.addr, rsrw, data)
def send_command(self, data):
self._send(0x00, data)
def write_data_to_ram(self, data):
self._send(0x40, data) # write data to ram
def contrast(self, val):
if val < 0x00: val = 0
if val > 0x0f: val = 0x0f
self.send_command(0x39) # function set (8bit, 2lines, enable instraction set 1)
self.send_command(0x70 + val) # contrast set
def clear(self):
self.send_command(0x01) # clear display
self.send_command(0x02) # return to home
def move(self, x, y):
if x < 0: x = 0
if y < 0: y = 0
addr = x + y * 0x40
self.send_command(0x80 + addr) # set ddram address
def puts(self, str):
for c in str:
self.write_data_to_ram(ord(c))
if __name__ == '__main__':
lcd = AkiI2CLCD(smbus.SMBus(1))
lcd.clear()
lcd.contrast(4)
lcd.move(0, 0)
lcd.puts("test1234")
lcd.move(0, 1)
lcd.puts("test1234")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment