Arduinoで動作確認(「Nokia 5110 Graphic LCD を試す。」)したNokia 5110 Graphic LCD (PCD8544)を、PIC24FJ64GA002で動かしてみた。
Nokia 5110 Graphic LCD (以下5110)は、SPIでデータを受信する。
SPIは最近よく使うので、1から書いても行けそうだったが、Arduinoであまりにも楽をしたために、人様のコードを拝借する幸せを捨てきれなかった。
結局、1からやり直すことになるのだが、だいぶ参考にさせていただいたので、出所を書いておく。
http://www.microchip.com/forums/m820769.aspx
このフォーラムで、質問しながら自分のコードを載せている人がいた。
斜めに読むと、動くようになったらしかったのでコピペさせてもらった。
が、あれこれやった挙句に、結局、ビルドできなかった。
ビルドは出来なかったが、いろいろコードをチェックしているうちに、何をどうやっているのかはつかめてきたので、自分で1から作り直してみた。
その手順を覚書きする。
まず、環境を書く。
MPLAB X IDE v3.40
XC16 v1.26
MPLAB Code Configurator core:v3.16
PICkit3(Chinese Clone)
PIC24FJ64GA002
Nokia 5110 Graphic LCD
Logic Analyzer(Chinese Clone)
クロックまわりはこんな風にした。
次に、主役のSPIを用意する。
PCD8544のデータシートでは4.0Mbits/sだが、
ゆっくりめで1MHzの設定にしておく。
ここまで来て、初期化時の時間稼ぎが必要なことに気づいた。
Timer1の割り込みを使ってdelayを用意しておく。
Timer1は、1ms間隔で割り込みを発生し続ける。
いよいよ、初期化コードを送ってみる。
自動生成されたspi1.cの中を眺めると、データを送るのはSPI1_Exchange8bit();らしかったので、とにかくこれで送ってみる。
こんな関数にした。
コマンドを送るとき、DC は Low にする。
ピンはこう接続している。
以下のように初期化コードを送ると、すぐにLCDが反応したので、どうやらちゃんと送られているようだ。
Logic Analyzer で確認しても、全く問題なさそうだ。
初期化直後の0x00で埋める前の表示は、こんな風にゴミが表示される。
「PIC24FJ64GA002 + Nokia 5110 Graphic LCD (PCD8544) – LCD消去とカーソルの位置指定 –」へ続く。
Tweet