
AVRマイコンに、小型のカラー液晶表示器(LCD)を接続します。
携帯電話などに使用される小型のカラー液晶が、新品・リユース共に、いくつか販売されています。
これらの中に、シリアル通信や8bitのパラレルデータで制御できる物があり、AVRマイコンでも簡単に表示が可能です。
そこで、いくつかのLCDを取り寄せて、表示のテストを行ってみました。
また、LCDに合わせたBASCOM-AVR用のライブラリを作成し、BASIC言語の簡単な命令で、写真や線・文字の描画を可能にします。

0.96インチ 65KフルカラーLCD 横160 x 縦80 ドット |

 |
表 示
液 晶
バックライト
電源電圧
消費電流
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
160 x 80 ドット
65Kフルカラー
LED
2.5V 〜 3.7V
バックライト ON : 20mA
バックライト OFF : 2.2mA
W30 x H24 x D5 mm
ST7735S (ID:7Ch)
SPI
ST7735S |
|
・このLCDは、SPI通信で制御します。
・AVRマイコンからは、制御用に5つのポートが必要です。 [CS] , [DC] , [RES] , [SDA] , [SCL]
・バックライト[BLK]端子は、[オープン]または[H]でバックライトが点灯、[L]で消灯です。
・AVRチップおよびポートやピンの配置は変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
●描画テストプログラム
・以下のライブラリー・ファイルを、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
に保存して下さい。 glcd-ST7735S_160x80.lib
・プログラム内のライブラリ指定を下記にして下さい。
$lib "glcd-ST7735S_160x80.lib"
・「Config Graphlcd」命令の接続ポート指定は下記の通りです。 ([ ]内はLCDの端子名称)
Cs1 = [CS] , A0 = [DC] , Rst = [RES] , Si = [SDA] , Sclk = [SCL]
・フォント・ファイルは下記のフォルダー内にありますので、プログラム・ソースと同じフォルダーに
コピーしてからコンパイルして下さい。
BASCOM-AVR 付属フォント (各種サイズあり) |
ドキュメント\MCS Electronics\BASCOM-AVR\samples\lcdgraph\color8x8.font |
・「Const Portrait = 0」行により、LCDの設置方向を90度回転させることができます。
(0:横置き[X=160,Y=80] , 1:縦置き[X=80,Y=160])
・「Const Rotate_180 = 0」行により、LCDの設置方向を180度回転させることができます。
(0:コネクターが下側 , 1:コネクターが上側)
・基本的な色は、色のコードに名前を定義してあります。
・色の指定は、 [RRRG_GGBB] = [R2,R1,R0,G2_G1,G0,B1,B0] の構造で、赤[R]と緑[G]は3ビットで、
青[B]は2ビットです。 ([000]=薄い 〜 [111]=濃い)
・「Lcdat」命令の画面位置アドレスは、Y、X共に0〜の指定です。
|

1.3インチ 65KフルカラーLCD 240 x 240 ドット |
 |
表 示
液 晶
バックライト
電源電圧
消費電流
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
240 x 240 ドット
65Kフルカラー
LED
2.4V 〜 3.3V
バックライト ON : 33mA
バックライト OFF : 6mA
W28 x H39 x D5 mm
ST7789V
SPI
ST7789V |
|
・このLCDは、SPI通信で制御します。
・AVRマイコンからは、制御用に4つのポートが必要です。 [DC] , [RES] , [SDA] , [SCL]
・バックライト[BLK]端子は、[オープン]または[H]でバックライトが点灯、[L]で消灯です。
・AVRチップおよびポートやピンの配置は変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
●描画テストプログラム
・以下のライブラリー・ファイルを、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
に保存して下さい。 glcd-ST7789V_1R3_240x240.lib (Xmega対応)
・プログラム内のライブラリ指定を下記にして下さい。
$lib "glcd-ST7789V_1R3_240x240.lib"
・「Config Graphlcd」命令の接続ポート指定は下記の通りです。 ([ ]内はLCDの端子名称)
A0 = [DC], Rst = [RES] , Si = [SDA] , Sclk = [SCL]
・フォント・ファイルは下記のフォルダー内にありますので、プログラム・ソースと同じフォルダーに
コピーしてからコンパイルして下さい。
BASCOM-AVR 付属フォント (各種サイズあり) |
ドキュメント\MCS Electronics\BASCOM-AVR\samples\lcdgraph\color8x8.font |
・「Const Portrait = 0」行により、LCDの設置方向を90度回転させることができます。
(0:横置き[X=240,Y=240] , 1:縦置き[X=240,Y=240])
・「Const Rotate_180 = 0」行により、LCDの設置方向を180度回転させることができます。
(0:コネクターが上側 , 1:コネクターが下側)
・基本的な色は、色のコードに名前を定義してあります。
・色の指定は、 [RRRG_GGBB] = [R2,R1,R0,G2_G1,G0,B1,B0] の構造で、赤[R]と緑[G]は3ビットで、
青[B]は2ビットです。 ([000]=薄い 〜 [111]=濃い)
・「Lcdat」命令の画面位置アドレスは、Y、X共に0〜の指定です。
・BMPやJPEG画像からRLE圧縮形式のBGC画像データを作成して、画像の表示ができます。
・BGC画像データは、LCD RGB-8 converter [LCDconvert.exe]を使用して作成します。
ビットマップ(.BMP)または JPEG(.JPG)画像データを、表示させたいドット数に縮小して
用意します。
「LCDconvert」を起動して、用意した画像データを開きます。
[File] → [Convert] をクリックして、BGCデータへの変換を行います。
[File] → [Save] → [Save Binary] で、BGCデータをプログラムと同じフォルダーに保存します。
|

1.69インチ TFTフルカラーLCD 240 x 280 ドット |
 |
表 示
液 晶
バックライト
電源電圧
消費電流
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
240 x 280 ドット
TFT フルカラー
LED
2.4V 〜 3.3V
バックライト ON : 24mA
バックライト OFF : 5mA
W31.5 x H48.5 x D5 mm
ST7789V2 , V3
SPI
ST7789V2 , ST7789V3 |
|
・このLCDは、SPI通信で制御します。
・スマートウォッチに使用されるLCDなので、表示画面の角が丸くなっており、その部分に表示する
ことはできません。
・ST7789V2コントローラーは、SPIのクロック速度が速くなっています。
・ST7789V3コントローラーは、一部のインターフェイスを省略した廉価なバージョンだと思います。
・ 両方のボードは、同じライブラリで動作します。
・AVRマイコンからは、制御用に5つのポートが必要です。 [SCL] , [SDA] , [RES] , [DC] , [CS]
・バックライト[BLK]端子は、[H]でバックライトが点灯、[L]で消灯です。
・AVRチップおよびポートやピンの配置は変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
●描画テストプログラム
・以下のライブラリー・ファイルを、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
に保存して下さい。 glcd-ST7789V2_V3_1R69_240x280.lib (Xmega対応)
・プログラム内のライブラリ指定を下記にして下さい。
$lib "glcd-ST7789V2_V3_1R69_240x280.lib"
・「Config Graphlcd」命令の接続ポート指定は下記の通りです。 ([ ]内はLCDの端子名称)
Sclk = [SCL] , Si = [SDA] , Rst = [RES] , A0 = [DC] , Cs1 = [CS]
・フォント・ファイルは下記のフォルダー内にありますので、プログラム・ソースと同じフォルダーに
コピーしてからコンパイルして下さい。
BASCOM-AVR 付属フォント (各種サイズあり) |
ドキュメント\MCS Electronics\BASCOM-AVR\samples\lcdgraph\color8x8.font |
・「Const Portrait = 0」行により、LCDの設置方向を90度回転させることができます。
(1:縦置き[X=240,Y=280] , 0:横置き[X=280,Y=240])
・「Const Rotate_180 = 0」行により、LCDの設置方向を180度回転させることができます。
(0:コネクターが上側[右側] , 1:コネクターが下側[左側])
・基本的な色は、色のコードに名前を定義してあります。
・色の指定は、 [RRRG_GGBB] = [R2,R1,R0,G2_G1,G0,B1,B0] の構造で、赤[R]と緑[G]は3ビットで、
青[B]は2ビットです。 ([000]=薄い 〜 [111]=濃い)
・「Lcdat」命令の画面位置アドレスは、Y、X共に0〜の指定です。
・BASCOM-AVRのグラフィック命令(LINE,BOX,LCDAT,etc)は、LCDのアドレス指定がバイト単位
(0〜255)に限られています。
その制約のため、他のユーザーによりこのLCD用の関数が作られていますが、導入方法や
理解に手間がかかります。
そこで、256ドットを超えるLCDに対して、画面のアドレス指定にオフセットを付けて、BASCOM標準の
グラフィック命令を使えるようにしてあります。
ただし、アドレスが255から256をまたぐ描画はできません。
・使用方法。
画面アドレスが255を超える位置を指定する場合は、変数[Offset256]に(1)を入れます。
(再度0〜255の位置に描画を行う場合は、変数[Offset256]を(0)に戻してください)
各命令のアドレス指定を256以上にする場合、アドレス値の記述は256でも0でも同じです。
・BMPやJPEG画像からRLE圧縮形式のBGC画像データを作成して、画像の表示ができます。
・BGC画像データは、LCD RGB-8 converter [LCDconvert.exe]を使用して作成します。
ビットマップ(.BMP)または JPEG(.JPG)画像データを、表示させたいドット数に縮小して
用意します。
「LCDconvert」を起動して、用意した画像データを開きます。
[File] → [Convert] をクリックして、BGCデータへの変換を行います。
[File] → [Save] → [Save Binary] で、BGCデータをプログラムと同じフォルダーに保存します。
|

1.8インチ 65KフルカラーLCD 128 x 160 ドット |

 |
表 示
液 晶
バックライト
電源電圧
消費電流
バックライト
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
128 x 160 ドット
65Kフルカラー
LED
2.5V 〜 3.7V
2.5mA (実測値)
3.3V 0Ω : 50mA
3.3V 12Ω : 25mA
W58 x H34 x D7.5 mm
ST7735S (ID:7Ch)
SPI
ST7735S |
|
・このLCDは、双方向のSPI通信で制御します。
・AVRマイコンからは、制御用に5つのポートが必要です。 [CS] , [RESET] , [A0] , [SDA] , [SCK]
・バックライト[LED]端子は、3.3V電源で点灯します。
・AVRチップおよびポートやピンの配置は変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|

 |
5V 11ピン タイプ
表 示
液 晶
バックライト
電源電圧
消費電流
外形寸法
コントローラー
インターフェイス
仕 様 書 |
128 x 160 ドット
65Kフルカラー
LED
3.3V 〜 5.5V
5V : 148mA (実測値)
W62 x H38 x D7 mm
ST7735S (ID:7Ch)
SPI
ST7735S |
※ 5Vから3.3Vへのレギュレーターと、
制御信号のレベル変換IC(74LVC245A)が
搭載されています。 |
・このLCDは、双方向のSPI通信で制御します。
・AVRマイコンからは、制御用に5つのポートが必要です。 [CS] , [RST] , [RS] , [SDA] , [CLK]
・AVRチップおよびポートやピンの配置は変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
●描画テストプログラム
・以下のライブラリー・ファイルを、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
に保存して下さい。 glcd-ST7735S_1R8_128x160.lib ([Y+5] [Y+6]修正 , Xmega対応)
・プログラム内のライブラリ指定を下記にして下さい。
$lib "glcd-ST7735S_1R8_128x160.lib"
・「Config Graphlcd」命令の接続ポート指定は下記の通りです。 ([ ]内はLCDの端子名称)
Cs1 = [CS] , Rst = [RESET] , A0 = [A0] , Si = [SDA] , Sclk = [SCK]
5V 11ピン タイプ Cs1 = [CS] , Rst = [RST] , A0 = [RS] , Si = [SDA] , Sclk = [[CLK]
・フォント・ファイルは下記のフォルダー内にありますので、プログラム・ソースと同じフォルダーに
コピーしてからコンパイルして下さい。
BASCOM-AVR 付属フォント (各種サイズあり) |
ドキュメント\MCS Electronics\BASCOM-AVR\samples\lcdgraph\color8x8.font |
・「Const Portrait = 0」行により、LCDの設置方向を90度回転させることができます。
(0:横置き[X=160,Y=128] , 1:縦置き[X=128,Y=160])
・「Const Rotate_180 = 0」行により、LCDの設置方向を180度回転させることができます。
(0:コネクターが上側 , 1:コネクターが下側)
・基本的な色は、色のコードに名前を定義してあります。
・色の指定は、 [RRRG_GGBB] = [R2,R1,R0,G2_G1,G0,B1,B0] の構造で、赤[R]と緑[G]は3ビットで、
青[B]は2ビットです。 ([000]=薄い 〜 [111]=濃い)
・「Lcdat」命令の画面位置アドレスは、Y、X共に0〜の指定です。
・BMPやJPEG画像からRLE圧縮形式のBGC画像データを作成して、画像の表示ができます。
・BGC画像データは、LCD RGB-8 converter [LCDconvert.exe]を使用して作成します。
ビットマップ(.BMP)または JPEG(.JPG)画像データを、表示させたいドット数に縮小して
用意します。
「LCDconvert」を起動して、用意した画像データを開きます。
[File] → [Convert] をクリックして、BGCデータへの変換を行います。
[File] → [Save] → [Save Binary] で、BGCデータをプログラムと同じフォルダーに保存します。
|

2.8インチ ・ 3.2インチ 65KフルカラーLCD 240 x 320 ドット |

 |
2.8インチ
表 示
液 晶
バックライト
電源電圧
消費電流
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
240 x 320 ドット
65Kフルカラー
LED
2.5V 〜 3.3V
バックライト ON : 42mA
バックライト OFF : 5mA
W86 x H50 x D9 mm
ILI9341
SPI
ILI9341 |
|

|
3.2インチ
表 示
液 晶
バックライト
電源電圧
消費電流
(実測値)
外形寸法
コントローラー
インターフェイス
仕 様 書 |
240 x 320 ドット
65Kフルカラー
LED
2.5V 〜 3.3V
バックライト ON : 53mA
バックライト OFF : 6mA
W89.3 x H55 x D9 mm
ILI9341
SPI
ILI9341 |
ピン配置や回路図とテストプログラムは
2.8インチと共通です。
|
・このLCDは、双方向のSPI通信で制御します。
・AVRマイコンからは、制御用に5つのポートが必要です。 [CS] , [RESET] , [DC] , [SDI] , [SCK]
・バックライト[LED]端子は、[H]レベル(3.3V)で点灯します。
・AVRチップおよびポートやピンの配置は、プログラムで変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
●描画テストプログラム
・以下のライブラリー・ファイルを、C:\Program Files (x86)\MCS Electronics\BASCOM-AVR\LIB\
に保存して下さい。 glcd-ILI9341_2R8_240x320.lib ([Y+5] [Y+6]修正 , Xmega対応)
・プログラム内のライブラリ指定を下記にして下さい。
$lib "glcd-ILI9341_2R8_240x320.lib"
・「Config Graphlcd」命令の接続ポート指定は下記の通りです。 ([ ]内はLCDの端子名称)
Cs1 = [CS] , Rst = [RESET] , A0 = [DC] , Si = [SDI] , Sclk = [SCK]
・フォント・ファイルは下記のフォルダー内にありますので、プログラム・ソースと同じフォルダーに
コピーしてからコンパイルして下さい。
BASCOM-AVR 付属フォント (各種サイズあり) |
ドキュメント\MCS Electronics\BASCOM-AVR\samples\lcdgraph\color8x8.font |
・「Const Portrait = 0」行により、LCDの設置方向を90度回転させることができます。
(0:横置き[X=320,Y=240] , 1:縦置き[X=240,Y=320])
・「Const Rotate_180 = 0」行により、LCDの設置方向を180度回転させることができます。
(0:コネクターが上側 , 1:コネクターが下側)
・基本的な色は、色のコードに名前を定義してあります。
・色の指定は、 [RRRG_GGBB] = [R2,R1,R0,G2_G1,G0,B1,B0] の構造で、赤[R]と緑[G]は3ビットで、
青[B]は2ビットです。 ([000]=薄い 〜 [111]=濃い)
・「Lcdat」命令の画面位置アドレスは、Y、X共に0〜の指定です。
・BASCOM-AVRのグラフィック命令(LINE,BOX,LCDAT,etc)は、LCDのアドレス指定がバイト単位
(0〜255)に限られています。
その制約のため、他のユーザーによりこのLCD用の関数が作られていますが、導入方法や
理解に手間がかかります。
そこで、256ドットを超えるLCDに対して、画面のアドレス指定にオフセットを付けて、BASCOM標準の
グラフィック命令を使えるようにしてあります。
ただし、アドレスが255から256をまたぐ描画はできません。
・使用方法。
画面アドレスが255を超える位置を指定する場合は、変数[Offset256]に(1)を入れます。
(再度0〜255の位置に描画を行う場合は、変数[Offset256]を(0)に戻してください)
各命令のアドレス指定を256以上にする場合、アドレス値の記述は256でも0でも同じです。
・BMPやJPEG画像からRLE圧縮形式のBGC画像データを作成して、画像の表示ができます。
・BGC画像データは、LCD RGB-8 converter [LCDconvert.exe]を使用して作成します。
ビットマップ(.BMP)または JPEG(.JPG)画像データを、表示させたいドット数に縮小して
用意します。
「LCDconvert」を起動して、用意した画像データを開きます。
[File] → [Convert] をクリックして、BGCデータへの変換を行います。
[File] → [Save] → [Save Binary] で、BGCデータをプログラムと同じフォルダーに保存します。
※ LCDのライブラリが、アドレスに対してバイト(0〜255)にしか対応していないため、256ドットを越える
(257以上)画像は表示できません。
|
●タッチ・スクリーンのテスト
・このLCDには、抵抗膜方式のタッチ・スクリーンが搭載されており、専用のコントローラIC(XPT2046)
により、SPI通信で制御と位置の読み取りが行えます。
・XPT2046は同等のICが各メーカーから別の型名で出ています。
(XPT2046 , ADS7846 , TSC2046 , AK4182A) (AK4182Aは旭化成で日本語マニュアル)
 |
XPT2046
電源電圧
消費電流
インターフェイス
A/D変換器
パッケージ |
抵抗膜方式
2.2V〜3.6V
260μA
4線式 SPI
12ビットSAR型
16ピンQFN |
|
・LCDモジュールには表示制御用のSPIピンと、タッチ・スクリーン制御用のSPIピンが出ています。
(電源は共通です)
・AVRマイコンからは、タッチ・スクリーン制御用に5つのポートが必要です。
[T-CLK] , [T-CS] , [T-DIN] , [T-DO] , [T-IRQ]
・テスト回路では、SPIクロックの[SCK]と[T-CLK]およびデータ入力の[SDI]と[T-DIN]を共通で
接続しています。
・AVRチップおよびポートやピンの配置は、プログラムで変更が可能です。
注意! この図面を使用した、いかなる損害にも責任を負いません。
・上記の描画テストと同様に、LCD表示用のライブラリとフォント・ファイルを説明の通りに導入します。
「glcd-ILI9341_2R8_240x320.lib」 「color8x8.font」
・コントローラを「オート・パワーダウン・モード」に設定すると、パワーダウン状態で待機します。
・タッチスクリーンに触れると2枚のシートが接触して電流が流れ、PENIRQN(T-IRQ)ピンが
[L]レベルになります。
・AVRは[T-IRQ]ピンを監視して[L]レベルを検出した際に、[X]軸と[Y]軸それぞれに対してA/D変換の
コマンドを送り、抵抗値から位置情報を読み取ります。
・動作の詳細は日本語マニュアルを参照してください。
・テストプログラムでは、[T-IRQ]ピンが[L]になると、[X]軸と[Y]軸それぞれに対してA/D変換の
コマンドを送り抵抗値を取得する動作を、16回繰り返して行いその平均値を求めます。
・A/Dの平均値が、画面の各軸に対する最小値と最大値の範囲内にある場合に、タッチの検出
フラグを立てます。
・タッチの検出フラグにより、[X]軸と[Y]軸のA/D値をLCD画面の中央付近に表示します。
・同時に、抵抗値と画面の各軸のドット数から係数を算出し、抵抗値から画面のドット位置を計算して
タッチした画面の位置に半径2ドットの緑色の円を描画します。
・画面の右上には画面消去のための黄色の四角エリアを用意してあるので、その位置をタッチすると
画面がクリアされます。
・注意点は、LCDとタッチ・スクリーンの個体差により、多少検出位置がずれる場合があるので、
画面の四隅をタッチした時のA/D値により、プログラム冒頭の[X]と[Y]の最小と最大の規定値
を微調整してください。
 |
テスト動画

|
|

Olimex製 (MOD-NOKIA6610) / SparkFun (LCD-08683) |
・ノキア製の携帯電話に使用されたLCDなので、NOKIA6610と言う名称で呼ばれているようです。
・Olimex社の製造ですが、SparkFun社では別型番で販売されています。
・コネクターは、基板取り付け用のピンヘッダ(5ピン×2)と、フラットケーブルコネクタ(10ピン)の
どちらかを選べます。
・バックライトには7Vの電圧が必要ですが、ボード上にDC-DCコンバーターが搭載されているので、
3.3Vの単電源で動作します。
・バックライトのON/OFFが、マイコンのポートで制御できます。
 |
・TFT LCD 130x130ピクセル 4096色
・表示エリア: 27.4x27.4mm 約1.52インチ
・電源電圧: 3.3V
・消費電流: 約115mA (実測値)
・制御線: シリアル通信制御
[CS] [DIO] [SCK] [RESET] の4本
バックライトのON/OFF 1本
・回路図: MOD-NOKIA6610
・コントローラ: Epson (S1D15G10) 類似品
・基板寸: W41.5 X D46.5 mm
コネクターを含む D55.5 mm
・入手先: スイッチサイエンス |
● 制御方法
・このNokia6610及びNokia6100 LCDは、外見は同じでもコントローラの違う物が存在します。
(Philips PCF8833、Epson S1D15G00、Epson S1D15G10、Epson [S1D15G10] 類似品)
1.PhilipsとEpsonでは、コマンド体系が違います。
2.Epson S1D15G10は、S1D15G00の上位品で、4096色モードに新たなType-Bが追加されています。
Type-Aは、2ドットを3byteで書き込む方法で、1ドットを書き込むためには、メモリーの読み出しと、
ビットのマスク操作が必要になり手間がかかります。
Type-Bは、1ドットを2byteで書き込む方法で、書き込むバイト数は増えますが、1ドットを書き込む
操作が簡単です。
3.Epson [S1D15G10] 類似品では、256色及び4096色Type-Bモードが無くなった様です。
代わりに、同一アドレスに3バイトを書き込む方法で、1ドットの描画ができるようになっています。
機能削減のように見えますが、この方法が一番互換性と効率が良いと思います。
また、Epsonコントローラが使用していない60番台に、新たなコマンドがあります。(詳細は不明)
・この記事では、最新の物と思われるEPSON [S1D15G10] 類似品を基準にテストします。
・注意点
1.一部のパラメータが、Epson S1D15G10と互換性がありません。
[DISCTL]、[DATCTL]、[VOLCTR] など。
2.写真データなどを連続して送る場合、2ドットを3バイトで送るデータの、2バイト目や3バイト目が
送られないと、次回にアドレス設定とコマンドを送り直しても、データは不足した2バイト目や
3バイト目を埋めてから取り込まれるようで、カラー情報が崩れてしまいます。
(データは、必ず3の倍数分送らなければいけません)
3.液晶の取り付け方向は、コネクターが上に向く方向でないと、表示がうまく行かないようです。
 |
デフォルトでは、コネクターが上向きで、画面左上がアドレス0,0位置です。
コネクターを下向きにした場合は、[DATCTL]の第2パラメータ(&H03)で
変更するのですが、カラムを逆方向の129→0に設定した場合に、
必ずカラム0に1ドット書いてから、0→129→128→127→という描画に
なってしまいます。
現状では、回避できないハードウェアのバグのような気がします。 |
・初期化コマンド。 (BASIC命令で記述)
$lib "LCD-EPSON.LBX"
Config Graphlcd = Color , Controlport = Portb
, Cs = 3 , Rs = 0 , Scl = 2 , Sda = 1
Set PORTB.3
Set PORTB.1
Set PORTB.2
Reset PORTB.0
Waitms 10
Set PORTB.0
Waitms 10
Glcdcmd &H94
Glcdcmd &H20
Glcddata &H0F
Waitms 100
Glcdcmd &HAF |
仮に古いライブラリを使用する。
LCDとの接続ポートを指定する。
[CS] ピンを (H) レベルにする。
[DIO] ピンを (H) レベルにする。
[SCK] ピンを (H) レベルにする。
[RESET] ピンを (L) レベルにする。
10mSの待ち時間。
[RESET] ピンを (H) レベルにする。
10mSの待ち時間。
[SLPOUT] Sleep out コマンド。
[PWRCTR] Power control コマンド。
パラメータ<1>
100mSの待ち時間。
[DISON] Display on コマンド。 |
・以下のコマンドは、リセット状態で設定済み または 無効。
Glcdcmd &HCA
Glcddata &H00
Glcddata 32
Glcddata 10
Glcddata &H00
Glcdcmd &HBC
Glcddata &H00
Glcddata &H00
Glcddata &H01
Glcdcmd &HBB
Glcddata &H01
Glcdcmd &HD1
Glcdcmd &HA7 |
[DISCTL] Display control コマンド。
パラメータ<1> (どの値も変化なし)
パラメータ<2> 行数。 (130)/4-1
パラメータ<3> ハイライト値。
パラメータ<4> (どの値も変化なし)
[DATCTL] Data scan direction, etc コマンド。
パラメータ<1> 画面RAMのアドレス使用方向。(動作不良)
パラメータ<2> RGBビットの並び配置。
パラメータ<3> カラーモード。(使用不可)
[COMSCN] Common scan direction コマンド。
パラメータ<1> (どの値も変化なし)
[OSCON] Internal oscillation on コマンド。
[DISINV] Inverse display コマンド。(無効) |
・追加コマンド(詳細は不明)。
&H30
&H60
&H62
&H65
&H66
&H6B |
不明。
パラメータが1つあり、画面が上下反転します。(00〜01)
パラメータが3つあり、色調やコントラストが変わります。
パラメータが1つあり、1Xで画面が消えたり、輝度が変化します。
パラメータが1つあり、画面の走査周波数が変わるようです。(00〜0F)
パラメータが1つあり、画面が斜めや上にずれていきます。(00〜FF) |
・点(1ドット)の書き込み方法。 (この方法により、LCDメモリーの読み出しを省略できます)
Glcdcmd &H15
Glcddata 0
Glcddata 0
Glcdcmd &H75
Glcddata 2
Glcddata 2
Glcdcmd &H5C
Glcddata &H00
Glcddata &H0F
Glcddata &HFF |
[CASET] Column address set コマンド。
(X)のStartとEndアドレスを同じにする。
(0〜129の任意の値)
[PASET] Page address set コマンド。)
(Y)のStartとEndアドレスを同じにする。
(2〜131の任意の値)
[RAMWR] Writing to memory コマンド。
2ドット分のカラーデータ(3byte)を送るが、
後半のカラーデータのみが有効になる。
(左の場合は白色の点) |
 |
● BASCOM-AVRでの表示方法
・ライブラリ LCD-EPSON-Ex.LBX
Epson (S1D15G10)類似品専用のライブラリです。
C:\Program Files\MCS Electronics\BASCOM-AVR\LIB\ に保存して下さい。
・表示テストプログラム Nokia_C-LCD_Test.bas
フォント"color8x8.font"は下記にありますから、テストプログラムと同じフォルダにコピーして
下さい。
C:\Program Files\MCS Electronics\BASCOM-AVR\SAMPLES\lcdgraph\color8x8.font
 |
・任意のマイコンのポートに、[CS] [DIO] [SCK] [RESET] 計4本の
端子を接続して下さい。 (電源電圧は、LCD・マイコン共 3.3V)
・バックライトの制御端子は、任意のポートで(H)レベルにするか、
3.3V電源に接続しておいて下さい。
・テスト用、写真画像 5011A.raw
AVRのフラッシュメモリーが32Kbyte以下の場合は、
下記の写真画像表示テストを外して下さい。
Showpic 0 , 129 , G5011
$inc G5011 , Nosize , "5011A.raw" |
・BASIC表示命令
$lib "LCD-EPSON-ex.LBX"
Config Graphlcd = Color , Controlport = Portb , Cs = 1 , Rs = 0 , Scl =
2 , Sda = 3
Controlport = LCDを接続するポート名。
Cs = [CS]端子を接続するピン番号。 Rs = [RESET]端子を接続するピン番号。
Scl = [SCK]端子を接続するピン番号。 Sda = [DIO]端子を接続するピン番号。 |
Const Red = &B11100000
Const Green = &B00011100
Const Blue = &B00000011
Const Black = &B00000000
Const White = &B11111111
Const Magenta = &B11100011
Const Yellow = &B11111100
Const Cyan = &B00011111 |
|
Const Brown = &B01100000
Const Darkgreen = &B00001100
Const Darkblue = &B00000001
Const Orange = &B11101100
Const Brightgreen = &B10011100
Const Brightblue = &B01111110
Const Grey = &B01101101
Const Silver = &B10010010 |
8bit(256色)の色情報に、名前を付ける。 (任意の色に任意の名前が付けられます) |
Glcdcmd &H81 [VOLCTR] コントラスト設定を変更します。 (任意)
Glcddata 38 コントラスト値 0〜59 (デフォルト = 38) |
Setfont Color8x8 フォントを指定する。 (8x8フォント または 16x16フォント)
Cls LCD画面を消去する。 |
Line(Xstart , Ystart) -(Xend , Yend) , Color 直線の描画。
X: 0〜129までの130ドット Y: 0〜129までの130ドット
Color: 色情報で指定した色の名前。 |
Circle(X , Y) , radius , Color 円の描画。
X , Y: 円の中心座標。 0〜129までの130ドット
radius: 円の半径。 Color: 色情報で指定した色の名前。 |
Pset X , Y , Color 点の描画。
X , Y: 点の座標。 0〜129までの130ドット
Color: 色情報で指定した色の名前。 |
Box(Xstart , Ystart) -(Xend , Yend) , Color ボックス(塗りつぶし)を描画。
X: 0〜129までの130ドット Y: 0〜129までの130ドット
Color: 色情報で指定した色の名前。 |
Lcdat Y , X , Variable , Fcolor , Bcolor 文字の描画。
Y , X: 文字の左上座標。 0〜129までの130ドット
Variable: 変数名 または "文字列" Fcolor: 文字色。 Bcolor: 文字の背景色。 |
Showpic Ystart , Yend , label 写真画像の描画。 ([.raw] データ専用)
Ystart: 写真の描画開始 Y座標 Yend: 写真の描画終了 Y座標
label: [.raw] ファイルのラベル名。 |
$include "color8x8.font" フォントファイルを組み込む。
$inc label , Nosize , "FileName" 写真画像を組み込む。
label: [.raw] ファイルのラベル名。 "FileName": [.raw] ファイルのファイル名。 |
・写真画像用 [.raw] ファイルの作り方。
1. Photoshop等の画像編集ソフトで、写真画像を130x130ピクセルに縮小します。
(必ず130x130ピクセルでないと、コンバーターが受け付けてくれません)
 |
2. NOKIA 6100 BMP Converter をダウンロードし、
NOKIA 6100 BMP Converter v1.2.zip を展開します。
3. NOKIA_6100_BMP_Converter_v1_2.exe を起動し、
左のように設定します。
4. [Select 24bit 130 x 130 .bmp(s)] ボタンを押して、1.で縮小した
BMPファイルを選択します。
5. [.raw] ファイルの保存先を指定して、作成完了です。 |
|
SparkFun製 (LCD-08600) |
・SparkFun (LCD-08683) の前作品で、プッシュスイッチとフルカラーLEDが付いています。
・バックライトには7Vの電圧が必要ですが、ボード上にDC-DCコンバータが搭載されているので、
3.3V〜6Vの電源で点灯します。
・バックライトの制御回路は付いていません。
 |
・TFT LCD 130x130ピクセル 4096色 ・表示エリア: 27.4x27.4mm 約1.52インチ
・電源電圧: 3.3V
・消費電流: 不確定
・制御線: シリアル通信制御
[CS] [DIO] [SCK] [RESET] の4本
・回路図: LCD-08600
・コントローラ: Epson (S1D15G10) 類似品
・基板寸: W38.5 X D63.6 mm
・入手先: このボードは、お勧めできません。 |
● 制御方法
・制御方法は、Olimex製 (MOD-NOKIA6610) / SparkFun (LCD-08683) と同じなので、
上記を参照して下さい。
・注意点
1. このボードのDC-DCコンバーターは、回路定数とコイルの選択に設計ミスがあると思われ、
下記のように変換効率が悪く消費電流も多い上、コイルが高温になります。
(2枚のボードで同じ症状を確認)
3.3Vで消費電流が250mA コイルの発熱 63℃
5Vで消費電流が400mA コイル発熱 116℃以上 (焦げ臭い異臭有り)
とりあえず、コイルを定格電流の大きい物に交換すると、消費電流が約半分になり、
コイルの温度も室温程度に下がります。
2. SparkFun (LCD-08683) と同じく、液晶の取り付け方向を、コネクターが上に向く方向にしないと、
表示がうまく動作しないので、スイッチが上にある方向で使用する必要があります。
● BASCOM-AVRでの表示方法
・Olimex製 (MOD-NOKIA6610) / SparkFun (LCD-08683) と同じなので、上記を参照して下さい。
|
リユース 2.0インチ MD-TFD液晶 172BA00 |
・MD-TFD 「アクティブ半透過型カラー液晶」。
・外光の反射とバックライトの透過を両立しているので、バックライトを付けなくても、屋外や室内の
明かりで表示が見えます。 (電池駆動に最適)
・ ただし、両立と言うことで、バックライトを付けた状態では、あまりコントラストがよいとは言えず、
多少用途が限られる液晶です。
・リユース(携帯電話の再生品)なので、製品に多少のバラツキがあるかもしれません。
・液晶本体と、0.5mmピッチ20ピンコネクターのみの販売なので、コネクターの変換基板か、
キャリーボードが必要になります。
 |
・MD-TFD LCD 132x162ピクセル 4096色
・電源電圧: 3V (MAX3.3V未満)
・バックライト電圧: 4.3V (70mA)
・制御線: 8bitパラレル制御
[CS] [A0] [WR] [RD] [RESET] の5本
[D0〜D7] 8本
・マニュアル 英語 日本語
・コントローラ: 不明 Epson(S1D15G10)類似
・外形寸: W42.6 X D58.5 mm
・液晶表示寸: W32.5 X D39.8 mm
・入手先: 液晶市場 |
● キャリーボードの製作
 |
LCD本体の下に、マイコン等の部品を配置する場合は、このボードで
2.54mmピッチのコネクターに変換します。
0.5mmピッチのハンダ付けは、なかなか大変です。
まず、コネクターの位置を確認して、対角線のピンに仮止めをします。
そして、2〜3本のピンに多めのハンダを付けて、パターンの方へコテ先を
引いてくると、きれいにハンダが流れます。 |
◎ このプリント基板を、実費頒布しております。
●
基板・部品の頒布室 ●
|
・このLCDは、裏面が外枠よりくぼんでいるので、両面テープで固定することが出来ません。
・一体型のキャリーボードでは、メッキ線でLCD本体を固定しています。
・バックライト電圧が4.3Vなので、12Ωの抵抗器を直列に入れて、バックライトには5V電源の接続を
可能にしています。 (5V電源と、3Vのレギュレータで使用する想定です)
・制御信号と電源側に10ピン、データバス側に8ピン、上部固定用が5ピンのピンヘッダーで、
メイン基板に取り付けできます。
・LCD本体左のバックライト端子からは、ハンダ付けでリード線を出して、キャリーボードに接続します。

|

[RD]信号が必要に
なったため
ジャンパー線が
入っています。 |
 |
注意! この図面を使用した、いかなる損害にも責任を負いません。
◎ このプリント基板を、実費頒布しております。
●
基板・部品の頒布室 ●
|
● 制御方法
・このLCDのコントローラは、Epson (S1D15G10) と似ていますが、
一部のパラメータに互換性がありません。
・256色モードは搭載されておらず、同一アドレスに3バイトを書き
込む1ドット描画法も使えません。
・また、1カラムに書き込むのは1バイトずつで、3カラムに3バイト
を書いて、2ドットの表示になります。
・つまり、ドット数は198カラム÷3×2=132ドットで、カラム位置と
ドット位置のアドレスが合いません。
・毎回ドットの座標からカラム位置計算をして、さらにLCDのメモリー
を読み出して、偶数と奇数ドットによりORするビット位置を変え
ながら、書き込まなければいけません。
(これが、かなりの手間になります)
・上記の事から、1ドットの描画やブロック転送が面倒で、書き込み
処理に制限があるため、描画速度にも影響が出てしまいます。 |
 |
・初期化コマンド。 (BASIC命令で記述)
$lib "LCD-EPSON.LBX"
Config Graphlcd = Color , Dataport = Portd
, Controlport = Portb , Cs = 3 , Cd = 2 , Wr = 1
, Rd = 4 , Reset = 0
Set PORTB.3
Set PORTB.1
Set PORTB.4
Reset PORTB.0
Waitms 1
Set PORTB.0
Waitms 1
Glcdcmd &H94
Glcdcmd &HC6
Glcddata &H98
Glcdcmd &HCA
&H4F , &H00 , &H1A , &H00 , &H51 , &H51
, &H00
Glcdcmd &HCB
&H0B , &H16 , &H1E , &H24 , &H2A , &H2E
, &H32 , &H36 , &H39 , &H3C , &H3F , &H41
, &H45 , &H48 , &H64
Glcdcmd &HBC
Glcddata &H08
Glcdcmd &HAA
&H00 , 81 , 81 , &H03
Glcdcmd &HAB
Glcddata &H00
Waitms 40
Glcdcmd &HC6
Glcddata &H46
Waitms 40
Glcdcmd &HAF |
仮に古いライブラリを使用する。
LCDとの接続ポートを指定する。
[CS] ピンを (H) レベルにする。
[WR] ピンを (H) レベルにする。
[RD] ピンを (H) レベルにする。
[RESET] ピンを (L) レベルにする。
1mSの待ち時間。
[RESET] ピンを (H) レベルにする。
1mSの待ち時間。
[SLPOUT] Sleep out コマンド。
[VOLCTR] Power IC T-on Time コマンド。
パラメータ<1>
[DISCTL] Display control コマンド。
パラメータ<1>〜<7> (命令省略)
[GCPSET] コマンド。
パラメータ<1>〜<15> (命令省略)
[DATCTL] コマンド。
パラメータ<1>
[ASCSET] Area scroll set コマンド。
パラメータ<1>〜<4> (命令省略)
[SCSTART] Scroll start set コマンド。
パラメータ<1>
40mSの待ち時間。
[VOLCTR] Power IC EV Data コマンド。 パラメータ<1>
40mSの待ち時間。
[DISON] Display on コマンド。 |
● BASCOM-AVRでの表示方法
・ライブラリ glcd-172BA00.LBX
C:\Program Files\MCS Electronics\BASCOM-AVR\LIB\ に保存して下さい。
・表示テストプログラム C-LCD_172BA00_test.bas
フォント"color8x8.font"は下記にありますから、テストプログラムと同じフォルダにコピーして
下さい。
C:\Program Files\MCS Electronics\BASCOM-AVR\SAMPLES\lcdgraph\color8x8.font
 |
・テスト用、写真画像 5011A.raw
AVRのフラッシュメモリーが32Kbyte以下の場合は、
下記の写真画像表示テストを外して下さい。
Showpic 0 , 129 , G5011
$inc G5011 , Nosize , "5011A.raw" |
・BASIC表示命令
$lib "glcd-172BA00.LBX"
Config Graphlcd = Color , Dataport = Portd , Controlport = Portb , Cs =
3 , Cd = 2
, Wr = 1 , Rd = 4 , Reset = 0
Dataport = D0-D7を接続するポート名。 Controlport = 制御信号を接続するポート名。
Cs = [CS]端子を接続するピン番号。 Cd = [A0]端子を接続するピン番号。
Wr = [WR]端子を接続するピン番号。 Rd = [RD]端子を接続するピン番号。
Reset = [RESET]端子を接続するピン番号。 |
Const Red = &B11100000
Const Green = &B00011100
Const Blue = &B00000011
Const Black = &B00000000
Const White = &B11111111
Const Magenta = &B11100011
Const Yellow = &B11111100
Const Cyan = &B00011111 |
|
Const Brown = &B10100000
Const Darkgreen = &B00010100
Const Darkblue = &B00000010
Const Orange = &B11110100
Const Brightgreen = &B11011110
Const Brightblue = &B11011111
Const Grey = &B10110110
Const Silver = &B11011010 |
8bit(256色)の色情報に、名前を付ける。 (任意の色に任意の名前が付けられます) |
Glcdcmd &HC6 [VOLCTR] コントラスト設定を変更します。 (任意)
Glcddata 70 コントラスト値 50〜90 (デフォルト = 70) |
Setfont Color8x8 フォントを指定する。 (8x8フォント または 16x16フォント)
Cls LCD画面を消去する。 |
Line(Xstart , Ystart) -(Xend , Yend) , Color 直線の描画。
X: 0〜131までの132ドット Y: 0〜161までの162ドット
Color: 色情報で指定した色の名前。 |
Circle(X , Y) , radius , Color 円の描画。
X , Y: 円の中心座標。 X: 0〜131までの132ドット Y: 0〜161までの162ドット
radius: 円の半径。 Color: 色情報で指定した色の名前。 |
Pset X , Y , Color 点の描画。
X , Y: 点の座標。 X: 0〜131までの132ドット Y: 0〜161までの162ドット
Color: 色情報で指定した色の名前。 |
Box(Xstart , Ystart) -(Xend , Yend) , Color ボックス(塗りつぶし)を描画。
X: 0〜131までの132ドット Y: 0〜161までの162ドット
Color: 色情報で指定した色の名前。 |
Lcdat Y , X , Variable , Fcolor , Bcolor 文字の描画。
Y , X: 文字の左上座標。 Y: 0〜161までの162ドット X: 0〜131までの132ドット
Variable: 変数名 または "文字列" Fcolor: 文字色。 Bcolor: 文字の背景色。 |
Showpic Ystart , Yend , label 写真画像の描画。 ([.raw] データ専用)
Ystart: 写真の描画開始 Y座標 Yend: 写真の描画終了 Y座標
label: [.raw] ファイルのラベル名。 |
$include "color8x8.font" フォントファイルを組み込む。
$inc label , Nosize , "FileName" 写真画像を組み込む。
label: [.raw] ファイルのラベル名。 "FileName": [.raw] ファイルのファイル名。 |
・写真画像用 [.raw] ファイルの作り方。
上記を参照して下さい。
|
Wintektion Technology Co. ZY-FGD1442701V1 |
aitendoさんのホームページには、3V単一電源で駆動できると書いてありますが、実際には無理があります。
ロジック回路の定格電圧は、2.6V〜3.0Vですが、「絶対最大定格電圧」が最大3.0Vとなっていますので、誤差のある3Vレギュレータや、新品の1.5V乾電池2本は使用できません。
aitendoさんにも、マニュアルの間違いではないことを確認し、「使用参考」の製作では、消費して電圧の下がった乾電池を使用しているとのことでした。
また、バックライト電圧は3.2Vで約19mAの電流値となり、3.0Vでは暗すぎます。
(3.3Vでは25mA流れてしまい、定格電流の20mAを超えてしまいます)
よって、ロジック回路には2.8Vと、LEDバックライトには3.2Vの、2つの電源が必要です。
  |
・TFT LCD 128x128ピクセル 65k色
・表示エリア: 26.496x25.4976mm 1.44インチ
・電源電圧: 2.8V (バックライト3.2V)
・制御線: 8bitパラレル制御
[CS] [CD] [WR] [RD] [RST] の5本
[D0〜D7] 8本
・コントローラ: ST7735
・入手先: aitendo |
● キャリーボードの製作
・基板サイズ: 40.64 x 40.64 mm (コンパクトに仕上げてあります)
・LCDの端子は、ハンダ付け後に折り曲げて固定します。
・両サイドのピンヘッダーで、メイン基板やブレッドボードに取り付けできます。
● 制御方法
 |
・aitendoホームページの参考プログラムの
通りで動作します。 |
● BASCOM-AVRでの表示方法
・電源を用意するのに手間がかかるので、応用製作は保留中です。
・BASCOM-AVR用のライブラリは、要望が多いようでしたら作成します。
|
|