PICの基本動作から応用プログラムまでを学びます。

ホーム
16F18313
16F18325
16F18346
16F1619
Curiosity
---
---
    
12F1822
16F1455
16F1459
18F14K50
18F26J50
dsPIC
その他
LCD表示に printf を使う

PIC18F用のコンパイラであるXC8にも、標準文字出力関数である printf が標準で装備されています。この関数はPIC18F14K50でも使用することはできますが、メモリー使用量が大きいため、あまり使用しませんでした。 しかし、メモリ容量に余裕がある場合は、これら便利な関数を大いに利用するべきです。
 標準文字出力関数のうち特に有益な関数は printf でしょう。整数値を自由に構成(フォーマット)して出力することが可能です。XC8の場合、この関数の初期設定では、出力に何も指定されていません、LCD表示で printf を利用可能にするには、今までのプログラムに以下を追加する必要があります。

  1. 標準ライブラリ stdio.h をインクルードする。
  2. ユーザー出力の putch を作成する。
  3. putch を呼び出すことで、一文字がLCDに表示できるようにする。

これで、標準出力チャネルにユーザー出力(LCD)が登録されます。

printf 使用例

以下に printf の使用例を示します。

format 使用例 表示結果 説明
%d printf("%d",123); 123 10進表示
%u printf("%u",123); 123 符号なし10進表示
%X printf("%X",123); 7B 16進大文字表示 %x は小文字表示
printf("%4X",123);  7B 桁数指定 数値の前に2つスペースが入る
%X
変数
char num = 0x3B;
printf("%04X",num);
003B 16進4桁 変数を指定する
桁数指定のまえにゼロを付加するとゼロ詰めになる
%c printf("%c",'A'); A 1文字を表示
文字列 printf("LCD test"); LCD test 文字列を表示
char str[] = "LCD test";
printf(str);
LCD test 文字列の配列変数を表示
組合せ char num = 0xA7;
printf("out=%04X",num);
out=00A7 文字列"out="と変数を表示
char num = 0xA7;
char str[] = "IN";
printf("%s=%04X",str,num);
IN=00A7 文字列配列と数値変数、及び
直接指定文字 "=" を組み合わせて表示

sprintf 使用例

sprintf を使うとフォーマットした文字列を直接標準出力に出力するのではなく、指定した文字配列に書き込むことができます。その使用例を以下に示します。

#include <stdio.h>

int main(void)
{
	char sbuf[100],
	s[]="Print this string";
	int x = 1, y;
	char a = '\n';

	y = sprintf(sbuf, "%s %d time%c", s, x, a);

	printf("Number of characters printed to "
				 "string buffer = %d\n", y);
	printf("String = %s\n", sbuf);

}

Example Output ----------------------------------

Number of characters printed to string buffer = 25
String = Print this string 1 time