Micro:bit、Micropythonで液晶ディスプレイに文字を表示する(GPIOを利用)
液晶ディスプレイ
液晶ディスプレイ(LCD)は、液晶の性質で光を制御し、文字、記号、図形を表示する画面装置です。
ドットマトリックスLCD
ここでは、HD44780コントローラー互換のSD1602ディスプレイを使用します。
他メーカーのSD1602ディスプレイを購入するときは、 ドライバ回路にご留意してください。
インターフェース
Micro: bitから本モジュールへデジタル信号を入力します。
MicropythonとMicro:bit
SD1602ディスプレイに「クマオフシゴロウ」を表示するサンプルソフトを以下に説明します。
フロー
サンプルプログラムはSD1602ディスプレイに初期設定をして、文字を表示します。初期設定と文字の表示方法は、HD44780コントローラーまたはSD1602ディスプレイのデータシートを参考にしてください。
接続
接続表と接続図(写真)を示します。
Micro Bit | LCD | ||
ピン番号 | 機能 | ピン番号 | 機能 |
P7 | DigitalOut | 14 | D7 |
P6 | DigitalOut | 13 | D6 |
P5 | DigitalOut | 12 | D5 |
P4 | DigitalOut | 11 | D4 |
- | 10 | D3 | |
- | 9 | D2 | |
- | 8 | D1 | |
- | 7 | D0 | |
P3 | DigitalOut | 6 | E |
GND | GND | 5 | R/W |
P2 | DigitalOut | 4 | RS |
(可変抵抗) | 3 | Vo | |
3V3 | 3V3 | 2 | V+ |
GND | GND | 1 | GND |
GND | GND | 16 | LED- |
3V3 | 3V3 | 15 | LED+ |
SD1602ディスプレイのピン番号は端から順番になっていませんので、接続にはご注意ください。
コード
from microbit import * # pinの定義 # P7 -> D7 # P6 -> D6 # P5 -> D5 # P4 -> D4 # P3 -> E # P2 -> RS # pin connections # かならず、LEDディスプレイをOFFにする rs = pin2 enable = pin3 datapins = [pin4, pin6, pin7, pin8] # Read/Wrire pin は常に0にしてWriteモードにする def pin_init(): rs.write_digital(0) enable.write_digital(0) for i in range(0, 4): datapins[i].write_digital((0)) sleep(1) def pulseEnable(): enable.write_digital(0) sleep(1) enable.write_digital(1) sleep(1) enable.write_digital(0) sleep(1) def write4bits(value): for i in range(0, 4): datapins[i].write_digital((value >> i) & 0x01) pulseEnable() display.off() pin_init() sleep(30) # wait longer than 15 ms write4bits(0x03) sleep(5) # wait longer than 4.1 ms write4bits(0x03) sleep(1) # wait longer than 10 um write4bits(0x03) write4bits(0x02) # interface 4 bits longer write4bits(0x02) # interface 4 bits longer write4bits(0x08) # DL:0(4 bits) N:1(2 lines) F:0(5*11 dots) write4bits(0x00) # display off write4bits(0x08) # D:0(off) C:0(off) B:0(off) write4bits(0x00) # display clear write4bits(0x01) write4bits(0x00) # entry mode setting write4bits(0x06) # I/D:1(Address increment) S:0(Not display shit) write4bits(0x00) # display on write4bits(0x0C) # D:1(on) C:0(off) B:0(off) rs.write_digital(1) # ク 0x0B 0x08 write4bits(0x0B) write4bits(0x08) rs.write_digital(1) # マ 0x0C 0x0F write4bits(0x0C) write4bits(0x0F) rs.write_digital(1) # オ 0x0B 0x05 write4bits(0x0B) write4bits(0x05) rs.write_digital(1) # フ 0x0C 0x0C write4bits(0x0C) write4bits(0x0C) rs.write_digital(1) # シ 0x0B 0x0C write4bits(0x0B) write4bits(0x0C) rs.write_digital(1) # コ 0x0B 0x0A write4bits(0x0B) write4bits(0x0A) rs.write_digital(1) # ゛ 0x0D 0x0E write4bits(0x0D) write4bits(0x0E) rs.write_digital(1) # ロ 0x0D 0x0B write4bits(0x0D) write4bits(0x0B) rs.write_digital(1) # ウ 0x0B 0x03 write4bits(0x0B) write4bits(0x03)
結果
SD1602ディスプレイに「クマオフシゴロウ」が表示されました。