STN液晶パネルであるシャープLM077VS1T01が入手できましたので マイクロチップの32bitCPUの PIC32MX370F512Hで 制御してみました。
オシロスコープの画面を作ってみました。
外観


上の画像の右下にある緑色のプリント基板上のPIC32MX370F512HがLCDを制御しています。
下の画像の中央の40ピンのICが、PIC16F1939で、PIC32MX370F512にLCD描画コマンドを送信しています。
描画コマンドは、8bitパラレル、非同期シリアル、I2Cの3種類のインターフェースを有しています。
PIC16F1939は、テスト用に描画コマンドを送信するだけですので、他のCPUでもOKです。
描画コマンドを受信したPIC32MX370F512Hは、LCDにコマンドに対応した描画を行います。

動画も添付します
液晶パネルの紹介

ピンNo | 信号名 |
1 | D7 |
2 | D6 |
3 | D5 |
4 | D4 |
5 | VSS(GND) |
6 | D3 |
7 | D2 |
8 | D1 |
9 | D0 |
10 | VDD(3.3V) |
11 | VDD(3.3V) |
12 | CLK |
13 | VDD(3.3V) |
14 | HSYNC |
15 | VSS(GND) |
16 | DISPON |
17 | VSS(GND) |
18 | VCONT |
19 | VSS(GND) |
20 | VSYNC |

PIC32MX370F512Hの紹介
- 32ビットCPU
- Flash 512kB
- SRAM 128kB
- 動作周波数 120MHz
- パッケージ 64pin QFP
設計方針
- PIC32MX370F512をLCD専用コントローラとする。
- 使用可能なLCDは、640×480ドット 8色カラー STN タイプとする。
- このコントローラを制御するインターフェースとして、8ビット・パラレル、シリアル、I2Cの3種類を有する。
- これらのインターフェースを介し、 コマンドを発行することによりLCDに描画する。
- ハードウエアはLCDインターフェース、水晶発振子、I2C用抵抗、カップリングコンデンサなどである。
- PIC32MX370F512HのSRAMが128kB有するので、LCD表示用フレームバッファメモリとして使用する。
- LCDインターフェースとしてPIC32MX370F512Hの周辺機能であるPMPを使用する。
- PIC32MX370F512HのFlashにビットマップフォントを格納し、ソフトウエアから利用できるようにする。
- キーボード、ロータリーエンコーダーインターフェースを有する。
回路図

プリント基板



LCDコントローラ基板のピン番号、信号名を下記に示す
ピンNo | 信号名 | ピン No | 信号名 | ピン No | 信号名 | ピン No | 信号名 | ピン No | 信号名 |
4 | TP0:RG6 | 14 | K2:RB2 | 24 | K11:RB11 | 34 | K16:RF2 | 44 | P_D6:RD10 |
5 | TP1:RG7 | 15 | K1:RB1 | 25 | VSS | 35 | P_BUSY:FR6 | 45 | P_D7:RD11 |
6 | TP2:RG8 | 16 | K0:RB0 | 26 | VDD | 36 | S1:RG3 | 46 | P_D0:RD0 |
7 | *MCLR | 17 | K6:RB6 | 27 | K12:RB12 | 37 | S0:RG2 | 47 | U2TX:RC13 |
8 | TP3:RG9 | 18 | K7:RB7 | 28 | K13:RB13 | 38 | VDD | 48 | U2RX:RC14 |
9 | VSS | 19 | AVDD | 29 | K14:RB14 | 39 | OSC1 | 49 | P_D1:RD1 |
10 | VDD | 20 | AVSS | 30 | K15:RB15 | 40 | OSC2 | 50 | P_D2:RD2 |
11 | K5:RB5 | 21 | K8:RB8 | 31 | SDA2:RF4 | 41 | VSS | 51 | P_D3:RD3 |
12 | K4:RB4 | 22 | K9:RB9 | 32 | SCL2:RF5 | 42 | P_D4:RD8 | ||
13 | K3:RB3 | 23 | K10:RB10 | 33 | K17:RF3 | 43 | P_D5:RD9 | 53 | P-STB:RD5 |
LCDインターフェース
LCDインターフェース(D7~D0,CLK,HSYNC,VSYNC,DISPON,VCONT) 20ピン フレキシブルケーブルコネクタ0.5mmピッチ
ピンNo | 信号名 | ピンNo | 信号名 | ピンNo | 信号名 | ピンNo | 信号名 |
1 | D7:RE7 | 6 | D3:RE3 | 11 | VDD | 16 | DISPON:RD7 |
2 | D6:RE6 | 7 | D2:RE2 | 12 | CLK:RD4 | 17 | VSS |
3 | D5:RE5 | 8 | D1:RE1 | 13 | VDD | 18 | VCONT:RF0 |
4 | D4:RE4 | 9 | D0:RE0 | 14 | HSYNC:RF1 | 19 | VSS |
5 | VSS | 10 | VDD | 15 | VSS | 20 | VSYNC:RD6 |
インターフェース選択(S1,S0)
S1:RG3(36pin) | S0:RG2(37pin) | インターフェース選択 |
0 | 0 | インターフェースなし(コマンドの使用方法をLCDに表示:コマンドの選択はパラレルインターフェースを使用する) |
0 | 1 | パラレルインターフェース |
1 | 0 | シリアル通信インターフェース |
1 | 1 | I2Cインターフェース |
パラレル・インターフェース(P_D7~P_D0,P_STB,P_BUSY)
信号名 | ピンNo | 信号名 | ピンNo | 信号名 | ピンNo | 信号名 | ピンNo |
P_D7:RD11 | 45 | P_D6:RD10 | 44 | P_D5:RD9 | 43 | P_D4:RD8 | 42 |
P_D3:RD3 | 51 | P_D2:RD2 | 50 | P_D1:RD1 | 49 | P_D0:RD0 | 46 |
P_STB:RD5 | 53 | P_BUSY:RF6 | 35 |
インターフェース選択(S1,S0)を0に設定し、パラレルインターフェース(P_D7~P_D0)を下記のコードに設定すると、各コマンドの詳細説明がLCDに表示されます。
0x00 説明:基本コマンド一覧
0x01 説明:フォントコマンド一覧
0x02 説明:オシロスコープコマンド一覧
0x03 説明:FFTコマンド一覧
0x04 説明:ファンクションコマンド一覧
0x05 説明:LCD 画面全体を塗りつぶす
0x06 説明:1ドットを描画する
0x07 説明:1ドットの水平実線ラインを引く
0x08 説明:1ドットの水平破線ラインを引く
0x09 説明:1ドットの垂直実線ラインを引く
0x0a 説明:1ドットの垂直破線ラインを引く
0x0b 説明:1ドットの斜め実線ラインを引く
0x0c 説明:1ドットの斜め破線ラインを引く
0x0d 説明:矩形領域を塗りつぶす
0x0e 説明:指定された色の円を描画する
0x0f 説明:指定された色の輪を描画する
0x10 説明:5*7ドットフォントを描画する
0x11 説明: 12ドットフォントを描画する
0x12 説明:18ドットフォントを描画する
0x13 説明:24ドットフォントを描画する
0x14 説明:コントラスト調整(typ mv=1950)
0x15 説明:オシロスコープを描画する
0x16 説明:オシロスコープの縦軸単位を描画する
0x17 説明: オシロスコープの横軸単位を描画する
0x18 説明:オシロスコープの画面を描画する
0x19 説明:オシロスコープの計測画面を描画する
0x1a 説明:オシロスコープの縦軸方向のポジションを描画する
0x1b 説明:オシロスコープの横軸方向のポジションを描画する
0x1c 説明:FFT アナライザを描画
0x1d 説明:FFTアナライザの縦軸単位を描画する
0x1e 説明:FFTアナライザの横軸単位を描画する
0x1f 説明:FFTアナライザ1ディケード画面を描画する
0x20 説明:FFTアナライザ2ディケード画面を描画する
0x21 説明:FFTアナライザ3ディケード画面を描画する
0x22 説明:FFTアナライザ4ディケード画面を描画する
0x23 説明:FFTアナライザ1ディケード計測画面を描画する
0x24 説明:FFTアナライザ2ディケード計測画面を描画する
0x25 説明:FFTアナライザ3ディケード計測画面を描画する
0x26 説明:FFTアナライザ4ディケード計測画面を描画する
0x27 説明:信号入力のカプリングを描画する
0x28 説明:トリガーレディを描画する
0x29 説明:トリガースロープを描画する
0x2a 説明:トリガーレベルを描画する
0x2b 説明:トリガーモードを描画する
0x2c 説明:オシロスコープのファンクションキーを描画する
0x2d 説明:ファンクションキーを描画する
0x2e 説明:ファンクションキー1をクリア
0x2f 説明:ファンクションキー2をクリア
0x30 説明:ファンクションキー3をクリア
0x31 説明:ファンクションキー4をクリア
0x32 説明:ファンクションキー5をクリア
0x33 説明:FFT窓関数を表示する
0x3a デモ: 基本コマンド
0x3b デモ: フォント
0x3c デモ: オシロスコープ
0x3d デモ: FFT
0x3e デモ: ピンボール
0x3f デモ: 上記デモを一連で実行する
シリアル・インターフェース(U2TX,U2RX)
信号名 | ピンNo |
U2TX:RC13 | 47 |
U2RX:RC14 | 48 |
I2C・インターフェース(SDA2,SCL2)
信号名 | ピンNo |
SDA2:RF4 | 31 |
SCL2:RF5 | 32 |
キーボード・ロータリーエンコーダー・インターフェース(K0~K17)
信号名 | ピンNo | 信号名 | ピンNo | 信号名 | ピンNo | 信号名 | ピンNo |
K0:RB0 | 16 | K1:RB1 | 15 | K2:RB2 | 14 | K3:RB3 | 13 |
K4:RB4 | 12 | K5:RB5 | 11 | K6:RB6 | 17 | K7:RB7 | 18 |
K8:RB8 | 21 | K9:RB9 | 22 | K10:RB10 | 23 | K11:RB11 | 24 |
K12:RB12 | 27 | K13:RB13 | 28 | K14:RB14 | 29 | K15:RB15 | 30 |
K16:RF3 | 33 | K17:RF2 | 34 |
キーボード・ロータリーエンコーダー・インターフェースに下記のキー基板を接続可能です。

<回路図>
keyboard
各キーを押下 または ロータリーエンコーダーを回転した際の出力される16進コードを下記に示します
キー押下、ロータリエンコーダーの回転がない場合は、出力コードは0x00である。

タッチパネル・インターフェース(TP0~TP3)
信号 | ピンNo | 信号 | ピンNo | 信号 | ピンNo | 信号 | ピンNo |
TP0:RG6:AN16 | 4 | TP1:RG7:AN17 | 5 | TP2:RG8:AN18 | 6 | TP3:RG9:AN19 | 8 |
表示回転(ROTATE)
ROTATE:RF6(35ピン) | 0(0V) | 1(3.3V)またはオープン |
LCD表示 | 180度回転表示 | ノーマル表示 |
コマンド一覧 1/5 (基本コマンド)
- LCD画面全体を塗りつぶす screen(color):80mSec
- 1ドットを描画する dot(y1,x1,color)
- 1ドット幅の水平実線を引く、 line_h(y1,x1,x2,color)
- 1ドット幅の水平破線を引く dashed_line_h(y1,x1,x2,color)
- 1ドット幅の垂直実線を引く line_v(y1,y2,x1,color)
- 1ドット幅の垂直破線を引く dashed_line_v(y1,y2,x1,color)
- 1ドット幅の斜め実線を引く line(y1,y2,x1,x2,color)
- 1ドット幅の斜め破線を引く dashed_line(y1,y2,x1,x2,color)
- 矩形領域を塗りつぶす rectangle(y1,y2,x1,x2,,color)
- 円を描画する circle(y1,x1,r,color)
- 1ドット幅の輪を描画する ring(y1,x1,color)
コマンド詳細 screen(color)
LCD画面全体を指定した色で描画します。
パラメータ
color
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 screen(y)
コマンド詳細 dot(y1,x1,color)
ドットを描画します。
パラメータ
y1は、縦軸の位置です。
0 =< y1 <480
x1は、横軸の位置です。
0 =< x1 <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 dot(300,300,r)
コマンド詳細 line_h(y1,x1,x2,color), dashed_line_h(y1,x1,x2,color)
実線(line_h)または破線(dashed_line_h)の水平線を描画します。
パラメータ
y1は、縦軸の位置です。
0 =< y1 <480
x1は、横軸のスタート位置です。
0 =< x1 <640
x2は、横軸のストップ位置です。
0 =< x2 <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 dashed_line_h(330,40,630,g)
コマンド詳細 line_v(y1,y2,x1,color), dashed_line_v(y1,y2,x1,color)
実線(line_v)または破線(dashed_line_v)の垂直線を描画します。
パラメータ
y1は、縦軸のスタート位置です。
0 =< y1 <480
y2は、縦軸のストップ位置です。
0 =< y2 <480
x1は、横軸の位置です。
0 =< x1 <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 dashed_line_v(330,40,630,c)
コマンド詳細 line(y1,y2,x1,x2,color)、dashed_line(y1,y2,x1,x2,color)
実線(line)または破線(dashed_line)の斜線を描画します。
パラメータ
y1は、縦軸のスタート位置です。
0 =< y1 <480
y2は、縦軸のストップ位置です。
0 =< y2 <480
x1は、横軸のスタート位置です。
0 =< x1 <640
x2は、横軸のストップ位置です。
0 =< x2 <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 dashed_line(330,40,630,g)
コマンド詳細 rectangle(y1,y2,x1,x2,color)
矩形を描画します。
パラメータ
y1は、左上の縦軸の位置です。
0 =< y1 <480
y2は、右下の縦軸の位置です。
0 =< y2 <480
x1は、左上の横軸の位置です。
0 =< x2 <640
x2は、右下の横軸の位置です。
0 =< x2 <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 rectangle(240,450,300,620,r)
コマンド詳細 circle(y1,x1,r,color), ring(y1,x1,r,color)
円(circle)または輪(ring)を描画します。
パラメータ
y1は、縦軸の中心位置です。
0 =< y1 <480
x1は、横軸の中心位置です。
0 =< x1 <640
rは、半径です。
0 =< r <640
colorは、色の指定です。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
例 ring(310,450,150,b)
コマンド一覧 2/5 (フォント関係)
- 7ドットフォントを描画する font7(y1,x1,color,文字列)
- 12ドットフォントを描画する font12(y1,x1,color,文字列)
- 18ドットフォントを描画する font18(y1,x1,color,文字列)
- 24ドットフォントを描画する font24(y1,x1,color,文字列)
上記のドットの数値は、フォントの高さを示す。
フォントはASCIIフォント
- コントラスト調整 contrast(mv) typ: mv=1950
コマンド詳細 font7(y1,x1,color,st[]),font12(y1,x1,color,st[]),font18(y1,x1,color,st[]),font24(y1,x1,color,st[])
フォントの高さが7ドット、12ドット、18ドット、24ドットのフォントを描画します。
パラメータ
y1は、フォントの縦軸スタート位置を示します。
0 =< y1 <480
x1は、フォントの横軸スタート位置を示します。
0 =< x1 <640
colorはフォントの色を指定します。
r(赤) g(緑) b(青) y(黄) m(マゼンタ) c(シアン) k(黒) w(白)
st[]は描画する文字列です。
アスキーコード
例 font7(325,440,m,ABCDEFGHIJK)

コマンド詳細 contrast(mV)
LCDパネルのコントラストを設定します。
パラメータ
mVは、コントラスト値です。
0 < mV <2800 typ 1950mV
例 contrast(1950)
コマンド 3/5 (オシロスコープ関連)
- オシロスコープを描画 oscilloscope(volt_div,time_div_osc,v_posiyion,h_position,bnc_input)
- オシロスコープ縦軸を描画 osc_v_unit(volt_div)
- オシロスコープ横軸を描画 osc_h_unit(time_div_osc)
- オシロスコープ画面を描画 oscillo_screen
- オシロスコープ計測画面を描画 osc_measure_screen
- 縦軸カーソルを描画 v_position(v_position,volt_div)
- 横軸カーソルを描画 h_position(h_position,time_div_osc)
コマンド詳細 oscilloscope(volt_div,time_div_osc,v_position,h_position,bnc_input)
オシロスコープ画面を描画します。
パラメータ
volt_divは、縦軸の単位を表示します。
0(10V/DIV) 1(5V/DIV) 2(2.5V/DIV) 3(2V/DIV) 4(1V/DIV) 5(0.5V/DIV) 6(0.25V/DIV) 7(0.2V/DIV)
time_div_oscは、横軸の単位を表示します。
0(20mSec/DIV) 1(10mSec/DIV) 2(5mSec/DIV) 3(2mSec/DIV) 4(1mSec/DIV) 5(500uSec/DIV) 6(200uSec/DIV) 7(100uSec/DIV) 8(50uSec/DIV)
v_positionは、縦軸方向に、波形を移動します。
-200 < v_position < 200
h_positionは、トリガーポイントを移動します。
-200 < h_position < 200
bnc_inputは、入力のカップリングを示します。
0(GND) 1(AC) 2(DC)
例 oscilloscope(0,0,0,0,0)
コマンド詳細 osc_v_unit(volt_div)
オシロスコープの縦軸の単位を表示します。
パラメータ
volt_div
0(10V/DIV) 1(5V/DIV) 2(2.5V/DIV) 3(2V/DIV) 4(1V/DIV) 5(0.5V/DIV) 6(0.25V/DIV) 7(0.2V/DIV)
例 osc_v_unit(0)
コマンド詳細 osc_h_unit(time_div_osc)
オシロスコープの横軸の単位を表示します。
パラメータ
time_div_osc
0(20mSec/DIV) 1(10mSec/DIV) 2(5mSec/DIV) 3(2mSec/DIV) 4(1mSec/DIV) 5(500uSec/DIV) 6(200uSec/DIV) 7(100uSec/DIV) 8(50uSec/DIV)
例 osc_h_unit(0)
コマンド詳細 oscillo_screen
オシロスコープ 画面を描画します。
例 oscillo_screen
コマンド詳細 osc_measure_screen
オシロスコープ計測画面を描画します。
例 osc_measure_screen
コマンド詳細 v_position(position,volt_div)
オシロスコープの波形を縦軸方向に移動します。
パラメータ
position
-200 < v_position < 200
volt_div
0(10V/DIV) 1(5V/DIV) 2(2.5V/DIV) 3(2V/DIV) 4(1V/DIV) 5(0.5V/DIV) 6(0.25V/DIV) 7(0.2V/DIV)
例 v_position(0,0)
コマンド詳細 h_position(psition,time_div_osc)
オシロスコープの波形を横軸方向に移動します。
パラメータ
position
-200 < position < 200
time_div_osc
0(20mSec/DIV) 1(10mSec/DIV) 2(5mSec/DIV) 3(2mSec/DIV) 4(1mSec/DIV) 5(500uSec/DIV) 6(200uSec/DIV) 7(100uSec/DIV) 8(50uSec/DIV)
例 h_position(0,0)
コマンド一覧 4/5 (FFT関連)
- FFTアナライザを描画 fft_analyzer(dB_div,time_div_fft,bnc_input)
- FFT縦軸端を描画 fft_v_unit(dB_div)
- FFT横軸単位を描画 fft_h_unit(time_div_fft)
- FFT1decade画面を描画 fft_1decade_screen
- FFT2decade画面を描画 fft_2decade_screen
- FFT3decade画面を描画 fft_3decade_screen
- FFT4decade画面を描画 fft_4decade_screen
- FFT1decade計測画面を描画 fft_1decade_measure_screen
- FFT2decade計測画面を描画 fft_2decade_measure_screen
- FFT3decade計測画面を描画 fft_3decade_measure_screen
- FFT4decade計測画面を描画 fft_4decade_measure_screen
- FFT窓関数を描画 fft_window(fft_window)
コマンド詳細 fft_analyzer(dB_div,time_div_fft,bnc_input)
FFTアナライザの画面を描画します。
パラメータ
dB_divは、縦軸の単位を表します。
0(20dB/div) 1(10dB/div) 2(6dB/div) 3(3dB/div) 4(1dB/div)
time_div_fftは、横軸の単位を表します。
0(1decade 10Hz-100Hz) 1(1decade 100Hz-1000Hz) 2(1decade 1kHz-10kHz) 3(1decade 10kHz-100kHz) 4(2decade 10Hz-1kHz)
5(2decade 100Hz-10kHz) 6(2decade 1kHz-100Hz) 7(3decade 10Hz-10kHz) 8(3decade 100Hz-100kHz) 9(4decade 10Hz-100kHz)
bnc_inputは入力のカップリングを表します。
0(GND) 1(AC) 2(DC)
例 fft_analyzer(4,4,2)
コマンド詳細 fft_v_unit(dB_div)
FFTの縦軸の単位を表示します。
パラメータ
dB_div
0(20dB/div) 1(10dB/div) 2(6dB/div) 3(3dB/div) 4(1dB/div)
例 fft_v_unit(0)
コマンド詳細 fft_h_unit(time_div_fft)
FFTの横軸の単位を表示します。
time_div_fft
0(1decade 10Hz-100Hz) 1(1decade 100Hz-1000Hz) 2(1decade 1kHz-10kHz) 3(1decade 10kHz-100kHz) 4(2decade 10Hz-1kHz) 5(2decade 100Hz-10kHz) 6(2decade 1kHz-100Hz) 7(3decade 10Hz-10kHz) 8(3decade 100Hz-100kHz) 9(4decade 10Hz-100kHz)
例 fft_h_unit(1)
コマンド詳細fft_1decade_screen,fft_2decade_screen,fft_3decade_screen,fft_4decade_screen
FFT_1,2,3,4decade画面を描画します。
例 fft_1decade_screen
コマンド fft_1decade_measure_screen, fft_2decade_measure_screen,
fft_3decade_measure_screen, fft_4decade_measure_screen,
FFT_1,2,3,4decade測定画面を描画します。
例 fft_1decade_measure_screen
コマンド詳細 fft_window(fft_window)
FFT ウインドを選択します。
パラメータ
fft_window
0(Rectangle) 1(hanning) 2(hamming) 3(Blackman) 4(Nattall) 5(Flattop)
例 fft_window(0)
コマンド 5/5 (その他)
- 入力信号カップリング dc_ac_gnd(bnc_input)
- トリガーレディ描画 trigger_ready
- トリガースロープ描画 trigger_slope(n)
- トリガーレベル描画 trigger_level(trogger_level,volt_div)
- トリガーモード描画 trigger_mode(trigger_mode)
- 発信機機能描画 osc_function_screen
- ファンクション枠を描画 function_screen
- ファンクション1をクリア function1_clear
- ファンクション2をクリア function2_clear
- ファンクション3をクリア function3_clear
- ファンクション4をクリア function4_clear
- ファンクション5をクリア function5_clear
コマンド詳細 dc_ac_gnd(input)
入力のカプリングを表示します。
パラメータ
input
0(GND) 1(AC) 2(DC)
例 dc_ac_gnd(1)
コマンド詳細 trigger_ready
トリガーモードが[single]時、トリガーレディを表示します。
例 trigger_ready
コマンド詳細 trigger_slope(edge)
トリガー方向を表示します。
パラメータ
edge
0(立ち上がりエッジ) 1(立下りエッジ)
例 trigger_slope(0)
コマンド詳細 trigger_level(level,volt_div)
トリガーレベルを表示します。
パラメータ
level
-200 < level < 200
volt_div
0(10V/DIV) 1(5V/DIV) 2(2.5V/DIV) 3(2V/DIV) 4(1V/DIV) 5(0.5V/DIV) 6(0.25V/DIV) 7(0.2V/DIV)
例 trigger_level(0,0)
コマンド詳細 trigger_mode(mode)
トリガーモードを表示します。
パラメータ
mode
0(AUTO) 1(NORMAL) 2(SINGLE)
例 trigger_mode(2)
コマンド osc_function_screen
example osc_function_screen
コマンド詳細 function_screen
ファンクションキー画面を描画します。
例 function_screen
コマンド詳細 function1_clear, function2_clear,function3_clear,function4_clear,function5_clear,
ファンクションキー1,2,3,4,5をクリアします。
例 function1_clear
デモ

通信エラー
- 0: エラーなし
- 1: コマンド名が違う
- 2: コマンド名が長い
- 10: 既定の色指定以外の設定がされている
- 11: 色指定の()がない
- 20: y軸のコマンド名が長い
- 21: yの数値が範囲外である
- 22: yの数値が0~9以外である
- 30: x軸のコマンド名が長い
- 31: xの数値が範囲外である
- 32: xの数値が0~9以外である
- 40: 半径rのコマンド名が長い
- 41: rの数値が範囲外である
- 42: rの数値が0~9以外である
- 50: フォントの文字列が長すぎる
ソフトウエア:データ転送(frame_memory → LCD)

ソフトウエア:通信
LCDコントローラとの通信は、パラレル、シリアル、I2Cの3種類を選択可能です。
通信方法の選択は、S1:RG3(36ピン)、S0:RG2(37ピン)で行います。
パラレル通信は、片方向(クライアント⇒LCDコントローラ)ですので、描画コマンドを送信するのみです。よって下図のXON,XOFF,ACK,NAKは使用しません。また、キーコード文字列の入力もできません。
シリアル通信、I2C通信は、下図の通り処理を行います。













LCDコントローラ・テスター

本テスターは、上の写真の右下の「LCDコントローラ」の3種類のインターフェースのチェックを行います。
キャラクタLCDの下にPIC16F1939があり、このCPUから パラレル・インターフェース、シリアル・インターフェース、I2C・インターフェースで「LCDコントローラ」と接続されテストを行います。
<回路図>
testLCDコントローラ・テスター(マスター)のソフトウエア(PIC16F1939)






LCDコントローラ・ソースファイル(PIC32MX370F512H)
LCDホスト・ソースファイル(PIC16F1939) パラレル、シリアル、I2C インターフェース
参考情報
フォント


LCD表示座標
