2015年1月6日火曜日

セグメントLCDを使ってみよう。

以前に書いた「7segLEDを使ってみよう」の記事にある
「4 Digit 7-segment LED Driver」PSoC4にはありません。

じゃあ、簡単に同じような事をしたい場合はどうしたら?
そう言う場合では、セグメントLCDを使いましょう!

セグメントLCDと言ってもピンと来ないでしょう。
簡単に言えば、キッチンタイマーで使われるような液晶です。
決まった形の表示が出来る液晶で、省電力に優れています。
消費電力の設計が厳しい場合において表示させるには非常に良いでしょう。

LCDと言うと秋月電子とかで見るようなキャラクターLCDの様な
モジュール化された物を想像するかもしれません。
しかし、必ずしもセグメントLCDの場合ではモジュール化されている訳ではありません。

PSoC4,5LPではどのようにべきか
PSoCにはLCDコントローラーが伝統的に(?)導入されています。
ただし、全てのPSoCに入っている訳では無いのではありません。
LCDコントローラーが入っているかどうかはデータシートの確認が必要です。

今回はPSoC4でセグメントLCDとaitendoで売っている
多機能表示器 [JY2941B]を動かしたいと思います。
もちろんPSoC5LPでも似た方法です。

コンポーネントの一覧の「Display」から「Segment LCD」

ドラッグアンドドロップで入れます。
PSoC4ではクロック供給をしてあげる必要があるので
1KHz~のクロックを作って接続します。(私は1MHzでしました。)


始めに設定を開くとこのように出てきます。


7segLEDの時と同じでコモンとセグメント数の設定があります。
ほかは、駆動方法、フレッシュレートフレームレート、ブライトネスコントラストの設定となっています。
フレッシュレートフレームレートを上げるとブライトネスコントラストの設定幅が広がります。
今回はセグメント数とコモンの設定はそのままにして
フレッシュレートフレームレートを120Hz、ブライトネスコントラストを50%にします。

設定が終わったら、「Display Helpers」のタブを開きます。 


この設定では、使う液晶のコモンとセグメントの関係を設定していきます。
今回はこの設定が非常に重要です。
この設定が出来ていないと、便利なAPIを使うことが出来ません。
左側の「Helpers」が設定の候補です。今回は7segなので
「7 Segment」をクリックしたら、緑の右矢印をクリックします。
そうすると次のように画面が変わります。



中段の7セグの表記の「Helpers function configuration」
と下段の「Pixel mapping table」が出てきます
7segのA,B,Cがコモンとセグメントのどれに対応するかを設定していきます。
操作の仕方は、たとえば7セグのAがCom0とseg0が対応しているとします。
まず、7セグのAをクリックして選択します。


選択したらそのまま、PIX0に向かってドラッグアンドドロップします。
出来るとこのようになります。


この作業は7segLCDのデータシートを見ながら設定していくと良いでしょう。
多機能表示器 [JY2941B]用に設定が終わるとこんな感じになります。 


(Helper_Bar_0が足されていますが、コンマ向けです。)
設定を閉じて、ピンの接続と設定をしていきましょう。
LCDの使うピンをPSoC4の適当なピンに接続していきます。
接続が終わったら、LCDのコモン側にはNameがCom[*]LCDのseg側にはSeg[*]に設定していきます。
設定が終わったら、一度コンパイル。
プログラムは2行でおしまい。

2行書いたら、もう一度コンパイルをして書き込みましょう。
7segLCDに「1234」が表記されていれば
成功(/・ω・)/


segmentLCDのAPIは7segLEDのAPIと似ていて、一番左側の桁が0番目となっています。
しかし、7segLCDのAPIは文字(A,B,C)の表記が出来ません。
7segLCDで文字を表記したい場合はピクセルごとにON,OFFが必要になります。
そう言う場合では、14,16segLCDを使う方がよいでしょう。

白黒液晶(TN液晶)は大抵のMCUでは表示させるだけで一苦労ものです。
こう言うタイプの液晶は交流電圧で動くことが出来ます。つまりLEDみたいに
GNDに単純につなげば動いてくれる訳ではありません。PSoCには面倒な事を引き受けて
自分のやりたい事を優先させてくれます。
mb*dで同じことが出来るんですかね??

0 件のコメント:

コメントを投稿