微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > PCB设计问答 > PCB设计学习讨论 > 想自己编个51单片机32位流水灯,简单的让全部灯点亮居然无法实现,硬件没有问题

想自己编个51单片机32位流水灯,简单的让全部灯点亮居然无法实现,硬件没有问题

时间:10-02 整理:3721RD 点击:
今天上午搞了好久,发现个奇怪的现象,让全部口置零,板子没有反应,如果让三个P口都置零,也没反应,让两个P口置零的话,板子就有反应了,比如P1,P0置零,能亮,P2,P3置零,能亮,P0,P2置零,能亮,P1,P3置零,能亮,就是让三个P口置零就没有反应,只是怎么回事啊

IMG_20161023_094500.jpg

Y)A@5]{W]XL)J@[%}V{@(VC.png(15.45 KB, 下载次数: 0)

下载附件 保存到相册

2016-10-23 09:48 上传

Y)A@5]{W]XL)J@[%}V{@(VC.png

      这个问题还用说吗?
1    若你用的是AT89SXX单片机,这个现象就不会出现了!因为AT89SXX单片机[b]每个I/O口的驱动电流为[b]20mA;
2    若你用的是STC单片机,这个现象就是必然的!因为STC单片机全部I/O口的驱动电流为100mA左右
      这就是差距!差距!差距!

大哥,单片机输出信号带不动吧

想法挺好,很浪漫,但是
1、如果二极管没有串接限流电阻,长时间开机会把单片机端口烧坏的;
2、如果没有驱动,单片机的所有引脚一下子吸入的总电流是有限的,所以三个以上的引脚输出0时,就不亮了;
建议:
1、在每个二极管串接一个1K的电阻;
2、在每个单片机端口增加一个ULN2803,增加驱动;

可我下网上的32位程序也能亮啊

有限流电阻的,在背面,你说的那个驱动就不是很明白,我在网上下的程序就能点亮,就是因为这样才觉得很奇怪

网上下载的程序可以点亮?自己写的点不亮?


网上的可能用的是扫描实现的,每次只点亮一组,四组轮换点亮,间隔时间短看起来就好像一起亮了改成这样试试
while(1)
{
P0=0;
P0=1;
P1=0;
P1=1;
P2=0;
P2=1;
P3=0;
P3=1;
}

坛友一针见血呀  佩服之至

朋友客气、客气。我只是这方面比较熟悉罢了。

我的爱心灯接510欧的电阻,电阻有点小,总电流过高,所以无法驱动,原来如此,谢谢坛友

建议用三极管驱动的啊

一般少量的灯是可以用引脚直接控制点亮的,但大量的灯不要这样做。理论上是可以这么做的,但实际要考虑控制芯片总的吸入电流或输出电流的限制。这个譬如说:一般芯片手册上会说它的每个引脚都可以输出20mA电流,可直接驱动发光二极管,但实际上当所有引脚一起工作时总电流就会很大,芯片无法提供这么大的电流,导致无法正常工作。
加驱动是每个引脚接到ULN2803的输入端,1-8号引脚,每个二极管分别接到11-18号引脚,当然二极管的限流电阻还是要的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top