实验作业一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每一个实验作业都要写实验报告,报告中必须具有以下7项内容:
1. 题目
2. 硬件原理电路图以及电路原理说明
3. 软件方法
4. 实验步骤说明
5.画出程序流程图
6.写出实验后正确的程序并加以注释
7. 小结:实验过程中遇到的问题和解决的办法,完成实验的关键点、有何注意事项,心得体会等。( 全文必须做在实验作业纸上用水笔手写。)
实验报告一(上机实验作业一)
一、题目:信号灯控制
内容:1. 把一个发光LED的正极经电阻接至P1.0口,LED的负极接地;
2. 把一个拨动开关的一端上拉并接至P1.1口,另一端接地;
3. 编程实现控制,当开关闭合时指示灯闪亮,断开则熄灭。
二、硬件原理:
1.硬件逻辑电路图:A T89C51
LED灯VCC +5V
P1.0 EA
XTAL1
+5V
XTAL2
开关RST
P1.1
GND
2.电路原理说明:①开关闭合时,P1.1=0; 开关断开时,P1.1=1。
②P1.0=0时,LED灯熄灭; P1.0=1时,LED灯点亮。
三、软件方法:
当检测到P1.1口位为低电平时,控制P1.0口位输出“1”,软件延时约200ms;然后输出“0”,
软件再延时约200ms;再输出“1”,……如此循环,直至检测到P1.1口位为高电平为止;
当检测到P1.1口位为高电平时,控制P1.0口位输出“0”,再重复检测P1.1口位的电平,如此循环。
四、实验步骤:
使用Proteus仿真软件
1. 运行PC机上的Proteus仿真软件,按题目的硬件原理图绘制仿真电路图;
2. 运行PC机上的WA VE仿真软件,把仿真器设置为软件模拟器,编辑、编译汇编程序;
3. 切换到Proteus仿真软件,选择工具栏中的【instant edit mode】, 点击仿真电路图中的AT89C51
元件,在提示的窗口中单击【Program File】栏右侧的打开文件按钮,并选择通过WA VE仿真软件
生成的.hex文件,与单片机进行连接,再将【Clock Frequency】设置为6MHz;
4. 单击底行中的【播放】按钮,运行程序,有错误回到步骤2,编辑、修改汇编程序,再运行
直至正确为止。
五、程序流程图:
信号灯控制程序
P1.1口置‘1’
Y
P1.1=1? P1.0口置‘0’
N
P1.0口置‘1’
延时200ms
‘ P1.0口置‘0’
延时200ms
六、程序及注释:
汇编程序:
ORG 0000H ; 伪指令:指明下一条指令的地址。
Main: SETB P1.1 ; P 口作为输入的位,在测试前必须先置为“1”。
JB P1.1, L1 ; 测试开关的电平,为“1”则转移到L1。
SETB P1.0 ; 输出高电平,点亮LED
LCALL Delay200 ; 延时200ms
CLR P1.0 ; 输出低电平,熄灭LED
LCALL Delay200 ; 延时200ms
LJMP Main ; 循环显示
L1: CLR P1.0 ; 输出低电平,熄灭LED
SJMP Main ; 循环测试开关
Delay200: MOV R3, #200 ; 延时200ms
De1: MOV R4, #250 ;
De2: DJNZ R4, De2 ; 250*4us=1ms ,MCU 的 Fosc = 6MHz
DJNZ R3, De1
RET
END
C51程序: main( ) //主程序
#include "REG51.h" { while(1)
#include "STDIO.h" { P1_1=1;
sbit P1_0=P1^0; if (P1_1==0) //测试开关的电平
sbit P1_1=P1^1; { P1_0=1; //输出高电平,点亮LED void Delay(unsigned int n) //延时n 毫秒程序 Delay(300);
{ P1_0=0; //输出低电平,熄灭LED unsigned char i; Delay(300);
while(n--) }
for(i=0; i<80; i++); else P1_0=0; //输出低电平,熄灭LED } }
}
七、小结:问题及处理、实验的关键、注意事项等
点亮LED 灯
熄灭LED 灯 熄灭LED 灯 测试开关的电平