Board logo

标题: LED驱动原理与实验 [打印本页]

作者: leslen    时间: 2010-10-17 15:49     标题: LED驱动原理与实验

单片机初学者要更容易理解和掌握一些常用指令,就要多做实验,编一些小程序在实验板上看效果,而流水灯是最方便看见效果的,学编程一般是先多看别人的程序从中学习一些编程的技巧和方法。是从模仿开始的,但要领会后变为己用才行,希望初学者能从下面程序中学到有用的东东。
1.jpg
  看上面原理图是由八只LED发光管,接在89C51的P1口上,从原理图可知只有P1口为低电平(接地)时,发光管才会亮。所以只要循环控制P1口的各个引脚的电平高低变化就可使LED 循环点亮。
  网友只要把下面的源程序编译后烧如提供的实验板即可看见效果。
   

ORG 0000H

LJMP START

ORG 0030H

START:

MOV SP,#6FH;养成习惯将堆栈先保护起来

MOV A,#80H;转换为二进制为10000000

LOOP:

MOV P1,A ;将A中的值送入P1口

RR A;右移

LCALL DELAY;凋延时程序

LJMP LOOP ;返回继续循环

delay:   ;延时程序,改变R7的初值看效果如何??

mov r7,#255

d1: mov r6,#255

d2: nop

nop

nop

nop

djnz r6,d2

djnz r7,d1

ret

END

上面的程序如您不好理解可以看下面的:



ORG 0000H
START:MOV P1,#01111111B;第八脚的LED点亮
LCALL DELAY;延时1秒
MOV P1,#10111111B;第7脚的LED点亮
LCALL DELAY;延时1秒
MOV P1,#11011111B;第6脚的LED点亮 (以下省略)
LCALL DELAY
MOV P1,#11101111B
LCALL DELAY
MOV P1,#11110111B
LCALL DELAY
MOV P1,#11111011B
LCALL DELAY
MOV P1,#11111101B
LCALL DELAY
MOV P1,#11111110B
LCALL DELAY
MOV P1,#11111111B;完成第一次循环点亮,延时约0.25秒
AJMP START;反复循环

;延时子程序,12M晶振延时约250毫秒
DELAY:
MOV R4,#2
L3: MOV R2 ,#250
L1: MOV R3 ,#250
L2: DJNZ R3 ,L2
DJNZ R2 ,L1
DJNZ R4 ,L3
RET

END

以上两种的亮暗不同的,前种是暗流动,下面的是亮流动;您可以烧写到实验板看效果。。。。。。

图片附件: 1.jpg (2010-10-17 15:48, 13.58 KB) / 下载次数 273
http://bbs.hymcu.com/attachment.php?aid=128&k=f1462e671bb2b0bc0743b53ded51b916&t=1732448259&sid=CRU2PX






欢迎光临 珩源工控论坛 (http://bbs.hymcu.com/) Powered by Discuz! 7.2