实验一 LED流水灯 下载本文

内容发布更新时间 : 2024/5/18 10:21:08星期一 下面是文章的全部内容请认真阅读。

实验一 LED流水灯

一、实验目的

1. 学习单片机并口的使用方法。 2. 学习延时子程序的编写和使用。

3. 学习集成开发环境MedWin的安装与使用。 4. 学习STC单片机在线下载软件STC-ISP的使用。

二、实验内容

所谓流水灯就是8个发光二极管(LED)轮流点亮,周而复始。实验板上以P0口作输出口,经74LS244驱动,接8只发光二极管LED0-LED7。当单片机的引脚输出为低电平时发光二极管点亮,为高电平时息灭。编写程序,使8个发光二极管循环点亮,时间间隔约0.5秒。

三、源代码及流程图 源代码: ORG 0000H

LJMP MAIN ORG 0100H

MOV P1,A

MAIN: MOV A,#0FEH LOP:

LCALL DELAY RL A SJMP LOP

DELAY: MOV R7, #198 DEL1: MOV R6, #50 DEL2: MOV R5, #23 DJNZ R5, $ DJNZ R6, DEL2 DJNZ R7, DEL1 RET

END

流程图: 开始

(A)<-位码 (P1)<-(A) A左移循环 四、结果记录及分析

下载上电后,板子上的流水灯实现了由左往右移动。 五、思考题

1. 如何使点亮的LED从右往左移动? 2. 如何使点亮的LED从两边往中间移动?

1.将源代码中的RL改为RR可实现LED从左往右移动,代码如下:

ORG 0000H

LJMP MAIN ORG 0100H

MOV P1,A

MAIN: MOV A,#0FEH LOP:

LCALL DELAY RR A SJMP LOP

DELAY: MOV R7, #198 DEL1: MOV R6, #50 DEL2: MOV R5, #23 DJNZ R5, $ DJNZ R6, DEL2 DJNZ R7, DEL1 RET

2.

END