tom 发表于 2012-10-20 09:32:21

数码管实验改成数字骰子实验

数码管实验改成数字骰子实验
根据’’迷你强’的arduino数码管实验’,再连接一个按纽,做成数字骰子实验.

徽型按纽 一端接5V,另一端接A0模拟端口.


为了使主程序便于观看,把显示数字的功能做成了子程序.

void digital_0(void)
{
/*==============显示数字0==========*/
int n0={0,0,0,0,0,0,1,1};
//定义数组通过0,1定义各数码管的明灭.

int z=0;
for (int x=2;x<=9;x++)
//采用循环方式方式点亮指定的数码管Led(数级中0为点亮),单位时间只点亮1个led
{
   digitalWrite(x,n0);
   z++;
//点亮led语句,X为引脚数 n0为数组z为0--8的变量,来依次读取数组中的值z++
   if (z>=9) //防止变量z累加超过了8
    z=0;
}
}

void digital_1(void)
{
/*=============display 1=========*/
int n1={1,0,0,1,1,1,1,1};
   int z=0;
for (int x=2;x<=9;x++)
   {
   digitalWrite(x,n1);
   z++;
   if (z>=9)
      z=0;
   }
}

void digital_2(void)
{

/*============display 2==========*/
int n2={0,0,1,0,0,1,0,1};
   int z=0;
for (int x=2;x<=9;x++)
{
    digitalWrite(x,n2);
    z++;
    if (z>=9)
   z=0;
}
}

void digital_3()
{
/*============dispaly 3=======*/
int n3={0,0,0,0,1,1,0,1};
intz=0;
for (int x=2;x<=9;x++)
   {
   digitalWrite(x,n3);
   z++;
   if (z>=9)
   z=0;
   }

}

void digital_4()
{
   /*=========display 4======*/
   int n4={1,0,0,1,1,0,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n4);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_5()
{   
   /*=========display 5======*/
   int n5={0,1,0,0,1,0,0,1};
   intz=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n5);
      z++;
      if (z>=9)
      z=0;
    }
}


    void digital_6()
{
         /*=========display 6======*/
   int n6={0,1,0,0,0,0,0,1};
   intz=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n6);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_7()
{
         /*=========display 7======*/
   int n7={0,0,0,1,1,1,1,1};
   intz=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n7);
      z++;
      if (z>=9)
      z=0;
    }
}

   void digital_8()

{
          /*=========display 8======*/
   int n8={0,0,0,0,0,0,0,1};
   intz=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n8);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_9()
{   
       /*=========display 9======*/
   int n9={0,0,0,0,1,0,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n9);
      z++;
      if (z>=9)
      z=0;
    }
}

   void digital_a()
{
            /*=========display a======*/
   int na={1,1,0,0,0,1,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,na);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_b()
{   
         /*=========display b======*/
   int nb={1,1,0,0,0,0,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nb);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_c()   
{
      /*=========display c======*/
   int nc={0,1,1,0,0,0,1,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nc);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_d()
{

         /*=========display d======*/
   int nd={1,0,0,0,0,1,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nd);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_e()
{

          /*=========display e======*/
   int ne={0,0,1,0,0,0,0,1};
int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,ne);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_f()
{   
         /*=========display F======*/
   int nF={0,1,1,1,0,0,0,1};
    int z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nF);
      z++;
      if (z>=9)
      z=0;
    }
}



初始参数设置

void setup()
{
   Serial.begin(9600);
   pinMode(13,OUTPUT);
   //激活13号引脚,我们需要用它供电
   for (int n=2;n<=9;n++)
    {
      pinMode(n,OUTPUT);
    }
}

循环内容

void loop()
{
digitalWrite(13,HIGH);
int temp;
temp=analogRead(A0);
   digital_0();
    while (analogRead(A0)>1000); //如果读到模拟口A0的值为1000说明有按键按下
      {Serial.println(temp); delay(100);}


   digital_1();
   while (analogRead(A0)>1000);
      {Serial.println(temp); delay(100);}   
   digital_2();
    while (analogRead(A0)>1000);
    {Serial.println(temp); delay(100);}
   
   digital_3();
       while (analogRead(A0)>1000);
   {Serial.println(temp); delay(100);}
   
   digital_4();
    while (analogRead(A0)>1000);
    {Serial.println(temp); delay(100);}
   
   digital_5();
    while (analogRead(A0)>1000);
    {Serial.println(temp); delay(100);}   
   
   digital_6();
    while (analogRead(A0)>1000);
    {Serial.println(temp); delay(100);}   
   digital_7();
    while (analogRead(A0)>1000);
   {Serial.println(temp); delay(100);}   


   digital_8();
    while (analogRead(A0)>1000);
       {Serial.println(temp); delay(100);}   

   digital_9();
    while (analogRead(A0)>1000);
      {Serial.println(temp); delay(100);}   

   digital_a();
    while (analogRead(A0)>1000);
       {Serial.println(temp); delay(100);}   
   digital_b();
    while (analogRead(A0)>1000);
   {Serial.println(temp); delay(100);}   
   digital_c();
    while (analogRead(A0)>1000);
       {Serial.println(temp); delay(100);}   
   digital_d();
    while (analogRead(A0)>1000);
       {Serial.println(temp); delay(100);}   
   
   digital_e();
    while (analogRead(A0)>1000);
       {Serial.println(temp); delay(100);}   

   
}

shenhaiyu 发表于 2012-10-20 14:56:39

这个图是VBB画的吗?

tom 发表于 2012-10-20 15:55:08

不是,是从原教程(数码管实验--迷你强 )图中取得图片,再在window附带绘图软件中添加的.
页: [1]
查看完整版本: 数码管实验改成数字骰子实验