2015年5月25日 星期一

課程18-數位七段顯示器

目的:

使用Arduino 控制共陽極七段顯示器,顯示0~9數值。

電子元件:

麵包板 x 1
Arduino 主板 x 1
共陽極七段顯示器 x1

電路圖:



程式碼:

  1. #define LedHigh 0
  2. #define LedLow 1
  3. const int led[] = {4,5,6,7,8,9,10};//a,b,c,d,e,f,g
  4. const byte seven_seg_digits[10][7] = {
  5. {LedHigh,LedHigh,LedHigh,LedHigh,LedHigh,LedHigh,LedLow},//0
  6. {LedLow,LedHigh,LedHigh,LedLow,LedLow,LedLow,LedLow},//1
  7. {LedHigh,LedHigh,LedLow,LedHigh,LedHigh,LedLow,LedHigh},//2
  8. {LedHigh,LedHigh,LedHigh,LedHigh,LedLow,LedLow,LedHigh},//3
  9. {LedLow,LedHigh,LedHigh,LedLow,LedLow,LedHigh,LedHigh},//4
  10. {LedHigh,LedLow,LedHigh,LedHigh,LedLow,LedHigh,LedHigh},//5
  11. {LedHigh,LedLow,LedHigh,LedHigh,LedHigh,LedHigh,LedHigh},//6
  12. {LedHigh,LedHigh,LedHigh,LedLow,LedLow,LedLow,LedLow},//7
  13. {LedHigh,LedHigh,LedHigh,LedHigh,LedHigh,LedHigh,LedHigh},//8
  14. {LedHigh,LedHigh,LedHigh,LedHigh,LedLow,LedHigh,LedHigh}//9
  15. };
  16. void setup(){
  17. for(int i=0;i<=8;i++){
  18.   pinMode(led[i],OUTPUT);
  19. }
  20. }
  21. void sevenSegWrite(byte digit){
  22.  for(byte seg=0;seg<=6;seg++){
  23.   digitalWrite(led[seg],seven_seg_digits[digit][seg]);
  24.  }
  25. }
  26. void loop(){
  27.  for(byte digit=0;digit<=9;digit++){
  28.    delay(500);
  29.    sevenSegWrite(digit);
  30.  }
  31.  delay(1000);
  32. }

程式說明

第一行~第二行 定義LedHigh 為0、LedLow 為1。
第三行 使用陣列對應七段的a、b、c、d、e、f、g 和 Arduino Pin4、5、6、7、8、9、10腳位
第四行~第十五行 使用二維陣列,宣告數字0~9分別對應的LED區段,參考下列圖表。
第十六行~第二十行 使用一個For 迴圈宣告Led 腳位為輸出腳位。
第二十一行~第二十五行 使用一個Function(sevenSegWrite),來處理七段顯示的數字,會傳入要顯示的數字。
第二十二行~第二十四行 使用一個For 迴圈,分別對七個led(a、b、c、d、e、f、g)做設定。
第二十三行 依據傳入的數字,設定每一個LED腳位的狀態,亮或暗。
第二十六行~第三十二行 為主程式
第二十七行~地三十行 使用For 迴圈,讓七段顯示器,顯示0~9的數值。
第二十八行 延遲0.5秒。
第二十九行 把要顯示的數字傳到sevenSegWrite 函式作處理。
第三十一行 延遲1秒。

圖表:
共陽極七段顯示器,0 到 9 這十個阿拉伯數字與各節段的對應表如下:
顯示數字
dp
a
b
c
d
e
f
g
0
0
1
1
1
1
1
1
0
1
0
0
1
1
0
0
0
0
2
0
1
1
0
1
1
0
1
3
0
1
1
1
1
0
0
1
4
0
0
1
1
0
0
1
1
5
0
1
0
1
1
0
1
1
6
0
1
0
1
1
1
1
1
7
0
1
1
1
0
0
0
0
8
0
1
1
1
1
1
1
1
9
0
1
1
1
1
0
1
1

實驗影片:



沒有留言:

張貼留言

Arduino、Raspberry Pi、System Integration,如有問題或建議,可以互相討論喔~