NOKIA5110液晶

NOKIA5110携帯電話の液晶

・販売店 http://www.aitendo.co.jp/
  この製品が何処にあるか非常にわかりにくいので「5110」で検索すると良い
・価格 基板(キャリーボードという名前)付きで¥900、基板無し本体のみ¥650
 キャリーボードはバックライト付き。何故か青色LED
・基板を自作する場合は基板厚1.0mmの物を使用すること
 1.6mm厚のものでは基板が厚すぎてLCD外枠を固定するツメが引っかからない
・本体のみは半田付け不能な端子形状
・Nokia5110携帯の液晶部分だけを取り外した中古品
・通信プロトコルはSPI
・表示エリア48×84pixel かなり横長の表示域
・LCDからのビットマップデータの読み込みは不可(そもそもLCDからの出力端子がない)
・キャラクターフォントは内蔵していない
・バックライトは側面から4つのLEDで照らす方式。本体にバックライトは付属していない。
・初期化のシーケンスはとてもシンプル。以下参照。
・携帯電話の部品であるためLCDのデータシートは存在しない
・使用されているコントローラーはPHILIPSのPCD8544
・LCD仕様はコントローラーの仕様そのものなのでPCD8544のデータシートを参照すればよい
  データシート入手先 http://www.alldatasheet.com/ 等
・データシートの主要参照ページ
  9、10ページ:表示領域のアドレス
  14ページ  :制御コマンド一覧 <-これを理解することが一番重要
  22,23ページ:初期化及びデータの送信例 <-使いながら理解したいなら先ずこれを
・動作電圧2.7~5V
 携帯電話のジャンク品なのでリチウムイオン電池の電圧3.7Vで使用するのがよいと思われる
・表示域のアドレスは連続している
・コントラスト調整はコマンドで行う。コントラスト調整ピンは無い
・白黒表示でありグレースケール表示は出来ない。

-----------------------------------
 初期化のシーケンス
-----------------------------------

動作確認のための最小限の初期化シーケンス
 1.CSをLowにする(キャリーボードの説明書ではSCE端子がチップセレクト) HighではなくLowでセレクトされる
 2.RES端子をLowにする
 3.0.1秒程度待つ
 4.RES端子をHighにする
 5.D/C端子をLowにする
 6.SPIでバイナリー 00100000 を送る
 7.SPIでバイナリー 00001100 を送る
 8.D/C端子をHighにする

 この後に続けてSPIで適当なデータを送ればそのビットパターンがディスプレイ左上に表示される
 液晶ドライバーのSPI最大クロックは4MHz。
 ブレッドボードで組んだ回路が3.7MHzで動作確認済
 
-----------------------------------
 PICで使用するとき
-----------------------------------
 ・TRIS設定必要
 ・10MHzで動かしていればSPIは4MHz以下のクロックになる。実測で1クロック0.4μ秒。
 ・SPIの仕様はPIC16もPIC18も同じようなのでPIC16F87Xの日本語データシートを見ると良い


2009-10-27

LCD裏面にある端子を押しつけることにより基板の端子と導通させる方式なので基板パターン面に実装する必要がある。

PICT0693.jpg

キャリーボード付きのLCD

PICT0695.jpg

基板の自作も可能だがかなり根性が必要

内部のバッファーを全部ゼロで埋めないとゴミが表示されます

PICT0681.jpg

バッファーに残ったゴミ

PICT0069.jpg

LCD裏面の端子

表示領域

PICT0717.jpg

表示領域はかなり横長です

PICT0715.jpg

バックライトを点灯させて、白黒反転表示させた状態

PIC18系のSPI関連レジスタの設定 使用言語はmikroBASIC V7.2 PIC16系でも同じ
0001  '-------------------------------------------------------------------------------
0002 ' SPI initializes
0003 '-------------------------------------------------------------------------------
0004 sub procedure Spi_initialize()
0005 SSPSTAT.SMP = 0 ' Input data sampled at middle of data output time
0006 SSPSTAT.CKE = 0 ' Transmit occurs on transition from Idle to active clock state
0007 SSPCON1.SSPEN = 1 ' Enables serial port and configures SCK, SDO, SDI and SS as serial port pins
0008 SSPCON1.CKP = 1 ' Idle state for clock is a high level
0009 SSPCON1.SSPM3 = 0 ' SPI Clock FSOC/4
0010 SSPCON1.SSPM2 = 0 ' SPI Clock FSOC/4
0011 SSPCON1.SSPM1 = 0 ' SPI Clock FSOC/4
0012 SSPCON1.SSPM0 = 0 ' SPI Clock FSOC/4
0013 end sub
0014
0015 '-------------------------------------------------------------------------------
0016 ' SPI write
0017 '-------------------------------------------------------------------------------
0018 sub procedure Spi_write_data(dim data as byte )
0019 SSPBUF = data
0020
0021 while PIR1.SSPIF = 0
0022 wend
0023
0024 PIR1.SSPIF = 0
0025 end sub
行番号
解説
Spi_initialize
これはメインルーチンで1回だけ呼び出す。大文字のレジスタ名、ビット位置名はmikroBASICで定義されているもの。
Spi_write_data
LCDに1バイトデータをSPI経由で送る

PIC接続の場合、SPIの仕様はPIC16F87Xのデータシートを参照すると良い。PIC18シリーズも仕様は同じ

PICT0723.jpg

PIC16F87Xシリーズの日本語データシート