单片机及智能仪器实验指导书.docx

上传人:b****7 文档编号:10430283 上传时间:2023-02-11 格式:DOCX 页数:19 大小:42.58KB
下载 相关 举报
单片机及智能仪器实验指导书.docx_第1页
第1页 / 共19页
单片机及智能仪器实验指导书.docx_第2页
第2页 / 共19页
单片机及智能仪器实验指导书.docx_第3页
第3页 / 共19页
单片机及智能仪器实验指导书.docx_第4页
第4页 / 共19页
单片机及智能仪器实验指导书.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机及智能仪器实验指导书.docx

《单片机及智能仪器实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机及智能仪器实验指导书.docx(19页珍藏版)》请在冰豆网上搜索。

单片机及智能仪器实验指导书.docx

单片机及智能仪器实验指导书

《单片机及智能仪器》

实验指导书

 

杨明亮梁应选编

 

适应专业:

测控技术与仪器

 

陕西理工学院机械工程学院

2012年4月

前言

《单片机及智能仪器》是一门实践性很强的课程。

为了使学生更好的理解和掌握这些知识,灵活应用单片机,使学生熟悉单片机实用技术的开发过程,提高汇编语言的编写能力,提高对汇编语言的编辑、汇编、调试运行等技能,设置了软件类、硬件类和综合应用类实验,通过上机及接口实验,熟练地掌握单片机的编程结构、工作模式、指令系统;学会汇编语言程序设计;掌握微机输入/输出接口的基本概念,主要模式和基本工作方法,掌握并行和串行接口的原理,学会并行输入/输出口的扩展,并能够进行基本的接口设计,提高其实践能力;并培养学生实事求是、严谨的科学作风和良好的实验习惯,为今后课程学习以及开发应用打下基础。

开设“单片机综合实验”的目的,是总结几年来单片机教学中,用购买的实验箱,虽然功能很齐全,但基本上是黑箱结构,对初学者,不是从最简单的最小系统开始,一步步深入,做完实验后,效果很差,大部分学生对单片机的系统没有感性认识,最后在课程设计和毕业设计中,连最简单的单片机最小系统都不清楚。

因此该实验就是想让学生从最简单的系统开始,自己搭建,编程,调试和固化程序,循序渐进,逐步深入。

本实验指导书是针对测仪专业《单片机与智能仪器》课程实验设置的,两个2学时的验证实验和一个6学时的综合实验。

实验一:

LED显示实验

实验学时:

2

实验类型:

验证

实验要求:

必做

一、实验目的:

1、了解MCS51系列单片机汇编语言的设计和调试方法;

2、掌握8032单片机通过8155扩展I/O接口时,LED显示的连接方法和编程方法。

3、了解LED动态显示原理及汇编语言编程。

二、实验内容:

1、观察单片机实验系统(实验箱)结构与原理;

2、看懂附录1中的程序,将程序输入并调试;编译、调试、运行该程序,显示结果应为“123456”;

3、修改该程序,让LED交替显示“123456”和“654321”,注意交替变化中间要有明显的保持时间;也可以显示任意两个六位数字或字符(用七断数码管可以显示的字符,如“H”、“L”等)。

三、实验原理:

本次实验采用启东计算机总厂生产的“DICE系列单片机实验系统”,该系统运行的基本原理与一般的单片机系统是一样的,但作为实验系统,它的程序存储器里面存储的是监控管理程序,实验所编写的程序,在计算机中进行调试,编译,生成可执行文件,然后将实验程序存入实验系统中的扩展数据存储区。

所以实验程序在断电后就从实验箱中消失了。

在DICE系列单片机实验系统中,用8155芯片扩展I/O口,显示用LED数码管,系统分配给显示部分的端口:

8155A口,连LED显示的字位口,地址为FF21H;8155B口,连LED显示的字形口,地址为FF22H。

四、实验组织运行:

采用集中授课形式,分组进行实验。

五、实验条件:

1、单片机实验系统一套;

2、计算机一台;

3、WIN51仿真软件一套

六、实验步骤:

1、打开实验箱,查看单片机以及其它芯片的铭牌,记录相关芯片的型号;

2、参照教材和实验指导书,找出上述芯片的型号,记录各芯片的作用和引脚功能;

3、打开计算机,进入WIN51仿真软件(执行DICE51.EXE文件),打开其工作界面;

4、检查计算机与单片机是否连接就绪。

即查看WIN51工作界面底边状态栏由“脱机就绪”变成“联机就绪”,说明联机成功。

否则对话框提示“单片机未连上”,要检查硬件实际连接情况,在设置菜单下设定COM1或COM2。

5、将自己编写的程序或提供的参考程序输入,然后进行调试,编译,改正错误。

一直调到没有错误为止,然后让程序单步运行、连续运行,查看程序运行结果。

七、思考题:

1、LED显示分为动态显示与静态显示,本次实验采用动态还是静态显示,显示的原理是什么?

八、实验报告:

实验报告内容应包括实验目的、原理和内容以及结果,特别是修改程序的结果,做详细记录。

应对实验过程,程序调试中出现的问题及解决方法进行记录,对实验中出现的问题应进行分析。

必须对程序全部进行注释。

八、附录

附录1.1:

LED显示源程序

说明:

在LED上实现字符显示的方法,是将待显示的字形码,送入8155的字形口(B口)地址FF22H,显示位置送入8155的字位口(A口)地址FF21H。

附录2给出了本实验中的字形、字位表。

一个字长为8位的二进制,要在两个LED上显示,因此程序中有如何将一个字拆分成两个字。

输入程序时可以不输注释语句。

ORG0500H

SE15:

MOVSP,#53H

LED:

MOVR0,#79H;将字形存在RAM的79H-7EH

MOVR6,#65H;输入待显示的字符

MOVR5,#43H

MOVR4,#21H

MOVA,R6;调用拆分程序将3个字节拆成6个字节

LCALLPTDS

MOVA,R5

LCALLPTDS

MOVA,R4

LCALLPTDS

LCALLSSEESJMPLED;循环显示

;字节拆分程序

PTDS:

MOVR1,A

ACALLPTDS1

MOVA,R1

SWAPA

PTDS1:

ANLA,#0FH

MOV@R0,A

INCR0

RET

;字节显示程序

SSEE:

SETBRS1;换工作寄存器第三组

MOVR5,#05H;每个字显示5次

SSE2:

MOV30H,#20H;字位码初值

MOV31H,#7EH;字形码初地址

MOVR7,#06H;显示位数

SSE1:

MOVR1,#21H;输入字位码

MOVA,30H

MOVX@R1,A

MOVR0,31H;查表、输入字形码

MOVA,@R0

MOVDPTR,#DDFF

MOVCA,@A+DPTR

MOVR1,#22H

MOVX@R1,A;字形送入地址22H

MOVA,30H;改变字位

RRA

MOV30H,A

DEC31H;转换为下一个字形

MOVA,#0FFH

MOVX@R1,A;关显示

DJNZR7,SSE1;6位显示完了吗?

DJNZR5,SSE2;5次显示完了吗?

CLRRS1

RET

;以下为字形表,见表2。

DDFF:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH

END

附录1.2:

字形、字位表

字位表

G5

G4

G3

G2

G1

G0

未用

未用

20

10

08

04

02

01

字形表

代码

D7

D6

D5

D4

D3

D2

D1

D0

字形

H

h

g

f

e

d

c

b

a

C0

1

1

0

0

0

0

0

0

0

F9

1

1

1

1

1

0

0

1

1

A4

1

0

1

0

0

1

0

0

2

B0

1

0

1

1

0

0

0

0

3

99

1

0

0

1

1

0

0

1

4

92

1

0

0

1

0

0

1

0

5

82

1

0

0

0

0

0

1

0

6

F8

1

1

1

1

1

0

0

0

7

80

1

0

0

0

0

0

0

0

8

90

1

0

0

1

0

0

0

0

9

88

1

0

0

0

1

0

0

0

A

83

1

0

0

0

0

0

1

1

B

C6

1

1

0

0

0

1

1

0

C

A1

1

0

1

0

0

0

0

1

D

86

1

0

0

0

0

1

1

0

E

8E

1

0

0

0

1

1

1

0

F

FF

1

1

1

1

1

1

1

1

0C

0

0

0

0

1

1

0

0

P.

89

1

0

0

0

1

0

0

1

H

7F

0

1

1

1

1

1

1

1

.

BF

1

0

1

1

1

1

1

1

-

注:

低电位亮。

实验二单片机资源应用

实验学时:

课内6学时,课外6学时。

实验类型:

综合

实验要求:

必做

一、实验目的

1、掌握单片机最小系统的设计。

2、了解51系列单片机并行口输出/输入方式的工作原理及编程方法。

3、掌握51系列单片机中断的设置方法及编程实现。

4、掌握定时器/计数器的设置方法及编程。

5、掌握设计简单的单片机系统并在面包板上搭建单片机系统,或在单片机实验板上组建单片机系统。

6、用七段数码管进行数据显示。

二、实验内容

实验内容按要求分A、B、C、三部分,其中A是必做内容,B是选做内容,C是提高内容。

内容A:

按实验指导书给出的单片机最小系统和4位七段LED数码管动态显示电路,在面包板上搭接,然后用汇编语言编写显示程序,在数码管的任何一位显示要求的数字。

该部分主要是熟悉并掌握单片机的最小系统,振荡电路、复位电路,端口的应用,动态显示的电路及编程,程序的调试及固化,掌握用keil软件调试汇编程序。

由于显示是人机交流的窗口,是以后其它功能实验的基础。

必须在内容A中很好的掌握。

实验电路见附图,还给出数码管引脚图,元器件清单等。

电路说明:

该电路是一个在单片机最小系统上接了4个数码管,由于AT89C51片内有4K的FlashMemory存储器,故在软件不是很大的情况下,一般不需要扩展片外程序存储器,故单片引脚EA接高电平;复位采用上电复位和人工按钮复位;显示采用七段共阳极数码管,位码采用三极管9014驱动,因为LED数码管的电压在1.5-3V,电流在2-20mA,故要加限流电阻。

注意该电路图中的总线画法。

内容B:

在以下两个内容中选做1个

1、用定时器定时,(定时器T0或T1任选),每过20ms计数1次,并将计数值在LED上显示。

提示:

该部分的主要内容是定时器和中断的性能和编程,要知道晶振的频率,然后根据要求的时间,确定定时器的工作方式,计算定时器的初值,设定定时器与中断,在RAM中设定两个单元,永远计数,每中断一次该计数单元的值加1,程序启动后,一直处于动态显示中,直到中断时才处理加1程序。

要注意中断程序的地址,定时器不同该地址也不同,具体请查中断服务程序服务入口地址。

由于几个中断程序入口地址仅相隔8个单元,如果中断程序较长,一般要转移到后面的单元中。

2、由定时器T0计时,对T1口在一定时间内输入的脉冲进行计数并显示。

脉冲的产生可以用点动开关,也可以用信号发生器或单片机实验箱中的分频信号,也可以给出分频器,自己设计电路,对单片机EA口输出信号进行分频。

该实验较上一个实验难度大,用了两个定时器/计数器。

涉及到计数器的设计,由T0定时中断,然后读T1的计数值。

内容C:

该部分内容属提高内容,供学有余力且感兴趣的学生选做,其他学生不作要求。

因此该部分的主导思想是只提要求,提供元件,由学生自己设计电路,编写软件。

教师仅作指导。

这样可以更好的锻炼学生的能力。

1、串行EPROM存储器及按键的电路设计及编程。

在智能仪器中,不可避免的要有按键进行功能转换和控制,经常将标定的系数和测量的数据存储起来,希望下一次开机、甚至断电的情况下该数据能长期保留,用AT24C02等串行EPROM芯片就可以实现该该功能。

这个实验的要求,就是用按键进行控制,将一批数据存储在AT24C02芯片中,然后又用另一个功能键将该数据取出并进行显示。

下面只给出该芯片的资料,自己设计电路,编写软件。

2、RS232串行通信实验。

因为串行通信是智能仪器中经常应用的功能,本实验提供MAX232芯片和电容,由两组同学一起,用串行口实行远距离(5-10m)通信。

也可以和计算机进行通信。

3、模拟信号的数据采集实验,该实验提供ADC0809芯片,由学生自己完成电路设计,搭建。

并进行编程,将一个0-5V的电压信号通过A/D转换后在显示器中显示。

三、实验组织运行要求:

采用学生自主训练为主的开放模式组织教学。

每4个人一组,共同完成电路设计,搭建,软件编写,调试。

四、实验条件:

1、实验面包板一块(或单片机实验板);

2、AT89C51(或相近型号)单片机1个;

3、稳压电源1台;

4、电源插座1只;

5、计算机1台;

6、其它芯片见下表:

(注意:

实验未用的元件报告中不能出现)

序号

名称

型号

1

单片机

AT89C52

2

RS-232收发器

MAX232C

3

三极管

9014

4

模数转换器

ADC0809

5

晶振

24MHZ

6

译码器

74LS138

7

采样保持器

LF398N

8

LED数码管

Sm4205(共阳极)

9

电阻

需要的规格

10

电容

需要的规格

11

面包板

12

轻触开关

KFC_A06_05

说明:

其他元件,电路设计后和指导教师商量解决。

五、实验步骤:

1、实验前先进行实验内容的预习,在课外设计好实验接线图,编写实验要求的汇编程序,并在计算机上进行编译和调试,将调试好的程序转换成*.HEX格式存入移动U盘。

2、实验时按电路图接好线后,将*.HEX程序写入单片机中,进行程序调试。

3、观察实验过程,详细记录实验中出现的问题,并分析其原因以及程序的修改过程。

六、思考题:

1、如何设置定时器和中断?

2、显示器的地址如何确定,如何将一个数据进行动态显示。

怎样查询要显示的数字。

七、实验报告:

1、实验的目的、要求;

2、实验电路图的设计,所用元件性能的简单介绍;

3、实验程序的编写与调试,并对程序加以详细注释;

4、调试过程与调试结果,并对调试中出现的问题进行分析;

5、回答本实验相关问题。

6、实验的体会与总结。

 

附2.1:

单片机最小系统实验原理图

附2.2设计编程注意事项

一、硬件设计

1、单片机选用

本次实验,单片机采用的是AT89C××系列或AT89S××系列,该系列单片机片内都含有闪速程序存储器,可以根据所编写程序代码大小选择有不同片内程序存储器的单片机,一般情况下,课程设计中的程序代码都不是太大,2K或4K的程序存储器都可以满足。

数据存储器一般都较小,不进行大量的数据处理,或数组变量中成员不是太多的情况下,片内RAM是够用的。

2、端口资源分配

接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。

包括键盘、显示、A/D转换、D/A转换和打印机等。

根据实验要求,选用外设,并选用合适的外围接口芯片。

I/O端口是CPU与I/O设备直接通信的地址。

单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。

而编址技术又分线选法和译码法。

在设计单片机系统时,对地址必须有一个清楚的认识,一但硬件确定,则相应的扩展地址也就确定了。

3、数据采集单元设计

要针对不同的要求,不同的情况设计数据采集电路。

设计时要考虑测量范围,显示精度,信号的情况,信号变化缓慢的还是变化很快,信号的质量,确定是否需要放大、滤波、采样保持电路;对于数字信号,也要考虑信号的大小和质量,考虑是否用比较电路、驱动电路和光电隔离等。

4、显示单元设计

显示是仪器和人交流信息的重要窗口,也是仪器的一个重要组成部分。

根据题目要求,确定显示的形式(静态显示还是动态显示;LED显示好事LCD显示等),显示的位数,所以必须对要显示的信息做到心中有数,设计的显示单元要满足所有要显示信息的显示要求。

由于LED显示的控制较为简单,本次实验室提供LED指示灯和8段LED数码管。

5、按键控制单元设计

一个测控系统,总是有许多功能,有些功能可以根据系统的运行状态自己变化,如智能仪表中的量程自动选择;但相当多的功能需要人工控制,如交通灯控制中的各段时间的设定等,所以对于测控系统来讲,一般都要有人工控制信号的输入端口-按键或键盘。

设计按件或键盘,要对设计对象的功能相当熟悉,才能正确确定按键的数量。

如果要输入的数字较大且是随机的,要考虑设计键盘。

如果不是很大,或者数字很大但变化范围不大的情况下,尽量使用按键。

6、其它功能设计

其他功能设计,需要根据题目要求,如串行通信,D/A转换等,因为本次实验时间所限,布置任务时,将一些功能不做要求或作为选择内容,学生可以根据实际情况取舍,进度较快的课题组,还可以自己增加相应内容。

7、硬件设计以后,要求搭建电路,在软件未编写完以前,编写测试软件,先对硬件的各部分进行测试。

二、软件设计

本次软件设计必须采用汇编语言,考试考核内容是汇编语言。

(在以后学习了单片机C语言以后,可以采用单片机C语言,由于单片机C语言在系统开发中有明显的优越性,掌握单片机C语言对以后可能从事该工作的同学有很大的益处。

鼓励同学用单片机C语言编程。

1、对编写软件的要求:

①软件结构清晰、简捷、流程合理。

②各功能程序实现模块化、子程序化。

这样,既便于调试、链接,又方便移植、修改。

③程序存储区、数据存储区分配合理。

④运行状态实现标志化管理。

各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。

⑤软件抗干扰性能好。

2、设计前的准备工作

1)定义系统功能,画出流程图

系统定义是在软件设计前,把软件承担的任务明确出来。

然后对软件进行功能分块。

画出流程图,特别注意有中断时,中断流程图和主流程图一定是分开的。

这一部分是相当重要的工作,对后面程序编写与调试是否顺利有很多影响,一定要认真对待。

软件设计有两种方法:

一种是自上而下,逐步细化;另一种是自下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,最后组成一个系统。

两种方法各有优缺点。

自上而下的方法在前期看不到什么具体效果,对于初学者来说,心中总是不踏实。

而自下而上的方法一开始就有结果,每设计并测试好一个模块,就能看到实际的效果,给人一步一个足印的感觉,能树立信心。

建议两种方法结合运用。

主程序采用自上而下的方法,将它分成若干个功能相对独立的较小的程序模块。

然后再采用自下而上的方法,设计一个模块,调试一个模块,加入主程序调试;再进行下一个模块设计和调试。

所以在这一步骤就是设计主程序的框架。

根据问题的定义,确定算法,并绘制程序框图。

注意必须确保程序框图的正确性。

比如在电脑时钟中,考虑输入“分”的数据的合理性,数据必须小于60,程序框图中就不能忽视等于60如何处理。

这是初学者常犯的错误。

2)合理选用数据类型

数据类型选用,在用单片机C语言编程时特别重要。

各种数据类型的定义。

是定点数还是浮点数;是有符号数还是无符号数;是十六进制数还是BCD码。

如果一个参数的变化范围有限,就可以用定点数来表示,以简化程序设计和加快运行速度。

当参数的变化范围太宽时,只好采用浮点数来表示。

若要求数据的正负之分,则考虑定义有符号数。

对于自然数列,为显示方便,可以采用BCD码,如电脑时钟的时、分、秒。

3)合理定义和分配存储空间、定义标志位。

资源分配的主要工作是RAM资源的分配。

片外可扩展RAM的容量要比片内RAM大,在数据量较大的情况下,要扩展片外RAM,通常用来存放批量大的数据,如采集的大量数据的存储。

用汇编语言编程,片内RAM的分配,是一个相当麻烦,要有一定技巧的工作,那个变量放在那个存储单元,该变量需要长期保存还是保存到某一个阶段,在用单片机汇编语言编程时,不能象编普通的计算机程序那样,否则容易造成RAM不够用或者将有用的数据覆盖。

注意用单片机C语言编程不存在这个问题。

系统上电复位时,自动定义0区为工作寄存器,1区为堆栈,并向2区、3区延伸。

如果系统前台程序要用1区、2区作为工作寄存器,就应将堆栈空间重新规划,常将堆栈安放在片内RAM的高端,如60H—7FH。

在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。

20H~2FH这16个字节具有位寻址功能,用来存放各种软件标志、逻辑变量、位输入信息、位输出信息副本、状态变量、逻辑运算的中间结果等。

当这些项目全部安排好后,保留一两个字节备用,剩下的单元才可改作其他用途。

30H—7FH为一般通用寄存器,只能存入整字节信息。

通常用来存放各种参数、指针、中间结果,或用作数据缓冲区。

RAM资源规划好后,应列出一张RAM资源的详细分配清单,作为编程依据。

为了增加可读性,便于修改,一般对分配的存储单元取名。

如保存当前时间的时、分、秒取HOUR、MINI、SEC,编程时用变量名,编译时只需在前面加HOUREQU24H即可(20H为分配给小时的存储单元的地址)。

3、编程时注意事项:

①一定要严格根据框图编程。

②一定要写注释。

③通过编译后,只表明语法没错,并不表明逻辑正确,一定要用不同的数据对模块进行测试。

完全符合预定结果,方可确认通过。

④将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。

⑤必须注意随时保存调试通过的副本。

以便当新程序出现故障时,随时可返回前面的正确点重新开始。

4、软件的调试

调试程序一般应经过以下几个步骤:

1)先进行人工检查,即静态检查。

在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。

这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。

而这一步骤往往容易被人忽视。

有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。

 2)在人工检查无误后,才可以上机调试。

通过上机发现错误称动态检查。

在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。

应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。

有时提示出错的类型并非绝对准确,由于出错的情况繁多,各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息。

 如果系统提示的出错信息多,应当从上到下一一改正。

有时显示出一大片出错信息往往使人感到问题严重,无从下手。

其实可能只有一二个错误。

例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息;有的是少了“}”或多了“}”有的是书写语句时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“};”就所有错误都消除了。

3)在改正语法错误后,程序经过连接就得到可执行的目标程序。

目标程序可以用Keil软件进行仿真。

对仿真结果要作认真分析。

看它是否符合要求。

有时,数据比较复杂,难以立即判断结果是否正确。

可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。

可以在计算的输出结果的程序地方加入一段输出到串口的程序,利用串口窗口可以方便看到结果的。

 4)运行结果不对,大多属于逻辑错误。

对这类错误往往需要仔细检查和分析才能发现。

可以采用以下办法:

K

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

当前位置:首页 > 工程科技 > 电力水利

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

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