Arduino是一個非常方便好用的單晶片控制電腦,由於價格便宜而且連接輸出入裝置非常迅速方便,因為深受許多Maker的喜愛。Arduino要輸出一些訊息在練習的時候可以透過電腦螢幕來輸出,但是在實際應用上,當然不能還是倚賴電腦,因為它自己就是一台電腦呀。而除了使用LCD顯示器或是HMI顯示器輸出之外,一個最簡單的方式就是透過7段顯示器。

Arduino有許多輸出用的連接埠,7段顯示器顧名思義有7個LED,依照每一個LED的亮或不亮而組合出不同的數字或是幾個簡易的英文字母。大部份的教學都是讓Arduino其中的7個資料輸出拿來控制7段顯示器,然後把顯示數字的工作交給程式來設計。這樣的設計方法在電路上比較簡單,但是一次用掉7個資料輸出埠實在是太浪費了。為了節省輸出埠,我們可以在電路上多加上一個BCD解碼IC 7447,它的接收4個輸入,使用二進位的方式輸入(0000代表0,0001代表1,而1000代表8等等),然後它為自動輸出到7段顯示器的abcdefg腳位上所需要的位元編碼,非常方便。

我們所使用的材料為:

  • Arduino Uno R3相容板 x1
  • 麵包板 x1
  • 實心導線若干
  • 220歐姆電阻 x7
  • 共陽極7段顯示器 x1
  • 7447 IC x1

使用電阻的原因是為了避免因為電流過大把7段顯示器燒掉。Arduino之連線如下所示:

其中在POWER的地方把5V和GND連接到麵包板當做是電源,而資料線則是連線到2, 3, 4, 5 PIN,分別連到7447的ABCD四個資料輸入端。在麵包板上的連接線如下所示:

因為是共陽極的7段顯示器,所以要把7段顯示器的Vcc連接到5V的正電源處,而其它的abcdefg接腳則分別連接一個電阻之後再接到7447的abcdefg接腳,而7447這顆IC本身就需要電源,因此它的Vcc接5V,而GND就接到麵包板的GND就可以了。由於是隨便接接,所以一定要小心短路的問題。在接上電源之前,請再一次仔細確認連線。至於7447以及7段顯示器的腳位,則可以輕易地在網路中找到。

最後,最重要的程式如下:

byte bcd_code[10][4] = {
  {0,0,0,0},
  {0,0,0,1},
  {0,0,1,0},
  {0,0,1,1},
  {0,1,0,0},
  {0,1,0,1},
  {0,1,1,0},
  {0,1,1,1},
  {1,0,0,0},
  {1,0,0,1}
};

void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

}

void disp(byte d) {
  for(byte i=0; i<4; i++) {
    digitalWrite(5-i, bcd_code[d][i]);
  }
}
void loop() {
  
  for(byte i=0; i<10; i++) {
    disp(i);
    delay(1000);    
  }
}

由於7447這顆IC已經幫我們解碼了,所以在程式中只要送出二進位碼就好了。

(919)