からくり小箱

アクセスカウンタ

zoom RSS printfのためのLCD出力用低レベルIOの実装

<<   作成日時 : 2011/05/15 22:40   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 前回でやっとLCD表示が出来るようになったので、78K0やPICのときと同じように、標準出力で使われる低レベルIOを実装することで、printfの出力をLCDに行えるようにしました。
 IAR Embedded WorkbenchのC/C++開発ガイドによると、標準出力を自前のデバイス(今回はLCD)に行うためには、
   size_t __write(int handle, const unsigned char *buf, size_t bufSize)関数

を作れば良いと書いてあります。つまり、この関数内にLCD出力の処理を書くことで、printfの出力をLCDに行うことが出来るようになります。
 __write()関数のサンプルは、C/C++開発ガイドに書いてあるので、これを基に書いてみました。今回のLCDは、表示エリアが16桁×2行しかないなど、ハイパーターミナルに出力するに比べて制約があるので、制御文字によるカーソルの移動やスクロールを以下のこじんまりとした仕様とします。

  @ 1行目の左端から文字表示を初めて、右端(16文字)を越えたら改行して、2行目の左端から文字表示を
    行う。
  A 2行目の右端を越えたら上に1行スクロールして、2行目の左端から文字表示を行う。
  B \n制御文字(0x0a)で、改行+ラインフィードを実行する。
  C \n以外の制御文字は全て無視する。

 折角、printfを使えるようにするので、printfを使わないと表示の面倒な浮動小数点表示を試してみました。

   for(num = 0; num <= 360; num++)
   {
       root = sin(num * 3.1415927 / 180);
       printf("\n");
       printf("カクド=%d゚\n",num);
       printf("cos=%f", root);
       delay_ms(200);
   }

結果は、78K0のときのように、特にビルド時のパラメータを変える必要も無く、浮動小数点結果をLCDに表示することができました。(元々のprojectのオプションが浮動小数点を出せる設定になっていた)
下記のビデオを載せました。



 3/16:良く見てみたら、COSと書いていながら計算式がSINになっていました。浮動小数点表示を試したかった
      だけなので、ご愛嬌と言うことで。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
printfのためのLCD出力用低レベルIOの実装 からくり小箱/BIGLOBEウェブリブログ
文字サイズ:       閉じる