Arduino UNO V3とST7735S(Parallel)でテスト表示する。(ATM0177B5)



参考　ST7735(パラレル)で遊ぶ まとめ(リンク集)

↓クリック↓


https://qiita.com/caa45040/items/4a66c0a0c9e78b73d043



X 過去ログを見よ!!
X 信号を9.1KΩ、2本で分圧する。

目的
パラレル8ビットのカラー液晶で遊ぶ

結果

![o_coq111.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/e6b071fe-9a1c-5ad8-4944-def4057bf6d0.jpeg)

![o_coq112.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/eb7a5fc8-2d1d-fcee-6238-fd4ec39ea83d.jpeg)

![o_coq115.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a29e20d2-8418-b5ed-e178-d4d1858241a9.jpeg)



プログラム


```c++



//GPIO_ST7735_TEST1_UNO_1


//インクルド
#include <Arduino.h>


//定義
//GPIO
#define GPIO1(s) digitalWrite( 2,s)  //RESET
#define GPIO2(s) digitalWrite(A5,s)  //A0
#define GPIO3(s) digitalWrite( 3,s)  //WR
#define GPIO4(s) digitalWrite(A4,s)  //RD


//パラレルポートにデータをセットする。
void GPIO_8BIT(int s)
{
  digitalWrite(A0, (s >> 7) & 0x01); //DB7
  digitalWrite( 7, (s >> 6) & 0x01); //DB6
  digitalWrite(A1, (s >> 5) & 0x01); //DB5
  digitalWrite( 6, (s >> 4) & 0x01); //DB4
  digitalWrite(A2, (s >> 3) & 0x01); //DB3
  digitalWrite( 5, (s >> 2) & 0x01); //DB2
  digitalWrite(A3, (s >> 1) & 0x01); //DB1
  digitalWrite( 4,  s       & 0x01); //DB0
} //GPIO_8BIT

//コマンドの書き込み
void LCD_Write_CMD(int a)
{
  GPIO2(0); //A0=0;
  GPIO_8BIT(a);//P1=a; data
  GPIO3(0);//WRB=0;
  GPIO3(1);//WRB=1;
} //LCD_Write_CMD


//データ書き込み
void LCD_Write_Data(int a)
{
  GPIO2(1);//A0=1;
  GPIO_8BIT(a);//P1=a; data
  GPIO3(0);//WRB=0;
  GPIO3(1);//WRB=1;
} //LCD_Write_Data

//液晶の初期化処理
void ATM0177B5_ST7735S_Init(void)
{

  //----------  ST7735S Reset Sequence  --------//

  GPIO1(1);//LCD_RESET=1;

  delay(1); //Delay 1ms

  GPIO1(0);//LCD_RESET=0;

  delay(1); //Delay 1ms

  GPIO1(1);//LCD_RESET=1;

  delay(120); //Delay 120ms

  //----------  ST7735S Reset Sequence  --------//


  LCD_Write_CMD(0x01);//SOFTWARE RESET
  delay(50);

  LCD_Write_CMD(0x11);//SLEEP OUT
  delay(200);

  LCD_Write_CMD(0x29);//display on
  delay(100);

  LCD_Write_CMD(0x3a);//Interface pixel format
  LCD_Write_Data(0x05);//16bit mode
  delay(100);

  LCD_Write_CMD(0x36);//RGB-RGR format
  LCD_Write_Data(0x08);//RGB mode
  delay(100);


  //画面の書き込み開始
  LCD_Write_CMD(0x2C); //memory write

  for (int i = 0; i < 128 * 10; i++) {
    LCD_Write_Data(0xff);
    LCD_Write_Data(0xff);
  }

  //RGB
  for (int i = 0; i < 128 * 10; i++) {
    LCD_Write_Data(0b11111000); //red
    LCD_Write_Data(0b00000000);
  }

} //ATM0177B5_ST7735S_Init


//初期化
void setup() {

  //ポートのモード設定
  //アウトプットモード
  pinMode( 2, OUTPUT); //REST
  pinMode(A5, OUTPUT); //RS
  pinMode( 3, OUTPUT); //WR
  pinMode(A4, OUTPUT); //RD

  pinMode( 4, OUTPUT); //DB0
  pinMode(A3, OUTPUT); //DB1
  pinMode( 5, OUTPUT); //DB2
  pinMode(A2, OUTPUT); //DB3

  pinMode( 6, OUTPUT); //DB4
  pinMode(A1, OUTPUT); //DB5
  pinMode( 7, OUTPUT); //DB6
  pinMode(A0, OUTPUT); //DB7

  //ポートの初期化
  GPIO4(1);//RD=1
  GPIO3(0);//WR=0
  GPIO2(0);//RS=0
  GPIO1(1);//RESET=1

  delay(500); //0.5秒待つ

  //液晶の初期化処理
  ATM0177B5_ST7735S_Init();

} //setup


//メインループ
void loop() {

/*
  GPIO1(0);
  GPIO2(0);
  GPIO3(0);
  GPIO4(0);delay(1000);

  GPIO1(1);delay(1000);//RESET=1
  GPIO1(0);delay(1000);//RESET=1

  GPIO2(1);delay(1000);//RS=0
  GPIO2(0);delay(1000);//RS=0

  GPIO3(1);delay(1000);//WR=0
  GPIO3(0);delay(1000);//WR=0

  GPIO4(1);delay(1000);//RD=1
  GPIO4(0);delay(1000);//RD=1


  GPIO_8BIT(0x01); delay(1000);
  GPIO_8BIT(0x02); delay(1000);
  GPIO_8BIT(0x04); delay(1000);
  GPIO_8BIT(0x08); delay(1000);

  GPIO_8BIT(0x10); delay(1000);
  GPIO_8BIT(0x20); delay(1000);
  GPIO_8BIT(0x40); delay(1000);
  GPIO_8BIT(0x80); delay(1000);

*/

/*
  while (1) {
    neopixelWrite(21, 0, 0, 0);
    delay(1000); //ダミー

    neopixelWrite(21, 64, 0, 0);
    delay(100); //ダミー
  }//while
*/

  delay(100); //ダミー

} //loop





```