导航:首页 > 操作系统 > 单片机流水灯亮了

单片机流水灯亮了

发布时间:2022-05-22 07:09:50

A. 单片机流水灯全亮,我亦有同样问题在看见最佳回答后仍不知如何解决,附网上搜索的最佳回答于问题补充中

单片机默认复位后或者上电后的所有引脚输出都为高电平,这是为了方便读取数据。所以,你的单片机在上电之后就是全亮,因为你的LED灯是正极接在了单片机的输出口上了,LED的负级接的地。这样芯片上电后,灯就全亮了。有可能你的芯片没有设置上电复位电路,就是说程序并没有在芯片上电之后就运行。所以就停在灯全亮这里了。单片机有上复位引脚,有的是上电后高电平脉冲复位,有的是低电平脉冲复,你用的时候要看一下对应型号的芯片手册上是怎么表示的。复位引脚的引脚名上有一个横线说明是低电平复位,没有横线说明是高电平复位。电上复位就是加一个电容和阻组成,上电时的这个高电平或者低电平的脉冲时间的要求(一般是12个机器周期),让芯片复位。这个时候单片机才完成开始硬件时钟和寄存器初始化同步,接下来才能正常运行程序。
还有一种情况就是你用的是P0口,没有接上拉电阻,P0口只有低电平没有高电平。

B. 单片机流水灯实验原理

上一节我们介绍了什么是总线的方法,以及如何通过十六进制来控制IO口。并把我们的之前单点操作的流水灯进行了改进,成为了一个新的更加简洁的程序。这回,就再用总线方法,来实现流水灯的更加多样化的操作。

这次,我们要实现正向流水结束后再反过来流水,如此循环。然后再间隔闪烁。然后再累积流水,最后结束。

正向流水结束,再反过来。这个如何实现呢,我们需要使用到一些运算方法。

第一个是移位指令<<。

由于数字对比不强,看的不是很清晰,所以把数字给换成红色了。

<<这个标志符的意思是,向左移动一位,就像下边这样:

1111 1111》1111 111_

移动完成后,会发现,最低位空出来了,此时程序会自动去填补一个0。于是就成了:

1111 1111》1111 111_》1111 1110

第一次移位1111 1110,第二次在第一次基础上移位1111 1100,第三次在第二次基础上移位1111 1000,如此循环,就可以一直把所有位都变成0。

我们在看下一句"|",这个符号是或的意思,我们知道,逻辑中的或,是说只要有其一为一,结果就是一。所以,我们把1100|0001,结果就是头两个一和最后一个一留下来,第三位因为都是0,所以就是0.结果就是1101了。当再次移位后,数据就变成1010了,我们再次跟0001取或,最后一位就再次置1,结果就是1011,从结果上看,1110》1101》1011……就是0在不断的左移。

通过这个方法,可以让每一位都会单独置零。然后再给以一定时间的延时,就会看到流水灯了。

如果我们不赋初值0xfe会出现什么情况?

就会出现,移位产生一个0,在或运算时就会被重新置1,如此循环,就进入不到第二个LED,也就不会出现流水灯了。可以自己尝试下。

向右流水,效果是一样的,需要注意的是初值更改为左侧为0,就是0x7f,0111 1111,然后移位符号>>,还有取或的语句需要用0x80,1000 0000.

基本上是在左移位的基础上稍作修改即可。

接下来是闪烁的。

闪烁,我们用的是间隔LED的方法,就是隔一个亮一个,端口输出是1010 1010。翻译成十六进制就是0xaa。这次用到的是一个取反的运算,就是把每一位的0变成1,1变成0,然后延时一段时间,再次取反,循环几个周期,就看起来像是不断闪烁。取反的操作相对好理解一些,就是这一位,现在是1,那么取反后就是0,就是0和1的变换。

最后是一个累积点亮LED。

这个程序就是把第一个我们向左移位的函数,进行了更改,取消了赋初值,不用取或了,这样就可以对比着理解,各个语句的作用,如果不使用,会产生什么结果。如果我们的第一个函数不用取或这一步,那最终输出结果就和这个现象一样了。

所以,我们在写程序时,需要认真,仔细分析自己需要的结果,然后对照程序进行简单的演算。保证每一段都是可以输出想要的结果,不然累积到最终,几百行的代码,看起来就会头疼的,尤其是在没有标注释的情况下,有时就会忘记自己为什么要写这一句。

好的,这篇先说到这里,有问题或建议可以留言或私信给我。

想了解更多精彩内容,快来关注小亮谈电气

更多多内容,欢迎关注百家号:小亮谈电气。微信公众号:电气学苑。

C. 单片机蜂鸣器响三下停止,流水灯亮

单片机蜂鸣器响三下停止,流水灯亮,出现这样的情况是系统出了问题,在预警报警,所以你要把机器关掉进行检查维修。

D. 单片机流水灯全亮在灭在亮的程序怎么写

你流水灯都写好了 全亮全灭还不简单啊,设置 P0=0X00 (假设低电平亮,高电平灭) 在延迟一下 在P0=0XFF 在延时 不就OK了 把这几个指令打包下放到一个子程序里 你用按键控制的时候就让按键执行这个子程序 如果是 主程序循环的 话就放进主程序

E. 单片机流水灯

P0口控制,先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;不过这个程序实现的应该是这样的
先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动;再从中间往两边流动(延时0.1s)
#include< reg52.h>
#include< intrins.h>//头文件
#define uint unsigned int
#define uchar unsigned char//声明用unit代替unsigned int,下个同理
void delay();
void main()
{ uchar temp,temp1,temp2,a,b;
while(1)
{ for(b=3;b>0;b--)
{ temp=0xaa;
P0=temp;
delay();
temp=0x55;
P0=temp;
delay();//调用延时函数
}
for(a=3;a>0;a--)
{ temp=0xfe;
for(b=7;b>0;b--)
{ P0=temp;
temp=_crol_(temp,1);
delay();
P0=temp;
delay();
}
}
temp1=0xfe;
temp2=0x7f;
for(a=8;a>0;a--)
{
temp=temp1&temp2;
P0=temp;
delay();
temp1=_crol_(temp1,1);
temp2=_cror_(temp2,1);
}
}
}
void delay()
{ uint a,b;
for(a=100;a>0;a--)
for(b=100;b>0;b--);
} //延时函数
希望可以帮助到您

谢谢

F. 单片机8个流水灯从led8亮到led1每次亮一个并保存已亮灯状态

摘要 这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:

G. 单片机点亮八位共阳极流水灯,阳极开路,灯也亮,但不是很亮,阳极接vcc后,就很亮了,什么原因呢

正常,这是虚电多少伏,因为正极对车身没有通路,量出来的都是悬空的虚电。

H. 51单片机通电后流水灯一直亮着,且一直响,这是为什么

哥们描述清楚一点 芯片刚刚上电会留存原来的程序 可能原来芯片里就有流水灯和蜂鸣器的程序

I. 单片机 流水灯怎样全部闪烁 五次之后停止

可以用for循环试试unsingned char i;for(i=0;i<5;i++)//流水灯闪烁程序。

若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能。

集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

J. 52单片机中用中断程序中有的流水灯中断结束后怎么还亮着

把P1=0xff放到while循环里 是正解 这样是不会导致数码管闪烁的 因为没看到电路图,但是程序应该是没有问题的,你可以将程序改回原来的样子在试试看,如果数码管不闪烁,那么就用改用边沿触发方式吧,程序还原不变在EX0=1后面加上 TCON=1;就行了

阅读全文

与单片机流水灯亮了相关的资料

热点内容
一个女程序员的声音 浏览:491
魔术app怎么用 浏览:338
单片机有4个8位的io口 浏览:895
win10rar解压缩软件 浏览:164
plc教程pdf 浏览:668
pythonshell清屏命令 浏览:279
检测到加密狗注册服务器失败 浏览:204
解压后手机如何安装 浏览:518
极客学院app为什么下架 浏览:13
图片批量压缩绿色版 浏览:651
东北程序员帅哥 浏览:707
加密封条风噪小 浏览:974
安阳少儿编程市场 浏览:499
云服务器建设原理 浏览:259
javajunit4for 浏览:847
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:720
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:89
苏州云存储服务器 浏览:179