ST7735(パラレル)で遊ぶ7(1か月から3か月の長期記事)ATM0177B5



タイミングチャート


![o_cop528.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/333761b2-81d3-5973-3f08-b77d81cde278.jpeg)


![IMG_2147.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/3b1faed0-e6c0-a364-2a83-f0f4b15f6950.png)


解説


チップセレクトをlowにする

データまたは、コマンドをセットする

8ビットのデータを正しくセットする

ライト信号を立ち上げて
チップセレクト、
データまたは、コマンド、
8ビットのデータを
ラッチさせてレジスターに書き込む。


![o_cop529.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/8e27458a-1f67-a213-4fe8-1e054ca0cac2.jpeg)




プログラム(人間用に超スロー　だって人間だもの　みつお?)



```c++




//GPIO_st7735_writ_test1_767_1

#define DW digitalWrite 



void GPIO_D13(int s)
{

  digitalWrite(13,s);

} //GPIO_D13

void GPIO_D12(int s)
{

  digitalWrite(12,s);

} //GPIO_D12


void GPIO_D11(int s)
{

  digitalWrite(11,s);

} //GPIO_D11


void GPIO_D10(int s)
{

  digitalWrite(10,s);

} //GPIO_D10


void GPIO_D9(int s)
{

  digitalWrite(9,s);

} //GPIO_D9


void GPIO_D8(int s)
{

  digitalWrite(8,s);

} //GPIO_D8




void GPIO_D0_D7(int s)
{

  digitalWrite(7, (s>>7) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(6, (s>>6) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(5, (s>>5) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(4, (s>>4) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(3, (s>>3) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(2, (s>>2) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, (s>>1) & 0x01);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(0, s & 0x01);       // turn the LED on (HIGH is the voltage level)
  
} //GPIO_D0_D7


void GPIO_D8_D13_cls()
{

  digitalWrite(13,0);
  digitalWrite(12,0);
  digitalWrite(11,0);

  digitalWrite(10,0);
  digitalWrite(9,0);
  digitalWrite(8,0);

} //GPIO_D8_D13_cls()

//ライト

void WriteDAT(int a)
{
  GPIO_D12(0);//CS=0; 12
  GPIO_D9(0);//A0=0; 9
  GPIO_D0_D7(a);//P1=a; data
  GPIO_D10(0);//WRB=0; 10
  delay(3000);//delay20us();
  GPIO_D10(1);//WRB=1; 10
  GPIO_D12(1);//CS=1;  12
} //WriteDAT


void WriteCOM(int a)
{
  GPIO_D12(0);//CS=0; 12
  GPIO_D9(1); //A0=1; 9
  GPIO_D0_D7(a);//P1=a; data
  GPIO_D10(0);//WRB=0; 10
  delay(3000);//delay20us();
  GPIO_D10(1);//WRB=1; 10
  GPIO_D12(1);//CS=1; 12
} //WriteDAT



void setup() {


  // initialize digital pin LED_BUILTIN as an output.
  pinMode(PB7, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);


  // initialize digital pin LED_BUILTIN as an output.
  //pinMode(PB7, OUTPUT);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);


//test

  GPIO_D13(0);
  GPIO_D12(0);
  GPIO_D11(0);
  GPIO_D10(0);
  GPIO_D9(0);
  GPIO_D8(0);

  delay(1000);


  GPIO_D13(1);
  GPIO_D12(1);
  GPIO_D11(1);
  GPIO_D10(1);
  GPIO_D9(1);
  GPIO_D8(1);

  delay(3000);

  GPIO_D13(0);
  GPIO_D12(0);
  GPIO_D11(0);
  GPIO_D10(0);
  GPIO_D9(0);
  GPIO_D8(0);

  delay(1000);

//ポートの初期化

  GPIO_D13(1);//未接続1=1
  GPIO_D12(1);//CS=1
  GPIO_D11(0);//RD=0
  GPIO_D10(0);//WR=0
  GPIO_D9(0);//RS=0
  GPIO_D8(1);//RESET=1


  delay(3000);


} //setup

void loop() {

//startデータデータデータデータデータデータデータデータ

  digitalWrite(PB7, HIGH);

  delay(1000);

  //データの書き込み
  GPIO_D0_D7(0); //データの初期化
  delay(1000);

  WriteDAT(0x01);
  delay(1000);

  digitalWrite(PB7, LOW);
  delay(4000);

//endデータデータデータデータデータデータデータデータ




//startコマンドコマンドコマンドコマンドコマンドコマンド

  digitalWrite(PB7, HIGH);

  delay(1000);

  //データの書き込み
  GPIO_D0_D7(0); //データの初期化
  delay(1000);

  WriteCOM(0x01);
  delay(1000);

  digitalWrite(PB7, LOW);
  delay(4000);

//endコマンドコマンドコマンドコマンドコマンドコマンド


} //loop





```