[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

PICプログラムの小技 printf()を使ってラクラクLCD表示2012/07/05 01:02:16



この本は唯一生き残った私のバイブル。初版が昭和60年、私のは平成7年改訂3版第11版、そして今は改訂5版まで出ている超ロングセラー本である。
いきなりC言語の本の紹介から始まったが、今回は、そのC言語の標準ライブラリ関数である
printf標準関数を使ってLCD等を表示させる方法を紹介しよう。

PICでLCDの表示部分のプログラムは、私がよく紹介している方法を例に出すと、例えば0~255の数字を表示させる場合は、

void lcd_valueout8(unsigned char temp){	//ゼロサプレス対応
	if (temp<100) {
		lcd_putch(' ');
	}else	lcd_putch(((temp / 100)%10)+0x30);//100
	if (temp<10) {
		lcd_putch(' ');
	}else	lcd_putch(((temp /  10)%10)+0x30);//10
	lcd_putch(((temp      )%10)+0x30);//1
	return;
こんな感じでコードを書く。数字が2桁、3桁と色々なフォーマットが増えれば、その都度コードを書いていた。面倒ではあるが、容量が小さくなるメリットがある。

でも、表示部分は簡単に済ませたい所。C言語は普通printf()関数が標準ライブラリ関数として用意されている。これを使わない手は無い。


PICのソースコードの先頭でstdio.hをインクルードし、



putch関数を書き込む。



putchはprintfのフォーマットと関連付けされているので、LCDでなくとも、uart(sci.h)などにも応用ができる。シリアル出力にしたければ、sci.cなどで利用している1バイト出力をputchに定義するだけでokだ。



MPLAB XC8等をフリーモードで使う場合は、浮動小数点などが使えない制約があるが、大抵のフォーマットが使える。使用方法は、一般的なC言語の本を参考にするだけでOKだ。

//LCD display (Loop forever)
while(1){
	lcd_goto(LCD_LineNumber1);
	printf("Count(10): %05d",data16); 
	lcd_goto(LCD_LineNumber2);
	printf("Count(16):  %04X",data16);
	data16++;
	delay_10ms(50);//0.5s wait
}
例は10進数と16進数を0を含めて表示させているだけであるが、これを自前で書くと結構面倒である。printfなら、こんなに簡単に表示系を記述することができる。


printfを使うと簡単に表示系ができる

動作させた例。簡単な計数などには絶大な威力を発揮するだろう。プログラム一式はホームページにて公開している。



こんな簡単なプログラムでも既に1KW以上。製品版になれば最適化されるのでもっと小さくなるだろう。最近のPICマイコンは容量が増えてきているのが多いので、printfを使って簡単にプログラムしていく方が生産性は高いと言える。









Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]