51单片机实验报告

  • 格式:doc
  • 大小:923.50 KB
  • 文档页数:48

0 / 1文档可自由编辑

《单片机与接口技术》实验报告

信息工程学院

2016年9月

0 / 1文档可自由编辑

辽东学院信息技术学院

《单片机与接口技术》实验报告

姓名: 王瑛

学号: 0913140319

班级: B1403

专业: 网络工程

层次: 本科

2016年9月

0 / 1文档可自由编辑 目 录

实验题目:实验环境的初识、使用及调试方法(第一章)

实验题目:单片机工程初步实验(第二章)

实验题目:基本指令实验(第三章)4

实验题目:定时器/计数器实验(第五章)4

实验题目:中断实验(第六章)4

实验题目:输入接口实验(第八章)4

实验题目:I/O口扩展实验(第九章)4

实验题目:串行通信实验(第十一章)4

实验题目:A/D,D/A转换实验(第十七章)4

0 / 1文档可自由编辑 实验题目:实验环境的初识、使用及调试方法实验

实验类型: 验证性 实验课时: 1

时间:2016年10月24日

一、 实验内容和要求

了解单片机的基础知识

了解51单片机的组成和工作方法

掌握项目工程的建立、编辑、编译和下载的过程方法

熟练单片机开发调试工具和方法

二、 实验结果及分析

单片机最小系统的构成:

0 / 1文档可自由编辑

Keil集成开发环境:

STC-ISP:

0 / 1文档可自由编辑

实验题目:单片机工程初步实验

实验类型: 验证性 实验课时: 1

时间:2016 年10 月24 日

一、 实验内容和要求

点亮一个LED小灯

程序下载到单片机中

二、实验结果及分析

0 / 1文档可自由编辑 1、点亮一个LED小灯

点亮LED小灯的程序:

#include //包含特殊功能寄存器定义的头文件

sbit LED = P0^0;

sbit ADDR0 = P1^0; //sbit必须小写,P必须大写

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

ENLED = 0;

ADDR3 = 1;

ADDR2 = 1;

ADDR1 = 1;

ADDR0 = 0;

LED = 0; //点亮小灯

while (1); //程序停止

}

2、程序下载

首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管

0 / 1文档可自由编辑 理器查看所使用的COM 口,如图所示:

然后 STC 系列单片的下载软件——STC-ISP,端口为上一步查到的端口,其余选项改成如图所示:

打开程序文件下载后当软件显示“已加密”就表示程序下载成功了,如下图所示:

0 / 1文档可自由编辑

三、心得体会

通过对单片机的初步学习和认识,我了解到了单片机的工作流程,还有通过自己编写单片机的程序,也让我对单片机的学习有了更大的兴趣,虽然过程中遇到了些许的困难,但这也让自己意识到还有很多不足,通过接下来的学习,希望对单片机的课程有更加深入的了解。

实验题目:基本指令实验

实验类型: 验证性 实验课时: 2

时间:2016年 11月 1日

一、实验内容和要求

了解单片机的硬件基础知识

LED灯闪烁的程序

二、实验结果及分析

1、去耦电容

0 / 1文档可自由编辑 电容有缓冲和稳定的作用,有了这个电容,可以说我们的电压和电流就会很稳定了,不会产生大的波动。

2、74HC138三八译码器

在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有 32 个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如 74HC138三八译码器。如图所示。

3、LED灯闪烁的程序

#include

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

0 / 1文档可自由编辑

void main() //void为函数类型

{

unsigned int i = 0; //定义一个无符号整型变量i,赋初始值为0

ENLED = 0;

ADDR3 = 1;

ADDR2 = 1;

ADDR1 = 1;

ADDR0 = 0;

while(1)

{

LED = 0; //点亮小灯

for(i = 0; i<=3000; i++); //延时

LED = 1; //熄灭小灯

for(i = 0; i<=3000; i++); //延时

}

}

三、心得体会

做好一件事的前提条件是你对自己所要做的事情有充分的了解和认识,做好完全的准备才能够有保证将这件事做好,学习也是如此,想要做好一个程序,就要将他的工作过程以及条件搞清楚才能将程序编好编清楚。

0 / 1文档可自由编辑

实验题目:定时器/计数器实验

实验类型: 验证性 实验课时:

3

时间:2016年11月 8 日

一、实验内容和要求

学习和了解单片机中的定时器、及其寄存器

学习数码管的相关知识

编写数码管的静态显示的相关程序

0 / 1文档可自由编辑 二、实验结果及分析

1、数码管

数码管示意图: 数码管结构图:

2、数码管静态显示的程序

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

ENLED = 0;

ADDR3 = 1;

ADDR2 = 0;

0 / 1文档可自由编辑 ADDR1 = 0;

ADDR0 = 0;

P0 = 0xF9;

while (1);

}

三、心得体会

通过这次实验课,我对定时器有了更加深刻的了解,也让我知道了对教材应该更熟悉,因为教材是基础的,只有把基础搞好了才能够进行其他层次的学习。有时候也可以通过软件的仿真来验证书上的一些理论性的东西。实现自己想要的效果。

0 / 1文档可自由编辑

实验题目:中断实验

实验类型: 验证性 实验课时: 4

时间:2016年 11月15 日

一、实验内容和要求

复习C语言中的数组、if语句和switch语句

学习数码管的动态显示相关知识

掌握单片机中断系统

二、实验结果及分析

1、数码管的动态显示程序

(switch语句)

#include

0 / 1文档可自由编辑 sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = {

0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,

0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E

};

unsigned char LedBuff[6] = {

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF

};

void main()

{

unsigned char i = 0;

unsigned int cnt = 0;

unsigned long sec = 0;

ENLED = 0;

ADDR3 = 1;

TMOD = 0x01;

TH0 = 0xFC;