2009年6月1日月曜日

8x8 LED MATRICS

最近なにもしていないので
TOM-1588BH~Bなる 8x8のLEDマトリクスを買ってきました。とりあえず、CY8C29466で、メッセージ表示機を作ってみます。

PSoCの出力はオープンドレインDrive/Sink可能なので、Port0をrow側(Open Drain, Drives High) Port2をcol側で(Open Drain, Drives Low)に接続して、row側に電流制限抵抗を付ければOKと50mAまでドライブできそうです。
大体のイメージが出来たので、少しばかり計算。MAXだと怖いので40mAとし、8個同時となるとLED1個あたり、5mA(少し暗いかな)なので電源は5Vなのでせドロップダウンは無視して、制限抵抗は1kΩ。
あとは、ブレッドボードにぽちぽちと乗せてハードウェアは出来上がり。

ほんとに、オープンドレインのDrive/SinkでOKか確かめるために、とりあえずLEDをひとつだけ点灯させてみることに。Port0に0x01,Port2も0x01を書くだけのプログラムといえないようなコードを書いて、いざ実行してみると、row側はOKだったのですが、col側が見事に反転…論理を気にしていませんでした。
書く前に反転するようにして、想定通りに動作。後は、書き込みのパターンを指定してrow側に出力、col側は1ビットずつLoにて無事固定パターンもOK。

後はスクロールさせるので表示バッファの更新処理。ベタで書くのも芸がないので、Designerに戻り、Timer16を追加。Clockを32kHzPeriodを32768に設定、Configurationを作って、タイマー割り込みのエントリーを書き換え、タイマー割り込み内で表示バッファの更新処理をを入れて出来上がり。

意外と安直に動いてしまいました。