Basic Tutorial for Arduino, 入門篇

【Arduino入門教學課程】 第十五篇:七段顯示器程式範例

實驗說明:

  • 7段顯示器(Seven-segment display),是學習Arduino非常基礎的範例,本實驗會將每個數字寫成一個子程序。在主程序中每隔1s 顯示一個數字,讓顯示器循環顯示1~8 數字。
  • 數碼管按段數分為七段顯示器和八段顯示器,八段顯示器比七段顯示器多一個發光二極管單元(多一個小數點顯示)。
  • 八段顯示器分成共陽極和共陰極兩種,不管是哪一種,內部構造都是由 8 個 LED 發光二極體所組成,其中七個是筆劃,另外一個是小數點,如下圖所示,依順時針方向分別為 a, b, c, d, e, f, g 以及小數點 dp (decimal point)

材料:

  • Arduino Uno R3
  • USB 傳輸線
  • 一位八段顯示器
  • 麵包板
  • 麵包板跳線

 

👍爆款推薦:程式學習套件組 

購買網址:shop.mirotek.com.tw

程式:

//設置控制各段的數位IO脚
int a=7;//定義數位接口7 連接a 七段顯示器
int b=6;// 定義數位接口6 連接b 七段顯示器
int c=5;// 定義數位接口5 連接c 七段顯示器
int d=11;// 定義數位接口11 連接d 七段顯示器
int e=10;// 定義數位接口10 連接e 七段顯示器
int f=8;// 定義數位接口8 連接f 七段顯示器
int g=9;// 定義數位接口9 連接g 七段顯示器
int dp=4;// 定義數位接口4 連接dp 七段顯示器
void digital_1(void) //顯示數字1
{
  unsigned char j;
  digitalWrite(c,HIGH);//给數位接口5高電位,點亮c段
  digitalWrite(b,HIGH);//點亮b段
  for(j=7;j<=11;j++)//熄滅其余段
    digitalWrite(j,LOW);
  
  digitalWrite(dp,LOW);//熄滅小數點DP段
}
void digital_2(void) //顯示數字2
{
  unsigned char j;
  digitalWrite(b,HIGH);
  digitalWrite(a,HIGH);
  for(j=9;j<=11;j++)
    digitalWrite(j,HIGH);
  digitalWrite(dp,LOW);
  digitalWrite(c,LOW);
  digitalWrite(f,LOW);
}
void digital_3(void) //顯示數字3
{
  unsigned char j;
  digitalWrite(g,HIGH);
  digitalWrite(d,HIGH);
  for(j=5;j<=7;j++)
    digitalWrite(j,HIGH);
  
  digitalWrite(dp,LOW);
  digitalWrite(f,LOW);
  digitalWrite(e,LOW);
}
void digital_4(void) //顯示數字4
{
  digitalWrite(c,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  digitalWrite(dp,LOW);
  digitalWrite(a,LOW);
  digitalWrite(e,LOW);
  digitalWrite(d,LOW);
}
void digital_5(void) //顯示數字5
{
  unsigned char j;
  for(j=7;j<=9;j++)
    digitalWrite(j,HIGH);
  
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(dp,LOW);
  digitalWrite(b,LOW);
  digitalWrite(e,LOW);
}
void digital_6(void) //顯示數字6
{
  unsigned char j;
  for(j=7;j<=11;j++)
    digitalWrite(j,HIGH);

  digitalWrite(c,HIGH);
  digitalWrite(dp,LOW);
  digitalWrite(b,LOW);
}
void digital_7(void) //顯示數字7
{
  unsigned char j;
  for(j=5;j<=7;j++)
    digitalWrite(j,HIGH);
  digitalWrite(dp,LOW);
  for(j=8;j<=11;j++)
    digitalWrite(j,LOW);
}
void digital_8(void) //顯示數字8
{
  unsigned char j;
  for(j=5;j<=11;j++)
    digitalWrite(j,HIGH);
  digitalWrite(dp,LOW);
}
void setup()
{
  int i;//定义变量
  for(i=4;i<=11;i++)
    pinMode(i,OUTPUT);//設置4~11 引脚為輸出模式
}

void loop()
{
  while(1)
  {
    digital_1();//顯示數字1
    delay(2000);
    digital_2();//顯示數字2
    delay(1000); 
    digital_3();//顯示數字3
    delay(1000); 
    digital_4();//顯示數字4
    delay(1000); 
    digital_5();//顯示數字5
    delay(1000); 
    digital_6();//顯示數字6
    delay(1000);
    digital_7();//顯示數字7
    delay(1000);
    digital_8();//顯示數字8
    delay(1000);
  }
}

 

 

 

 

 

 

 

相關文章