Ardino基础教程 16_一位数码管
實驗十六:一位數碼管
數碼管是一種常見的普遍的顯示數字的顯示器件,日常生活中例如:電磁爐,全自動洗衣機,太陽能水溫顯示,電子鐘……等等數不甚數。說以掌握數碼管的顯示原理,是很有必要的。
數碼管是一種半導體發光器件,其基本單元是發光二極管。數
碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極管單元(多一個小數點顯示),本實驗所使用的是八段數碼管。按發光二極管單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM 接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM 接到地線GND 上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。
數碼管的每一段是由發光二極管組成,所以在使用時跟發光二極管一樣,也要連接限流電阻,否則電流過大會燒毀發光二極管的。本實驗用的是共陰極的數碼管,共陰數碼管在應用時應將公共極接到GND,當某一字段發光二極管的陽極為低電平時,相應字段就點熄滅。當某一字段的陽極為高電平時,相應字段就點亮。
實驗器材清單
介紹完原理,我們開始準備實驗用元器件。
實驗原理圖
數碼管共有七段顯示數字的段,還有一個顯示小數點的段。當讓數碼管顯示數字時,只要將相應的段點亮即可。例如:讓數碼管顯示數字1,則將b、c 段點亮即可。將每個數字寫成一個子程序。在主程中每隔2s 顯示一個數字,讓數碼管循環顯示1~8 數字。每一個數字顯示的時間由延時時間來決定,時間設置的大些,顯示的時間就長些,時間設置的小些,顯示的時間就短。
參考程序源代碼:
//設置控制各段的數字IO 腳
int a=7;//定義數字接口7 連接a 段數碼管
int b=6;// 定義數字接口6 連接b 段數碼管
int c=5;// 定義數字接口5 連接c 段數碼管
int d=10;// 定義數字接口10 連接d 段數碼管
int e=11;// 定義數字接口11 連接e 段數碼管
int f=8;// 定義數字接口8 連接f 段數碼管
int g=9;// 定義數字接口9 連接g 段數碼管
int dp=4;// 定義數字接口4 連接dp 段數碼管
void digital_0(void) //顯示數字5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
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
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,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;
digitalWrite(a,HIGH);
digitalWrite(b, LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,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 digital_9(void) //顯示數字5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
}
void setup()
{
int i;//定義變量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//設置4~11 引腳為輸出模式
}
void loop()
{
while(1)
{
digital_0();//顯示數字1
delay(1000);//延時1s
digital_1();//顯示數字1
delay(1000);//延時1s
digital_2();//顯示數字2
delay(1000); //延時1s
digital_3();//顯示數字3
delay(1000); //延時1s
digital_4();//顯示數字4
delay(1000); //延時1s
digital_5();//顯示數字5
delay(1000); //延時1s
digital_6();//顯示數字6
delay(1000); //延時1s
digital_7();//顯示數字7
delay(1000); //延時1s
digital_8();//顯示數字8
delay(1000); //延時1s
digital_9();//顯示數字8
delay(1000); //延時1s
}
}
實驗現象
數碼管顯示0-9 循環顯示。
程序代碼
int a=7;//定義數字接口7 連接a 段數碼管 int b=6;// 定義數字接口6 連接b 段數碼管 int c=5;// 定義數字接口5 連接c 段數碼管 int d=10;// 定義數字接口10 連接d 段數碼管 int e=11;// 定義數字接口11 連接e 段數碼管 int f=8;// 定義數字接口8 連接f 段數碼管 int g=9;// 定義數字接口9 連接g 段數碼管 int dp=4;// 定義數字接口4 連接dp 段數碼管 void digital_0(void) //顯示數字5 { unsigned char j; digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e,HIGH); digitalWrite(f,HIGH); digitalWrite(g,LOW); digitalWrite(dp,LOW); } 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 { digitalWrite(g,HIGH); digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,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; digitalWrite(a,HIGH); digitalWrite(b, LOW); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,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 digital_9(void) //顯示數字5 { unsigned char j; digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); } void setup() { int i;//定義變量 for(i=4;i<=11;i++) pinMode(i,OUTPUT);//設置4~11 引腳為輸出模式 } void loop() { while(1) { digital_0();//顯示數字1 delay(1000);//延時1s digital_1();//顯示數字1 delay(1000);//延時1s digital_2();//顯示數字2 delay(1000); //延時1s digital_3();//顯示數字3 delay(1000); //延時1s digital_4();//顯示數字4 delay(1000); //延時1s digital_5();//顯示數字5 delay(1000); //延時1s digital_6();//顯示數字6 delay(1000); //延時1s digital_7();//顯示數字7 delay(1000); //延時1s digital_8();//顯示數字8 delay(1000); //延時1s digital_9();//顯示數字8 delay(1000); //延時1s } }總結
以上是生活随笔為你收集整理的Ardino基础教程 16_一位数码管的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ardino基础教程 15_火焰报警器
- 下一篇: Ardino基础教程 17_四位数码管