本来这次数电的课设实验器件是如下图所示的:
但是对于连线多的,我真的看着就烦,所以我就用单片机做的(原谅我的懒。。。。。。。。)
单片机相对于那些器件最大的好处就是可编程,改东西只是改代码而不是连线的方式
实验选用单片机: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);
}