收藏 分销(赏)

学生用-生产实习-单片机超声波测距指导书.doc

上传人:快乐****生活 文档编号:2124369 上传时间:2024-05-16 格式:DOC 页数:27 大小:1.49MB
下载 相关 举报
学生用-生产实习-单片机超声波测距指导书.doc_第1页
第1页 / 共27页
学生用-生产实习-单片机超声波测距指导书.doc_第2页
第2页 / 共27页
学生用-生产实习-单片机超声波测距指导书.doc_第3页
第3页 / 共27页
学生用-生产实习-单片机超声波测距指导书.doc_第4页
第4页 / 共27页
学生用-生产实习-单片机超声波测距指导书.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、学生用-生产实习-单片机超声波测距指导书 作者: 日期:2 个人收集整理 勿做商业用途单片机超声波测距设计指导书郑洪庆 编电子与电气工程系20139目录1 设计任务与要求11.1 设计项目11。2 设计任务11。3 性能指标12 设计教学内容13 提交成果形式24 设计组织形式25 设计步骤和要点25。1 电路原理图设计 (一周)25.2 电路板焊接 (一周)35。3 程序设计与调试 (一周)56 设计报告要求57 考核及评分标准5附1 超声波传感器工作原理6附2 单片机最小系统设计8附3 KEILC软件的应用10附4 程序设计13II基于单片机的超声波测距仪的设计1 设计任务与要求1。1 设

2、计项目基于单片机的超声波测距仪的设计1.2 设计任务本设计采用超声波传感器,以单片机为核心,实现非接触式距离智能距离测量。显示模块是一个的数码显示;测量结果的显示用到三位数字段码,格式为 X 点 XX 米.采用AT89S52单片机作处理器,工作电源:AC6V及电脑USB口两种供电方式供电;超声波测距范围:40cm550cm(盲区40cm),测量结果由三位数码管直接显示出来,当测量超过上限值收不到回波时显示“CCC”,测量低于下限值40cm时显示“-”。模块上设有一输出端口,用于输出报警信号,当测量结果小于设定的报警值时继电器吸合.报警值可通过板上的两个按键开关K1,K2设定,设定值范围40cm

3、550cm(与测量上限值相配).1.3 性能指标(1)具有反射式超声波测距功能,测距范围:40cm到550cm;(2)误差:1%;(3)距离显示:用三位LED数码管进行显示(单位是CM)。(4)供电方式:6VAC,或5伏电脑USB口供电.(5)报警输出:一路继电器开关量输出及一路声响信号输出.(6)测距仪具有温度补偿功能,并显示当前温度(该项内容选做)。(7)其他创新设计2 设计教学内容1、设计动员,下达任务书和指导书,课堂讲解。2、查阅资料、搜集数据,拟定设计程序和进度计划。3、方案设计、电路焊接、程序编写等。4、整体调试。5、撰写设计报告(设计说明书)6、答辩考核3 提交成果形式(1)超声

4、波测距实物;(2)设计报告一份。4 设计组织形式 学生每一人做同一个设计题目,每人都必须独立完成设计课题(包括设计电路、焊接电路、编写程序、系统调试等).设计结束时每人都要进行答辩。5 设计步骤和要点5。1 电路原理图设计 (一周)(1)查阅相关资料,进行总体设计。 由于买的是别人设计好的电路板,所以要求同学根据电路板(PCB图),利用万用表测量,并画出原理图.(2)设计电路原理图。 电路原理图设计要符合项目的工作原理,连线要正确,端口要有标号。 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明.原理图要完整,CPU,外围器件,扩器接口,输入/输出装置,电源等要一应俱全。(3)用

5、Protel画出电路原理图.(4)用Protel软件自己重新设计PCB图. 注:指导老师指导学生如何根据别人设计好的PCB图画出原理图,最后根据用Protel画出原理图、并设计出PCB图。5.2 电路板焊接 (一周)(1)查找相关资料,熟悉超声波测距工作原理.(2)电路板焊接(3)电路板调试 注:指导老师介绍基于单片机超声波测距的工作原理、指导学生焊接电路板、最后把烧好程序的单片机给学生调试电路板。焊接前焊接后5.3 程序设计与调试 (一周)(1) 根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。(2) 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计直

6、出完整的程序流程图。(3) 调试设计的程序,编译,排除语法错误,能生成HEX文件。(4)将汇编后生成的HEX文件传送到实验装置或Proteus,执行该程序,检查该程序、是否达到设计要求,若未达到,修改程序,直到达到要求为止。注:指导老师指导学生程序设计并调试(最好采用C语言编程)。指导老师不能一开始就把全部程序给学生,最好给出各个模块的程序。比如数码管显示模块、蜂鸣器报警模块、继电器输出模块等。由于程序量比较大,要求学生充分利用课余时间调试.6 设计报告要求设计报告是学生对设计全过程的系统总结,学生应按闽南理工学院本科毕业设计(论文)撰写规范格式编写设计说明书。设计说明书需要学生做完三周设计后

7、,独立完成。7 考核及评分标准考核分三部分,一部分是出勤率,占10;第二部分是设计完成情况验收成绩,占60;第三部分为设计报告,占30%。设计评分基本标准如下表:评 定 项 目评分成绩1设计内容合理、方案正确,具有可行性(30分)2设计结果(软件程序)正确(20分)3创新性(10分) 4设计报告规范、分析正确,参考文献充分(30分)5答辩(10分)总分备注:成绩等级:优(90分100分)、良(80分89分)、中(70分79分)、及格(60分69分)、60分以下为不及格。附1 超声波传感器工作原理超声波是由机械振动产生的,可在不同介质中以不同的速度传播。由于超声波指向性强,能量消耗缓慢,在介质中

8、传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现.超声测距是一种非接触式的检测方式。与其它方法相比,如电磁的或光学的方法,它不受光线、被测对象颜色等影响。对于被测物处于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力.因此在液位测量、机械手控制、车辆自动导航、物体识别等方面有广泛应用。特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很容易检测出来,具有很高的分辨力,因而其准确度也较其它方法为高;而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。利用超声波检测往往比较迅速、方便、计算简单、易于做到

9、实时控制,并且在测量精度方面能达到工业实用的要求。为了研究和利用超声波,人们已经设计和制成了许多超声波发生器.总体上讲,超声波发生器可以分为两大类: 一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等; 机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同.目前较为常用的是压电式超声波发生器。 压电型超声波传感器的工作原理:它是利用压电效应的原理,压电效应有逆效应和顺效应,超声波传感器是可逆元件,超声波发送器就是利用压电逆效应的原理。所谓压电逆效应如图2-2所示,是在压电元件上施加电压,元件就变

10、形,即称应变。若在图a所示的已极化的压电陶瓷上施加如图b所示极性的电压,外部正电荷与压电陶瓷的极化正电荷相斥,同时,外部负电荷与极化负电荷相斥.由于相斥的作用,压电陶瓷在厚度方向上缩短,在长度方向上伸长。若外部施加的极性变反,如图c所示那样,压电陶瓷在厚度方向上伸长,在长度方向上缩短.图22压电逆效应图超声波测距的方法有多种,如相位检测法、声波幅值检测法和渡越时间检测法等。相位检测法虽然精度高,但检测范围有限; 声波幅值检测法易受反射波的影响。本测距系统采用超声波渡越时间检测法。其原理为: 检测从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,即渡越时间。渡越时间与气体中的声速相乘,

11、就是声波传输的距离。超声波发射器向某一方向发射超声波,在发射时刻的同时单片机开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时.再由单机计算出距离,送LED数码管显示测量结果.超声波在空气中的传播速度随温度变化,其对应值如表2-1 ,根据计时器记录的时间t (见图2-1),就可以计算出发射点距障碍物的距离( s ) ,即: s = v t / 2 。表21 声速与温度的关系温度()3020100102030100声速(m/s)313319325323338344349386图21 超声波测距时序图附2 单片机最小系统设计单片机又称单片微控制器, 是在

12、一块芯片中集成了CPU( 中央处理器)、RAM( 数据存储器)、ROM( 程序存储器)、定时器/ 计数器和多种功能的I/O( 输入/ 输出) 接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。在这里,我们没必要去找到明确的概念来解析什么是单片机,特别在使用C 语言编写程序的时,不用太多的去了解单片机的内部结构以及运行原理等.从应用的角度来说,通过从简单的程序入手,慢慢的熟悉然后逐步深入精通单片机。单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。对51 系列单片机来说, 最小系统一般应该包

13、括: 单片机、时钟电路、复位电路、输入/ 输出设备等(见图1)。图1 单片机最小系统框图依据上文的内容,设计51 系列单片机最小系统见图2。图2 51系列单片机最小系统下面就图2 所示的单片机最小系统各部分电路进行详细说明。1 时钟电路在设计时钟电路之前,让我们先了解下51 单片机上的时钟管脚:XTAL1(19 脚) :芯片内部振荡电路输入端。XTAL2(18 脚) :芯片内部振荡电路输出端。XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2 中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XT

14、AL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的11.0592M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 40pF 之间选择(本实验套件使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30 50pF 之间。通常选取33pF 的陶瓷电容就可以了。另外值得一提的是如果读者自己在设计单片机系统的印刷电路板(PCB) 时,晶体和电容应尽可能与单片机芯片

15、靠近,以减少引线的寄生电容,保证振荡器可靠工作。检测晶振是否起振的方法可以用示波器可以观察到XTAL2 输出的十分漂亮的正弦波,也可以使用万用表测量( 把挡位打到直流挡,这个时候测得的是有效值)XTAL2 和地之间的电压时,可以看到2V 左右一点的电压.2 复位电路在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。MCS-5l 系列单片机的复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作.如果RST 持续为高电平,单片机就处于循环复位状态.复位操作通常有两种基本形式:上电自动复位和开关复位。图2 中所示的复位

16、电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位.随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作.并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位.图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC 充电时间或在工作环境实际测量,以确保单片机的复位

17、电路可靠。3 EA/VPP(31 脚) 的功能和接法51 单片机的EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚。当EA 保持高电平时,单片机访问内部程序存储器;当EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器.对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。在本实验套件中,EA 管脚接到了VCC 上,只使用内部的程序存储器.这一点一定要注意,很多初学者常常将EA 管脚悬空,从而导致程序执行不正常。附3 KEILC软件的应用Keil提供了包括C编译器、宏汇编、连接器、库管理和

18、一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。Vision2 IDE 是一个基于Windows的开发平台,包含一个高效的编辑器、一个项目管理器和一个MAKE工具.Vision支持所有的Keil 8051工具,包括C编译器、宏汇编器连接/定位器、目标代码到HEX的转换器。 运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20MB以上的硬盘空间和Windows 98/NT/2000/XP等操作系统。 Vision通过以下特性加速嵌入式系统的开发过程:(1) 全功能的源代码编辑器。(2) 器件库用来配置开发工具设置。(

19、3) 项目管理器用来创建和维护项目。(4) 集成的MAKE工具可以汇编编译和连接嵌入式应用.(5) 所有开发工具的设置都是对话框形式.(6) 真正的源代码级的对CPU和外围器件的调试器。(7) GDIAGDI接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信。 本节通过实例来学习Keil软件的使用,在这一部分将学习如何输入源程序、建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。3。1 Vision2概述 双击Vision2启动图标,出现如图31所示的启动提示信息,Vision2界面如图3-2所示,有3个窗口:项目窗口、源程序编辑窗口、输出窗口。Vision2允许同

20、时打开、浏览多个文件. 项目窗口:包含3个页面(Files、Regs、Books),默认为Files,用来显示项目中包含的工程和文件名。 源程序编辑窗口:编辑源程序。 输出窗口:包含3个页面(Build、Command、Find in Files),默认为Build页面,用来显示工程文件编译时的结果。图3-1 Vision2的启动提示信息图32 Vision2启动界面下面对Vision2的工具栏进行简单介绍。3。1.1 文件操作工具栏文件操作工具栏如图33所示。图3-3 文件操作工具栏3.1。 2 编辑工具栏编辑工具栏如图3-4所示。图3-4 编辑工具栏3。1。 3 视图工具栏视图工具栏如图3

21、5所示.图35 视图工具栏3.1. 4 调试工具栏调试工具栏如图3-6所示。图36 调试工具栏3。1.5 项目操作工具栏项目操作工具栏如图37所示。图3-7 项目操作工具栏3。 2 Keil 工程项目的建立3. 2.1 源文件的建立 选择菜单FileNew或者单击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编语言源程序,保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm或a51为扩展名)。这里假定将文件保存为lsd.asm(以流水灯设计为例),如图3-8所示。图3-8 流水灯控制源程序文件的建立与保存 12ORG00HLOOP: MOVA,

22、#0FEH;赋初值 MOVR2, #8;设计数值OUTPUT: MOVP1, A;送P1口输出 RL A ;数据移位 ACALL DELAY DJNZ R2, OUTPUT LJMP LOOPDELAY: MOVR6, #0;延时子程序 MOVR7, #0DELAYLOOP: DJNZR6, DJNZR7, DELAYLOOP RET END3.2.2 建立工程文件 在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil 支持数百种CPU,而这些CPU 的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等。为管理和使用方便,Ke

23、il 使用工程(Project)这一概念,将这些参数设置和需要的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作.下面就一步一步地来建立工程。 选择ProjectNew Project菜单命令,出现一个对话框,要求给将要建立的工程起一个名字。可以在编缉框中输入一个名字(设为lsd),不需要扩展名,如图3-9所示。图39 新建工程窗口(流水灯) 单击“保存”按钮,出现第二个对话框,如图3-10所示,这个对话框要求选择目标CPU(即所用芯片的型号)。Keil支持的CPU很多,选择Atmel 公司的AT89C51 芯片.单击ATMEL 前面的“+”号,展开该层,单

24、击其中的AT89C51,然后再单击“确定按钮,回到主界面,此时,在工程窗口的文件页中出现了Target1.图310 CPU类型选择窗口 前面有“+号,单击“+号展开,可以看到下一层的Source Group1,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,右击 Source Group1出现一个下拉菜单,如图3-11所示。图3-11 选择添加源程序窗口 选中其中的Add Files to GroupSource Group1,出现一个对话框,如图312所示,要求寻找源文件。注意,该对话框下面的“文件类型”默认为C source file(。c),也就是以C

25、为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到lsd。asm,需要将文件类型改掉.单击对话框中“文件类型后的下拉列表,找到并选中Asm Source File(*。a51,.asm)。图312 选择源程序窗口 这样,在列表框中就可以找到lsd.asm 文件了.双击lsd.asm 文件,将文件加入项目。注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图3-13所示的对话框,提示你所选文件已在列表中,此时应单击“确定”按钮,返回前一对话框,然后单击Close按钮即可返回主界面。图313 添加源程

26、序双击同一文件时的提示 返回后,单击SourceGroup 1前面的“+”号,会发现lsd.asm 文件已在其中,双击文件名,即打开该源程序,如图314所示.图314 lsd。asm已经添加到项目窗口3.3 工程的详细设置 工程建立以后,还要对工程进行进一步设置,以满足要求。使用菜单ProjectOption for targettarget1或右击Project窗口的Target 1选择Option for targettarget1,即出现对工程设置的对话框,如图3-15所示,这个对话框非常复杂,共有8个页面,绝大部分设置项取默认值就行了.如C51、A51、BL51分别与C51 编译选项、

27、A51的汇编选项和BL51连接器的连接选项等用法有关。这里均取默认值,不作任何修改。以下仅对一些常用的选项作以简单介绍。图315 工程设置窗口 设置对话框中的Target页面。如图3-16所示,Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于我们所选的AT89C51而言是24MHz。该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设置,这里设置为12.0。图316 工程设置窗口中的Target页面 Memory Mode

28、l用于设置RAM使用情况,有3个选择项,Small是所有变量都在单片机的内部RAM中;Compact是可以使用一页外部扩展RAM;而Large则是可以使用全部外部的扩展RAM。Code Rom Size用于设置ROM 空间的使用,同样也有3个选择项,即Small模式,只用小于2KB的程序空间;Compact模式,单个函数的代码量不能超过2KB,整个程序可以使用64KB程序空间;Large模式,可用全部64KB空间。Use Onchip ROM选择项确认是否仅使用片内ROM(注意:选中该项并不会影响最终生成的目标代码量)。Operating 项是操作系统选择,Keil 提供了两种操作系统:Rtx

29、 tiny和Rtx full。关于操作系统是另外一个很大的话题了,通常不使用任何操作系统,即使用该项的默认值None(不使用任何操作系统)。 设置对话框中的Output页面,如图3-17所示,这里面也有多个选择项。其中Create Hex File用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX 格式文件,文件的扩展名为。hex),默认情况下该项未被选中,如果要写程序做硬件实验,就必须选中该项。这一点是初学者易疏忽的,在此特别提醒注意。选中Debug Information将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。图317 工程设置窗口中的Output

30、页面Browse Information 是产生浏览信息,该信息可以用菜单ViewBrowse 来查看,这里取默认值.按钮Select Folder for Objects用来选择最终目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。Name of Executable 用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。 Listing页面用于调整生成的列表文件选项,如图318所示。在汇编或编译完成后将产生(。lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是C Compile

31、Listing下的Assembly Code项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码。图3-18 工程设置窗口中的Listing页面 C51页面用于对Keil 的C51 编译器的编译过程进行控制,如图319所示。其中比较常用的是Code Optimization组,该组中Level是优化等级,C51 在对源程序进行编译时,可以对代码多至9 级优化,默认使用第8级,一般不必修改。如果在编译中出现一些问题,可以降低优化级别试一试。Emphasis 是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成代码的速度快);第三项是默认。默认的是速度优

32、先,可根据需要更改。图3-19 工程设置窗口中的C51页面 Debug页面用于设置对用户程序的调试方式,如图3-20所示。选中单选框Use Simulator时采用Vision2模拟器进行调试,选中单选框Use Keil Monitor-51 Driver时采用Keil公司提供的监控程序进行调试,同时可以在下拉列表框中进行选择,前者可以在Vision2环境中仅用软件方式即可完成对用户程序的调试,后者需要硬件目标板或相应硬件虚拟仿真环境的支持。图320 工程设置窗口中的Debug页面 设置完成后按“确定”按钮返回主界面,工程文件建立、设置完毕。3.4 Keil C51软件调试3.4。1 编译、连

33、接 在设置好工程后,即可进行编译、连接。选择ProjectBuild target或通过右击Project Workspace区中的Source Group1选择Build target,如图3-21所示,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files,将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生成的目标代码是最新的,而Translate File项则仅对该文件进行编译,不进行连接。图321 工程的编译、连接 以上操作也可以通过工具栏按钮直接进行。如图3-22所示是有关编译、设

34、置的工具栏按钮,从左到右分别是编译、编译连接、全部重建、停止编译和对工程进行设置。图3-22 工程编译、设置的工具栏按钮 编译过程中的信息将出现在输出窗口中的Build 页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,如图323所示.图323 源程序有错误时的编译、连接提示信息 对源程序反复修改之后,最终会得到如图3-24所示的结果,提示获得了名为lsd。hex 的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关的文件,可被用于Keil 的仿真与调试,这时可以进入下一步调试的工作。图324 源程序无错误时的编译、连接提示信息3。4.2 常用调试

35、命令 在对工程成功进行汇编、连接以后,按Ctrl+F5 或者使用菜单DebugStart/Stop Debug Session或者单击工具条上的 按钮,如图325所示,即可进入调试状态。Keil内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和个人使用的计算机有关,计算机性能越好,运行速度越快.图3-25 工程调试选择 进入调试

36、状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图3-26所示,Debug 菜单上的大部分命令可以在此找到对应的快捷按钮,从左到右依次是复位、全速运行、暂停、单步运行、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析和工具按钮等命令。图3-26 Vision运行调试工具条 学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度

37、很快,并可以看到该段程序执行的总体效果,即不管最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。程序调试中,这两种运行方式都要用到。 单击工具栏上的STEP按钮或使用功能键F11可以单步执行程序,单击工具栏上的STEP OVER按钮或使用功能键F10可以过程单步形式执行命令。所谓过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。 按下F11 键,可以看到源程序窗

38、口的左边出现了一个黄色调试箭头,指向源程序的第一行,如图3-27所示。每按一次F11键,即执行该箭头所指程序行,然后箭头指向下一行,当箭头指向ACALL DELAY行时,再次按下F11键,会发现箭头指向了延时子程序DELAY的第一行。不断按F11键,即可逐步执行延时子程序。图327 单步运行示意图 通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难的,或虽能查出错误,但效率很低,为此必须辅之以其他的方法,如本例中的延时程序,如果用按F11键的方法来执行完该程序行显然不合适,为此可以采取以下一些方法:第一,用鼠标在子程序的最后一行(ret)点一下,把光标定位于该行,然后

39、选择菜单DebugRun to Cursor line(执行到光标所在行),即可全速执行完黄色箭头与光标之间的程序行;第二,在进入该子程序后,使用菜单DebugStep Out of Current Function(单步执行到该函数外),使用该命令后,即全速执行完调试光标所在的子程序或子函数并指向主程序中的下一行程序(这里是LJMP LOOP 行);第三,在开始调试时,按F10键而非F11键,程序也将单步执行,不同的是,执行到ACALL DELAY行时,按下F10键,调试光标不进入子程序的内部,而是全速执行完该子程序,然后直接指向下一行LJMP LOOP。灵活应用这几种方法,可以大大提高查错

40、的效率。3.4。3 在线汇编 在进入Keil 的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次进入调试,如果只是需要对某些程序行进行测试,或仅需对源程序进行临时的修改,这样的过程未免有些麻烦。为此,Keil软件提供了在线汇编能力,将光标定位于需要修改的程序行上,选择菜单DebugInline Assembler即可出现如图3-28所示的对话框,在Enter New 后面的文本框内直接输入需更改的程序语句,输入完后按Enter键,将自动指向下一条语句,可以继续修改,如果不再需要修改,可以关闭窗口。图328 在线汇

41、编对话框3.4.4 断点设置 程序调试时,一些程序行必须满足一定的条件才能被执行(如程序中某变量达到一定的值、按键被按下、串口接收到数据或有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法断点设置。断点设置的方法有很多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单DebugInsert/Remove Breakpoints设置或移除断点(也可以用鼠标在

42、该行双击实现同样的功能);DebugEnable/Disable Breakpoints是开启或暂停光标所在行的断点功能;DebugDisable All Breakpoints暂停所有断点;DebugKill All Breakpoints清除所有的断点设置。这些功能也可以用工具条上的快捷按钮进行设置。 除了在某程序行设置断点这一基本方法以外,Keil 软件还提供了多种设置断点的方法,选择DebugBreakpoints即出现一个对话框,该对话框用于对断点进行详细的设置,如图329所示。图中Expression 后的文本框用于输入表达式,该表达式用于确定程序停止运行的条件,这里表达式的定义功

43、能非常强大,涉及Keil内置的一套调试语法,这里不作详细说明。图3-29 “断点设置对话框3。4。5 程序调试时的常用窗口 Keil 软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Window)、观察窗口(WatchCall Statck Window)、存储器窗口(Memory Window)、反汇编窗口(Dissembly Window)和串行窗口(Serial Window)等。进入调试模式后,可以通过菜单View下的相应命令打开或关闭这些窗口. 如图331所示是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。进入调试程序后,输出窗口自动切换到Comman

44、d 页。该页用于输入调试命令和输出调试信息。(a) (b) (c)图330 输出窗口、观察窗口和存储器窗口 (1)存储器窗口。存储器窗口中可以显示系统中各种内存中的值,通过在Address 后的文本框内输入“字母:数字即可显示相应内存值,其中字母可以是C、D、I、X,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM 空间,数字代表想要查看的地址.例如,输入D:00H即可观察到地址00H开始的片内RAM单元值;键入C:00H即可显示从00H开始的ROM 单元中的值,即查看程序的二进制代码。该窗口的显示值可以各种形式显示,如十进制、十六进制和字符型等,改变显示方式的方法是右击,如图3-31所示,在弹出的快捷菜单中选择,该菜单用分隔条分成3部分,其中第一部分与第二部分的3个选项为同一级别,选中第一部分的任一选项,内容将以整数形式显示,而选中第二部分的ASCII项则将以字符型式显示,选中Float 项将相邻4字节组成浮点数形式显示,选中Double 项则将相邻8字节组成双精度形式显示。第一部分又有多个选择项,其中Decimal 项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。图331 存储器窗口右键快捷菜单Unsigned 和Signed 后分别有3个选项:Char、Int、Long,分别

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服