STN液晶パネルであるシャープLM077VS1T01が入手できましたので マイクロチップの32bitCPUの PIC32MX370F512Hで 制御してみました。

オシロスコープの画面を作ってみました。

外観

上の画像の右下にある緑色のプリント基板上のPIC32MX370F512HがLCDを制御しています。

下の画像の中央の40ピンのICが、PIC16F1939で、PIC32MX370F512にLCD描画コマンドを送信しています。

描画コマンドは、8bitパラレル、非同期シリアル、I2Cの3種類のインターフェースを有しています。

PIC16F1939は、テスト用に描画コマンドを送信するだけですので、他のCPUでもOKです。

描画コマンドを受信したPIC32MX370F512Hは、LCDにコマンドに対応した描画を行います。

動画も添付します

液晶パネルの紹介

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

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にビットマップフォントを格納し、ソフトウエアから利用できるようにする。
  • キーボード、ロータリーエンコーダーインターフェースを有する。

回路図

PIX32MX3_4LCD_TEST

プリント基板

LCDコントローラ基板のピン番号、信号名を下記に示す

ピンNo信号名 ピン No信号名 ピン No信号名 ピン No信号名 ピン No信号名
4TP0:RG614K2:RB224K11:RB1134K16:RF244P_D6:RD10
5TP1:RG715K1:RB125VSS35P_BUSY:FR645P_D7:RD11
6TP2:RG816K0:RB026VDD36S1:RG346P_D0:RD0
7*MCLR17K6:RB627K12:RB1237S0:RG247U2TX:RC13
8TP3:RG918K7:RB728K13:RB1338VDD48U2RX:RC14
9VSS19AVDD29K14:RB1439OSC149P_D1:RD1
10VDD20AVSS30K15:RB1540OSC250P_D2:RD2
11K5:RB521K8:RB831SDA2:RF441VSS51P_D3:RD3
12K4:RB422K9:RB932SCL2:RF542P_D4:RD8
13K3:RB323K10:RB1033K17:RF343P_D5:RD953P-STB:RD5

LCDインターフェース

LCDインターフェース(D7~D0,CLK,HSYNC,VSYNC,DISPON,VCONT)    20ピン フレキシブルケーブルコネクタ0.5mmピッチ

ピンNo信号名ピンNo信号名ピンNo信号名ピンNo信号名
1D7:RE76D3:RE311VDD16DISPON:RD7
2D6:RE6
7D2:RE212CLK:RD417VSS
3D5:RE58D1:RE113VDD18VCONT:RF0
4D4:RE49D0:RE014HSYNC:RF119VSS
5VSS10VDD15VSS20VSYNC:RD6

インターフェース選択(S1,S0)

S1:RG3(36pin)S0:RG2(37pin)インターフェース選択
00インターフェースなし(コマンドの使用方法をLCDに表示:コマンドの選択はパラレルインターフェースを使用する)
01パラレルインターフェース
10シリアル通信インターフェース
11I2Cインターフェース

パラレル・インターフェース(P_D7~P_D0,P_STB,P_BUSY)

信号名ピンNo信号名ピンNo信号名ピンNo信号名ピンNo
P_D7:RD1145P_D6:RD1044P_D5:RD943P_D4:RD842
P_D3:RD351P_D2:RD250P_D1:RD149P_D0:RD046
P_STB:RD553P_BUSY:RF635

インターフェース選択(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:RC1347
U2RX:RC1448

I2C・インターフェース(SDA2,SCL2)

信号名ピンNo
SDA2:RF431
SCL2:RF532

キーボード・ロータリーエンコーダー・インターフェース(K0~K17)

信号名ピンNo信号名ピンNo信号名ピンNo信号名ピンNo
K0:RB016K1:RB115K2:RB214K3:RB313
K4:RB412
K5:RB511K6:RB617K7:RB718
K8:RB821K9:RB922K10:RB1023K11:RB1124
K12:RB1227K13:RB1328K14:RB1429K15:RB1530
K16:RF333K17:RF234

キーボード・ロータリーエンコーダー・インターフェースに下記のキー基板を接続可能です。

<回路図>

keyboard

各キーを押下 または ロータリーエンコーダーを回転した際の出力される16進コードを下記に示します

キー押下、ロータリエンコーダーの回転がない場合は、出力コードは0x00である。

タッチパネル・インターフェース(TP0~TP3)

信号ピンNo信号ピンNo信号ピンNo信号ピンNo
TP0:RG6:AN164TP1:RG7:AN175TP2:RG8:AN186TP3:RG9:AN198

表示回転(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コントローラ」と接続されテストを行います。

<回路図>

test

LCDコントローラ・テスター(マスター)のソフトウエア(PIC16F1939)

LCDコントローラ・ソースファイル(PIC32MX370F512H)

LCDホスト・ソースファイル(PIC16F1939) パラレル、シリアル、I2C インターフェース

参考情報

フォント

LCD表示座標