ACM1602NI単体で利用しても面白いのだが、せっかくなので個別部品による構成で、ハードウェア互換を作ってみようと思う。
使用するマイコンは
PIC16F689(
pdf)。当初は16F1827なども考えたのだが、互換モードで動かすにはLCDに接続するのに8ビット必要である事と、ACM1602NIに同じPICマイコンが搭載されているので、これを採用。値段も130円と手頃で手に入りやすいPICである。
回路図構成はPIC、LCD、ダイオードが2つに0.1uFコンデンサが4つ、半固定抵抗10KΩ、あとは抵抗2本。電子工作をやっている人なら手持ちの物が代用できる。I2Cの抵抗は、状況に応じて取り付ける。
プログラムの作成を開始。
最近出てきたMPLABXの勉強がてらにプログラムを組んでいく。新しいツールは最初は何でも煩わしいものだが、慣れてくるとその便利な特徴が見えてくる。
負電圧用の発振は、いつもであればTIMER1を使用してCCPピンに出力させるだけなのだが、今回は互換を保つ事が優先なので、TIMER0によるソフトウェア割り込みで約6KHzの発振を出力とした。カウンターオーバーフローを利用するので、割り込み処理時のオーバーヘッドが出て誤差とか出るだろうが、この用途では問題ない。
LCDとPICでは自作のリボンケーブル治具で接続。リボンケーブルを利用する時、よく間違えてしまうのだが、数え方が2,1,4,3,6,5,・・・と2本ずつ奇数と偶数がひっくり返るので注意して行なっている。先端はヘッダーピンをはんだづけして熱収縮チューブで処理。これを一つ作っておくと、こういう実験には便利である。
他のストリナI2C LCDにも繋いでみる。前に作ったインターネットラジオ(
前半・
後半)。これに繋いでみる。
3.3Vでなんの違和感もなく普通に表示。これで動作的に互換品が出来上がった。
互換品であるが、最初の電源投入時はこういう表示になっている。種別とI2Cのアドレス表示を行った。私がデバッグで混乱しないようにという事もあるのだが、外部からLCDが初期化されると消えるので大きな問題にはならないだろう。色々なカスタマイズは、ソースを公開しているので、printfの記述をREMしてビルドすれば良い。
I2Cアドレスについては、空きピンであるRB5の部分をGNDに落として電源を落とせば、別のアドレスに定義される。ACM1602のアドレスが0x50とEEPROMと被ってしまっているが、アドレスが変更できるのでACM1602NIのファームウェアを入れ替える価値はあるだろう。
最近のコメント