文字を表示するには、前回(青色ドットマトリクスLED 5×7ドット MOA20UB019GJ で遊ぶ 2.単純に点滅させてみる)のような単純なわけにはいかず、パターンを変えながらダイナミック駆動しなければならないらしい。
例えば数字の3なら下のようなパターンになる。
具体的に言えば、PORTBを1ビットだけ順にHighにして、そのとき上の値をPORTDに順番に送る。
この作業をちらつかない程度に速く5回行って、これを繰り返すと、その間3が表示されるわけだ。
ただし、PORTDはLowで点灯なので、ビットは上の絵とは反対になる。
テスト用のコードは以下のような感じ。
PORTD用のデータはビット反転してある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
unsigned char j; while(1){ j = 0b00000001; PORTB = j; PORTD = 0xDE; __delay_ms(1); j = j << 1; PORTB = j; PORTD = 0xBE; __delay_ms(1); j = j << 1; PORTB = j; PORTD = 0xBA; __delay_ms(1); j = j << 1; PORTB = j; PORTD = 0xB4; __delay_ms(1); j = j << 1; PORTB = j; PORTD = 0xCE; __delay_ms(1); } |
わざとゆっくり表示させてダイナミック駆動がわかるようにやってみるとこんな感じ。
というわけで、あとはドットのパターンさえ用意できれば、このようにさまざまな文字が表示できるってわけ。
カタカナも。
「青色ドットマトリクスLED 5×7ドット MOA20UB019GJ で遊ぶ 4.流れる表示をさせてみる」に続く
Tweet