ゴミ化した部品を消化する企画?第3弾です。

今回もI2Cデバイスの製作。I2CデバイスならLCDを駆動したいもの。I2Cスレーブデバイスの勉強をさせていただいたChuckさんもI2C LCDを製作してる。
Chuckさんの実装例をもとに作るにも、当方のSD1602HUOBは壊れたまんまだし、使えそうなLCDはSC1602BS-Bぐらいしかありません。

そこでChuckさんもI2C LCDを参考に、SC1602BS-B前提で回路を作ってみた。

検討すると以下のこと分かった。

  1. ハードの違い ==> SC1602BS-Bはバックライトがない。
  2. 拡張  ==> I2CだけでなくUARTでも使いたい
  3. ソフトの問題 ==> ChuckさんのI2C LCDのLCDライブラリィが何故かSC1602BS-Bでは動かない

1.と2.の解決は回路そのものを変更する必要あり。2.はUART用でも使用できるようソフトの変更、3.は動作実績のあるLCDライブラリィに差し替える必要があると分かった。

回路の設計

以下の様に回路を設計した。ChuckさんのI2C LCDではバックライトやコントラストなどはPWMによって輝度などを制御してますが、ファームウェアのサイズを小さくするためオーソドックスに可変抵抗で調整するようにした。

I2C LCDの回路

I2C LCDの回路

ボード図

LCD(SC1602BS-B)が基板で固定でき、可変抵抗の調整がしやすいような部品配置をした。
少し大きめでスッカスカの基板ですが、可変抵抗やコネクタの位置が偏ってるのでジャンパ線を大胆に使用した。

I2C LCDボード図

I2C LCDボード図

版下作成・エッチング、実装

いつものコンビニ印刷ショップにて版下を作成。生基板を切り出してトナーをアイロンで転写した。
もう一枚作っヒミツ?の基板とともに…パチリ

トナー転写しエッチングした基板

トナー転写しエッチングした基板

そして部品を実装。4ピンXHハウジングが手持ちは1つしかなくI2C用の端子だけ取り付けた。
ジャンパの設定次第で、I2C動作モードUART動作モードを選択できるようにしている。

部品を実装

部品を実装

ファームの作成

ChuckさんのI2C LCDのソースをベースに、Peter FleuryのLCDライブラリィとがた老さんのMATRIX2313のUARTのソースを参考に、ファームを作った。
出来上がったコマンドは以下の通り。

I2C/UART コマンドの説明
ESC’L’ x y…. カーソルをx y の位置に移動
ESC’H’ …. カーソルをホームポジションへ移動
ESC’C’ …. LCDをクリア
ESC’F’ n d1 d2 d3 d4 d5 d6 d7 d8    …. EEPROMのn番目の位置へカスタムフォントを登録
ESC’M’ n …. EEPROMのn番目のカスタムフォントをLCDに登録
ESC’X’ …. 画面非表示
ESC’N’ …. 画面表示・カーソル消去
ESC’B’ …. 画面表示・カーソル非表示・文字ブリンク
ESC’D’ …. 画面表示・カーソル表示
ESC’E’ …. 画面表示・カーソル表示・文字ブリンク
ESC’-‘ …. カーソル左移動
ESC’+’ …. カーソル右移動
ESC’<' .... 画面左移動 ESC'>‘ …. 画面右移動

動作確認

いつものようにdemoduinoにてテスト。demoduinoから、お猿のキャラクタを登録して表示させた。今回はお猿が成功の印。

I2C LCD 動作確認

I2C LCD 動作確認

あとがき

カスタムキャラクタをATtiny2313のEEPROMに登録するようにした。EEPROMへのブロック読み書きがシビアだとか、ジャンパによって動作モードの判定ルーチンにはウェイトが必要だとか、実際な組み立ててみないと分からないことがあった。

謝辞

今回も、みなさんのソースを参考させてもらいました。
Chuckさんのコマンド解析ルーチンやがた老さんのコンパクトな2313専用のUARTルーチン参考にさせていただきました。ありがとうございます。

参考

ChuckさんのI2C->LCD Slave
http://www6.atwiki.jp/fx_geek/pages/57.html

がた老さんのLEDマトリックスで遊ぶ
http://gataro-avr-ken.cocolog-nifty.com/blog/2008/09/led_1a7d.html

関連ファイル一式の公開(2010/11/3)

I2C LCDのファイル整理がついたので公開します。
Eagleファイル一式、ファームウェア一式を含みます。ハードウェアは単純ですから、プリント基板には二の足を踏む方でも、ユニバーサル基板で実装できると思います。活用してください。

改定履歴

2011/9/17日改定

新しいI2CLCDを作成したので、このバージョンのファイルの公開は停止します。

2012/1/2日改定

電子工作の固定ページに、I2CLCD Ver.2を書きました。Eagleデータ・ファームなど一式も公開してますので、作ってみたいかたはどうぞ