女装市场网站建设费用评估,网站标签设置,页面设计需求需要做哪些方面?,h5建站网站一、序言#xff1a;下面我们来给大家介绍一下这个流水灯#xff0c;流水灯如何来实现#xff1f;我们依然使用这个工程来完成它。
1、那要使用实现这个流水灯#xff0c;那我们只需要让D1到D8逐个的点亮#xff0c;那同样要实现它足够的点亮#xff0c;也会涉及到延时下面我们来给大家介绍一下这个流水灯流水灯如何来实现我们依然使用这个工程来完成它。
1、那要使用实现这个流水灯那我们只需要让D1到D8逐个的点亮那同样要实现它足够的点亮也会涉及到延时那么这个延时的实现呢我们这里就不再重复。
2、那么要实现这个循环点亮呢可以最容易理解的方法就是点亮D1把D2到D8熄灭然后延时一段时间再点亮D2把D1D3到D8熄灭以此来类推以此类推那么这样就可以很简单的去实现LED流水灯。
3、当然我们不推荐这种方法在前面呢我们学习了C语言相关的这个基础知识我们知道里面有一个移位以及循环语句的操作那么根据流水灯实现的原理也就是I口是由D我们看到连接的D1是连接在P2.0D8是连接在P2.7那么他的要逐个的点亮是不是相当于我们的管脚P20P21P22P23。这个管脚相当于它是由低到高进行逐个的输出低电平的特点。那么我们可以将移位操作以及循环操作结合因为它要一个一个这样的操作就相当于循环八次对吗那怎么来实现这么一个代码呢。
4、首先我们先来介绍我们的移位和for语句的一个使用来让这个指示灯进行循环那么我们要让这个八个灯循环的一个点亮那我这里是不是要对这八个I口都要进行操作那为了方便我这里是通过一个宏定义宏定义的方式我就不单独定义广角号我就通过define那么在定义的这个宏的时候使用的这个C语言的一个语句呢是通过一个井号再加define这是关键字。
5、通常我们在定义宏定义的时候都会使用大写字母那我现在要定义控制八个灯那这八个灯是连接在PR端口的所以我这里是LED命名为LED端口。在哪里P2。这里是使用宏定义的方式将我们的P2端口定义定义P2端口是连接我们的LED所以这里直接可以代替P2来使用如果说我们客户自己使用别的开发板你可能连接到P0或者P1那你只需要改这个端口名称就可以了把这个2改成0或者1。那这样我们后续的代码都是用这个就不需要再改了这样就提高了我们的代码的一个移植性移植性和兼容性。
4、接下来我们再来进行一个循环的一个操作如何来让它进行一个循环点亮。LED要实现一个跑马灯是不是要在不断地循环不断的循环呢那我们的代码依然是要放在while循环里面不断的让它在这里反复的进行操作。
5、那要进行一个循环我们就要一个一个的点亮那这里就要用到for循环for循环它的条件是我们就要用一个变量来u8类型因为这个条件我只要循环8次所以定一个字节的变量就足够了我们定一个i吧定义个i那么这个i呢我们起到一个次数的一个累加到for循环里面
6、首先for语句我们前面说过第一个是它的一个初始条件我们i0,I就是它的一个循环条件循环一个条件I小于8说明等一下我们后面是i。就是说我们每一次这个加了一次又要跳到这个条件来对比如果是满足它进行就会进入到我们的for语句里面执行它的循环体这相当于我们要执行8次每一次是只加1的i1那么就相当于循环8次了。
7、那么这循环体里面怎么实现呢我们看一下首先让D1指示灯点亮D1指示灯点亮是不是P20输出一个低电平那么接着延迟一段时间让D2指示灯点亮D2指示灯是不是让这个P21输出低电平其他的输出高电平。这里我们可以写一下首先我们让其输出低电平其他的输出高电平延迟一段时间之后D2指示灯点亮D2输出低电平其他的输出高电平。以此类推相当于这个0是不是一直往下一直往下的移位。
8、通过发现的这个规律我们知道了其实就是将这个P2端口P2端口一直由低到高进行移位那么由低到高我们P2端口最低位是P2.0然后最高位就是P2.7所以我们要让这个零一直往前移那就相当于左移。
9、我们再回到这个PPt,我们单片机的管脚是P2.7是高位。P2.6要一直到P2.0这是对应的低位我们相当于我们的一个字节这是7位是最高的6543210这是低位所以我们由低到高位进行零相移动的话是不是从低位往高相当于左移。那么零往左移是不是就是这样零左移左移多少左移i这个i是跟着我们的这个循环的一个次数来的当i0的时候满足这个条件那进入循环体i是等于0这个0是不是相当于我们的i口所有的都是0因为它是8位如果只写一个0相当于8位都是0那这是不符合我们的一个功能要求我们只希望第一个P2.0为零其他的为1。
二、代码