Liquid Christal Display (LCD), een klein schermpje voor weergave van tekst en cijfers op 2 tekstregels van 16 karakters.
Aansluiting van 4 datalijnen (D4, D5, D6, D7) en 2 control-lijnen (EN en RS).
Aansluiting van voedingspanning +5 V (Vdd) en massa (Vss).
R/W lijn is verbonden met massa (0 = write mode, enkel karakters schrijven naar display)
Beeldcontrastlijn (Vo) verbonden met massa (ofwel via instelpotentiometer)
Achtergrondbelichting (A) verbonden met weerstand van 220 E met + 5V en (K) met massa.

verbinding met Rpi Pico
pin | naam | omschrijving | naam | pin |
1 | Vss | massa (GND) | GND | 38 |
2 | Vdd | Voedingsspanning + 5 V | VBUS | 40 |
3 | Vo | beeldcontrast regeling (verbonden met massa of via potentiometer) | ||
4 | RS | Register Select (0 = command mode, 1 = datamode | GP1 | 2 |
5 | R/W | Read/write (0 = schrijven naar LCD, 1 = lezen van LCD) verbonden met massa | ||
6 | EN | Enable (overgang van 1 naar 0 = schrijf actie) | GP0 | 1 |
11 | D4 | datalijn 1 | GP2 | 4 |
12 | D5 | datalijn 2 | GP3 | 5 |
13 | D6 | datalijn 4 | GP4 | 6 |
14 | D7 | datalijn 8 | GP5 | 7 |
15 | A | anode van belichtingsled (verbonden met weerstand van 220 E naar + 5V voeding) | ||
16 | K | kathode van belichtingsled (verbonden met massa) |

display driver programma : LCD.py
Download dit programma naar de Rpi Pico
# LCD.py
#
# 4 databits LCD 16 x 2 char
# ---------------------------
from machine import Pin
import utime
EN = Pin(0, Pin.OUT)
RS = Pin(1, Pin.OUT)
D4 = Pin(2, Pin.OUT)
D5 = Pin(3, Pin.OUT)
D6 = Pin(4, Pin.OUT)
D7 = Pin(5, Pin.OUT)
PORT = [2, 3, 4, 5]
L = [0, 0, 0, 0]
def configure():
for i in range(4):
L[i] = Pin(PORT[i], Pin.OUT)
def lcd_strobe():
EN.value(1)
utime.sleep_ms(1)
EN.value(0)
utime.sleep_ms(1)
def lcd_write(c, mode):
if mode == 0:
d = c
else:
d = ord(c)
d = d >> 4
for i in range(4):
b = d & 1
L[i].value(b)
d = d >> 1
RS.value(mode)
lcd_strobe()
if mode == 0:
d = c
else:
d = ord(c)
for i in range(4):
b = d & 1
L[i].value(b)
d = d >> 1
RS.value(mode)
lcd_strobe()
utime.sleep_ms(1)
RS.value(1)
def lcd_puts(s):
l = len(s)
for i in range(l):
lcd_putch(s[i])
def lcd_putch(c):
lcd_write(c,1)
def lcd_init():
configure()
utime.sleep_ms(120)
for i in range(4):
L[i].value(0)
utime.sleep_ms(50)
L[0].value(1)
L[1].value(1)
lcd_strobe()
utime.sleep_ms(10)
lcd_strobe()
utime.sleep_ms(10)
lcd_strobe()
utime.sleep_ms(10)
L[0].value(0)
lcd_strobe()
utime.sleep_ms(5)
lcd_write(0x28, 0)
utime.sleep_ms(1)
lcd_write(0x08, 0)
utime.sleep_ms(1)
lcd_write(0x01, 0)
utime.sleep_ms(10)
lcd_write(0x06, 0)
utime.sleep_ms(5)
lcd_write(0x0C, 0)
utime.sleep_ms(10)
# end of LCD functions
testprogramma : hello.py
Dit programma zet een tekst op het scherm
import LCD
LCD.lcd_init()
LCD.lcd_puts('Hello from PICO')