ゆるく楽しむプログラミング

7セグメントLED:7セグメントドライバ TC4511BP の使い方

7セグメントLEDは7個のセグメトで数字を表示するLEDの集合です。
各セグメントにはa~gとDP(decimal point:小数点)の名称がふられています。
各LEDがカソーカソード側で接続されているカソードコモンと、アノード側で接続されているアノードコモンのモノがあります。
各セグメントは普通にLEDなので、扱い方も普通のLEDと同じです。
流量制限に抵抗を付けないと過電流で壊れます。



7セグメント制御用IC

7セグメントLEDに数字を表示する専用のIC(TC4511BP)を使用する事で数字を簡単に表示できます。
※複数の7セグメントLEDを使用する場合は数字以外のA~F,H,L等を表示したい場合にはシフトレジスタを使用します。
   A,B,C,D :入力
a,cb,c,d,e,f,g,:出力

LT BI LE 出力状態
L a~gの全てがHIGH 
H a~gの全てがLOW
A~Dの入力に対応してa~gが変化 

入力と出力の対応:D,B,C,Aは2進数表現の0~9の数値(AがLSB)


接続図

7セグメントドライバの出力ピンa~gと7セグメントLEDのa~gを接続します。
DPは7セグメントドライバでは操作できません。




7SEG-Driver.zip
※ <>を全角<>に置き換えています。コピペの際は注意してください。
#define SEGA 4
#define SEGB 5
#define SEGC 6
#define SEGD 7

void disp7Seg(int num) {
  digitalWrite(SEGA,(((num & 0x01) != 0) ? HIGH : LOW)) ;
  digitalWrite(SEGB,(((num & 0x02) != 0) ? HIGH : LOW)) ;
  digitalWrite(SEGC,(((num & 0x04) != 0) ? HIGH : LOW)) ;
  digitalWrite(SEGD,(((num & 0x08) != 0) ? HIGH : LOW)) ;
}

void setup() {
  pinMode(SEGA,OUTPUT) ;
  pinMode(SEGB,OUTPUT) ;
  pinMode(SEGC,OUTPUT) ;
  pinMode(SEGD,OUTPUT) ;

  digitalWrite(SEGA,LOW) ;
  digitalWrite(SEGB,LOW) ;
  digitalWrite(SEGC,LOW) ;
  digitalWrite(SEGD,LOW) ;
} 

void loop() {
  for (int i=0;i<=9;i++) {
      disp7Seg(i) ;
      delay(1000) ;
  }
}

解説動画