返回列表 发帖

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

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

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-11-1 12:24, Processed in 1.068204 second(s), 6 queries, Gzip enabled.