BASICで液晶表示(16桁×2行)
LCD表示器を見かけた(デジット 600円)ことと、BASCOM-BASICで簡単に表示できることを知って、試してみました。
また、100円時計の心臓部(?)から、1Hzの信号を取り出して時刻表示をしてみました。 |
LCDのPIN | 内容 | 接続先 | LCDの PIN | 内容 | 接続先 |
1 | GND | GND | 8 | DB1 | NC |
2 | Vcc | Vcc | 9 | DB2 | NC |
3 | コントラスト | バリオーム中点 | 10 | DB3 | NC |
4 | RS | pin15 portB3 | 11 | DB4 | Pin16 portB4 |
5 | R/-W | GND | 12 | DB5 | Pin17 portB5 |
6 | Enable | Pin14 portB2 | 13 | DB6 | Pin18 portB6 |
7 | DB0 | NC | 14 | DB7 | Pin19 portB7 |
100円時計から1Hz信号
100円のアナログ置き時計を分解して1Hzの信号を取り出すことにしました。
32.768kHz?の水晶を乗せたICがABの端子から電磁石で歯車を駆動しています。電源のマイナスを基準にとるとAとBの
端子から交互に1/2Hzの立ち下がりパルスが出ています。あわせて1Hzの信号とするために抵抗でワイヤードオア回路を作り
ました。その結果、0Vまで下がらなくなったのでダイオードでバイヤスをかけTrで増幅しました。
ほぼフルスイング(0〜5V)で約30msの立ち上がりパルスが得られました。これでAVRに立ち上がりエッジで割込をかけると
うまく動作します。なお、このICは1.5Vで正常に働き、2Vではほとんどパルスが出ないことが分かりましたが、5Vから分圧し
たときにそれが分からず苦労しました。
この出力を2313の6番ピンINT0へつなぎます。
Basicコンパイラ(無料 2313用)
BasicコンパイラがWebにあります。Demoバージョンでプログラムサイズが2kBまでという制限がありますが90S2313ならフルサ
イズが可能です。2kBの制限以外は製品版と全く同じものだそうです。SRAMを持たない90S1200には使えませんが、2313では便利
なソフトです。BASCOM-AVRといいます。ここhttp://www.mcselec
.com/download_avr.htm からダウンロードできます。
FDサイズのファイル4つをダウンロードします。ヘルプファイル、サンプルファイルもダウンロードしておきましょう。
東集さんのページ http://plaza17.mbn.or.jp/~TOSH_HOMEPAGE/page015.htmlに詳しく紹介されています。是非お読み下さい。
('04.12.12 ページが無くなっていました。良い内容だと思っていたのですが。残念)
('05.01.26 作者のイワナガさんからご連絡をいただきました。JN3XBY'HomePageの「きまぐれ連載 BASICでAVRしよう!」
にサーバを変更して掲載されています。よかった!)
このコンパイラを使えばLCDの表示が簡単にできるとWebにあったのでこの実験をしてみました。
かなり機能が高いようですが、私の研究は進んでいません。
時刻表示のプログラム
basicのプログラムをここに置きます。 メインルーチンは何もしていません。1秒の割り込みが
入ると秒カウンタをインクリメントします。桁上がりがあれば、10秒、分、10分、時、10時と繰り上がります。時刻が決定
したときに割り込みルーチンの中で表示をしています。
この発振器で1日の誤差が1秒程度です。昔のゼンマイ時計を思えば超高精度ということになるのでしょうか。
久しぶりにBASCOMをさわって、意外なことに気がつきました。(気がつくのにずいぶん時間がかかりました。)
.basファイルの置き場所によって理由が表示されないエラーになります。何のエラーか全く分かりません。pathでもなさそう
です。どうやら、パスの中にカタカナ(全角です)があるとBASCOMは認識しないようです。ひらがなや漢字はOkみたい
です。十分調べていませんが理由不明のエラーが起こったら、カタカナを含むフォルダを通っていないか調べてください。
「新しいフォルダ」「デスクトップ」はダメでした。