51单片机实验教学教材0904修改2.docx

上传人:b****7 文档编号:10629907 上传时间:2023-02-22 格式:DOCX 页数:58 大小:1.77MB
下载 相关 举报
51单片机实验教学教材0904修改2.docx_第1页
第1页 / 共58页
51单片机实验教学教材0904修改2.docx_第2页
第2页 / 共58页
51单片机实验教学教材0904修改2.docx_第3页
第3页 / 共58页
51单片机实验教学教材0904修改2.docx_第4页
第4页 / 共58页
51单片机实验教学教材0904修改2.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

51单片机实验教学教材0904修改2.docx

《51单片机实验教学教材0904修改2.docx》由会员分享,可在线阅读,更多相关《51单片机实验教学教材0904修改2.docx(58页珍藏版)》请在冰豆网上搜索。

51单片机实验教学教材0904修改2.docx

51单片机实验教学教材0904修改2

 

51单片机及其应用

实验教学教材

 

编者:

胡学海

电子科技大学自动化学院

2012-09

前言

本实验指导书以编译环境的操作、程序下载,单片机自身接口应用为核心进行学习和实验,它们包含:

并行接口、定时器、中断以及串行通讯,另外还对单片机外围电路做简单的扩展。

其硬件包括ST51/52单片机、UEST-K1仿真实验板一块。

实验指导书包含8个实验,若干例程。

涵盖了8031单片机的实时仿真;端口、数据/地址总线操作;定时/计数器运用;键盘、LED显示接口;中断处理;串行通讯;C语言试验等内容。

同学们通过这些实验,可对MCS-51系列单片机的一些基本应用有所掌握。

任何计算机原理及程序设计语言的学习,一般都是通过:

看懂并理解别人的程序开始,修改程序并验证修改效果是第二步,然后才能自己编写程序。

通过实验理解软硬件工作原理,调试程序可以理解和验证程序设计的正确性,通过仿真调试可以学习产品开发的过程。

显然本实验已经具备了上面所述的全部功能。

至于硬件的设计开发,同学还应当学会使用protel一类电路设计软件,设计出自己的应用系统。

这部分内容本实验只提供一些经典电路作为参考。

同学们还可利用实验板提供的硬件,编制一些较为复杂的程序,例如:

实时时钟+时间初值设置+闹钟设置+闹钟声响,或者编制一个“计算器”程序,编写一个电子琴程序等,作为“课程设计”。

本实验指导书所有实验程序都是完整的程序,对一般教材上“断章取义”的程序,不能调试的程序,无疑是有效的补充。

故本实验板和指导书是单片机初学者一个很好的入门向导。

在实验的开发过程中,许多同学利用课外活动时间对实验指导书和实验板作了验证和改进。

编者在此对这些同学表示感谢。

编者

2012年9月

编者:

胡学海1

电子科技大学自动化学院1

2012-091

前言2

绪论单片机开发调试6

0.1单片机系统开发的步骤6

0.2程序的调试7

0.3程序的固化8

0.4实验一认识实验平台10

0.4.1实验目的10

0.4.2实验内容:

安装和学习keil开发环境10

0.4.2.1实验平台简介10

0.4.2.2开发环境的软件安装10

0.4.2.3使用10

0.4.3实验步骤13

0.4.4报告要求15

0.4.5程序清单15

0.4.6教学重点及注意事项17

第一章基础实验18

1.1实验二数字显示实验18

1.1.1实验目的18

1.1.2实验内容18

1.1.3实验原理18

1.1.4实验步骤22

1.1.5报告要求22

1.2实验三红绿灯显示实验23

1.2.1实验目的23

1.2.2实验内容23

1.2.3实验原理23

1.2.4实验步骤24

如前。

24

1.2.5报告要求24

1.3实验四键盘扫描实验25

1.3.1实验目的25

1.3.2实验内容25

1.3.3实验原理25

1.3.4实验步骤27

1.3.5报告要求28

1.4实验五简单计算器实验29

1.4.1实验目的29

1.4.2实验内容29

1.4.3实验原理29

2、51单片机内部RAM31

1.4.4实验步骤32

1.4.5报告要求32

1.5实验六查表及参数设置实验33

1.5.1实验目的33

1.5.2实验内容33

1.5.3实验原理33

1.5.4实验步骤33

1.5.5报告要求33

1.7实验八移位及霓虹灯实验34

1.7.1实验目的34

1.7.2实验内容34

1.7.3实验原理35

1.7.4实验步骤37

1.7.5报告要求37

1.8实验九串行通讯实验38

1.8.1实验目的:

38

1.8.2实验内容:

38

1.8.3实验原理:

38

1.8.4实验步骤40

1.8.5报告要求41

1.9实验十定时器实验42

1.9.1实验目的42

1.9.2实验内容42

1.9.3实验原理42

1.9.4实验步骤43

1.9.5报告要求43

1.10实验十一中断处理实验44

1.10.0概述44

1.10.1实验目的44

1.10.2实验内容45

1.10.3实验原理:

45

1.10.4实验步骤46

1.10.5报告要求46

第二章综合实验47

2.1实验十二基于C51的键盘扫描和移位显示47

2.1.1实验目的47

2.1.2实验内容47

2.1.3实验步骤47

2.1.4实验原理48

2.1.5报告要求48

2.2实验十三计算器综合实验49

2.2.1实验目的49

2.2.2实验内容49

2.2.3实验原理49

2.2.4实验步骤49

2.2.5报告要求49

2.2实验十四时钟综合实验50

2.2.1实验目的50

2.2.2实验内容50

2.2.3实验原理50

2.2.4实验步骤50

2.2.5报告要求50

第三章自主实验51

3.1自主实验要求51

3.2实验板原理51

3.3自主实验项目57

3.3.1测控系统的监控57

3.3.1.1实验目的57

3.3.1.2实验内容57

3.3.2测控系统的标度变换57

3.3.2.1实验目的57

3.3.2.2实验内容57

3.3.3数字滤波58

3.3.3.1实验目的58

3.3.3.2实验内容58

3.3.4PID控制58

3.3.4.1实验目的58

3.3.4.2实验内容58

3.3.5电子闹钟59

3.3.5.1实验目的59

3.3.5.2实验内容59

3.3.6电子计算器59

3.3.6.1实验目的59

3.3.6.2实验内容59

附录60

绪论单片机开发调试

绪论单片机开发调试

0.1单片机系统开发的步骤

1.设计电路:

根据系统功能要求,计划外围接口的种类,数量,以及RAM等。

并分配一定的地址。

此后选择需要的芯片,设计相应的电路图。

细心检查电路图,确认无误后,设计电路板。

电路板设计好后就可送到工厂制作。

电路及电路板设计常用PROTEL工具软件,此处不作介绍,但希望同学们能利用业余时间自学,这对你今后找工作或实际工作都有深远影响。

2.软件方案设计:

根据系统功能要求,画出程序(功能模块)流程图。

划定主程序相关模块、各中断服务程序模块的功能。

计划模块间参数(变量)的传递及共享方法,变量名称及作用的拟订。

以上各步需作详细笔记,以便编写程序时方便查看。

3.软件设计和调试:

编写各功能模块程序,有条件时可直接在仿真机和电路板上进行调试。

第一步先编写和调试显示模块,正常工作后保存。

显示模块的成功,会使初学者提高对余下程序的信心,实际等于成功一半了。

然后可以调试键盘模块,同时加上显示模块,增加几句临时语句使按下的键值能显示出来。

这两个模块成功后保存起来。

以后就可以编写和调试其他模块,一块一块地添加起来,形成一个完整的程序。

4.程序固化:

调试成功的程序,会产生一个“filename.hex”的INTEL十六进制格式文件,把这个文件送到“编程器/写入器”中就可以将其固化到芯片内:

EPROM、EEPROM、PROM、MCU中。

写入成功后,把芯片从“编程器/写入器”上取下,再插到电路板上通电运行。

设计基本结束。

此后的工作是考验电路板及程序在现场工作的情况,找出设计弱点进行改进。

0.2程序的调试

本实验利用Keilμvision3作为软件开发环境。

该开发环境功能强大,代码编译效率高,可支持多种器件并支持软件仿真及在线调试等功能。

双击桌面上的Keil图标,打开软件界面如下图所示:

 

点开上端的Project下拉菜单,选中其中的NewProject选项来建立一个新的工程项目。

此时会弹出对话框来提示用户输入新项目的名称及保存目录。

填写完毕后选择OK,软件会显示一系列的公司的产品型号供用户选择。

选中本项目所使用的单片机型号:

Infineon公司的XC866单片机,点击OK,新项目建立并保存到指定地点,然后自动打开一个空白的项目界面。

器件的选择也可以在以后来进行修改,可通过Project-Selectdevicefortarget来进行设置。

在空白的项目界面中,选择File-New,则自动生成一个空白的页面,在该页面中可以进行程序的输入。

如果使用的是C语言,则需要以.C为后缀保存该文件;如果使用汇编语言编程,文件的后缀应为.asm。

编写完毕并保存过后的文件如果要被当前工程所使用,必须将其包含进来,步骤如下:

在Group名上点击右键,在弹出的选项列表中选择AddFilestoGroup,则刚刚编辑的文件出现在Group下面。

这时可以对该程序进行编译、链接并生成可执行代码。

对整个编程环境的设置可以通过在Target上单击右键,选择Optionsfortarget来进行修改,在弹出的页面中包含着所有和该工程有关的设置项。

为了生成可写入Flash的十六进制代码,需要在OUTPUT选项里选中CreatHEXFiles选项。

经过编译和链接后,项目文件夹中会出现以HEX为后缀的可执行文件。

对新编写的程序进行编译后,相关信息会显示在窗口下端的消息栏内。

如果程序有误则需要返回开始步骤进行修改,直到提示没有错误为止。

0.3程序的固化

编译好的程序可以通过串口写入到单片机内部,过程如下:

1.将串口线和计算机及单片机的串口连接起来。

2.将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。

3.选择单片机型号STC89C51RC或STC89C52RC。

4.选择左端的OpenFile按钮,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,

5.打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。

按下复位按钮,或重开试验板电源,你的用户板就可以独立工作了。

观察程序运行情况,根据显示情况对程序进行相应的修改,直到满意为止。

0.4实验一认识实验平台

0.4.1实验目的

1.认识实验平台。

2.熟悉KEIL仿真调试软件。

0.4.2实验内容:

安装和学习keil开发环境

0.4.2.1实验平台简介

实验平台原使用EMMIT-S51仿真器进行仿真试验,原来只能在DOS环境下运行(参看实验指导书实验一)。

我校03级学生雷宇同学将这种仿真器软件重新编写,使之可以在keilc51环境下运行。

胡学海,任文伟老师和09级研究生商洪亮,重新自制了试验平台。

现有的试验平台,采用STC8952RC单片机,无需仿真软件、支持再线编程和下载、支持C语言编程,使熟悉C语言的学生可以更好地发挥其特长,此外试验平台支持WINDOWS操作系统,支持keilc51编译环境,使用更加方便。

0.4.2.2开发环境的软件安装

2.1安装KeilC51V7.0软件。

(请自行安装!

2.2安装STC-ISP-V394文件夹下的“STC-ISP.EXE”

0.4.2.3使用

使用keilc,开始时,先应当建立“project”工程,方法如下:

1、点击主菜单中的“project”,在下拉菜单中选择“New”,先选择工作目录,再取一个工程名称,点击“保存”。

如下图:

2、保存“工程”后,就需要选择MCU型号。

自动弹出下面窗口

按照你使用的MCU进行选择。

通常可以选择Atmel或者Intel公司的89C51/8751,如果作了数据线扩展,应当选择31系列MCU。

3、点击“确定”后,就会回到调试环境,下面需要添加你的程序。

左侧框内出现“Target1”和“SourceGroup1”,用鼠标右键点击,在下拉菜单中选择“AddfilestoGroup‘SourceGroup1”,然后选择你已经编好的程序。

(包括存放的文件夹和文件名)

4、编辑和修改你的程序

展开“SourceGroup1”,在下一行可以看见你的程序名,双击文件名,右边就会看到你的源程序。

可以直接进行修改,保存。

5、编译你的程序

先点击的左边1个,屏幕下方会显示有没有错误。

双击此框中有错误的行,光标会自动跳到源文件的对应行,修改之。

保存,再编译。

如果没有错误了,点击第2个和3个按钮进行“lingk”。

(注意:

新生成的HEX,OBJ,LST等文件是以“工程名”命名的)

6、运行你的程序

编译好的程序可以通过串口写入到单片机内部,过程如下:

将串口线和计算机及单片机的串口连接起来。

将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。

选择单片机型号STC89C51RC或STC89C52RC。

选择左端的OpenFile按钮,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,

打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。

按下复位按钮,或重开试验板电源,你的用户板就可以独立工作了。

观察程序运行情况,根据显示情况对程序进行相应的修改,直到满意为止。

0.4.3实验步骤

1、实验平台

①连接1:

EMMIT-S通过DB25孔与计算机串口通讯接口相连;

②连接2:

将电源线的插头端插入实验平台,另一断接试验电源,红色端子接电源+5V,黑色(白色)端子接电源地。

通电前一定要确认没有接错。

注意:

任何情况下都不能将电源的极性接反或接错电压,否则将可能损坏实验平台。

􀂗以上连接完成后,打开电源,此时电源指示灯应变亮,若指示灯未显示,请立即切断电源重新检查。

注意:

实验2不能在试验板上表现结果,只能观察单片机内存变化。

1.进入Keil仿真环境,打开或者输入程序1。

2.编译并下载程序1,观察显示状态。

3.进入Keil仿真环境,打开或者输入程序2。

(*)

4.点击“View”,在下拉菜单中选择“Memorywindow”,右下角出现存储器观察窗口,在“Address”的方框中输入:

“I:

0x00”后回车,你将看到片内RAM内容,单步执行程序,观察地址20H,21H和22H内容变化。

(*)

5.展开PSW,观察CY的变化。

(*)

6.自己改变程序,采用多种运行方式,体会它的不同之处,观察运行效果。

(例如定义:

BIT4和BIT5的地址,不大于7FH,观察20H~2FH中那个地址与它相关)(*)

7.编译并下载程序2,观察显示状态(*)

0.4.4报告要求

1、描述“全速运行”、“单步”“跟踪”、“断点设置”的方法、运行效果和作用。

2、观察单步运行时,指令产生的效果,补充注释程序中没有注释的语句。

(*)

3、程序2中,能不能删除“AJMPLOOP”语句?

为什么?

(*)

4、解释地址20H和BIT4,BIT1之间的关系。

观察BIT5变化时,RAM中那个地址内容变了?

解释20H~2FH与位地址00~7FH的关系。

写出BIT5在那个RAM中,第几位。

(*)

5、伪指令EQU和BIT在本程序中效果如何?

有何不同?

(*)

0.4.5程序清单

程序1在实验板上显示的第1位,显示A的内容的后4位

ORG0000H

MOVA,#15H

MOVDPTR,#4000H

ANLA,#1FH

MOVX@DPTR,A

程序2

此程序必须用仿真器在keil中相应窗口中观察!

DATA1EQU21H

DATA2EQU22H

BIT0BIT00

BIT1BIT01

BIT2BIT02

BIT3BIT03

BIT4EQU07H

BIT5EQU37H

ORG0000H;程序起始地址

AJMPMAIN;跳转到主程序入口

ORG0030H;主程序入口

MAIN:

MOVSP,#40H;定义堆栈栈底

MOVDATA1,#11H;将立即数11H赋给变量DATA1

MOVDATA2,#0H;将立即数0H赋给变量DATA2

SETBBIT1

SETBBIT2

SETBBIT3

MOV20H,#0FFH

LOOP:

CPLBIT2;位变量BIT2取反

MOVC,BIT1

CPLBIT2;位变量BIT2取反

ANLC,BIT2;与

MOVBIT5,C;注意观察20H内容变化

ORLC,BIT3

MOVBIT4,A;注意观察20H内容变化

SETBBIT0

NOP

CLRBIT0

MOVDATA1,#DATA1;将DATA1作为立即数赋给变量DATA1

INCDATA2;DATA2记录了循环次数

MOVA,DATA2

CPLA

MOVDATA1,A

AJMPLOOP

END

0.4.6教学重点及注意事项

1、仿真调试软件Keil的使用。

2、学会“位寻址”的一般操作,理解20H~2FH中的“位寻址”,伪指令BIT和EQU的作用。

(*)

3、老师讲解,学生参看实验指导书附录中的图纸,理解试验电路板各部分功能和电路原理。

(*)

第一章基础实验

1.1实验二数字显示实验

1.1.1实验目的

1、掌握单片机传输指令。

2、掌握7段LED的原理、使用和字符编码。

3、掌握3总线原理和扩展方法

4、了解二~十进制7段译码驱动器74LS47的运用。

5、了解“动态显示”的含义。

1.1.2实验内容

1、在显示器上显示1,2,3,4,5,6,7,8

2、单步执行例程,观察数码管的变化,理解动态显示含义。

想一想,本例的电路可以作静态显示吗?

为什么?

2、修改程序,将显示的数据顺序变反,显示8,7,6,5,4,3,2,1,体会“位置码”和“数据”的关系。

3、选作:

修改显示程序为“定时中断显示程序”(参看附录4-2)(*)

1.1.3实验原理

由图4-1可以看出,当地址A14(P2.6)为1时,选中U18的74LS273,此时就可以从P0口送出显示数据。

数据格式为:

高四位表明显示位置(由74LS138译码,经三极管驱动,连到不同的数码管)低四位为要显示的BCD数(经7447译码为7段显示代码并送到各数码管的相应笔画引脚)。

编程时,需按硬件规定的地址(P2=40H)送出显示数据,数据=位置+BCD数。

1、7段LED(LightEmittingDiode)数码管

我们常常把8位锁存器的输出直接连接到LED数码管上,此时需用软件译码—把数字变为“段码”,然后送到锁存器,相应的字型就可以显示出来。

注意:

一般连线D0对应笔画a,D1对应笔画b……,D7对应小数点。

软件译码方法可用“查表”法,教材上有介绍。

7段LED显示块是由发光二极管显示字段组成的显示器,分为“共阴”和“共阳”两种(“共阴”“共阳”原理见实验二)。

表4-1为7段LED常用字型码。

下面我们来看看表4-1中的字符码是如何产生的。

以共阴接法7段LED的“0”~“9”字符为例,如表4-2所示。

表3-2无译码的“共阴”显示“段码表”

2、二—十进制7段译码驱动器74247(74LS47)

74247为硬件译码器,输入端只需直接输入十进制BCD数0~9,输出端就可输出字符的“段码”。

且自带驱动,可直接连接数码管。

其字型见图4-2。

与74247类似功能的集成电路很多,例如74LS46、74LS47、74LS48、74LS49等。

3.相关汇编指令

Nop11空指令,延时1个指令周期

1.1.4实验步骤

1.进入keil环境,建立工程,输入程序,注意文件扩展名为“ASM”并保存到D:

你的文件夹中。

2.下载程序

3.运行程序,观察显示的变化

1.1.5报告要求

1为什么动态显示要不断地进行显示循环?

2画出显示程序的原理框图

 

1.2实验三红绿灯显示实验

1.2.1实验目的

1、掌握程序控制指令。

2、掌握分支程序、子程序、循环程序的编写方法。

3、掌握软件延时的方法、了解机器周期和指令周期的概念

3、了解“静态显示”的含义。

1.2.2实验内容

1、在显示实验2的基础上,如果将第7位,第3位,第1位分别看成红灯、黄灯和绿灯,红灯10秒(对应位显示0)后,显示黄灯2秒(对应位显示0),再显示绿灯5秒,循环显示,编写对应程序,

程序要求,延时使用子程序,最好使用标志位。

其它内容见显示实验。

2、单步执行例程,观察数码管的变化,理解动态显示含义。

想一想,本例的电路可以作静态显示吗?

为什么?

3、选作:

如果会运算指令,请在相应置显示剩余秒数(*)

1.2.3实验原理

1显示原理

如实验2所示

2相关汇编指令

伪指令

ORG0000H程序从0000H开始编译

END程序编译结束

1.2.4实验步骤

如前。

1.2.5报告要求

1、什么是静态显示和动态显示?

2、为什么动态显示中,每显示一个数要延时若干时间?

试修改延时程序的立即数观察运行效果,并作记录。

分析延时长好还是延时短好,说明延时量对人眼的视觉影响。

(如果没有将程序结构,可以直接使用多个nop语句延时)

1.3实验四键盘扫描实验

1.3.1实验目的

1、掌握MCS-51单片机P1口的查询工作方式(I/O口输入/输出)。

2、学会单片机键盘的扩展方法和软件处理。

3、理解“键抖”的含义并掌握其解决方法。

4、学会流程图的绘制。

1.3.2实验内容

编写程序实现:

每按一次键,LED数码管上显示相应的按键值。

观察LED数码管显示情况,体会键盘扫描原理。

1.3.3实验原理

1、P1口的结构原理

I/O口的每位锁存器均由D触发器组成。

下面以P1口为例介绍一下它们的原理。

在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。

锁存器的输出端反馈到内部总线上,以响应来自CPU的"读锁存器"信号,把锁存器的内容读入内部总线上,送CPU处理.而欲使CPU响应"读引脚"信号时,先由CPU向要读的引脚(如P1.X)的D触发器送一个高电平。

如图4-1所示.此时锁存器D端为高电平,则/Q输出为低电平,T1截止,引脚对外为高阻,其状态由外电路决定。

CPU可通过"读引脚"端将P1.X引脚上的数据读入。

2、矩阵式键盘接口

矩阵式键盘由行线和列线组成,如图3-2所示。

本实验中,行线和列线都连接到P1口。

按键安装在行、列的交叉点上。

键值定义也如图所示。

P1口自带上拉电阻,因此没有外接。

按键的识别方法有扫描法和线反转

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1