单片机原理与应用实验指导书03副本1Word文件下载.docx

上传人:b****5 文档编号:20797772 上传时间:2023-01-25 格式:DOCX 页数:26 大小:1.65MB
下载 相关 举报
单片机原理与应用实验指导书03副本1Word文件下载.docx_第1页
第1页 / 共26页
单片机原理与应用实验指导书03副本1Word文件下载.docx_第2页
第2页 / 共26页
单片机原理与应用实验指导书03副本1Word文件下载.docx_第3页
第3页 / 共26页
单片机原理与应用实验指导书03副本1Word文件下载.docx_第4页
第4页 / 共26页
单片机原理与应用实验指导书03副本1Word文件下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

单片机原理与应用实验指导书03副本1Word文件下载.docx

《单片机原理与应用实验指导书03副本1Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用实验指导书03副本1Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。

单片机原理与应用实验指导书03副本1Word文件下载.docx

uVision2集成开发环境如图1-1所示,有编辑、项目、输出等3个大窗口和File、Edit、View、Project、Debug、Periherals、Tools、SVCS、Windows、Help等下拉菜单。

1.2.1创建、保存工程文件

在uVision2环境下,使用工程来管理各个文件。

为了开始新的工程,选择“Project/NewProjiect”选项,出现如图1-2所示界面。

然后选择此新工程要保存的路径,键入项目名称并保存,项目名称将会出现在集成环境的左上端,名称后缀为“.uv2”,如图1-3所示。

注意项目名称最好不要超过8个字符、尽量不采用中文,与软件编程时变量的命名习惯一致。

1.2.2MCU选择

接着系统出现“SelectDeviceforTarget”界面,要求选择目标硬件系统的MCU,如图1-4所示。

选择要开发的目标硬件系统的MCU,点击“确定”即可。

对于SuperICES-51实验仪,应选择Atlmel的AT89C51。

1.2.3添加源文件

如图1-5所示,在“Target1/SourceGroup1”上点击右键,选择“/AddFilestoGroup‘SourceGroup1’”后,出现如图1-6所示界面,添加所要的源程序。

源程序包括“*.C”、“*.ASM”、“*.LIB”、“*.A51”等。

1.2.4目标硬件系统配置

源程序添加完毕后,进行“OptionforTarget”的设定。

在菜单栏中,选择“Project/OptionforTarget…”,出现如图1-7所示界面。

点击Target选项卡,输入目标硬件系统的晶振频率,本实验仪为11.0592MHz;

点击Output选项卡,选中CrestHexFile选项,在编译时系统将会自动生成目标代码文件*.HEX;

点击Debug选项卡,如图1-8所示,选择仿真模式等。

uVision2的仿真模式分为UseSimulator(软件仿真)和Use(硬件仿真)2种。

其中UseSimulator选项是将uVision2调试器设置成软件模拟仿真模式,在此模式下不需要实际的目标硬件就可以模拟8051单片机的很多功能。

UseSimulator中的“LoadApplicationatStart”是装入程序的复选框,“Gotillmain()”是表示从应用程序的主函数开始执行的复选框。

除非有特殊情况,一般都同时使用这两复选框。

Use选项有高级的GDI驱动(ICES仿真器)和KeilMonitor-51驱动。

运用此功能可以把KeilC51嵌入到自己的系统中去,从而实现在目标硬件上调试程序。

实验仪选择“usekeilMonitor-51Driver”。

选择“loadApplicationatstart”,在启动时直接装载程序,选择“Gotillmain”,C51开发时,装载后直接运行到main函数。

硬件仿真模式下还需配置波特率等,点击“Settings”选项,如图1-9所示。

选择“serialinterrupt”,在前面打勾,否则装载过程中,仿真器会发出“嘀”一声长声报警,仿真结果将可能不正确。

选择正确的串口号,波特率最高为38400;

建议只选cachecode。

1.2.5程序编译、连接与下载

使用“Project”下拉菜单中的编译命令,“BuildTarget”(

)只编译和连接在项目窗口中的修改过的程序;

“RebuildallTargetFile”(

)编译和连接项目里所有的源程序文件。

编译等无误后,使用菜单栏中的“Debug”下“/start/stopDebugSession”或使用快捷方式(

)进入硬件调试系统,如图1-10所示。

“Debug”下“Step”或用快捷方式(

)进行单步(进子程序)调试;

“Debug”下“StepOver”或用快捷方式(

)进行单步(不进子程序)调试;

“Debug”下“Runtocursorline”或用快捷方式(

)进行运行到当前光标处调试;

“Debug”下“Go”或用快捷方式(

)进行全速运行,直到下一个有效断点;

“Debug”下“/start/stopDebugSession”进入、退出硬件调试系统环境。

另外,“Debug”下还有“stoprunning”、“rst”等操作。

第二章演示程序

为了更好地熟悉uVision2集成开发环境仿真开发系统的应用,本指导书提供了一个完整的程序编译、调试例子,详细说明集成环境下的各种操作。

程序内容:

将1~10十个数相加,并把其和放入内部RAM30H单元。

这个问题有好几种算法,如果单纯从算法上来说,下面所列算法并不是最优的,因为其目的在于让你熟悉仿真系统的各种操作。

算法介绍:

1.加数、被加数、和最终单元(SUM)首先设置初始值,分别为1、0、0,加法次数单元(R2)设为10;

2.每次加法所得中间结果存放在被加数单元中(累加器ACC),同时将加数单元增1;

3.做完一次加法后,加法次数单元减1,并判断是否已为0(即已做完10次加法),如果不为0,继续做下次加法,若为0,则将累加器内容赋值给和最终单元;

4.做完后,程序原地循环。

算法流程图及源程序分别如下:

源程序:

;

变量DATA_REG中的内容为加数(1-10);

ACC中的内容为被加数,同时也是每一次加法后的和中间结果存放单元;

做完10次加法后,再将ACC内容放入指定的和单元SUM中。

********************************************************

DATA_REGEQU31H;

定义加数单元

SUMEQU30H;

定义和单元

=========================================================

ORG0000H;

复位后PC指针

LJMPMAIN

---------------------------------------------------------

ORG0100H;

从程序存储空间0100H单元放程序

MAIN:

MOVSP,#70H;

堆栈指针从复位后的07H调整到70H

MOVDATA_REG,#1;

加数单元初始值为1

MOVSUM,#00H;

和单元初始值为0

MOVR2,#10;

加法循环次数为10

CLRA被加数单元初始值为0

CLRC;

进位初始值为0

ADD_LOOP:

ADDCA,DATA_REG;

被加数+加数,结果放入ACC

INCDATA_REG;

加数增1

DJNZR2,ADD_LOOP;

10次加法未做完,继续做

MOVSUM,A;

10次加法已做完,将和放入SUM单元

LJMP$;

原地循环

*********************************************************

END

2.1打开仿真环境,新建一个工程文件

按第一章介绍建立一个工程名为“test.uv2”的工程文件,选择目标硬件系统的MCU为Atlmel的AT89C51;

目标硬件系统配置选择“UseSimulator”,其余配置参考第一章介绍。

2.2输入源程序

单击菜单“File/New”,出现源程序编辑窗口,输入源程序,以“*.asm”保存,选择“/AddFilestoGroup‘SourceGroup1’”,将此源程序添加到工程中,如图2-1所示。

2.3源程序编译、连接

单击“project/rebuildalltargetfiles”菜单或者按按纽,仿真环境则对源文件进行编译连接,视程序正确与否,有两种编译结果:

若程序无误,编译通过,出现如图2-2所示的编译信息窗口,说明编译成功。

若源程序有误,则出现如下的编译连接信息窗口,说明编译错误。

可双击错误信息,则在源文件编辑窗口中自动显示出错信息所在行。

2.4程序调试

源程序编译通过并不代表程序就一定正确,这只能说明程序已经没有语法上的错误了,至于在算法、流程上是否正确,则需要对程序进行调试,如果程序运行结果符合事先设计的算法、流程,那么这才能说编写的程序是正确的。

初学者很容易犯急噪的毛病,即程序编译通过后,急着让程序连续运行,若运行通过(即结果正确),则认为程序就正确了,其实,这样做并不能说明程序完全正确,有时一个程序对于某些初始条件,可以得到正确结果,而初始条件改变后,却发现结果错误。

程序调试的一般做法是:

编译、连接通过后,不要急于让程序连续运行,而是先进行手动的单步调试,随时观察各个变量、RAM单元、流程跳转等是否符合算法规定,排除各种非语法性错误,直至程序完全正确;

对于复杂程序,必须设计成模块化结构,调试时一个一个模块单独调试,每个模块均正确后,再进行整个程序的调试。

在调试过程中,充分利用断点、变量窗口、寄存器窗口、内部RAM窗口等各种工具,提高程序调试效率。

编译通过后,使用菜单栏中的“Debug”下“/start/stopDebugSession”或使用快捷方式(

)进入硬件调试系统,如图2-4所示。

为了观察每一次加法过程的变化,可通过“View/MemoryWindow”打开存储器观察窗口,在“Address”栏中输入“D:

XXH”(XX为地址),观察内部RAM各单元变化情况。

“Address”栏中输入“D”表示内部RAM,“X”表示外部RAM,“C”表示程序存储空间。

可以用“Debug”选项下各种调试手段调试程序,如单步(进子程序)、单步(不进子程序)、运行到当前光标处、断点运行、全速运行等,以及停止、复位等等,以便进一步熟悉仿真系统的各种操作。

第三章实验项目

实验一简单程序设计实验

一、实验目的

掌握uVision2IDE单片机集成开发软件的应用,熟悉单片机仿真开发环境,掌握基本的单片机软件调试方法,为后续实验做好准备。

掌握单片机内部RAM之间、内外RAM之间、外部RAM之间的数据传送操作;

掌握MCS-51汇编语言程序设计方法。

二、实验内容

1、置数程序

把2000H~20FFH的内容全部置成55H。

ORG0000H

LJMPMAIN

ORG0100H

MOVR0,#0

MOVDPTR,#2000H

MOVA,#55H

LOOP:

MOVX@DPTR,A

INCDPTR

DJNZRO,LOOP

LJMP$

END

(1)实验程序框图

(2)实验步骤

用连续或单步方式运行程序,

检查2000~20FF单元中程序执行前后的内容变化。

(3)思考

假使把2000H~20FFH中的内容改成FFH,如何修改程序。

MOVR0,#00H

MOVA,#0FFH

INCR0

CJNE@R0,#0FFH,LOOP

2、拆字程序

把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

MOVXA,@DPTR

MOVR0,A

SWAPA

ANLA,#0FH

MOVX@DPTR,A

MOVA,R0

(2)实验步骤

用连续或单步方式运行程序,检查2000H~2002H单元中内容变化情况。

(3)思考

如何用断点方式调试本程序。

3、内部、外部RAM数据传送程序

按以下要求自行设计程序流程图,编写、调试程序。

(1)内部RAM之间数据传送;

将内部RAM40H~4FH单元内容传送到内部RAM60H~6FH单元中。

源数据(首址存放在R2单元中);

目的数据(首址存放在R4单元中);

数据字节数存放在R6单元中。

ORG0000H

MOVR6,#10H

MOVR2,#40H

MOVR4,#60H

MOVA,@R2

MOV@R4,A

INCR2

INCR4

DJNZR6,LOOP

SJMP$

END

(2)内外RAM之间数据传送;

将内部RAM40H~4FH单元内容传送到外部RAM2040H~204FH单元中。

目的数据(首址存放在DPTR0中);

ORG0000H

MOVR2,#40H

MOVDPTR0,#2040H

MOVR6,#10H

MOVA,@R2

MOVX@DPTR0,A

INCDPTR0

DJNZR6,LOOP

SJMP$

END

(3)外RAM之间数据传送;

将外部RAM1000H~1111H单元内容传送到外部RAM2000H~2111H单元中。

源数据(首址存放在DPTR0中);

目的数据(首址存放在DPTR1中);

数据字节数存放在R6.R7单元中。

实验二I/O口实验

一、实验目的:

(1)学习单片机I/O口的使用方法;

(2)学习延时子程序的编写;

(3)掌握基本的单片机硬件调试方法。

二、实验预备知识:

(1)P1口为准双向口,每位都可独立地定义为输入或输出,在作输入使用前,必须向口锁存器相应位写入“1”,该位才能作为输入;

(2)本实验中延时子程序采用循环来实现,定时时间=机器周期时间*程序总机器周期数(本实验箱晶振频率为11.0592MHz)。

三、实验内容:

P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

(1)左移点亮1只发光二极管;

(2)右移点亮1只发光二极管;

(3)左移点亮2只相邻发光二极管;

(4)右移点亮2只相邻发光二极管。

LJMPMAIN

ORG0100H

MOVR0,#08H

MOVA,#0FFH

MOVR1,#08H

RRCA

MOVP1,A

LCALLDELAY

DJNZR0,LOOP

LOOP1:

RICA

DJNZR1,LOOP1

DELAY:

MOVR7,#20

DEL1:

MOVR6,#150

DEL2:

MOVR5,#100

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

四、实验程序框图

给出实验内容

(1)参考流程图,其余内容自行设计。

五、实验硬件连线

将P10---P17按顺序连接到LED1---LED8

六、实验思考

(1)修改延时常数,改变发光二极管闪亮时间;

(2)修改程序,改变发光二极管闪亮个数、方向。

实验三定时器实验

(1)学习单片机定时器的使用方法;

(2)掌握单片机长定时方法;

(3)掌握基本的单片机定时器调试方法。

本实验箱晶振频率为11.0592MHz,定时器工作方式1下最长定时时间为65536us,如果要求定时时间大于此值,则可采用多次定时方法来实现长定时。

编写程序,使定时器每500ms对内部RAM单元40H的内容加1,然后用P1口控制的8只发光二极管显示40H单元的二进制数值。

四、实验思考

修改定时时间,改变数值显示速度。

实验四A/D、D/A转换实验

1、掌握A/D、D/A转换芯片与单片机接口的方法;

2、了解A/D芯片ADC0809转换性能及编程方法;

3、了解D/A芯片DAC0832转换性能及编程方法;

4、了解如何通过A/D转换进行数据采集的基本方法;

5、了解如何通过D/A转换进行数字控制的基本方法。

利用实验系统上的电位器提供ADC0809的模拟量输入,A/D转换后数字量送入DAC0832,产生模拟量输出,用电压表测量比较电位器输出电压和D/A输出电压。

三、实验预备知识

1、ADC0809是带8位A/D转换器,8路开关以及微处理机兼容的控制逻辑的CMOS组件,它是逐次逼近式A/D转换器,可以和单片机直接相连。

2、由于DAC0832为电流输出,为取得电压输出,需在电流输出端Iout1、Iout2分别接上运算放大器LM324的B-、B+;

使Rfd与LM324的BOUT连接,Rfd即为运算放大器的负反馈电阻端;

由于Vref=5V,所以由运算放大器输出电压(测试点BOUT)为负电压(0到-5V)。

四、实验原理图

1、ADC0809系统连线

(1)将跳线器插在JP22_1上;

(2)使用导线把MON51仿真器区的A0,A2,A3分别连接并行模数转换模块的DA,DB,DC;

(3)RD和WR分别接51MONI模块的RD和WR;

(4)使用导线连接A15和并行模数转换模块的CS;

(2)用导线连接MON51模块的AD0-AD7与并行数模转换模块的D0-D7;

(6)使用导线连接INT0和并行模数转换模块的/EOC;

(7)并行模数转换模块的REF+,REF—分别连接VCC和GND;

(8)使用导线连接并行模数转换模块的IN0与电位器模块的中间脚VW,VH连接VCC,VL连接GND;

(9)实时时钟模块的1/64分频与并行模数转换模块的CLK相连。

实时时钟加2M的晶振,用导线连接CLK-IN与2MHZ;

2、DAC0832系统连线

(1)将跳线器插在JP71;

(2)用导线连接MON51模块的AD0-AD7与并行模数转换模块的DI0-DI7;

(3)用导线连接WR与并行模数转换模块的WR1和WR2;

(4)用导线连接A14与并行模数转换模块的CS和Xfer;

(5)用导线连接ILE,Vref和+5V;

(5)使用导线连接Iout1与模拟运放模块的B-;

(6)使用导线连接Iout2与模拟运放模块的B+,B+同时与电源的地相连接;

(7)使用导线连接Rfb与模拟运放模块的BOUT;

(8)使用导线连接模拟运放模块的V+与+12V,V-与-12V;

六、实验思考:

修改程序,用其它通道轮流采样显示。

实验五并行接口扩展实验

掌握可编程并行接口芯片8155的接口原理使用,熟悉对8155初始化编程和输入、输出程序的设计方法。

学生按以下要求设计程序流程图,编写、调试程序。

在8155的A、B、C口用示波器测出每个口线的波形。

三、实验原理图

四、实验硬件连线

1、利用跳线器连接JP21;

2、利用导线连接8155模块的CE与MON51模块的A10,IOM接A9,ALE接ALE,RD接RD,WR接WR;

五、实验思考

修改程序,用PB口作输入,PA口作输出,观察运行情况。

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

当前位置:首页 > 农林牧渔 > 林学

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

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