[][mobile][Homepage][BBS][Blog][YouTube][asablo]

秋月I2C接続キャラクタLCDモジュールをシリアル入力タイプに改造2012/04/18 23:59:29



ACM1602N1というI2Cで接続できる16桁2行LCDが秋月電子通商より発売された。I2Cは少ないピン数で接続が出来るメリットがある。まずは動作させてみるか (・∀・)



以前arduinoで動作させたI2Cのサンプルを使って、アドレスを0x3e→0x50にすると動作した。
なんだ、あっさり動いてしまった。折角だから色々調査。

※完全にコンパチではなく、いくつかの修正が必要である。arduinoのスケッチ(ライブラリー)は、じゅんさんのページで提供されている


基板を観察すると、I2CコントローラとしてPIC16F689のSSOPタイプ(pdf)が搭載されている。また端子にはTX、MCLR、DAT、CLK、RXといった端子が存在していた。普通にICSPが出来る端子になっている。ということで、PICkit2を使い内容を吸い出そうと試みるも、当然の様にコードプロテクトが掛かっている。うーむ。買ったばかりだし、チップを交換するか。



まずは外しても分かるようにデバイスに印を付けておいて、マスキング処理をし、はんだ吸い取り線を巻き、ハンダを大量に流して外す。



ポロッと取れる。このPICは取っておこう。



秋月にプログラム容量が半分の16F687のSSOPがあったので、これに載せ替える。



どちらも20ピンなので、



そのまま載せ替えが可能。



正常に繋がったか確認。



認識しているのでOK。早速解析していこう。


I2C接続キャラクタLCDモジュール解析

このデバイスはPORTCのみ8ビット丸々使える。そしてこのLCDは8ビット専用との事なので、LCDのデーター線はPORTCと予想。TXとRX、MCLR、DAT、CLKは独立している。残る部分はRS、EN、WR信号。RA2、RA4、RA5と予想してみた。2時間ほどでプログラムを書き上げる

お決まりのデジタルポート設定処理忘れとか、方向レジスター処理、4ビットモード時と8ビットモードの初期化違いでちょっと手間取ったが、ポートは予想通りの配列だった。



回路図はこんな感じ。
ACM1602N1搭載のPIC16F689ピン配列
1:VDD
2:RA5:O:LCD_RW
3:RA4:O:LCD_E
4:RA3:I:(MCLR) モードスイッチに使用。基板内部で10KΩプルアップされている
5:RC5:O:LCD_D5
6:RC4:O:LCD_D4
7:RC3:O:LCD_D3
8:RC6:O:LCD_D6
9:RC7:O:LCD_D7
10:RB7:O:(TX)
20:VSS

19:RA0:O:(ICSPD)
18:RA1:O:(ICSPC)
17:RA2:O:LCD_RS
16:RC0:O:LCD_D0
15:RC1:O:LCD_D1
14:RC2:O:LCD_D2
13:RB4:O:(SDA) 右スイッチに使用
12:RB5:O:(RX)
11:RB6:O:(SCL) 左スイッチに使用


ここまで分かればOK。元々載っていたPICのプログラムも、この解析で新たに組み直せば良さそうな気がしてきた。時間が取れたらオリジナルのI2Cファームでも書いておくかな。そうしておけば、気楽に上書き出来るだろう。→出来ました!

あと、裏側に8ピンのICがあるが、恐らく負電圧をLCDに与える電源と思われる。(PDF


さて、今度は実用的にまとめてみよう。



完成! スイッチはLCDのグラウンドスルホールを利用して両面テープで固定。たった3本の電線で便利に使える。

I2Cになっても、LCDのセットアップや、書き込み手順は従来キャラクターLCDと同じ手順で表示させるのには変わりない。シリアル通信であれば、アスキーコードで送れば表示される。CG RAMを使わなければ、シリアル通信接続の方が色々有利である。

電源投入時はカーソル点滅。文字が0x20~0xffのコードであれば表示。
その他に、
ascii code 12 (ctrl +l) LCD消去
ascii code 0x0b (ctrl +k)カーソル以降の行を消して切替
ascii code 0x0d (Enter) 行の切替のみ
ascii code 0x11 (ctrl +q)カーソルを消す
ascii code 0x17 (ctrl +w) カーソル表示

と対応させているので、簡易表示機として利用が出来る。


※古い写真を使用しています。

裏面。コントラスト調整は面実装の20KΩ抵抗を使用してコンパクトに。




TXが空いているのだが、USARTモードにするとRXとTXはペアで使用されるので、デジタルポートとして使用できない。仕方ないので、内部でプルアップしていたMCLRをスイッチ入力に。PICkit2等でプログラム中はボタンを操作しないようにご注意を。



モードスイッチを押しながら左ボタンでバージョンなど表示。



ボーレート変更もワンタッチ。これが一台あると色々と便利。ボーレートは変更可能。

こんなにコンパクトに作らなくとも、コントラスト用の半固定抵抗器と設定用スイッチ3つを取り付ければ手軽にシリアル通信をモニター出来る。

ソースプログラムと実行ファイル公開中。PICkit2でHEXファイルを書き込めばOKであるが、一度書き込んだら、製品版のファームウェアに戻せないのでご注意を。


  →秋月I2C LCD互換ファームウェア(I2Cアドレスも変更可能)







FC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンター
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]