您的位置 首页 国产IC

流水灯规划的几个程序

第一个程序:让流水灯,从左到右,第一个灯,一瞬间到最高亮度,然后降到最低亮度,之后,就是前两个灯重复第一个灯的情况,然后是前三个灯,然后是

第一个程序:让流水灯,从左到右,第一个灯,一会儿到最高亮度,然后降到最低亮度,之后,便是前两个灯重复第一个灯的状况,然后是前三个灯,然后是前4个灯,直到悉数完结
程序如下:
#include
delay(k)//延时函数
{
while(k–)
{}
}

voidmain(void)//主函数
{
unsignedintt=25000,n=1;
P1=0xfe;
for(n = 1;n<=7;n++)//可读性进步
{
delay(t);
P1=(0xfe<delay(t);
P1=0XFF;
}
}
开端的时分不会用位运算,把每一步都写出来(一闪一灭,每一次都是用赋值来表明),数着到那一个闪耀,
代码很杂乱,经过提示后,然后经过位运算,大大化简了代码的数量,并且可读性进步不少..
过错的原因是:不了解编译言语是否能够像c言语相同编译,想了一会,就用杂乱的代码去写出这个程序.

第二个程序:让流水灯,从右到左,第一个灯从暗到明,然后到最亮程度就坚持住这个状况,然后第二个灯紧接着从暗到明,然后是第3个灯,以此类推直到全亮,然后团体平息.
程序如下:

#include
delay(k)//延时函数
{
while(k–)
{}
}

voidmain(void)//主函数
{
unsignedintn=1,i=1;//都最终要看看那些是变量,那些是常量
const int t = 600;


P1=0XFF;
for(n = 1;n<9;n++)
{
for(i=1;i<=t;i++)
{
delay(t-i);//经过每一次循环暗的时刻削减
P1=(0XFF>>n);
delay(i);//经过每一次循环,亮的时刻增多,在人的眼睛看来就能够逐渐增亮
P1=(0XFF>>(n-1));
}
}
P1=0XFF;
delay(25000);
}
开端的时分,以为经过闪耀次数和平息的次数相同,然后最终就亮了,就能够算是由暗到亮了,这个主意到最终烧写发现改变太快了,由暗到亮的进程不算表明出来,呈现了最丧命的过错…
其实咱们主要是在亮和暗的时刻方面做了缓慢的改变就能够表明有暗到亮的进程….

第三个程序:让流水灯,从左到右,第一个灯,从暗到明,然后亮度再降下来,然后是接下一个灯,便是顺次明暗亮一个灯,一次只亮暗一个
程序如下:
#include

delay(k)//一个延时的函数
{
while(k–)
{}
}

voidmain()//主函数
{
unsignedintdark=0xfe,i=1,n=1;
constintt=600;//爱惜内存啊,不变的能够用常量来表明

P1=0xff;
for(n=1;n<=8;n++)
{
for(i=1;i{
P1=0XFF;
delay(t-i);
P1=(dark);
delay(i);
}
for(i=i;i>0;i–)//由亮到暗
{
delay(t-i);
P1=(dark);
delay(i);
P1=0XFF;
}
dark=(dark<<1)+1;//向左位移后,最右补0,假如没有+1,那就会亮起来,没有一次只亮一个
}
}
开端的时分,也是想到用加法去表明出来,用0xff<在其间,for中的句子有一些可读性不高的句子for(;n<9;n++),这些句子,在看程序的时分就要找出那个现已赋值的n在那里,是什么值..最终就把他改为for(n = 1;n<9;n++)
在其间有一个常量用了变量的方式去表明,这个是占用内存的过错,因而,每一次写,就要想好这个量是用常量仍是用变量,假如是常量,能够用宏的方式去表明,也能够用const 去表明..用宏更简单保护


最终,我想下一次,每一次烧写我的程序之前,都会用流水灯的程序运转运转一次,保证灯的连线闭路的…
并且,写完运转之后,就找找那些变量是不是变了,是不是能够用常量表明.
自己看自己的程序,是不是能够一路看到最终,走到那个一步是要找出他的巨细..会有费事,不方便…就看是否能够进行修正…

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/259350.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部