【Arduino基礎】一位數碼管實驗

實驗現象
使用arduino直接驅動一位數碼管依次顯示數子0-9.
理論學習
數碼管是一種半導體發光器件,其基本單元是發光二極管。數碼管按 段數分爲七段數數碼管和八段數數碼管,八段數數碼管比七段數數碼管多一個發光二極管單元(多一個小數點顯示) 發光二極管單元連接方式分爲共陽數碼管和共陰數碼管。共陽數碼管是指將所有發光二極管的陽極連接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極 PWR 接到電源輸入 PWR 上,當某一字段發光二極管的陰極爲低電平時,相應字段就點亮。當某一字段的陰極爲高電平時,相應字段就不亮。共陰數碼管則更好相反,陰極連接到一起形成了公共陰極,陽極是獨立分開的。本實驗使用的是共陽數碼管。數碼管和發光二極管一樣,需要添加限流電阻,因爲網上沒有查到資料說明該數碼管的擊穿電壓是多大。所以供給電源電壓寧可小不可大,所以選擇 220Ω 限流電阻,和 3.3V供電。
在這裏插入圖片描述
圖1 八段數數碼管
在這裏插入圖片描述
圖2 八段數數碼管原理圖
實驗準備
arduino主板-1
麪包板-1
數據線-1
一位數碼管-1
220Ω電阻-1
跳線若干
連接電路
在這裏插入圖片描述
實驗代碼

int a=7; 
int b=6; 
int c=5; 
int d=11; 
int e=10; 
int f=8; 
int g=9; 
int dp=4;
//顯示數字 0 
void digital_0(void) 
{ 
unsigned char j; 
for(j=5;j<=11;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(g,HIGH); 
}  
//顯示數字 1 
void digital_1(void) 
{ 
unsigned char j; 
digitalWrite(c,LOW);//給數字 5 引腳低電平,點亮 c 段
digitalWrite(b,LOW);//點亮 b 段
for(j=7;j<=11;j++)//熄滅其餘段
digitalWrite(j,HIGH); 
digitalWrite(dp,HIGH);//熄滅小數點 DP 段
} 
//顯示數字 2 
void digital_2(void) 
{ 
unsigned char j; 
digitalWrite(b,LOW); 
digitalWrite(a,LOW); 
for(j=9;j<=11;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(c,HIGH); 
digitalWrite(f,HIGH); 
} 
//顯示數字 3 
void digital_3(void) 
{ 
unsigned char j; 
digitalWrite(g,LOW); 
digitalWrite(d,LOW); 
for(j=5;j<=7;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(f,HIGH); 
digitalWrite(e,HIGH); 
} 
//顯示數字 4 
void digital_4(void) 
{ 
digitalWrite(c,LOW); 
digitalWrite(b,LOW); 
digitalWrite(f,LOW); 
digitalWrite(g,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(a,HIGH); 
digitalWrite(e,HIGH); 
digitalWrite(d,HIGH); 
} 
//顯示數字 5 
void digital_5(void) 
{ 
unsigned char j; 
for(j=7;j<=9;j++) 
digitalWrite(j,LOW); 
digitalWrite(c,LOW); 
digitalWrite(d,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(b,HIGH); 
digitalWrite(e,HIGH); 
} 
//顯示數字 6 
void digital_6(void) 
{ 
unsigned char j; 
for(j=7;j<=11;j++) 
digitalWrite(j,LOW); 
digitalWrite(c,LOW); 
digitalWrite(dp,HIGH); 
digitalWrite(b,HIGH); 
} 
//顯示數字 7 
void digital_7(void) 
{ 
unsigned char j; 
for(j=5;j<=7;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH); 
for(j=8;j<=11;j++) 
digitalWrite(j,HIGH); 
} 
//顯示數字 8 
void digital_8(void) 
{ 
unsigned char j; 
for(j=5;j<=11;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH); 
} 
//顯示數字 9 
void digital_9(void) 
{ 
unsigned char j; 
for(j=5;j<=11;j++) 
digitalWrite(j,LOW); 
digitalWrite(dp,HIGH);
digitalWrite(e,HIGH); 
} 
void setup() 
{ 
int i;//定義變量
for(i=4;i<=11;i++) 
pinMode(i,OUTPUT);//設置 4~11 引腳爲輸出模式
} 
void loop() 
{ 
while(1) 
{
digital_0();//數字 0 
delay(2000);//延時 2s  
digital_1();//數字 1 
delay(2000);//延時 2s 
digital_2(); 
delay(2000); 
digital_3(); 
delay(2000); 
digital_4(); 
delay(2000); 
digital_5(); 
delay(2000); 
digital_6(); 
delay(2000); 
digital_7(); 
delay(2000); 
digital_8(); 
delay(2000); 
digital_9(); 
delay(2000); 
} 
}

實現效果
在這裏插入圖片描述

相關文章
【Arduino】基於一位數碼管制作數字骰子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章