
Afficheur LCD 16×2

Présentation
L'afficher LCD 16×2 permet d'afficher deux lignes de 16 caractères chacune.
Branchement
L'afficher LCD 16×2 se branche sur la borne I2C de la carte interface.
Programmation
Code d'une classe pour utiliser le module
from microbit import *
class mb_afficheur_lcd():
def __init__(self):
self.set_register(0x00, 0)
self.set_register(0x01, 0)
self.set_register(0x08, 0xAA)
self.disp_func = 0x04 | 0x08
sleep(50)
self.cmd(0x20 | self.disp_func)
sleep(5)
self.cmd(0x20 | self.disp_func)
sleep(1)
self.cmd(0x20 | self.disp_func)
self.cmd(0x20 | self.disp_func)
self.disp_ctrl = 0x04 | 0x00 | 0x00
self.display1(True)
self.clear()
self.disp_mode = 0x02 | 0x00
self.cmd(0x04 | self.disp_mode)
def set_register(self, reg, val):
val = bytes((reg, val))
i2c.write(62, val)
def cmd(self, command):
assert command >= 0 and command < 256
val = bytes((0x80, command))
i2c.write(62, val)
def write_char(self, c):
assert c >= 0 and c < 256
val = bytes((0x40, c))
i2c.write(62, val)
def write(self, text):
'''
Affiche un texte à la position du curseur
Param text : (str) la chaine de caractères à afficher
'''
text = str(text)
for char in text:
self.write_char(ord(char))
def setCursor(self, col, row):
'''
Positionne le curseur
Param col : (int) numéro de la colonne (compris entre 0 et 15)
Param row : (int) numéro de la ligne (0 ou 1)
'''
col = (col | 0x80) if row == 0 else (col | 0xc0)
self.cmd(col)
def display1(self, state):
if state:
self.disp_ctrl |= 0x04
self.cmd(0x08 | self.disp_ctrl)
else:
self.disp_ctrl &= ~0x04
self.cmd(0x08 | self.disp_ctrl)
def clear(self):
'''
Efface le contenu de l'écran
'''
self.cmd(0x01)
sleep(2)
Exemple d'utilisation
# copier ici le code précédant
ecran = mb_afficheur_lcd()
while True:
ecran.clear()
t = temperature()
l = display.read_light_level()
ecran.set_cursor(0,0)
ecran.write("Temp : " + str(t) + " C")
ecran.set_cursor(0,1)
ecran.write("Lum : " + str(l))
sleep(500)