• 締切済み

LCDの表示位置とプログラムについて

LCDについて質問します。 以下のURLにLCDは1行に40文字まで表示でき、41~64文字目は未実装と書いてありました。 参考URL:http://elm-chan.org/docs/lcd/hd44780_j.html では、41文字目(DDRAMアドレスで0x28)以降にプログラムで文字を表示させようとしたら どうなるのでしょうか? どなたか知っている人がいたら教えてください。

みんなの回答

回答No.2

懐かしい。。 画面外にメモリが付いているモジュールとそうではないモジュールがありますが。 書いてみて読み出せれば、それ自体をSRAMとして使用できるので、 簡易的な保存デバイスとして使えますよ。 開始ラインというレジスタがあるみたいですね。 このコマンドで開始ラインを設定すれば、 41~64文字目が出ると思います。 つまり、横スクロールするということ。 ブラウザで言うなら、「スクロールバー」的なものですね。 スクロールを使わないで、直接0番地からしか表示しないなら、 最初の回答者が言う通り、 「何も起こらない」は正しいですね。 私からの回答は、スクロールして表示する領域か、 ちょっとした、SRAMメモリとして使用できるだけの 空間という回答になります。 軽く仕様を見ると、CGRAMもあるみたいなので、 キャラクタ定義を行わないなら、これも、メモリとして使用してOKでしょう。 この手のLCDパネルを使っていたのは、10年は前なので、 多少、時代が古いですが、この手のモジュール 意外に適当でも、表示してくれるので、結構便利ですね。

yf491224
質問者

お礼

以下のプログラムを使ってどうなるか確認してみました。 表示する文字:数字:10文字(0~9)、アルファベット(大文字と小文字合わせて52文字)および「$」記号の計64文字 LCD:表示シフト機能を使って初期化 void ioport(void); void main(void) { char str[64]="$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ioport(); lcd_init(); while(1) { lcd_clear(); lcd_goto(0); lcd_puts(str); __delay_ms(1000); } } void ioport(void) { OSCCON=0x60; TRISA=0x00; ANSEL=0x00; PORTA=0x00; TRISB=0x00; PORTB=0x00; } その結果、LCDには小文字のbつまり40文字目までしか表示されませんでした。つまり40文字目までは「表示シフト機能を使って表示」でき、41文字目以降は「表示されない」ということがわかりました。 上記のことにより「AsarKingChang 」さんがおっしゃっていた実装の有無については「未実装」であるということがわかりました。 回答ありがとうございました。

回答No.1

>どうなるのでしょうか? 何も起きません。

yf491224
質問者

お礼

早速の回答、ありがとうございます。 「何にも起きない」ということはプログラムでコンパイルも通り、PICに書き込んで表示させようとしても、表示されないということでしょうか?

yf491224
質問者

補足

以下のプログラムを使ってどうなるか確認してみました。 表示する文字:数字:10文字(0~9)、アルファベット(大文字と小文字合わせて52文字)および「$」記号の計64文字 LCD:表示シフト機能を使って初期化 void ioport(void); void main(void) { char str[64]="$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ioport(); lcd_init(); while(1) { lcd_clear(); lcd_goto(0); lcd_puts(str); __delay_ms(1000); } } void ioport(void) { OSCCON=0x60; TRISA=0x00; ANSEL=0x00; PORTA=0x00; TRISB=0x00; PORTB=0x00; } その結果、LCDには小文字のbつまり40文字目までしか表示されませんでした。つまり40文字目までは「表示シフト機能を使って表示」でき、41文字目以降は「表示されない」ということがわかりました。 回答ありがとうございました。 上記のことにより「chie65535」さんがおしゃっていた 「何も起きない」ということは「表示されない」ということであることがわかりました。 回答ありがとうございました。

関連するQ&A