2016年1月6日水曜日

TS119-3 制御デモ スケッチ

スケッチ

const byte pin_cs = 10;
const byte pin_wr = 9;
const byte pin_data = 8;

const byte sys_en = B00000001;
const byte rc_ocl = B00011000;
const byte bis_cm = B00101001;  // 1/3 bias 4 commons
const byte lcd_on = B00000011;  //commonsってなに?


void setup() {
  Bgn_ht();
}

void loop() {
  for (byte i=0; i<4; i++) {
    Dsp_on();
    delay(200);
    Dsp_cr();
    delay(200);
  }

  for (byte i=0; i<18; i++)
  {
    for (byte j=0; j<16; j++)
    {
      Dsp_dt (i, j);
      delay(50);
    }
  }

  delay(1000);
}

//----------各機能

       //---初期化---
void Bgn_ht()
{
  pinMode(pin_cs, OUTPUT);
  pinMode(pin_wr, OUTPUT);
  pinMode(pin_data, OUTPUT);

  digitalWrite(pin_cs, HIGH);
  digitalWrite(pin_wr, HIGH);
  digitalWrite(pin_data, HIGH);

  Wrt_cmd(sys_en);
  Wrt_cmd(rc_ocl);
  Wrt_cmd(bis_cm);
  Wrt_cmd(lcd_on);
}

       //---クリア---
void Dsp_cr()
{
  for (byte i=0; i<18; i++) { Dsp_dt(i, 0); }
}

       //---セグメント全灯---
void Dsp_on()
{
  for (byte i=0; i<18; i++) { Dsp_dt(i, B1111); }
}

       //---表示---
void Dsp_dt(byte adrs, byte data)
{
  digitalWrite(pin_cs, LOW);
  Wrt_bit(B101, 3);            //Write mode 101
  Wrt_bit(adrs, 6);
  Wrt_bit(data, 4);
  digitalWrite(pin_cs, HIGH);
}

       //---コマンド送信---
void Wrt_cmd(byte cmd)
{
  digitalWrite(pin_cs, LOW);
  Wrt_bit(B100, 3);            //Command mode 100
  Wrt_bit(cmd, 8);
  Wrt_bit(0, 1);               //任意
  digitalWrite(pin_cs, HIGH);
}

       //---bit毎送信---
void Wrt_bit(byte data, byte cnt)
{
  while (cnt) {
    digitalWrite(pin_wr, LOW);
    byte val = (data & (1 << (cnt - 1))) ? HIGH : LOW;
    digitalWrite(pin_data, val);
    digitalWrite(pin_wr, HIGH);
    cnt--;
  }
}

次のピンへ接続 CS:10、WR:9、DATA:8

その他

結局きりの良いところまで形にしてしまった。
おそらくaitendoのコードでは内蔵クロックを選択していないから上手くいかないのではなかろうか。(未検証)
TS119-5だとセグメントの入切がそれなりにわかるがTS119-3だと一部表示されていないような…
実際に使用する時によく実験しよう。

参考
Difference in "Byte" VS "uint8_t"... [日本語訳]

関連
TS119-3 テスト

0 件のコメント :

コメントを投稿