专注电子技术学习与研究
当前位置:单片机教程网 >> Arduino >> 浏览文章

Arduino学习笔记:倒计时读数器

作者:huqin   来源:本站原创   点击数:  更新时间:2014年04月30日   【字体:

本次实验制作一个倒计时读数器。

1.一位共阴数码管,限流电阻,短跳线9根(各色),长跳线黑1根。

2.实物连接时,从Arduino根的digital口2至口9用各色短跳线接至共阴数码管的a\b\c\d\e\f\g针脚,从Arduino的power口GND接出黑色长跳线至共阴数码管的com针脚。

3.连接图如下,

 

 

4.读共阴数码管的a\b\c\d\e\f\g针脚,使之点亮的原理说明:

共阴数码管的com脚接GND,当其它各针脚接入高电平时,该字段点亮。

    如:点亮a段,  a=1,b=0,c=0,d=0,e=0,f=0,g=0,h=0

    如:显示数字8,a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=0

    如:显示数字5,a=1,b=0,c=1,d=1,e=0,f=1,g=1,h=0

整理出数字0-9的显示字段,形成一张二维数组表:

        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);    //设置引脚为输出
 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--)    //循环显示0-9
 {
  digitalWrite(SEG_a,table[i-1][7]); //设置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
 }
}

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

二维数组表从table[0][0]开始存储内容,至table[9][7]结束。为防止循环变量在执行过程中i--,变为负数,影响下一轮的loop,因此在读二维数组表时用i-1小技巧。

 

6.实验视频,如下:

 

7.改进读数器

 

关闭窗口

相关文章