Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GA002 + Nokia 5110 Graphic LCD (PCD8544) - 初期化成功まで -

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)

クロックまわりはこんな風にした。
pic24fj64ga002_nokia5110_00
次に、主役のSPIを用意する。
PCD8544のデータシートでは4.0Mbits/sだが、
pic24fj64ga002_nokia5110_04
ゆっくりめで1MHzの設定にしておく。
pic24fj64ga002_nokia5110_03
ここまで来て、初期化時の時間稼ぎが必要なことに気づいた。
Timer1の割り込みを使ってdelayを用意しておく。
pic24fj64ga002_nokia5110_01
pic24fj64ga002_nokia5110_02
Timer1は、1ms間隔で割り込みを発生し続ける。
いよいよ、初期化コードを送ってみる。
自動生成されたspi1.cの中を眺めると、データを送るのはSPI1_Exchange8bit();らしかったので、とにかくこれで送ってみる。
こんな関数にした。
コマンドを送るとき、DC は Low にする。
pic24fj64ga002_nokia5110_05
ピンはこう接続している。
pic24fj64ga002_nokia5110_06

以下のように初期化コードを送ると、すぐにLCDが反応したので、どうやらちゃんと送られているようだ。
pic24fj64ga002_nokia5110_08
Logic Analyzer で確認しても、全く問題なさそうだ。
pic24fj64ga002_nokia5110_09
初期化直後の0x00で埋める前の表示は、こんな風にゴミが表示される。
20161029214645

PIC24FJ64GA002 + Nokia 5110 Graphic LCD (PCD8544) – LCD消去とカーソルの位置指定 –」へ続く。

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GA002


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.