单片机 LED 流水灯实验

实验一 LED 流水灯实验

一、实验目的:

1、进一步熟悉Keil C51集成开发环境调试功能的使用 2、学会自己编写程序,进行编译、仿真调试

3、学会使用单片机的P0口作为I/O口去控制外围电路,实现LED灯以固定的频率进行闪烁。 二、实验设备: 1、PC机

2、SW-51PROC单片机综合实验平台 三、实验内容:

1、编写一段程序,用单片机P0口的8个输出去控制8个LED灯,实现如下功能: 先使8个LED灯轮流点亮,从左向右移动,时间间隔0.5s。以上过程循环实现。 四、实验步骤: 1、实验原理图:

2、硬件连线方式:

用杜邦线将“MCU”区的P0口“P0.0-P0.7”与“8-LED”模块区的“L1-L8”依次相连。 编写程序思路:

用单片机P0口的8位输出控制8个LED灯,每次只点亮一只LED,8只LED灯依次点亮,如此循环即可

形成流水灯。

3、实验箱的时钟: 晶振频率为11.0592MHz

Tose=1/(11.0592*1000000)=0.0904us 1个机器周期为0.0904us*12=1.085us 4、源程序:

************************************************************************************/ #include

#define uchar unsigned char #define uint unsignedint #define PORT P0

uchar code dis[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd};

/***********************************延时函数****************************************/ void delay_50ms(uint t) { }

/************************************主函数*****************************************/ void main(void) {

uchar *p=dis; while(1) { } }

/*************************************结束*******************************************/ 5、运行程序:

把编写好的程序输入PC机中,用Keil软件进行编译,编译无误的情况下,运行该程序,此时LED灯会

依次轮流点亮。

6、实验报告要求: 1、实验名称 2、实验目的 3、实验设备 4、实验内容

5、实验原理(图要画完整)及控制方法合过程详细的说明 6、实验编写的程序 7、实验结果 8、心得和建议

for(p=dis;p<(dis+14);p++) { }

PORT=*p; delay_50ms(10);

uinti; for(;t>0;t--) for(i=6245;i>0;i--);

(1)首先知道LED的工作原理。共阴级共阳极,此实验板是共阳极,要亮,的加一个高电平。由于这8个LED灯与P0口相连,所以直接通过P0口控制其亮灭就可以。依次开启每个灯,同时开启时要亮一定的时间。时间可以自己定义,也可以利用定时器实现。具体的汇编程序如下:

ORG 0000H LJMP MAIN

ORG 0050H MAIN:MOV R0,#14

MOV DPTR,#TABLE

L0: MOV A,#0

L1: MOVC A,@DPTR+A MOV P0,A ACALL DELAY1 INC A

DJNZ R0,L1 SJMP L0

DELAY1: MOVR1,#250 LOOP1:

MOVR2,#250 LOOP2:

NOP NOP NOP NOP NOP

DJNZ R0,LOOP2 DJNZ R1,LOOP1 RET TABLE:

DB

0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH END

大家可以换一种亮灭的方式,只是通过修改表中的相应的信息,同时将程序做适当的修改,就可以达到预想的效果。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4