2015年10月17日土曜日

キャラクターLCDの文字コードを使ってみる。

今回はキャラクターLCDの「文字コード」を使って
半角英数だけでは無い表示をさせてみようと思います。

さて、キャラクターLCDの文字コードとはなに?
っと言う話を少ししておこうと思います。

パソコンはもちろんなのですが
コンピューターは人間の文字が分かりません。
なので、数値の組み合わせに人間の文字を対応させる事によって
コンピューターが人間へ文字を見せられる様になります。
数値の組み合わせと文字の対応の事を「文字コード」と言います。
この文字コードで有名なのは恐らくASCIIコードでしょう。

では、なんで文字コードとキャラクターLCDに関係があるかと言うと
キャラクターLCDとPSoCは文字コードを使ってLCDに表示させているのです。
つまりは、キャラクターLCDに文字コードが内蔵されているいてそれを使っているのです。

え、「プログラムで文字コードなんて意識していないって?」

それはPSoC Creatorのライブラリーが見えない様にしていたからです。
普段は文字コードを意識せずに表示させていました。
ですが今回は文字コードを使って表示させようと思います。

キャラクターLCDモジュールはHD44780(コンパチブル)っと言う
コントロールICを返してLCDに表示させています。
先ずはHD44780が使う文字コードを調べましょう。

これはSparkFanにあったHD44780データシートの抜粋



これが内蔵されている文字コード
アルファベットとカタカナと特殊な文字が使える様になっています。
HD44780互換であればこの文字コードが使えます。
また、任意の文字や絵を8個まで表示させる事が出来ます。

表の上の番号がありますね、それはHD44780が使う文字コードの上位ビットです。
表の左側にも番号がありますね、文字コードの下位ビットを表しています。
この表を使うには8bit分の上位4bitと下位4bit分を合わせないと
使えないと言う訳なのですね。

例えばカタカナの「ア」であれば上位ビットの「1011
下位ビットの「0001を合わせた「10110001」となる訳です。
16進数表記であれば「0xB1と言う事になります。
では実際にやってみましょう。

まずはいつも通りに空のプロジェクトを作って、
キャラクターLCDのコンポーネントを入れます。



しかし今回は任意で作った絵や文字を入れたいので設定を変えちゃいます。


設定画面を開いたら、ラジオボタンのNoneUser Definedに切り替えます
これで任意の表示が出来るようになりました。



今の状態はCustom 0が選択されている状態です。
このマトリックス状に表させているのが1文字分です。
このマトリックスをマウスでクリックして任意の文字を作って行きます。
白をクリックし見ると黒へと逆に黒をクリックすると白へと変わります。



何でも良いのですが、携帯のアンテナみたいなのを作ってみました。
これで文字のデザインはおしまいです。
デザイン増やしたい場合はとなりのYの字ブロックをクリックしてみると
Custom1と変わっています。このようにして変えていきます。


ではOKをクリックして閉じましょう。

配線は以前の書いた記事にあるので省略します。


配線が終わったら、一度コンパイルをしましょう。
コンパイルが終わったら次はプログラミングですね。
今回のプログラムの内容は意外とシンプル
int main()
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    LCD_Char_1_Start();//LCDをスタートさせる
    LCD_Char_1_Position(0,0);//上の段の左端からスタート
    LCD_Char_1_PrintString("Hello PSoC3");///まずは普通のやり方
   
    LCD_Char_1_Position(1,0);//下の段の左端からスタート
    LCD_Char_1_PutChar(0xB1);//文字コードを使うときはPutCharを使う。数字は16進数表記
    LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_0);//作った文字には***_CUSTM_*で使える
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    for(;;)
    {
        /* Place your application code here. */
    }
}
打てたら、再度コンパイルをしましょう。
コンパイル出来たら、実際にPSoC5LPへと書き込みましょう。
(今回はPSoC3を使いましたがPSoC5LPでも全く同じです)



こういう風に表記されれば完成(/・ω・)/
どうでしょうか出来ましたか??

MedAruinoで同じことが出来るかは知りませんが、
文字コードを使えば簡単にカタカナが出力出来ましたね。
またコンポーネントのエディターで絵文字も作れました。

いや~PSoC5LPは便利ですね。

PS:
スイッチサイエンスの
16×2 日本語フォント付きLCDモジュール(青地・白文字)
https://www.switch-science.com/catalog/2448/
でも使えるはずだぞ~。