ユビキタス鉄道模型
赤外線リモコン戦車
レーザ・グラフィックス
USB加速度センサマウス
ビジョンシステム
リアルタイムOS
LCD表示パネル
├ 内容説明
├ YS50-1Cについて
├ 接続方法
├ 点を描画してみる
└ 今後の課題
相撲ロボット
多自由度ロボット
 開発事例 TOPへ
 HOMEへ
イエローナビ
 ページTOPへ
 開発事例 TOPへ
 HOMEへ
YellowSoft.com
製品紹介 Q&A ダウンロード 開発事例 ユーザ ご購入 価格表 お問合せ
 LCD表示パネルの製作


  SH7050F開発セット「YS50-1C」を使ったLCD表示パネルの製作
    太田 研一


  点を描画してみる

ここでは、基本的描画ソフトの作成について記述していきます。LCDに描画するためには、LCD(320×240)の各ドットに64色のデータを送る必要があります。

下図の左上(0,0)がCS2空間のアドレス800000Hであり、横に1ドットいくごとにアドレスが1増えていきます。左端の2段目(0,1)が800320Hになります。



1ドットのデータは、R,G,Bの三原色の階調に加え、Mのモード選択が自由に行えます。例えば、b0,b1に1を書き込めば明るい青を表示できますし、b0だけに1を書き込めば暗い青になります。R,G,Bすべて0であれば黒になるし、すべて1なら白になります。モード選択については、Penetrateは、そのビットが透過表示し、Blinkは、そのビットが点滅表示します。各アドレスへ、色データ書き込むことで液晶に点を書くことができます。下記のソフトは、点を打つ関数の例です。


void fnDot(unsigned int uiX, unsigned int uiY, unsigned char cCol) {
    *(unsigned char *)( uiY * 320 + uiX + 0x0800000) = cCol;
}


上記関数は、(X座標、Y座標、色)を引数として渡せば、その位置に指定の色で点灯することができます。


  基本関数群を記述してみる

前章の点を打つソフトができれば、それを利用していろんな関数を作成していくことができます。巻末のLcdlib.c中には、BOXで塗りつぶす関数、線を引く関数、円を書く関数、画面全体を塗りつぶす関数などを作っています。

どの関数も、点の並びに条件を持たせて描かせるようになっています。

fnPaintBox()は、対角の座標と色を引数として与え、対角で囲まれる長方形を塗りつぶす関数です。fnLine()は、始点と終点の座標と色を引数として与え、その間を直線で引く関数です。fnCircle()は、中心の座標と、半径と色を引数として与え、円を描かせます。Cls()は、色を引数として与え、ハードから画面全体を塗りつぶします。ただし、これには時間がかかるため、終了を待って次のプログラムへ移る必要があります。そのためのチェック関数を作りました。fnChkClsend()という関数です。Cls()とセットで使います。


  RS-232Cを使ってパソコンからコマンド表示してみる

RS232Cを使ってコマンド表示するためには、まずパソコンからのデータを取り込むことと、パソコンへデータを送信しなければなりません。(ソフトは、巻末のsci.c)特に、データを取り込む場合は、取り込みながらデータを処理していかなければなりません。

Sci.cのソフトは、受信割り込みを使って常に見続け、データがくればバッファに取り込む作業を繰り返しています。

バッファは、1000文字のリングバッファとし1000文字取り込んだら1文字目に戻ります。取り込んだデータは、定期的に処理し続け上書きできるようにしています。また、ポインタを使って、リングバッファの取り込んだ位置と、処理した位置を指し示しています。

その位置がずれたとき、データを取り込んでコマンド処理を行います。送信の場合は、受信割り込みがかかってない時を見計らって行っています。

コマンドは、文字列を一単位とし、先頭文字で種別を解釈し、その後がデータ、CRで終了するようになっています。(巻末のlcdpat.c)。


  ケニックシステムのロゴをビットマップ表示してみる

ケニックシステムのロゴをビットマップ表示するために1ドットずつの画像データを持っておく必要があります。(巻末のlogo.cとlogo2.c)下図のロゴは、柄の部分と文字の部分とに分かれてデータを持っています。データの最初にX方向のデータの数、2番目にY方向のデータの数が記憶されており、その大きさが判断できます。

その2つのデータを利用して、以下に続く色データを直接LCDコントローラのアドレスへ書き込みます。その関数が、fnBoxPattern()と言う関数です。引数として、書き始めたい位置(X座標、Y座標)と データのポインタを渡します。尚、このデータを作成するのには大変な労力を必要としますので、ケニックシステムではパソコンで作成したビットマップ画像を64色に減色してC言語のデータ配列、または汎用のテキストデータに自動変換するユーティリティを開発してホームページ上で公開しています。

Freeのソフトですのでお試しください。

http://www.kenic.to


  フレームバッファの重ね合わせを利用してみる

KS3224-03Pはフレームバッファを3ページ保有していて、そのうちの2画面を重ね合わせ表示することが可能です。

これは、固定画面を背景ページに書き、前景ページのすべてを透過表示してその上に動画を書き込めば、固定画面に影響なく動画だけを描画することが出来ます。1画面だけでは、固定画面も一度書き換えないといけませんが、2画面あればその必要はなく、処理スピードを上げることが出来ます。バーグラフなどを描かしたいときや、常時数値データが更新されるようなアプリケーションで最適だと考えます。



← 接続方法 5/6 今後の課題 →