AKI-H8/3052で遊ぶ ~ キャラクタ液晶モジュール
秋月で売られているキャラクタ液晶をH8に繋いでいる人が多いようです.これに文字を出せるようにしましょう.
プログラム
配線がめんどいので,4ビットモードです.P3に接続してください.プログラムを見れば配線はすぐに分かると思います(^^;.
//////////////////////////////////////////////////////////////////////////// // LCD #define LCD_PORT P3 #define LCD_SIG_RS 0x10 #define LCD_SIG_E 0x20 #define LCD_CMD_CLEAR 0x01 volatile void lcd_wait(void) { int t = 10000; while(t--); } // 8ビット出力 void lcd_out(unsigned char d) { LCD_PORT.DR.BYTE = d | LCD_SIG_E; // output and enable E //lcd_wait(); // 無いと駄目? LCD_PORT.DR.BYTE = d & ~LCD_SIG_E; // output and disable E lcd_wait(); } // LCD初期化 void lcd_init(void) { // 3回 00000011を出力 lcd_out(0x03); lcd_out(0x03); lcd_out(0x03); // ファンクションセット lcd_out(0x02); // 4ビットモードに lcd_out(0x2); lcd_out(0x8); // 00001100 表示オン/カーソルOFF/ブリンクOFF lcd_out(0x0); lcd_out(0xc); // 00000110 エントリーモードセット lcd_out(0x0); lcd_out(0x6); } // データ出力 void lcd_write(unsigned char d) { lcd_out((d >> 4)&0x0f | LCD_SIG_RS); // 上位4ビット lcd_wait(); lcd_out(d&0x0f | LCD_SIG_RS); // 下位4ビット lcd_wait(); } // 表示クリア void lcd_clear(void) { LCD_PORT.DR.BYTE = 0; lcd_out(0); lcd_out(LCD_CMD_CLEAR); lcd_wait(); } void lcd_setpos(int x,int y) { y &= 0x1; // 2行のみ LCD_PORT.DR.BYTE = 0; lcd_out(0x08 | (y << 2) ); lcd_out(x); lcd_wait(); } static int lcd_line = 0; static int lcd_clearflag = 0; // char送信 void lcd_putchar(char c) { if (c=='\n') { lcd_line++; lcd_clearflag = 1; } else if (c=='\f') { lcd_clear(); lcd_line = 0; } else { if (lcd_clearflag) { lcd_setpos(0,lcd_line); lcd_clearflag = 17; while (--lcd_clearflag) lcd_write(' '); lcd_setpos(0,lcd_line); } lcd_write((unsigned char)c); } } // 文字列出力 void lcd_puts(char *s) { while (*s) lcd_putchar(*s++); }
使い方
int main() { P3.DDR = 0xff; // LCD lcd_wait(); // 待ってみる lcd_init(); lcd_putchar('\f'); // clear lcd_puts("Stand by ready!\n"); lcd_puts("Set up."); for(;;); }
終わりに
実は,H8が無い環境でプログラムを微妙に修正してから載せているので,もしかしたら実機で動かないかも….
誰かが買ってきた「C言語による H8マイコン プログラミング入門」という本を教科書にしています.ここの説明も出来る限り本に合わせています.
ただ,この本のプログラムの癖は独特です(特に定数の使い方や関数名の付け方が…).説明はとても分かりやすいので,H8初心者には良いと思いますが,プログラミングの教科書には向いてないような気もします.
この文書の履歴
- 2006-03-26 公開
Copyright © binzume all rights reserved.