Previous: 2.4.7.1. ボトムアップ |
Up: 2.4.7. プログラムによる処理 |
Next: 2.4.7.3. ピクセルデータの送信 |
ST7735も多くの液晶コントローラと同じく、データの表示位置を指定できます。これまでのサンプルでは、画面全部のデータを送信していました。しかし、画面上の一部のみ、例えばアルファベット1文字を表示したいといったケースでは、CPU資源と時間の無駄です。そこで画面上の一定の範囲を指定し、その範囲のデータだけを送るということができます。
液晶の各ドットには、それぞれ図 6?73のように行番号と列番号が付いています。範囲は任意の大きさの四角形で指定できます。指定の際には、その四角形の左上をデータを並べる開始位置として、右下の一点を終了位置として送信します。
図 6?73 液晶のRAMの行番号と列番号
***再トレース 各セル部分の「00」などの記載は不要 塗りつぶしも不要 真ん中の「128x....」という枠も不要 comumnsは「列」linesは「行」 ST7735データシート(Sitronix)より***
例えば16ピクセル×16ピクセルの大きさの文字を、その文字の左上を0x22行・0x3A列に合わせて表示したい場合には、左上を(0x22,0x3A)、右下を(0x42,0x5A)と指定します。
なお「左上」と「右下」の位置を指定すると書きましたが、これは送信データの表示順序を変更していない場合です。今回のサンプルプログラムでは、BMPファイルを表示させるためにデータの表示順序を変えています。そのため今回は左下を開始位置として右上を終了位置として指定します。
ST7735に各位置を指定する際には、CASET (2Ah)コマンドで列の開始位置と終了位置を、RASET (2Bh)コマンドで行の開始位置と終了位置を指定します。
さてここではBMPファイルを画面いっぱいに表示させるわけですから、本来であればST7735のRAM領域部分の左上から見た128ピクセル×128ピクセルのエリアに対応する一番左下と一番右上の位置を指令すればよいはずです。ただZY-FGD1442701V1は、ST7735のRAM領域と実際の表示位置が微妙にずれています。また上下反転をするしないで指定位置が変わります。筆者が試したところでは、以下のように位置を指定すると、画面の左下から右上までぴったりとデータを収めることができました。
//Set RAM address for inverted mode ST7735_Write_Command(0x2A); ST7735_Write_Data(0x00); ST7735_Write_Data(0x02); ST7735_Write_Data(0x00); ST7735_Write_Data(0x81);
ST7735_Write_Command(0x2B); ST7735_Write_Data(0x00); ST7735_Write_Data(0x01); ST7735_Write_Data(0x00); ST7735_Write_Data(0x80); |
Previous: 2.4.7.1. ボトムアップ |
Up: 2.4.7. プログラムによる処理 |
Next: 2.4.7.3. ピクセルデータの送信 |