テキスト ボックス:  液晶モジュール GLOVE LCD RGB Backlight

 

 

 

I2Cセンサーの種類

16桁2段、RGBバックラットLCD

主な機能

16桁2段表示、RGBバックライト式、液晶表示モジュール

I2Cデバイス名

HD44780 (コマンド体系のみ、I2C通信はPICマイコンで実施)

PCA9633 RGBのバックライト制御

写真

 

GROVE - RGBバックライト液晶モジュール

開発したデバイスの入手先 

製品名 品番・型番

スイッチサイエンス

GROVE – RGBバックライト液晶モジュール(SEEED-104030001

デバイスのData-Sheet

http://www.nxp.com/documents/data_sheet/PCA9633.pdf 

https://www.sparkfun.com/datasheets/LCD/HD44780.pdf 

デバイスの主な仕様

 

電源電圧

I2Cアドレス

 

表示

バックライト

5V   (3.3Vからはレベルシフターが必要です)

0X3E (LCD

062 (バックライト)

LCD162段  (HD44780コンパチ、英数カナCG-ROM内臓)

R/G/B PCA9633で制御

説明

LCDコントローラでは デファンクトスタンダートと言えるHD44780使用、HD44780I2Cインターフェースが無い為PICマイコンでI2Cのシリアル通信からHD44780とパラレル通信に変換しています。

また、バックライトは、別のI2CデバイスのLED DriverPCA9633でRGBのバックライト制御をしている為に、このLCDモジュールには液晶コントロール用のI2Cアドレスとバックライトコントロール用の2個のI2Cアドレスを持ちます。

PCA9633のスレーブアドレス(I2Cアドレス)は、PCA9633のVersionで異なるますが

A0A6までの0X0X127までアドレス選択が可能です。詳しくはData-heetをご覧下さい。4個のLED駆動が可能で、LEDON/OFF以外に輝度を0100%可変できます。

HD44780のプロパティの使い方はサンプルソースをご覧ください。

PCA9633では、Mode
register
1Byteを更に細分化され1bit毎に異なる意味の設定となります。I2Cセンサードライバーでは1bit単位でプロパティ化していますので、プロパティ単位で設定が可能でbit演算を行う必要が有りません。

 

通常のレジスタの読み書きは、register
address
を指定した後に処理を行いますが、I2Cセンサー・ドライバーを使用する場合は使用するプロパティにregister addressが紐づけして有る為レジスタアドレスの指定は不要でプロパティへ値の代入、読み出しのみで可能です。

 

 

 

 

開発・テスト風景

IMG_2440

 

I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)

HD44780は、I2Cデバイスで無い為、内部レジスタ一覧は有りません。

 

PCA9633の内部レジスタ)

Mode register 1

 

Mode register 2

 

brightness control LED0

 

brightness control LED1

 

brightness control LED2

 

brightness control LED3

 

group duty cycle control

 

group frequency

 

LED output state

 

I2C-bus
subaddress 1

 

I2C-bus
subaddress 2

 

I2C-bus
subaddress 3

 

LED All Call I2C-bus
address

 

 

I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド

プロパティ 及びメソッド(HD44780

HD44780の全機能は網羅していません。一般的に必要な内容のみドライバー化しています。

機能名

機能説明

I_D

true:, false:

S

true:表示シフトON,    false:表示シフトOFF

D

true:ディスプレイON

C

true:ブロックカーソルON

B

true:ブリンクON

S_C

true:表示シフト,    false:カーソル移動

R_L

true:,  false:

DL

true:8bit,  false:4bit

N

true:2line,  false:1line

F

true:5x10dot,
false:5x7dot

col

row

 

機能名

機能説明

Data

表示データ

CharMap

ユーザー定義文字

location

位置

WriteDelay

書込み文字間Delay

ReadBuff

読込データ

メソッド

機能名

機能説明

Init

I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。

Write

指定レジスタ書込

定数

機能名

機能説明

定数値

REG_ADDR.INT

データ書き込み

 

REG_ADDR.LEARDISPLAY

ディスプレイのクリア

 

REG_ADDR.ETURNHOME

カーソルをホーム

 

REG_ADDR.NTRYMODESET

エントリーモードセット

 

REG_ADDR.ISPLAYCONTROL

表示On/Off

 

REG_ADDR.URSORSHIFT

カーソル/シフト設定

 

REG_ADDR.UNCTIONSET

機能設定

 

REG_ADDR.ETCGRAMADDR

CGRAMアドレスセット

 

REG_ADDR.ETDDRAMADDR

DDRAMアドレスセット

 

 

プロパティ 及びメソッド(PCA9633

プロパティ

機能名

機能説明

SLEEP

低消費電力モード

DMBLNK

0: dimming 1: blinking

INVRT

出力論理状態が反転しない。

OCH

STOPコマンドで出力が変化する

OUTDRV

4つのLED出力はトーテムポール構造で構成されています。

OUTNE

出力ドライバの有効

PWM0

PWM1

PWM2

PWM3

GRPPWM

DMBLNK=false: 輝度  DMBLNK=1:点滅周期

GRPFREQ

DMBLNK=1:点滅周期

LDR3

LED3出力状態制御

LDR2

LED2出力状態制御

LDR1

LED1出力状態制御

LDR0

LED0出力状態制御

ReadBuff

読込生データ

 

メソッド

機能名

機能説明

Init

I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。

Read

指定レジスタ読込

Write

指定レジスタ書込

 

定数

機能名

機能説明

定数値

REG_ADDR.MODE1

Mode register 1

0x00

REG_ADDR.MODE2

Mode register 2

0x01

REG_ADDR.PWM0

brightness control LED0

0x02

REG_ADDR.PWM1

brightness control LED1

0x03

REG_ADDR.PWM2

brightness control LED2

0x04

REG_ADDR.PWM3

brightness control LED3

0x05

REG_ADDR.GRPPWM

group duty cycle control

0x06

REG_ADDR.GRPFREQ

group frequency

0x07

REG_ADDR.LEDOUT

LED output state

0x08

 

I2Cセンサードライバーを使ったVBでのサンプルソース

(液晶表示部)

Imports I2CLibrary

Public NotInheritable Class PIC16F77APage

 Inherits Page

 Private Const GROVE_LCD_Address As Byte = &H3E

 Private GROVE_LCD As I2CLibrary.GROVE_LCD = New I2CLibrary.GROVE_LCD()

 

 Public Sub New()

  InitializeComponent()

  Call Init()

 End Sub

 

  Private Async Sub Init()

  Await GROVE_LCD.Init(GROVE_LCD_Address)

 End Sub

 

    Private Async Sub btnLCD_Click(sender As Object, e As RoutedEventArgs)

  ’ 1.機能設定

  GROVE_LCD.DL = False    ‘ DB=4Bit

  GROVE_LCD.N = True      ‘ 1/16 duty

  GROVE_LCD.F = False     ‘ 2

  Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.FUNCTIONSET)

  ‘ 2.表示関係

  GROVE_LCD.D = True      表示On

  GROVE_LCD.C = True      カーソルOff

  GROVE_LCD.B = False     カーソル点滅なし

   Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.DISPLAYCONTROL)

  ‘3.ディスプレイのクリア

  Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.CLEARDISPLAY)

  ‘3.カーソル移動

  GROVE_LCD.I_D = True    ‘ AC+1

  GROVE_LCD.S = False     カーソルシフト

  Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.ENTRYMODESET)

  ’ ユーザー定義

  GROVE_LCD.location = 1

  GROVE_LCD.CharMap = New Byte() {&H1F, &H1F, &H1F, &H1F, &H1F, &H1F, &H1F, &H1F}

   Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.SETCGRAMADDR)

   ‘ SetCursol

  GROVE_LCD.col = 0

  GROVE_LCD.row = 0

  Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.SETDDRAMADDR)

  GROVE_LCD.WriteDelay = 50

  GROVE_LCD.Data = New Byte() {&H1, &H41, &H42, &H43, &H44, &H45, &H46,&H47, &H48, &H49, &H4A, &H4B, &H4C, &H4D,&H4E, &H4F}

  Await GROVE_LCD.Write(I2CLibrary.GROVE_LCD.REG_ADDR.PRINT)

 End Sub

 Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs)

  GROVE_LCD.close()

  App.rootFrame.Navigate(GetType(MenuPage))

  End Sub

End Class

 

(バックライト制御)

Imports I2CLibrary

Public NotInheritable Class PIC16F77APage

 Inherits Page

 Private Const PCA9633_Address As Byte = &H62

 Private PCA9633 As I2CLibrary.PCA9633 = New I2CLibrary.PCA9633()

 Public Sub New()

  InitializeComponent()

  Call Init()

 End Sub

 Private Async Sub Init()

  Await PCA9633.Init(PCA9633_Address)

 End Sub

 Private Sub btnLED_Click(sender As Object, e As RoutedEventArgs)

  PCA9633.SLEEP = False

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.MODE1)

  PCA9633.LDR0 = &H3

  PCA9633.LDR1 = &H3

  PCA9633.LDR2 = &H3

  PCA9633.LDR3 = &H3

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.LEDOUT)

  PCA9633.DMBLNK = True

  PCA9633.INVRT = False

  PCA9633.OCH = False

  PCA9633.OUTDRV = False

  PCA9633.OUTNE = &H0

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.MODE2)

  PCA9633.GRPFREQ = &H10

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.GRPFREQ)

   PCA9633.GRPPWM = &H8

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.GRPPWM)

  PCA9633.PWM0 = &H0

  PCA9633.PWM1 = &H0     

  PCA9633.PWM2 = &HFF    

  PCA9633.PWM3 = &H0

  PCA9633.Write(I2CLibrary.PCA9633.REG_ADDR.PWM)

 End Sub

 Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs)

  PCA9633.close()

  App.rootFrame.Navigate(GetType(MenuPage))

 End Sub

End Class