mdsk.net
当前位置:首页 >> 单片机protEus 的8位流水灯,LED灯不亮,只是旁边的小点亮,怎么回事啊?求大神指教啊 >>

单片机protEus 的8位流水灯,LED灯不亮,只是旁边的小点亮,怎么回事啊?求大神指教啊

图画错了.1.二极管支路中的电阻,阻值太大了,应改成 470欧姆~1K左右.2.二极管,你画的方向,是向右的,那么,左边就不应该接地了,应该接上+5V.

检测一下输入的电压是否过低,以及LED的正负极接线问题.

1、51单片机的P0口用作IO口时,应该增加上拉电阻,否则不能正常输出高电平. 2、51单片机的拉电流(输出电流)能力很弱,灌电流能力较强.拉电流不足以驱动发光二极管,灌电流则可以. 3、应该将电阻接地端改为接电源,LED负极接P0口,这样,输出低电平时,LED正常发光. 检查一下单片机的晶振和复位电路,看看单片机是否工作了. 用Proteus仿真时,单片机的RST复位引脚是不起作用的,即在RST引脚加高电平,单片机也不会复位的,要实现相当于复位的功能,可以在某个I/O引脚加一个按钮,当这个按钮按下时,就回到第一行程序执行就可以了.

如果与proteus联调的时候,说代码没有加进去的原因是你keil软件没有生成hex文件.确实如楼上所说,你led确实接反了.

电阻R1~R7与地线的连接端,是电阻引脚直接与上面的横导线相接触的吧?这样是不通的,在电阻的每个引脚上都必须画一段导线与上面的横导线相连,连接后应该出一个结点.而你的仿真图没有,说明这7个电阻没接到地线上.用proteus画仿真图时,元件的每个引脚都必须有一段导线与其它元件或电路相连才行,不能用引脚直接连接.见下图,所有按键右边都有一个结点(那个小红点),这样才行的.

没有任何问题如果你是第一次用proteus,那么我有理由怀疑你是LED用错了那个带箭头的发光LED是不会发光的,要用RGB那三种LED如图:用你的程序仿真的,能跑

别用总线画,P2口的8个引脚分别就接每一个LED灯好了.用总线画,要求P2口的每个引脚和每个LED引脚加网络标号,你的仿真图上有数字1~8,但不知道是不是用LBL加的.如下图,这样加网络 标号,这样就亮了,可以这样简化的.

假如说,第一个灯肯定比第二个灯亮的话,可以直接把8个LED灯的限流电阻弄成不同阻值的.就像楼上说的那样.但如果想随便变换不同的灯都能有不同的亮度话,硬件电路可以不变,限流电阻都一样.可以在程序里这样写:首先,例如你要最亮的灯先点亮,隔几十微秒后点亮第二个灯,再相隔同样时间点亮第三个灯……依次类推间隔一定时间点亮八个灯.但间隔时间不要太大,超过十几毫秒就不行了.然后再间隔相同的时间一次性把灯全关了,再间隔几十微秒回到上面的状态依次点亮灯.……一直这样循环.这样的话因为人的视力有一定的滞回效果,只要间隔时间不大,你就能看到八个灯不是闪的,而是同时亮,但亮度又不一样. 这是单片机设计中,PWM控制的思路.

P1口共有8个IO控制口,分别控制8个LED灯,你的目的是做流水灯,也就是让其依次循环点亮,第一次点亮第一个灯,即:P1.0=0,其余为1即P=0xfe;第二次点亮第二个灯,即:P1.1=0,其余为1即P=0xfd;依次类推.=_crol_(a,1)实现的功能就是循环左移,相当于汇编语言的RL A;这样就可以实现a的值分别为:0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f.

这种情况下灯不亮有几种原因:1、原理图是否正确:看看电源是否接上去、led正负极是否接对.2、限流电阻是否偏大,一般proteus默认电阻为10k,调小一点,比如100 最好贴原理图出来看看.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com