毛のはえたようなもの

インターネット的なものをつらつらとかきつらねる。

PS/2キーボード+小型液晶

以前にも書きましたが大学で電子工作の課題が出ております。提出&発表は明日。と言うわけで最近半田ごてばかり触っておりました。

着想

初めての電子工作ということで小型LCDに文字を表示するという単純なものを作りました。自作キャラクター(下図)を本当に作ってみたいと前から思っていて、その感情表示部分にLCDを使います。きっと。
*1
口の下の四角いところです。きっとLCD。私が決めたんだから間違いない(o^冖^o)

実際に作るものの仕様

かといって、いきなりたいそうなものが作れるわけでもない。まずはじめは単純なものから。

  • 入力:PS/2キーボード
  • 処理:PIC16F628A
  • 出力:小型液晶 SC1602BSLB

家に昔ボードのどこかが壊れて死んだパソコンのキーボードを使って信号を取り、それをLCDに出力するという魂胆です。

参考書・参考サイト

本当に初めてだったので学科の人たちからお勧めの本を聞き出してそれを参考にしました。

やさしいPICマイコン プログラミング&電子工作

やさしいPICマイコン プログラミング&電子工作

(サポートページ・.asmダウンロードはこちら)
また、「PS/2キーボードを繋いで見ては?」も参考にしました。ありがとうございます。

冬休み、正確に言うと三が日ずっとこの本とAKI-PIC ver4と戯れていました。「ぉぉーLEDひかったー」とかやっていたわけです。輝く初心者マーク。

どうやって作る?

参考にした本ではパソコンからRS232Cをつかって信号をとるものが掲載されていました。RS232Cからは文字コードASCIIで信号を取り、そのまま小型液晶に出力できます。しかし、PS/2特殊なキャラクターコードのため、変換する必要があります。*2
PICに格納するプログラムに、文字コードを変換するようなものを書き足して完成。
…と簡単に書いてしまいましたが、PICに書けるプログラム(命令数)に制限があるため単純なIF文構造*3で書いていたのでは全部の文字が収まりきりませんでした。

間接アドレッシング

アセンブリを知らない知人Mに無理やりソースを送って見せる。曰く「配列みたいなのに変換表を入れておいたら」といわれる。
たしかに。
IF文構造をFOR文構造*4に書き換えることができればOKそうだ。なんで気づかなかったのだろう。
とりあえず汎用レジスタ上にデータを格納することにした。でもアクセスする先のアドレスを直接インクリメントなんか出来るのだろうか?(ここまでおととい)


Twitterに「どうしようか」と書き込んだら学科の友人C氏が「間接アドレッシング」と教えてくれました。Twitterすばらしいね。グーグル先生に聞いてみると「ここ見れ」という。ほうほう。
というわけで間接アドレッシングを実装して完成。(ここまで昨日)

実験風景

PICの動作を確認するためにブレッドボード上に配線をして動作を確認します。

何度も何度もPICにプログラムを書き込み、配線済みのブレッドボードにさして電源ONを繰り返しました。ブレッドボード上では簡単にICや抵抗などの端子をつけたりはずしたり出来ます。

部屋が半田くさい

PICが完成したらブレッドボード上の仮の配線を基板上に作ります。


制御部拡大。なんという立体交差。

もっときれいに配線できたらいいんですけどね。コレを明日もって行きます。

おまけ:うちの彼氏が遊んでます。

彼氏(1匹目)が遊んでいます。彼氏(3匹目)も写ってますがわかりませんね。え?2匹目?そんなの完全放置です(o^冖^o)

以上私の彼氏自慢でした。

*1:ちなみにキャラクターの絵をレポートにも載せた。

*2:同期速度は一緒なのでその点については考えなくてもよいと判断。信号の方式だけ考えました。ただ、送られる信号がRS232CPS/2では前者にパリティビットが無いのに対し、後者にはあります。だから内部の処理が少しだけ違うのです。

*3:実際にはIF構文を直接かけるわけではなく、ビット演算とGOTOでラベル指定組み合わせます。

*4:ビット演算とGOTOでラベル指定に加えてインクリメントを使う、ということです