学生实验报告
学院:软件与通信工程学院
课程名称:单片机系统设计I
专业班级:
姓名:
学号:
学生实验报告(1)
一、实验综述
1、实验目的及要求
(1)实验目的:
学习51单片机I/O口基本输入/输出功能,掌握汇编语言的编程和调试方法。
(2)实验原理:
图A.19为指示灯/开关控制器的电路原理图。
图中输入电路由外接在P1口的吧只开关组成;输出电路由外接在P2口的八只发光二极管组成。
此外,还包括时钟电路和复位电路。
程序启动后,八只发光二极管先整体闪烁3次(即亮—暗—亮—暗—亮—暗,间隔时间以肉眼可观察到为准)。
然后根据开关状态控制对应发光二极管的亮灯状态,即开关闭合和相应灯亮,反之则相反。
原理为:
(1)程序开始运行后8只发光二极管先整体闪烁3次(即亮—暗—亮—暗—亮—暗)。
亮灯:向P2口送入数值0(P2<-0);
灭灯:向P2口送入数值0FFH(P2<-0FFH);
闪烁次数:整体循环三次;
闪烁快慢:软件延时时间。
(2)然后根据开关状态控制灯亮与灯灭,即开始闭合相应灯亮,
反之则相反。
开关控制灯:将P1口内容送入P2口(P2<-P1);
无限持续:整体无条件循环。
参考流程图如下:
2、实验仪器、设备或软件
电脑,Keil4, ISIS
二、实验过程(实验步骤、记录、数据、分析)
【实验步骤】
1.在ISIS中完成电路原理图的绘制;
2.在keil4中编写代码,生成可执行文件
3.加载可执行文件,观察仿真结果,检验电路图绘制的正确性
【代码】
#include<reg51.h>
void delay(unsigned char i)
{
unsigned char j;
while(i--)
for(j=0;j<200;j++);
}
void main()
{
unsigned char i;
for(i=0;i<3;i++)
{
P2=0x00;
delay(1000);
P2=~P2;
delay(1000);
}
while(1)
P2=P3;
}
三、结论
1、实验结果
(1)程序开始运行后8只发光二极管先整体闪烁3次;
(2)根据开关状态控制对应发光二极管的亮灯状态;当按下开关SW1时:
当按下开关SW2、SW5时:
2、分析讨论
当程序启动时,可以看到8只发光二极管整体循环闪烁三次,闪烁快慢由延时时间决定,间隔时间由所设定的89c51的频率决定,然后根据所设开关的状态对应二极管的亮灯状态。
四、指导教师评语及成绩:
评语:
成绩:指导教师签名:
批阅日期:。