Previous: 2.4.2. 接続方法 |
Up: 2.4. カラー液晶の利用 |
Next: 2.4.4. カラーバーの表示 |
サンプルプログラム |
gpio_st7735_solid_colors |
ST7735搭載液晶全体を同一色で塗りつぶしていくプログラムです。回路は表 6?19を参照して、マイコンボードとキャリーボードのピンを相互に接続してください。以下本書で紹介するST7735搭載液晶の回路は全て同じです。
ST7735に限らず、カラー液晶のコントローラチップは、初期化のためにたくさんのコマンドを送信する必要があります。これは設定しないといけない項目が多いからなのですが、本書では各項目の細かな解説は割愛します。細かく調整してみたい方は、ST7735のデータシートを参照してください。本書では液晶の初期化に必要なコマンドはまとめて関数化していますので(ST7735_Init関数)、とりあえずはこれを使用すれば、問題なく液晶を利用可能です。サンプルプログラムでは冒頭で以下のようにST7735_Init関数を実行しています。
ST7735_Init(); |
この関数のコードを見るとわかりますが、ST7735との通信は、モノクロ液晶で行ったのと同様、コマンドの送信と、データの送信に分かれます。いずれの通信も、①CSピンをアクティブ(Lレベル)にしてST7735を通信対象として選択する、②CDピンによってコマンドかデータかを指定する(Lレベル:コマンド/Hレベル:データ)、③パラレルバスにデータを出力する、④書き込みピンをアクティブ(Lレベル)にする、⑤待ち時間だけ待つ、⑥書き込みピン、CSピンをインアクティブ(Hレベル)に戻すという手順で行います。
サンプルプログラムでは、以下のようにデータの送信を関数化しています。コマンドの送信もCDの操作が違うだけで、他は同じです。
void ST7735_Write_Data(uint8_t data) { ? // Set CS? to 0 ? GPIO_ResetBits(GPIOY_0_PORT, GPIOY_0_PIN); ? // Set CD? to 1 ? GPIO_SetBits(GPIOY_1_PORT, GPIOY_1_PIN); ? // Set command to D0:D7 ? GPIO_Write(GPIOX_PORT, (GPIO_ReadOutputData(GPIOX_PORT) & 0xFF00) | data); ? // Set WR? to 0 ? GPIO_ResetBits(GPIOY_3_PORT, GPIOY_3_PIN); ? // Delay 40ns //? WAIT_3_CLOCK; ? // Set WR? to 1 ? GPIO_SetBits(GPIOY_3_PORT, GPIOY_3_PIN); ? // Set CS? to 1 ? GPIO_SetBits(GPIOY_0_PORT, GPIOY_0_PIN); } |
初期化が終わった後は、ST7735_Write_Data関数で、色データを送信するだけで、画像を表示できます。図 6?69のように2バイトで1ドット分の色データとなります。最初の1バイトでは赤のビット全部と、緑の後ろ3ビット分を送信し、次のビットでは緑の前3ビット分と青のビット全部を送信します。
図 6?69 色データの送信方法
***再トレース ST7735データシート(Sitronix)より***
2バイトのデータを送信すると、そのデータに対応する色が一番左上のドットに表示されます。あとは連続してデータを送信すれば、順番に右側のドットに表示されていき、右端まで行くと(128ドット分送信すると)、次の行になります(図 6?70)。
図 6?70送信したデータが画面に表示する順番
***再トレース 真ん中のFは削除ST7735データシート(Sitronix)より***
これを繰り返しておき128行分送信すれば、一枚の画像が完成します。つまり一枚の画像のために32768バイト送信したということになりますね(128×128×2)。
なおデータを送信する際には、その前にRAMWRコマンド(0x2C)を送信して、Memory Writeモードにしておきます。
ST7735_Write_Command(0x2C); |
サンプルプログラムではforループで画面全体分の色データを書き込んでいます。色のデータは予め変数にしておいたものを使用しており、色数分だけ1秒間隔でさらにループさせています。
Previous: 2.4.2. 接続方法 |
Up: 2.4. カラー液晶の利用 |
Next: 2.4.4. カラーバーの表示 |