实验一 51单片机流水灯实验 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“流水灯”实验报告
一、实验目的
1.了解单片机I/O口的工作原理。
2.掌握51单片机的汇编指令。
3.熟悉汇编程序开发,调试以及仿真环境。
二、实验内容
通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。(即流水灯效果)
三、实验原理
通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。具体的亮灭情况如下表:
要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化:
FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→......
可以使用一个循环,不断对数据进行移位运算实现。这里的移位指令采用RL和RR,即不带进位的位移运算指令。如果使用带进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。
四、实验过程
1.在仿真系统中绘制好单片机的电路图
2.编写汇编程序,程序如下:
ORG 0000H Delay: MOV R0, #0FFH
SJMP Start Delay1: MOV R1, #0FFH Start: MOV A, #0FEH Delay2: NOP
MOV P0, A DJNZ R1, Delay2
CLR P2.7 DJNZ R0, Delay1
CLR P3.7 RET
Move: MOV R2, #7H END
MOV R3, #7H
RMove: RL A
MOV P0, A
CALL Delay
DJNZ R2, RMove
LMove: RR A
MOV P0, A
CALL Delay
DJNZ R3, LMove
SJMP Move
五、实验结果
为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。
在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:
1.只有1号二极管点亮
2.只有2号二极管点亮
3.只有3号二极管点亮
4.只有4号二极管点亮
5.只有5号二极管点亮
6.只有6号二极管点亮
7.只有7号二极管点亮8.只有8号二极管点亮
实验的结果:二极管的发光状态从1→2→3→4→5→6→7→8→7→…→1→2;如此往复循环。
六、实验总结与分析
1.经过这次实验,不难总结出开发单片机程序的方法。
第一步:根据需求连接好单片机;
第二步:在仿真系统中,使用汇编指令写好单片机的程序;
第三步:在仿真系统中对程序进行测试;
第四步:把程序下载到单片机中,并观察程序运行结果;如果程序运行不正确,则根据现象分析程序错误之处。改正以后重新下载观察运行结果。
2.对单片机的悬空针脚进行相应处理:悬空针脚接上高电平。