数电课设

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

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

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

实验选用单片机: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);
}

  

不一样的烟火
原文地址:https://www.cnblogs.com/cstdio1/p/11143722.html