“第二十课--Microduino 两位数码管倒计时显示/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 本教程将教大家在上一课静态显示的基础上动态倒计时显示数字,主要是代码上的改动。 ==设备== *'''...")
 
Pkj讨论 | 贡献
第1行: 第1行:
 +
{{Language|Lesson_20--Microduino_Two_Digital_Tube_Countdown_Display}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-

2014年3月5日 (三) 06:18的版本

Language English

目的

本教程将教大家在上一课静态显示的基础上动态倒计时显示数字,主要是代码上的改动。

设备



原理图

第二十课-Microduino 2位数码管倒计时原理图.jpg

引脚表

Microduino引脚 数码管引脚
D2 10(A)
D3 9(B)
D4 1(C)
D5 4(D)
D6 3(E)
D7 6(F)
D8 5(G)
9 2(DP)
D10 8(LED1)
D11 7(LED2)

程序

byte digit0 = 10;	//十位数Microduino pin
byte digit1 = 11;	//个位数Microduino pin
byte dotPin = 2;	//数码管小数点对应的pin

byte sevenSegmentPins[] = {2,3,4,5,6,7,8};	//A,B,C,D,E,F,G  对应的Microduino pin
byte sevenSegment[10][7] =
{
  //a b c d e f g
  { 0,0,0,0,0,0,1 },  // = 0
  { 1,0,0,1,1,1,1 },  // = 1
  { 0,0,1,0,0,1,0 },  // = 2
  { 0,0,0,0,1,1,0 },  // = 3
  { 1,0,0,1,1,0,0 },  // = 4
  { 0,1,0,0,1,0,0 },  // = 5
  { 0,1,0,0,0,0,0 },  // = 6
  { 0,0,0,1,1,1,1 },  // = 7
  { 0,0,0,0,0,0,0 },  // = 8
  { 0,0,0,1,1,0,0 }   // = 9
};

void setup()
{
	//初始化全部亮起
   pinMode(dotPin, OUTPUT); //pin 9
   pinMode(digit0, OUTPUT); //pin 10
   pinMode(digit1, OUTPUT); //pin 11

  for(int i=0; i<7; i++)
  {
    pinMode(sevenSegmentPins[i], OUTPUT);
  }
  digitalWrite(dotPin, HIGH);
  digitalWrite(digit0, HIGH);
  digitalWrite(digit1, HIGH);
}

//显示数字
void segmentWrite(byte digit)
{
  byte pin = 2;
  for (byte i=0; i<7; ++i)
  {
    digitalWrite(pin, sevenSegment[digit][i]);
      ++pin;
  }
}

void loop()
{

  for(int i=9;i>=0;i--) {//倒计时十位数
    for(int j=9;j>=0;j--) {//倒计时个位数
      
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 600; elapsed = millis() - startTime) {//持续显示600ms
          digitalWrite(digit0, LOW);   //熄灭十位数码管
          segmentWrite(j);             //显示个位
          delay(10);                  //10ms 延迟
          digitalWrite(digit0, HIGH);  //点亮十位数码管
          digitalWrite(digit1, LOW);   //熄灭个位数码管
          segmentWrite(i);             //显示十位
          delay(10);                  //10ms 延迟
          digitalWrite(digit1, HIGH);  //点亮个位数码管
      }
      
    }
  }

}

调试

步骤一:确定自己的数码管引脚

步骤二:把代码复制到IDE中,编译

步骤三:电路连接,我们用两位共阳数码管电路图照片如下:

第二十课-Microduino 2位数码管倒计时连接图.jpg

步骤四:运行代码

步骤五:看数码管显示


结果

数码管会从99倒计时到0,并循环下去。

视频

http://v.youku.com/v_show/id_XNjc4NjcxMzY0.html