Kitを使って表示させる方法をまとめました。この液晶ディスプレイはコモン電極が多い以外は、特殊な機能は無いので、PSoCマイコンでセグメントLCDを利用する方法を中心に説明します。Creatorは、Windowsにしか対応していないので、Windows環境が必要です。液晶ディスプレイ(TX1094A-02)はバックライトや端子は付いていますが、セグメントLCDの駆動回路や電源回路を持っていないので、マイコンの電子工作でよく使われるI2Cインターフェースを持った液晶モジュールのようには使えません。セグメントLCDの駆動回路を持たないマイコンで、プログラムと電圧生成のための外部回路を使ってLCDの表示を行う例もありますが、正確な仕様が分からないので、動作する可能性を高くするために、駆動回路を持っているPSoCマイコンを利用しました。LCD」コンポーネントを使用します。Helper」機能があります。Helper」を利用した場合のイメージをつかみます。Kitを表1のように配線します。配線のイメージは図1を参考にしてください。14表1図1ブレッドボード上で配線した結果が写真1です。LCD」コンポーネントを配置します。今回は、プロジェクト名やコンポーネント名は、デフォルトのまま使用します。project」画面を開きます。ターゲットデバイスを画面1のように設定して、以降はデフォルト設定のまま、空の新規プロジェクトを作成します。Explorer」(画面4)のデバイスの表示が「CY8C5888LTI-LP097」になっているかを確認し、異なる場合は変更します。Device」画面(画面5)を開きます。Selector」画面にリストされているデバイスが多いので、「Package」を「68-QFN」のみにしてフィルタをかけると「CY8C5888LTI-LP097」(画面6)が見つけやすいです。LCD]をドラッグ&ドロップして、画面中央の「TopDesign」(画面7)へ配置します。Configuration」タブで、コモン電極の数を7に変更します。Rate)が遅すぎてチラつくので以下のように変更します(画面8)。V」を2.509に設定する画面8制御する電極の数が決まると、セグメントとコモンの各組合せ(LCDの1つのセグメントに対応)を表すマクロ名が生成されます。ユーザープログラムからは、このマクロ名で制御するセグメントを決めます。Helpers」タブの下部にある表(画面9)で確認できます。画面9自動で生成されたマクロ名は単純な連番で扱いづらいので、前回調べた「変換基板のピン番号と、電極(セグメントとコモン)の組み合わせ(表2)」に合わせて画面10のように変更します。1h表2画面10ユーザープログラムでは、接頭辞としてコンポネント名が付くので数字で始めても問題ありません。マクロ名になるため同一コンポーネント内で重複する名前は付けられません。Helper」を利用しない場合、ここまでの設定で終了です。Application]メニューからコードの自動生成を行います。Explorer」の[Pins]をダブルクリックして物理ピンの設定画面(画面12)を開きます。Application)により、自動でコンポーネントの入出力と物理ピンの対応が作成されています(画面13)。画面13しかし、使用するピンは決めているので表1に合わせて再設定します(画面14)。Application)を行います。この時に、利用できない物理ピンを指定した場合は、エラーとなるので修正を行います。LCD」の出力に割り当てるとエラーとなります。Files]内にある[main.c]をダブルクリックして、main.cファイルを開きユーザープログラムを作成していきます(画面15)。画面15スケルトンコードはシンプルで、無限ループを持ったmain関数が一つあるだけです。コンポーネントを利用した場合、自動生成された「コンポーネント名_Start()関数」により有効にする必要があります。コードの入力補完が効くので名前の一部が分かれば楽に入力できます。個別のセグメントを表示するためには「コンポーネント名_WritePixel()関数」を利用します。この関数には2つのパラメータがあります。1つ目は表示したいセグメントを表す番号で、手順3で設定したセグメントに対する名前から生成されたマクロ名「コンポーネント名_マクロ名」になります。2つ目は表示のオンオフを決める値で、オンなら1、オフなら0を設定します。LCD」コンポーネントの設定画面の左下にある[Datasheet]ボタンで表示できるデータシートを参照してください。例として、中央の「°C」を表示するコードは以下のようになります。コードを見ての通り、オフにしないのならWritePixel関数を、1度呼び出すだけで駆動回路により適切な表示を維持します。Load...]メニュー(または[F4])からファイル選択ダイアログを開きファイルを選択します。Creator\ワークスペース名\プロジェクト名.cydsn\CortexM3\ARM_GCC_541\Debug\プロジェクト名.hex」となります。Programmer」を再起動しても記憶されているので、前回と同じならばファイル選択は不要です。Selection」リストに「KitProg/xxxxxx」が表示されます。Kit」の接続と、書き込みファイルの選択が正しく行われると、書き込み機能が有効になるので[File]->[Program]メニュー(または[F5])で書き込みを行います(画面16)。写真2「°C」のような特殊な要素なら、WritePixel関数による表示が向いていますが、数字やメーターなど多く使われるパターンの表示ロジックをゼロから作るのは面倒です。Helper」を追加します。例として、液晶画面中央の数字2桁の設定を行います。configuration」に1桁の7セグ数字のイメージが表示されます。2桁にしたいので、[+]ボタンより桁を増やします(画面17)。Table」の対応させたいセグメントにドロップすると設定できます。前回調べた表示パターン(写真3)を元に設定した結果が画面18になります。Table」のマクロ名は変更更新されますが、ヘルパー関数を介して制御を行うので名前はそのままで問題ありません。Application)を行いヘルパー関数を生成します。Helperを利用した場合)自動生成により、いくつかのヘルパー関数が追加されます。「コンポーネント名_Write7SegNumber_n()関数」(nは0始まりの連番)は渡された数値を、桁を考慮して表示する関数です。この関数には3つのパラメータがあります。1つ目は表示する数値です。「Helper」で設定した桁以上の値を渡した場合、上位の桁は表示されません。2つ目は表示を開始する桁です。0始まりで下位の桁から上位の桁に向けて増加します。3つ目は上位桁の0を表示するか制御するフラグです。数値が表示桁数未満の場合に、左0埋めにするなら1を、何も表示させないなら0を指定します。LCD」コンポーネントのデータシートを参照してください。「コンポーネント名_Write7SegNumber_n()関数」を利用した、0から99までをカウントして表示するコードは以下のようになります。1おまけ表示パターンの全セグメントを順に表示させるコードは以下のようになります。2まとめ謎の液晶ディスプレイ(TX1094A-02)を駆動させる過程で、PSoCマイコンでセグメントLCDの直接駆動を行う設定と手順の概要はつかめました。液晶ディスプレイ(TX1094A-02)はatendoの店頭特売品なので、いつまで入手できるか分からないですが、PSoCマイコンによりセグメントLCDを直接駆動する方法は、駆動回路を持たない安価な液晶ディスプレイにも応用できるので良しとします。(17)プロフィール脱線しちゃった元SIerの趣味プログラマ。Moddable」で、ModdableでのM5Stack開発にハマり中。独自サイトの構築・維持の調査を兼ねて、hatenaからお引越ししました。