Skip to content

Instantly share code, notes, and snippets.

@itrobotics
Last active June 7, 2018 16:36
Show Gist options
  • Save itrobotics/a5ae9c7cdfe50d10cc2e to your computer and use it in GitHub Desktop.
Save itrobotics/a5ae9c7cdfe50d10cc2e to your computer and use it in GitHub Desktop.
The simple hello world example code of Python for LCD1602 module
#!/usr/bin/env python
#-*-coding:utf8-*-
import RPi.GPIO as GPIO
from time import sleep
RS = 38
RW = 40
EN = 29
D4 = 31
D5 = 33
D6 = 35
D7 = 37
def init():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(EN, GPIO.OUT)
GPIO.setup(RS, GPIO.OUT)
GPIO.setup(RW, GPIO.OUT)
GPIO.setup(D4, GPIO.OUT)
GPIO.setup(D5, GPIO.OUT)
GPIO.setup(D6, GPIO.OUT)
GPIO.setup(D7, GPIO.OUT)
GPIO.output(D4,0)
GPIO.output(D5,0)
GPIO.output(D6,0)
GPIO.output(D7,0)
GPIO.output(RS,0)
GPIO.output(RW,0)
GPIO.output(EN,0)
sleep(0.1)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.002)
GPIO.output(D5,1)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.005)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.0002)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.0002)
write_command(0x28)
sleep(0.0001)
write_command(0x0c)
sleep(0.0001)
write_command(0x01)
sleep(0.002)
def write_command(cmd):
GPIO.output(EN,0)
GPIO.output(RW,0)
GPIO.output(RS,0)
GPIO.output(D7, 1 if (0x80 & cmd) else 0)
GPIO.output(D6, 1 if (0x40 & cmd) else 0)
GPIO.output(D5, 1 if (0x20 & cmd) else 0)
GPIO.output(D4, 1 if (0x10 & cmd) else 0)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.000001)
GPIO.output(D7, 1 if (0x08 & cmd) else 0)
GPIO.output(D6, 1 if (0x04 & cmd) else 0)
GPIO.output(D5, 1 if (0x02 & cmd) else 0)
GPIO.output(D4, 1 if (0x01 & cmd) else 0)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.00005)
def write_data(data):
GPIO.output(EN,0)
GPIO.output(RW,0)
GPIO.output(RS,1) # <<===== 這裡RS要設為high
GPIO.output(D7, 1 if (0x80 & data) else 0)
GPIO.output(D6, 1 if (0x40 & data) else 0)
GPIO.output(D5, 1 if (0x20 & data) else 0)
GPIO.output(D4, 1 if (0x10 & data) else 0)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.000001)
GPIO.output(D7, 1 if (0x08 & data) else 0)
GPIO.output(D6, 1 if (0x04 & data) else 0)
GPIO.output(D5, 1 if (0x02 & data) else 0)
GPIO.output(D4, 1 if (0x01 & data) else 0)
GPIO.output(EN,1)
sleep(0.000001)
GPIO.output(EN,0)
sleep(0.00005)
if __name__=="__main__":
init()
write_command(0x80)
write_data(ord("H"))
write_data(ord("e"))
write_data(ord("l"))
write_data(ord("l"))
write_data(ord("o"))
write_data(ord("!"))
@TheGreatRambler
Copy link

This is exactly what I needed, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment