zoukankan      html  css  js  c++  java
  • 数电课设

    本来这次数电的课设实验器件是如下图所示的:

    但是对于连线多的,我真的看着就烦,所以我就用单片机做的(原谅我的懒。。。。。。。。)

    单片机相对于那些器件最大的好处就是可编程,改东西只是改代码而不是连线的方式

    实验选用单片机:arduino

    引脚图:

    连线方式:

     

    代码如下:

    //经过修改后的code 
     
     int LED1=6;//arduino8个led灯 
     int LED2=7;
     int LED3=8; 
     int LED4=9;
     int LED5=10;
     int LED6=11;
     int LED7=12;
     int LED8=13;
     int n,i,j,t,cnt=0;//t代表时间 
    void setup()//设置各个引脚的初始状态 
    { 
    for(n=6;n<=13;n++)
    {
      pinMode(n,OUTPUT);//初始化引脚为输出状态  
    }
    }
    
    void loop() //就是c语言的main中的while(1)函数的入口 
    {
      if(cnt%2==0) t=1000;
      else t=2000;    
      style1();//按LED1-8顺序点亮,按8-1顺序熄灭
      clean();  //灭掉所有灯
      style2();//按LED1-8顺序点亮,按1-8顺序熄灭
      clean();//灭掉所有灯
      style3();//骚气的花色 
      clean();//灭掉所有灯
      cnt++;
    } 
    
    void style1()  //花色1:按LED8~1顺序点亮,按1~8顺序熄灭
    {
    for(n=LED8;n>=LED1;n--)
    {
       digitalWrite(n,HIGH);
        delay(t);
    }
    
    for(n=LED1;n<=LED8;n++)
    {
        digitalWrite(n,LOW);
        delay(t);
    }
    }
    //花色 2:4,5号灯先亮,然后3,6号再亮,接着2,7号亮,最后1,8号亮。
    //        1,8号灯先灭,然后2,7号熄灭,接着3,6号灭,最后4,5号灭。 
    void style2()
    { 
         int j,k;
         k=1;//设置k的初值为1
         for(j=LED4;j>=LED1;j--)//
         {
           digitalWrite(j,HIGH);//点亮灯
           digitalWrite(j+k,HIGH);//点亮灯
           delay(t);//延时tms
           k +=2;//k值加2
         }
         k=7;//设置k值为7
         for(j=LED1;j<=LED4;j++)
         {
           digitalWrite(j,LOW);//熄灭灯
           digitalWrite(j+k,LOW);//熄灭灯
           delay(t);//延时tms
           k -=2;//k值减2
         }
    }
    
    void style3()//花色三 
    {
    digitalWrite(LED1,HIGH);//初始状态:LED1和LED8依次点亮 
    digitalWrite(LED8,HIGH);
    delay(t);
    i=LED7,j=LED2;//i从右到左,j从左到右 
    while(i>=LED5&&j<=LED4)//从两侧依次点亮led 
    {
    digitalWrite(j,HIGH);
    //delay(t);    
    digitalWrite(i,HIGH);
    delay(t);
    i--;j++;    
    }i=LED5;j=LED4;
    while(i<=LED8&&j>=LED1)//从中间向两侧依次熄灭led 
    {
    digitalWrite(i,LOW);
    //delay(t);    
    digitalWrite(j,LOW);
    delay(t);    
    i++;j--;        
    } 
        
    
    }
    
    void clean()
    {  
    for(n=6;n<=13;n++)
    {
      digitalWrite(n,LOW);
    }
    //delay(10);
    }

      

    不一样的烟火
  • 相关阅读:
    jdbc preparedstatement 调用存储过程的问题
    httpclient 优化
    httpclient 4种关闭连接
    Cloudstack介绍(一)
    Docker registry私有仓库(七)
    Docker生产实践(六)
    python装饰器
    Docker镜像构建(五)
    python 生成器和迭代器介绍
    Docker数据管理(四)
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11143722.html
Copyright © 2011-2022 走看看