專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino學(xué)習(xí)筆記:倒計(jì)時(shí)讀數(shù)器

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月30日   【字體:

本次實(shí)驗(yàn)制作一個(gè)倒計(jì)時(shí)讀數(shù)器。

1.一位共陰數(shù)碼管,限流電阻,短跳線9根(各色),長(zhǎng)跳線黑1根。

2.實(shí)物連接時(shí),從Arduino根的digital口2至口9用各色短跳線接至共陰數(shù)碼管的a\b\c\d\e\f\g針腳,從Arduino的power口GND接出黑色長(zhǎng)跳線至共陰數(shù)碼管的com針腳。

3.連接圖如下,

 

 

4.讀共陰數(shù)碼管的a\b\c\d\e\f\g針腳,使之點(diǎn)亮的原理說(shuō)明:

共陰數(shù)碼管的com腳接GND,當(dāng)其它各針腳接入高電平時(shí),該字段點(diǎn)亮。

    如:點(diǎn)亮a段,  a=1,b=0,c=0,d=0,e=0,f=0,g=0,h=0

    如:顯示數(shù)字8,a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=0

    如:顯示數(shù)字5,a=1,b=0,c=1,d=1,e=0,f=1,g=1,h=0

整理出數(shù)字0-9的顯示字段,形成一張二維數(shù)組表:

        a

0- 0, 0, 1, 1, 1, 1, 1, 1

1- 0, 0, 0, 0, 0, 1, 1, 0
2- 0, 1, 0, 1, 1, 0, 1, 1
3- 0, 1, 0, 0, 1, 1, 1, 1
4- 0, 1, 1, 0, 0, 1, 1, 0
5- 0, 1, 1, 0, 1, 1, 0, 1
6- 0, 1, 1, 1, 1, 1, 0, 1
7- 0, 0, 0, 0, 0, 1, 1, 1
8- 0, 1, 1, 1, 1, 1, 1, 1
9- 0, 1, 1, 0, 1, 1, 1, 1

 

5.代碼

-----------------------------------------

#include

//IO命名

#define SEG_a 2    

#define SEG_b 3
#define SEG_c 4
#define SEG_d 5
#define SEG_e 6
#define SEG_f 7
#define SEG_g 8
#define SEG_h 9

unsigned char table[10][8] =
{
 {0, 0, 1, 1, 1, 1, 1, 1},   //0
 {0, 0, 0, 0, 0, 1, 1, 0},   //1
 {0, 1, 0, 1, 1, 0, 1, 1},   //2
 {0, 1, 0, 0, 1, 1, 1, 1},   //3
 {0, 1, 1, 0, 0, 1, 1, 0},   //4
 {0, 1, 1, 0, 1, 1, 0, 1},   //5
 {0, 1, 1, 1, 1, 1, 0, 1},   //6
 {0, 0, 0, 0, 0, 1, 1, 1},   //7
 {0, 1, 1, 1, 1, 1, 1, 1},   //8
 {0, 1, 1, 0, 1, 1, 1, 1}   //9
};

void setup()
{
 pinMode(SEG_a,OUTPUT);    //設(shè)置引腳為輸出
 pinMode(SEG_b,OUTPUT);
 pinMode(SEG_c,OUTPUT);
 pinMode(SEG_d,OUTPUT);
 pinMode(SEG_e,OUTPUT);
 pinMode(SEG_f,OUTPUT);
 pinMode(SEG_g,OUTPUT);
 pinMode(SEG_h,OUTPUT);
}

void loop()
{
 unsigned char i;

 for( i = 10 ; i > 0 ; i--)    //循環(huán)顯示0-9
 {
  digitalWrite(SEG_a,table[i-1][7]); //設(shè)置a引腳的電平
  digitalWrite(SEG_b,table[i-1][6]);
  digitalWrite(SEG_c,table[i-1][5]);
  digitalWrite(SEG_d,table[i-1][4]);
  digitalWrite(SEG_e,table[i-1][3]);
  digitalWrite(SEG_f,table[i-1][2]);
  digitalWrite(SEG_g,table[i-1][1]);
  digitalWrite(SEG_h,table[i-1][0]);

  delay(1000);      //延遲1s
 }
}

------------------------------------------

二維數(shù)組表從table[0][0]開(kāi)始存儲(chǔ)內(nèi)容,至table[9][7]結(jié)束。為防止循環(huán)變量在執(zhí)行過(guò)程中i--,變?yōu)樨?fù)數(shù),影響下一輪的loop,因此在讀二維數(shù)組表時(shí)用i-1小技巧。

 

6.實(shí)驗(yàn)視頻,如下:

 

7.改進(jìn)讀數(shù)器

 

關(guān)閉窗口

相關(guān)文章