内容发布更新时间 : 2024/11/10 15:36:00星期一 下面是文章的全部内容请认真阅读。
实验一 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
大家可以换一种亮灭的方式,只是通过修改表中的相应的信息,同时将程序做适当的修改,就可以达到预想的效果。