前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序利用keil工具对源程序进行编写和编译。再利用编程器编译好的文件烧写到到单片机进行演示验证。再将烧写好的AT89C52从编程器上取下在 放到‘S51增强型单片机实验板’进行
LOOP: MOV P1,A ;将A 的内容通过P1 口输出 CALL DELAY ;调延时子程序 RL A ;A 左移一位 SJMP LOOP DELAY: MOV R0, #80H ;延时子程序 DELAY1: MOV R1, #00H DELAY2: DJNZ R1, DELAY2 DJNZ R0, DELAY1 RET END
ORG 0000H AJMP MAIN ORG 0003H RETI MAIN: MOV P1,#0FFH LCALL DELAY MOV R1,#0 MOV DPTR,#TAB MAIN1: MOV A,R1 MOVC A,@A+DPTR MOV P1,A LCALL DELAY INC R1 CJNE R1,#8,MAIN1 AJMP MAIN DELAY: MOV R4,#08H DL01: MOV R3,#74H DL00: MOV R2,#0D6H DJNZ R2,DJN
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口, 对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用r1或rra实现位的转换。
连接的方法不对。原因可能是连接的方法不太对。你可以用8050的三极管做开关电路,三极管的基极接p2.0,然后用集电极通过led接5v电源,发射极通过220欧姆电阻接地。执行setbp2.0指令可以点亮led。
单片机中的亮灯实验电位有变化但灯不亮是什么原因
没成功可以从两方面找原因 1、可能是程序问题,注意程序的每个符号,空格都要和书上一样。2、如果是初学者最好不要画总线样式,最好一根线一根线的画
我们的核心是AT89C51单片机最小系统,其中包括8个LED灯、稳定工作的晶振,如图所示。每个LED的亮度控制权掌握在P1口的电平变换中,巧妙地调整即可实现动态的点亮效果。软件编程:点亮LED的艺术 流水灯的魅力在于其动态变化,而软件编程则是关键。这里,我们将采用位操作法,通过顺序控制P1口的位,实现LED的
2种,内部定时器。先给IO口一个亮灯的电平信号(是高是低,看你的电路而定)再启动定时器,定时一秒,中断执行关灯,这个要比第一种方法复杂。3.种,要求高精度,用到外部晶振。这个的话你深入学习了就会知道。初学者,建议第一种,比较容易理解。
点击右键……点击左键……选择自己要编译的c文件……
P0如果不等于0,默认就是高电平。看电路,P0为高时,LED负极是高电平时,不导通LED肯定不会亮 。
单片机LED灯不亮问题!(初学者)
你先要确定是的是P1.0接的发光二极管?如果不是那当然没用了。其次你要确定你的的硬件是高电平还是低电平亮发光二极管。我觉得是你没把硬件搞清楚。
你的问题应该是LS138没有正确使能;E1、E2的逻辑使能要求电平是相反的,不能连接在一起;修改如下:ENLED 连接 E1,ADDR3 连接 E2、E3(即E2、E3连接在一起);
首先从你给出的条件来说:你用sbit 声明led1来代表P1^0口,但是在主函数中却使用led来点亮,很明显这个是不行的,而且编译时会报错。再一个你要确定LED是连在P1口。最后,你要清楚是共阴还是共阳接法,这样决定是写1亮还是写0亮。不懂的地方随时回复我交流。希望我的回答能帮助到你。
LED肯定是低电平才会亮,,你看第一个二级制,1357亮,全是0,低电平。那第二个二进制必然是两头灭,中间量啦,你传个电路原理图上来吧,要不然不好分析。
可能是发光二极管的问题或接线问题,单片机坏的可能性不大。可以将接线调一下看是不是LED的问题,将不亮的LED接其它p2的管脚试试。也可能LED没问题,因51单片机高电平输出电流能力很弱,同样的小电流下有的LED亮度很弱或干脆不亮
因此,问题可能是由于硬件电路问题而导致的。因此,可以尝试检查电路是否连接正确,特别是行扫描信号输出管脚和列显示信号数据输出管脚的引脚是否正确连接。3.共阴/共阳问题 最后,可以看到需要确定LED是连在哪个口上,以及是共阴还是共阳接法,这样才能决定是写1亮还是写0亮。因此,问题可能是由于共阴/共阳
51单片机学习板led灯不亮
你的问题应该是LS138没有正确使能;E1、E2的逻辑使能要求电平是相反的,不能连接在一起;修改如下:ENLED 连接 E1,ADDR3 连接 E2、E3(即E2、E3连接在一起);
51单片机的P0口有准双向IO,需要加上10K的电阻做作上拉电阻才能正常使用。你这里要么加上一个RES—PACK8(10k),或者你就干脆换到P1,或者P2口上
1.代码问题 可以看到程序中使用了MatrixLED函数,但是只有当把MatrixLED函数放进while(1)的循环函数中时才能正确显示,并且还有伴有嗡嗡声。这表明问题可能是由于程序逻辑不正确而导致的。因此,可以尝试检查代码是否正确,特别是MatrixLED函数是否正确编写。2.硬件电路问题 另外,可以看到LED显示屏电路的行
可能是发光二极管的问题或接线问题,单片机坏的可能性不大。可以将接线调一下看是不是LED的问题,将不亮的LED接其它p2的管脚试试。也可能LED没问题,因51单片机高电平输出电流能力很弱,同样的小电流下有的LED亮度很弱或干脆不亮
51单片机led不亮,如图
你写的程序并没有加载到工程中,只是写了程序没有用的,不加到工程中,是不能编译的。程序是对的。见下图,首先要把写的程序保存,然后在画红圈的位置,点鼠标右键,把这个程序加进来,加载进来后,左边应该是那样的。
不知道你的程序要实现什么。不过用仿真试,外中断时,LED有变化。会不会是你的最小系统有问题或程序未烧进。首先:while(b=1);和while(c=1);应为while(b==1);和while(c==1);
1. 指令:CJNE B,#01H,C2 是错误的。 其中的B,换成A、Rn就可以了。2. LCALL C1,C1你放在END后面了,不可用。
你的问题应该是LS138没有正确使能;E1、E2的逻辑使能要求电平是相反的,不能连接在一起;修改如下:ENLED 连接 E1,ADDR3 连接 E2、E3(即E2、E3连接在一起);
51单片机的LED灯不能点亮,请指教。谢谢
1、新建项目,如图所示。 2、添加头文件,创建延迟函数。 3、创建C主函数。 4、添加死循环效果。 5、点亮LED灯。P1=0x7e;二进制11111110。 6、添加延迟效果。 注意事项: 很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。1、新建项目,如图所示。 2、添加头文件,创建延迟函数。 3、创建C主函数。 4、添加死循环效果。 5、点亮LED灯。P1=0x7e;二进制11111110。 6、添加延迟效果。 注意事项: 很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
首先从你给出的条件来说:你用sbit 声明led1来代表P1^0口,但是在主函数中却使用led来点亮,很明显这个是不行的,而且编译时会报错。 再一个你要确定LED是连在P1口。 最后,你要清楚是共阴还是共阳接法,这样决定是写1亮还是写0亮。 不懂的地方随时回复我交流。 希望我的回答能帮助到你。
你的LED灯是几只,怎么接的? 如果是8只LED接P0,且共阳极接法的话 P0=1:0000 0001除了最右边一只不亮,7只都亮 P0=0XFF:1111 1111则8只LED都不亮。
你的LED灯是几只,怎么接的? 如果是8只LED接P0,且共阳极接法的话 P0=1:0000 0001除了最右边一只不亮,7只都亮 P0=0XFF:1111 1111则8只LED都不亮。
可能是发光二极管的问题或接线问题,单片机坏的可能性不大。可以将接线调一下看是不是LED的问题,将不亮的LED接其它p2的管脚试试。也可能LED没问题,因51单片机高电平输出电流能力很弱,同样的小电流下有的LED亮度很弱或干脆不亮
你的LED灯是几只,怎么接的? 如果是8只LED接P0,且共阳极接法的话 P0=1:0000 0001除了最右边一只不亮,7只都亮 P0=0XFF:1111 1111则8只LED都不亮。
首先从你给出的条件来说:你用sbit 声明led1来代表P1^0口,但是在主函数中却使用led来点亮,很明显这个是不行的,而且编译时会报错。 再一个你要确定LED是连在P1口。 最后,你要清楚是共阴还是共阳接法,这样决定是写1亮还是写0亮。 不懂的地方随时回复我交流。 希望我的回答能帮助到你。