51单片机控制LED灯程序的设计说明.docx
《51单片机控制LED灯程序的设计说明.docx》由会员分享,可在线阅读,更多相关《51单片机控制LED灯程序的设计说明.docx(6页珍藏版)》请在冰豆网上搜索。
51单片机控制LED灯程序的设计说明
51单片机:
LED灯亮灯灭程序设计
1.功能说明:
控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。
程序:
01:
MOVA,#11111110B;存入欲显示灯的位置数据
02:
MOVP1,A;点亮第一只灯
03:
JMP$;保持当前的输出状态
04:
END;程序结束
2.功能说明:
单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。
程序:
01:
START:
MOVA,#00010010B;存入欲显示灯的位置数据
02:
MOVP1,A;点亮灯
03:
JMPSTART;重新设定显示值
04:
END;程序结束
3.功能说明:
单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。
程序:
01:
START:
MOVR0,#8;设左移8次
02:
MOVA,#11111110B;存入开始点亮灯位置
03:
LOOP:
MOVP1,A;传送到P1并输出
04:
RLA;左移一位
05:
DJNZR0,LOOP;判断移动次数
06:
JMPSTART;重新设定显示值
07:
END;程序结束
4.功能说明:
单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。
程序:
01:
START:
MOVR0,#8;设右移8次
02:
MOVA,#01111111B;存入开始点亮灯位置
03:
LOOP:
MOVP1,A;传送到P1并输出
04:
ACALLDELAY;调延时子程序
05:
RRA;右移一位
06:
DJNZR0,LOOP;判断移动次数
07:
JMPSTART;重新设定显示值
08:
DELAY:
MOVR5,#50;
09:
DLY1:
MOVR6,#100;
10:
DLY2:
MOVR7,#100;
11:
DJNZR7,$;
12:
DJNZR6,DLY2;
13:
DJNZR5,DLY1;
14:
RET;子程序返回
15:
END;程序结束
5.功能说明:
单片机P1端口接8只LED,每次点亮一只,先把右边的第一只点亮,0.5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。
当亮灯移到左侧后,开始与上述反方向移动,即亮灯由左向右移动,重复循环。
程序:
01:
START:
MOVR0,#8;设左移8次
02:
MOVA,#0FEH;存入开始亮灯位置
03:
LOOP:
MOVP1,A;传送到P1并输出
04:
ACALLDELAY;调延时子程序
05:
RLA;左移一位
06:
DJNZR0,LOOP;判断移动次数
07:
MOVR1,#8;设右移8次
08;LOOP1:
RRA;右移一位
09:
MOVP1,A;传送到P1并输出
10:
ACALLDELAY;调延时子程序
11:
DJNZR1,LOOP1;判断移动次数
12:
JMPSTART;重新设定显示值
13:
DELAY:
MOVR5,#25;延时0.5秒子程序
14:
DLY1:
MOVR6,#100;
15:
DLY2:
MOVR7,#100;
16:
DJNZR7,$;
17:
DJNZR6,DLY2;
18:
DJNY1;
19:
RET;子程序返回
20:
END;
6.功能说明:
单片机P1端口接8只LED,每次点亮两只,先从右边向左边移动点亮;再从左边向右边移动点亮,然后闪烁两次,重复循环。
程序:
01:
START:
MOVR0,#7;设左移7次
02:
MOVA,#0FCH;存入开始亮灯位置
03:
LOOP:
MOVP1,A;传送到P1并输出
04:
ACALLDELAY;调延时子程序
05:
RLA;左移一位
06:
DJNZR0,LOOP;判断移动次数
07:
MOVR1,#7;设右移7次
08:
LOOP1:
RRA;右移一位
09:
MOVP1,A;传送到P1并输出
10:
ACALLDELAY;调延时子程序
11:
DJNZR1,LOOP1;判断移动次数
12:
MOVR2,#3;设置闪烁次数
13:
MOVA,#00H;设初始值
14:
LOOP2:
MOVP1,A;P1端口灯亮
15:
ACALLDELAY;调用延时子程序
16:
CPLA;A取反值
17:
DJNZR2,LOOP2;判断闪烁次数
18:
JMPSTART;重新设定显示值
19:
DELAY:
MOVR5,#25
20:
DLY1:
MOVR6,#100
21:
DLY2:
MOVR7,#100
22:
DJNZR7,$
23:
DJNZR6,DLY2
24:
DJNZR5,DLY1
25:
RET;子程序返回
26:
END;程序结束
7.功能说明
单片机端口接八只LED,编程时利用取表的方法,使端口P1做单一灯的变化:
先向左移2次,然后向右移2次,再闪烁4次,不断循环。
程序:
01:
START:
MOVDPTR,#TABLE;存表
02:
LOOP:
CLRA;A清零
03:
MOVCA,@A+DPTR;取表代码
04:
CJNEA,#01H,LOOP1;不是01H,循环
05:
JMPSTART;重新设定
06:
LOOP1:
MOVP1,A;送P1输出
07:
ACALLDELAY;调延时程序
08:
INCDPTR;数据指针加1
09:
JMPLOOP;转移到LOOP处
10:
DELAY:
MOVR5,#25;延时0.5秒
11:
DLY1:
MOVR6,#100;
12:
DLY2:
MOVR7,#100;
13:
DJNZR7,$;
14:
DJNZR6,DLY2;
15:
DJNZR5,DLY1;
16:
RET;
17:
TABLE:
DB0FEH,0FDH,0FBH,0F7H;
18:
DB0EFH,0DFH,0BFH,7FH;左移
19:
DB0FEH,0FDH,0FBH,0F7H;
20:
DB0EFH,0DFH,0BFH,7FH;左移
21:
DB7FH,0BFH,0DFH,0EFH;
22:
DB0F7H,0FBH,0FDH,0FEH;右移
23:
DB7FH,0BFH,0DFH,0EFH;
24:
DB0F7H,0FBH,0FDH,0FEH;右移
25:
DB00H,0FFH,00H,0FFH;
26:
DB00H,0FFH,00H,0FFH;闪烁
27:
DB01H;结束码
28:
END;