其实客厅玄关流水灯怎么设计的问题并不复杂,但是又很多的朋友都不太了解使用数组流水灯的设计思路,因此呢,今天小编就来为大家分享客厅玄关流水灯怎么设计的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
很简单啊
你没有说是用C语言编写还是用汇编啊
(汇编我还没学)
=======================
电路可以这样设计,
①P3口接4*4矩阵键盘或是直接接8个按键。
②P0口、P2口合起来共16个I/O口,直接接16个发光二级管。
注意I/O口接三极管的负极,三极管正极串上一个1K的保护电阻,然后接+5V。
别忘了P2口的上拉电阻,用10*8的排阻就行(排阻公共端接+5V)
其他的就是复位电路、晶振、电源、程序下载口了,都比较简单,而且都是固定模式。
指示灯直接用发光二级管串分压电阻接到电源就行了。
电源可以用7805稳压(输入电压>5V时),或者直接用5V电就行了。
=====================================================================
写程序方面:
数量比较多,流水灯设计宜用位操作,
①流水灯
for(i=0;i<7;i++)
{
P2=~pow(2,i);delay(500);
}
这样就是8位流水灯了
剩下的8个一样。
delay是一个延时函数,就是让单片机空转消耗时间,可以这样
delay(inttime)
{intx=0,y=0;
for(x=0;x for(y=0;y<100;y++); } ②16灯逐个点亮。 P2=0xff;(开始8个灯都灭) for(i=0;i<7;i++) { P2=P2--;(每次点亮一盏灯) delay(500); } 这样就可以8位的流水灯 另外8个接下来一样的方法点亮, 这样就是16灯逐个点亮。 ============ ③逐渐点亮一个灯 用延时长短来控制 sbitP20=P2^0; intm=500 for(i=0;i<500;i++) { P20=1;delay(m);(灭P2.0口的灯) P20=0;delay(500-m);(亮P2.0口的灯) m--; } 这样就可以500级渐亮一个灯了。 渐灭类似。 ④A-D-A 循环可以用for()来实现 或者直接来有条件跳转。 goto就行了 ========================= 说的比较零碎,自己整合一下就OK; 急求数电流水灯电路设计,不用单片机 没有时间做设计,给你个思路。 你要求的灯从中间向2边流水,因此对称的2个发光管并接,那么就是4个灯。 1。振荡设计。可用555,典型振荡电路就可以,可调振荡频率。 2。加法器。555输出接一个2位2进制加法器, 3。一个译码器。可用74138。 4。译码器使用前4个输出端口经三极管放大,每个三极管驱动2个LED。 使用数组流水灯的设计思路 流水灯是一种经常见到的电子实验,可以用来显示数字线路中的时序控制。单流水灯的设计思路: 定义一个包含所有LED灯状态的数字组,如: intLEDs[8]={0,0,0,0,0,0,0,0}; 其中,数组中的每个元素都代表一个LED灯的状态,0表示灭,1表示亮。 定义一个循环,每次循环将数组中的元素向左移动一位,如: 对于(inti=7;i>0;i--){LEDs[i]=LEDs[i-1];?} 将数字组中的第一个元素设置为0或1,表示流水灯的方向,如: LED[0]=0;//从右向左LEDs[0]=1;?//从左向右 将数字组中的元素输出到LED灯上,如: 对于(inti=0;i<8;i++){digitalWrite(LEDs[i],HIGH);?延迟(100);digitalWrite(LEDs[i],LOW);?} 其中,digitalWrite()函数用于控制LED灯的亮灭,delay()函数用于控制LED灯的闪烁速度。 将以上步骤放入一个while循环中,使流动水灯可以一直闪熄下去,如: while(1){for(inti=7;i>0;i--){LEDs[i]=LEDs[i-1];?}LED[0]=0;?对于(inti=0;i<8;i++){digitalWrite(LEDs[i],HIGH);?延迟(100);digitalWrite(LEDs[i],LOW);?}} 这样就可以实现一个简单的流水灯了。当需要修改LED灯的数量或者流水灯的速度时,只需要修改数字组和delay()函数的参数即可。 多功能流水灯的设计 从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。 实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。 从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。 实现8个LED流水灯汇编语言源程序liu01.asm ;-----主程序开始----- START:CLRP1.0;P1.0输出低电平,使LED1点亮 ACALLDELAY;调用延时子程序 SETBP1.0;P1.0输出高电平,使LED1熄灭 CLRP1.1;P1.1输出低电平,使LED2点亮 ACALLDELAY;调用延时子程序 SETBP1.1;P1.1输出高电平,使LED2熄灭 CLRP1.2;P1.2输出低电平,使LED3点亮 ACALLDELAY;调用延时子程序 SETBP1.2;P1.2输出高电平,使LED3熄灭 CLRP1.3;P1.3输出低电平,使LED4点亮 ACALLDELAY;调用延时子程序 SETBP1.3;P1.3输出高电平,使LED4熄灭 CLRP1.4;P1.4输出低电平,使LED5点亮 ACALLDELAY;调用延时子程序 SETBP1.4;P1.4输出高电平,使LED5熄灭 CLRP1.5;P1.5输出低电平,使LED6点亮 ACALLDELAY;调用延时子程序 SETBP1.5;P1.5输出高电平,使LED6熄灭 CLRP1.6;P1.6输出低电平,使LED7...余下全文>> 文章到此结束,如果本次分享的客厅玄关流水灯怎么设计和使用数组流水灯的设计思路的问题解决了您的问题,那么我们由衷的感到高兴!
for(y=0;y<100;y++);
②16灯逐个点亮。
P2=0xff;(开始8个灯都灭)
P2=P2--;(每次点亮一盏灯)
delay(500);
这样就可以8位的流水灯
另外8个接下来一样的方法点亮,
这样就是16灯逐个点亮。
============
③逐渐点亮一个灯
用延时长短来控制
sbitP20=P2^0;
intm=500
for(i=0;i<500;i++)
P20=1;delay(m);(灭P2.0口的灯)
P20=0;delay(500-m);(亮P2.0口的灯)
m--;
这样就可以500级渐亮一个灯了。
渐灭类似。
④A-D-A
循环可以用for()来实现
或者直接来有条件跳转。
goto就行了
=========================
说的比较零碎,自己整合一下就OK;
没有时间做设计,给你个思路。
你要求的灯从中间向2边流水,因此对称的2个发光管并接,那么就是4个灯。
1。振荡设计。可用555,典型振荡电路就可以,可调振荡频率。
2。加法器。555输出接一个2位2进制加法器,
3。一个译码器。可用74138。
4。译码器使用前4个输出端口经三极管放大,每个三极管驱动2个LED。
流水灯是一种经常见到的电子实验,可以用来显示数字线路中的时序控制。单流水灯的设计思路:
定义一个包含所有LED灯状态的数字组,如:
intLEDs[8]={0,0,0,0,0,0,0,0};
其中,数组中的每个元素都代表一个LED灯的状态,0表示灭,1表示亮。
定义一个循环,每次循环将数组中的元素向左移动一位,如:
对于(inti=7;i>0;i--){LEDs[i]=LEDs[i-1];?}
将数字组中的第一个元素设置为0或1,表示流水灯的方向,如:
LED[0]=0;//从右向左LEDs[0]=1;?//从左向右
将数字组中的元素输出到LED灯上,如:
对于(inti=0;i<8;i++){digitalWrite(LEDs[i],HIGH);?延迟(100);digitalWrite(LEDs[i],LOW);?}
其中,digitalWrite()函数用于控制LED灯的亮灭,delay()函数用于控制LED灯的闪烁速度。
将以上步骤放入一个while循环中,使流动水灯可以一直闪熄下去,如:
while(1){for(inti=7;i>0;i--){LEDs[i]=LEDs[i-1];?}LED[0]=0;?对于(inti=0;i<8;i++){digitalWrite(LEDs[i],HIGH);?延迟(100);digitalWrite(LEDs[i],LOW);?}}
这样就可以实现一个简单的流水灯了。当需要修改LED灯的数量或者流水灯的速度时,只需要修改数字组和delay()函数的参数即可。
从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
实现8个LED流水灯汇编语言源程序liu01.asm
;-----主程序开始-----
START:CLRP1.0;P1.0输出低电平,使LED1点亮
ACALLDELAY;调用延时子程序
SETBP1.0;P1.0输出高电平,使LED1熄灭
CLRP1.1;P1.1输出低电平,使LED2点亮
SETBP1.1;P1.1输出高电平,使LED2熄灭
CLRP1.2;P1.2输出低电平,使LED3点亮
SETBP1.2;P1.2输出高电平,使LED3熄灭
CLRP1.3;P1.3输出低电平,使LED4点亮
SETBP1.3;P1.3输出高电平,使LED4熄灭
CLRP1.4;P1.4输出低电平,使LED5点亮
SETBP1.4;P1.4输出高电平,使LED5熄灭
CLRP1.5;P1.5输出低电平,使LED6点亮
SETBP1.5;P1.5输出高电平,使LED6熄灭
CLRP1.6;P1.6输出低电平,使LED7...余下全文>>
文章到此结束,如果本次分享的客厅玄关流水灯怎么设计和使用数组流水灯的设计思路的问题解决了您的问题,那么我们由衷的感到高兴!
装修装饰价格不透明,量房、设计、报价为何还能全程免费
如何在众多北京室内装修设计公司中挑选出靠谱的一家上土巴兔看本地装修公司靠谱吗
2022年廊坊全新装修明细表报价是否真的透明化
济南装修公司的4选1方案真能帮业主装修省钱30%吗
2020年家庭装修预算报价表全新出炉,你想知道都有哪些项目吗
2021年旧房装修,如何制定高性价比预算清单