I2Cセンサーの種類 |
16桁2段、RGBバックラットLCD |
|
主な機能 |
16桁2段表示、RGBバックライト式、液晶表示モジュール |
|
I2Cデバイス名 |
HD44780 (コマンド体系のみ、I2C通信はPICマイコンで実施) PCA9633 RGBのバックライト制御 |
|
写真
|
||
開発したデバイスの入手先 製品名 品番・型番 |
スイッチサイエンス GROVE – RGBバックライト液晶モジュール(SEEED-104030001) |
|
デバイスのData-Sheet |
||
デバイスの主な仕様
|
電源電圧 I2Cアドレス
表示 バックライト |
5V (3.3Vからはレベルシフターが必要です) 0X3E (LCD) 0X62 (バックライト) LCD:16桁2段 (HD44780コンパチ、英数カナCG-ROM内臓) R/G/B PCA9633で制御 |
説明 |
LCDコントローラでは デファンクトスタンダートと言えるHD44780使用、HD44780はI2Cインターフェースが無い為PICマイコンでI2Cのシリアル通信からHD44780とパラレル通信に変換しています。 また、バックライトは、別のI2CデバイスのLED DriverのPCA9633でRGBのバックライト制御をしている為に、このLCDモジュールには液晶コントロール用のI2Cアドレスとバックライトコントロール用の2個のI2Cアドレスを持ちます。 PCA9633のスレーブアドレス(I2Cアドレス)は、PCA9633のVersionで異なるますが A0~A6までの0X~0X127までアドレス選択が可能です。詳しくはData-Sheetをご覧下さい。4個のLED駆動が可能で、LEDのON/OFF以外に輝度を0~100%可変できます。 HD44780のプロパティの使い方はサンプルソースをご覧ください。 PCA9633では、Mode
通常のレジスタの読み書きは、register |
|
|
|
|
開発・テスト風景
|
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 |
|
I2C-bus |
|
I2C-bus |
|
LED All Call I2C-bus |
|
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, |
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
|