《机电一体化毕业设计(论文)光电式转速仪设计.doc》由会员分享,可在线阅读,更多相关《机电一体化毕业设计(论文)光电式转速仪设计.doc(30页珍藏版)》请在三一办公上搜索。
1、白城职业技术学院毕业设计(论文)光电式转速仪设计学生姓名: 专业班级: 机电一体化技术 指导教师: 职 称: 起止日期: 白 城 职 业 技 术 学 院摘 要在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。要测速,首先要解决是采样问题。在使用模技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。为了能精确地测量转速外,还要保证测量的实时性,要求能测得瞬时转速方法。因此转速的测试具有重要的意义。 关键词:电动机 单片机 传感
2、器 目录摘要I1 概述11.1 本课题设计的目的和意义11.2 数字式转速测量系统的发展背景12 系统组成及工作原理22.1 转速测量原理22.2 转速测量系统组成框图23 系统方案提出和论证(传感器的选择)43.1 方案一 霍尔传感器测量方案43.2 方案二 光电传感器54 单片机64.1单片机的概念64.1单片机AT98C51简介65 系统硬件电路设计125.1 时钟电路125.2复位电路185.3显示电路215.4最小系统的仿真226 系统软件设计166.1 单片机转速程序设计思路及过程166.2子程序设计187 系统调试217.1硬件调试217.2 软件调试237.3 综合调试247.
3、4故障分析与解决方案25总结27致谢28参考文献39第1章 概述 1.1 本课题设计的目的和意义 在工程实践中,经常会遇到各种需要测量转速的场合, 例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。要测速,首先要解决是采样问题。在使用模技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。为了能精确地测量转速外,还要保证测量的实时性,要求能测得瞬时转速方法。因此转速的测试具有重要的意义。 这次设计内容包含知识全面,对传感器测量发电机转速的不同的方法及原理设计有较多介绍,在测
4、量系统中能学到关于测量转速的传感器采样问题,单片机部分的内容,显示部分等各个模块的通信和联调。全面了解单片机和信号放大的具体内容。进一步锻炼我们在信号采集,处理,显示发面的实际工作能力。1.2 数字式转速测量系统的发展背景 目前国内外测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。计数测速法又可分为机械式定时计数法和电子式定时计数法。传统的电机转速检测多采用测速发电机或光电数字脉冲编码器,也有采用电磁式(利用电磁感应原理或可变磁阻的霍尔元件等)、电容式(对高频振荡进
5、行幅值调制或频率调制)等,还有一些特殊的测速器是利用置于旋转体内的放射性材料来发生脉冲信号其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点加之激光光源、光栅、光学码盘、CCD 器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。第2章 系统组成及工作原理2.1 转速测量原理在此采用频率测量法,其测量原理为,在固定的测量时间内,计取转速传感器产生的脉冲个数,从而算出实际转速。设固定的测量时间为Tc(min),计数
6、器计取的脉冲个数m,假定脉冲发生器每转输出p个脉冲,对应被测转速为N(r/min),则f=pN/60Hz;另在测量时间Tc内,计取转速传感器输出的脉冲个数m应为 m=Tcf ,所以,当测得m值时,就可算出实际转速值1:(1余永权,汪明慧,黄英.单片机在控制系统中的应用M.电子工业出版社,2003)N=60m/pTc (r/min)(1) 2.2 转速测量系统组成框图系统由信号预处理电路、单片机STC 89C51、系统化LED显示模块、串口数据存储电路和系统软件组成。其中信号预处理电路包含信号放大、波形变换和波形整形。对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用
7、来将放大的信号转换成可与单片机匹配的TTL信号;通过对单片机的编程设置可使内部定时器T0对输入脉冲进行计数,这样就能精确地算出加到T0引脚的单位时间内检测到的脉冲数;设计中转速显示部分采用价格低廉且使用方便的LED模块,通过相关计算方法计算得到的转速通过I2C总线放到E2PROM存储,既节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。转速信号拾取整形倍频单片机显示接口芯片显示键盘驱动电路 图2-1 转速测量框图第3章 系统方案提出和论证(传感器的选择)转速测量的方案选择,一般要考虑传感器的结构、安装以及测速范围与环境条件等方面的适用性;再就是二次仪表的要求,除了显示以外还有控
8、制、通讯和远传方面的要求。本说明书中给出两种转速测量方案,经过我和伙伴查资料、构思和自己的设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟悉程度、器件用量等方面综合考虑,我们才最终选择了一个方案。下面就看一下我们对两套设计方案的简要说明。3.1 方案一:霍尔传感器测量方案霍尔传感器是利用霍尔效应进行工作的?其核心元件是根据霍尔效应原理制成的霍尔元件。本文介绍一种泵驱动轴的转速采用霍尔转速传感器测量。霍尔转速传感器的结构原理图如图3.1, 霍尔转速传感器的接线图如图3.2 。传感器的定子上有2 个互相垂直的绕组A 和B, 在绕组的中心线上粘有霍尔片HA
9、 和HB ,转子为永久磁钢,霍尔元件HA 和HB 的激励电机分别与绕组A 和B 相连,它们的霍尔电极串联后作为传感器的输出。 图3-1 霍尔转速传感器的结构原理图 3-2方案霍尔转速传感器的接线图3.2方案二: 光电传感器 整个测量系统的组成框图如图3.3所示。从图中可见,转子由一直流调速电机驱动,可实现大转速范围内的无级调速。转速信号由光电传感器拾取,使用时应先在转子上做好光电标记,具体办法可以是:将转子表面擦干净后用黑漆(或黑色胶布) 全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头) 固定在正对光电标记的某一适当距离处。光电头采用低功耗高亮度LED ,光源为高可靠
10、性可见红光,无论黑夜还是白天,或是背景光强有大范围改变都不影响接收效果。光电头包含有前置电路,输出05V的脉冲信号。接到单片机89C51的相应管脚上,通过89C51内部定时/计时器T0、T1及相应的程序设计,组成一个数字式转速测量系统。图3-3 测量系统的组成框图优点:这种方案使用光电转速传感器具有采样精确,采样速度快,范围广的特点。综上所述,方案二使用光电传感器来作为本设计的最佳选择方案。第4章 单片机4.1 单片机的概念单片机是单片微型计算机(Single Chip Microcomputer)的简称,是指在一块芯片上集成了中央处理器CPU、随机存储器RAM、程序存储器ROM或EPROM、
11、定时器/计数器、中断控制器以及串行和并行I/O接口等部件,构成一个完整的微型计算机。目前,新型单片机内还有A/D及D/A转换器、高速输入/输出等部件。由于它的结构和指令功能都是按工业控制要求设计的,特别适用于工业控制及其数据处理场合,因此,确切的称谓应是微控制器(Microcontroller). 4.2 单片机AT89C51介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造
12、,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图2.1是常用的一种单片机,型号为AT89C51,它将计算机的功能都集成到这个芯片内部去了,就这么一个小小的芯片就能构成一台小型的电脑,因此叫做单片机。图4-1 AT89C51芯片 它有40个管脚,分成两排,每一排各有20个脚,其中左下角标有箭头的为第1脚,然后按逆时针方向依次为第2脚、第3脚第40脚。在40个管脚中,其中有32个脚可用于各种控制,比如控制小灯的亮与灭、控制电机的正转与反转、控制
13、电梯的升与降等,这32个脚叫做单片机的“端口”,在单片机技术中,每个端口都有一个特定的名字,比如第一脚的那个端口叫做“P1.0”。AT89C51管脚分布VCC:供电电压,GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉
14、为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接
15、收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口。P3口管脚备选功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同
16、时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE
17、禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出
18、。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系
19、统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。第5章 系统硬件电路设计5.1 复位电路计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。RST变为低电平后,退出复位,CP
20、U从初始状态开始工作。单片机采用的复位方式是采用芯片TCM812进行复位。 TCM812是高性价比的系统监控电路,用于对数字系统的电源电压VDD 进行监控,并在必要时向主处理器提供复位信号。提供的手动复位输入可以替代复位监控器,适合使用按键来复位。无需外部元件。该器件由SOT-143方式 封装,工作温度范围为-40 至+85。其引脚如下:图5-1 TCM812芯片的引脚图TCM812芯片的引脚功能:(1)GND 地(2)RESET 当VDD 低于复位电压门限值和VDD恢复上升到高于复位电压门限值之后的140 ms(最小值)内,RESET推挽输出保持高电平。 (3)MR 手动复位输入,当MR 低
21、于VIL 时产生复位。 (4)VDD 电源电压 由于TCM812芯片的特点,本设计中采用该芯片进行复位,其电路图如下:图5-2 复位电路5.2 时钟电路时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ 。MCS-51内部都有一个反相放大器, XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。电路中的电容C1和C2典型值通常选择为30pf左右。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的频率的高低,振荡器的稳定性和起振的快速性。晶振的振荡频率的范
22、围通常是在1.2MHZ-12MHZ之间。晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。但反过来运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也高,即要求线简的寄生电容要小;晶振和电容应 尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定,可靠地工作。综合考虑,本设计采用30pf的电容,因为晶振的频率无法精确达到12MHZ,所以一般情况采用11.0592MHZ,其电路图如下所示:图5-3 AT89C51的时钟电路5.3 显示电路显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器
23、件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。1 LED显示器的结构及其工作原理常用的七段显示器的结构如图3-13所示。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来,如图3-13所示,为七
24、段数码管的管脚图。图5-4 七段发光显示器的结构LED数码管通过点亮特定的字段来显示数字或符号。共阴与共阳七段LED数码管的显示字符与对应的显示段码如下表所示,共阳七段数码管的段码刚好是共阴七段数码管段码的反码。表5-1 共阴极七段LED数码管和共阳极七段LED数码管的显示段码表显示字符012345678共阴极字符3FH06H5BH4FH66H6DH7DH07H7FH共阳极字符C0HF9HA4HB0H99H92H82HF8H80H显示字符9AbCdEFHP共阴极字符6FH77H7CH39H5EH79H71H76H73H共阳极字符90H88H83HC6HA1H86H8EH89H8CH5.4 最小
25、系统仿真最小系统仿真图如下:第6章 系统软件设计本章重点阐述测量转速的汇编语言以及软件设计的过程。软件需要解决的是单片机中断服务程序的设计、计算程序的设计、显示部分的程序设计。6.1 单片机转速程序设计思路及过程单片机测量转速可以分为若干模块,然后在主程序中调用各个模块,流程图如下图所示。初始化BCD码转换计算程序非压缩BCD码转换显示程序返 回开 始图6-1 主程序流程图6.1.1 单片机程序设计思路计算转速公式:n=60/NTc (r/min)其中,N是内部定时器的计数值,为三字节,分别由TH0,TL0,VTT构成;Tc为时基,由于采用11.0592M的晶振,所以Tc不在是1um,而是12
26、M/11.0592M约为1.08um,带入上面公式,即可得到转速的精确计算公式: N=60*11059200/12N=55296000/N再将55296000化为二进制存入单片机的内存单元。下面我们将介绍除数是如何获得的:单片机的转速测量完成,定时器T0作为内部定时器,外部中断来的时候读取TH0,TL0,并同时清零TH0、TL0,使定时器再次循环计内部脉冲。此外,对于低速情况下,我们还要设定一个软件计数器VTT,当外部中断还没来而内部定时器已经溢出,产生定时器0中断时,增加VTT,作为三字节中的高字节。三字节组成除数,上面的常数为四字节,所以计算程序实际上就是调用一个四字节除三字节商为两字节的
27、程序。为数码管能够显示出来,需将二进制转换为十进制,在将十进制转换为非压缩BCD码后,才能调用查表程序,最后送显示。6.2 子程序设计6.2.1 单片机转速计算程序由于本次设计的系统要实现的功能是将霍尔传感器的信号送到单片机的外部中断口,再对周期方波进行内部计数,调用计算程序把转速测出来。可以说是核心部分,流程图如图所示:开 始返 回被除数初始化调用除法程序读取定时值图6-2 计算程序流程图6.2.2 二-十进制转换程序计算程序计算出来的数据为二进制,存到50H、51H单元中以便发送程序中调用传送数据到计算机,计算机可识别二进制,然而,我们需要在LED上显示,查表程序需要拆分的BCD码,所以二
28、进制必须先转换成BCD后才能拆分。这里介绍将(R2R3)中的16位二进制数转换为压缩BCD码十进制整数送R4、R5、R6。除 法移位次数计数器上商1,减去除数被除数左移一位上商0计数器减1计数器=0?被除数除数YNNY返 回图6-3 除法程序流程图6.2.3 显示程序单片机显示部分可以用来显示计算出来的数据的。在程序设计中,在AT89C51RAM存贮器中的四个显示缓冲器单元30H34H,分别存放着由计算出来的转速的BCD码进行拆分后的非压缩BCD码数据,AT89C51的P1口扫描输出总是只有一位为低电平、其它位为高电平,AT89C51的P0口相应位的显示数据的段数据,使该位显示出一个字符,其它
29、们为暗,依次地改变P1口输出为低高的位,P0口输出对应的段数据,4位LED显示器就显示出由缓冲器中显示数据所确定的字符。显示部分程序分为两部分:十进制BCD转换成非压缩BCD码;查表程序显示数据。双字节整数拆分程序流程图如图4-4所示。开 始返 回高字节R4送30HR5与0F0H相与交换后送31HR6与0F0H相与交换后送33HR5与0FH相与后送32HR6与0FH相与后送34H图 6-4 双字节整数拆分程序流程图显示程序流程图如图6-5所示:结 束开 始INC R0 ,A=(R1)(R1)=P1,(R1)=A,RL AA+DPTR赋值给P0(R0)赋值给A30HR0,表首地址DPTR,(R1
30、)= 0FEH(R1)=0DFH?NY图6-5 显示程序流程图第7章 系统调试电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。7.1 硬件调试硬件调试主要是针对我的转速测量系统的单片机硬件电路分别进行调试。这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。上电前的调试在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。特别是数码管的连接部分,有PROTEL制作的PCB确保要和原理图上的图一致,有
31、些在电路板上没法连接的线路,要用短接线把接好,对照着原理图部分,一部分一部分地用万用表测量,注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。上电后的调试在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试主要只转速测量系统的单片机控制部分、数码管点亮部分、和上位机通信是的电平转换和串口通信部分的硬件调试。1、单片机控制部分硬件调试:这一部分调试主要是检查时钟电路、复位电路是否接对,单片机的电源以及地是否接好,以及其他的一些管脚的接法。看单片机通电后能否可以正常工
32、作等这一系列问题。2、数码管LED电路调试:由于数码管采用的是动态扫描的方式点亮的。数码管的公共端(COM)接在7407驱动再接到单片机的P2口作为位选信号,字型是接在P0口。电路上电检查7407是否接上电源和地让其正常工作。在这一前提下,查看数码管能否点亮。只需要接仿真机上编写一个小程序让5位LED全亮,或者让它们其中的某位点亮,也可以显示不同的数字,根据要求给P0口,P2口分别赋值。即可检查数码管的硬件电路是否正确,即可判断显示驱动电路整个完整,首先排除这里的故障。3、发送部分硬件电路调试:这一部分电路硬件调试主要完成任务是使得通过HIN232CPE电平转换器转换前后的电平关系。可以用示波
33、器和万用表检查电平转换前后的关系,这里不在赘述。7.2 软件调试单片机程序调试思路:单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将转速测量系统中的各个模块计算程序中的除法程序、双字节的二-十进制数制转换程序,压缩BCD码十进制数转换为非压缩BCD码的程序以及显示部分程序调试好,不断调试,不断修改直到正确为止。LCA51软件是一种非常实用的多窗口编辑、调试软件。 LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编
34、语言指令行对照调试。用户可同时打开多个窗体编辑、调试、变量观察.用户可在线对原文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。调试主要方法和技巧: 通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。1.跟踪调试 调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以下方法对程序的执行进行跟踪。 跟踪型单步执行一条源语句程序。但是,如果调用一函数,则进入函数中,再执行函数的
35、第一条源语句行前停止。 通过型单步仅执行下一条源语句程序,然后又停止。如果是调用一函数,运行完整个函数并停止在函数返回处。2.断点调试 如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大多数调试程序通过使用断点中止程序执行。注意:如果用户调试高级语言,因为系统要占用2个断点,所以可设置的断点数为最大断点个数减2。 LCA51调试软件还提供一次性断点:执行到光标所在行。如果用户按热键F4,调试程序继续执行程序代码,直到它到达光标行处或调试程序遇到另一个断点。3.查看变量 显然,通过一系列指令查看应用程序
36、,了解导致某一错误的执行也是一种非常有效的方法。LCA51软件提供了以下几种方法对变量进行查看。 通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观察。用户程序在单步或断点停下时,将更新变量的取值。 用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,显示这个变量的当前值。 用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察。4.更改数值 如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的内容是很有效的方法,以确保该值在正确范围内不会产生错误。LCA51软件提供一系列更改变量数值的方法
37、,以便用户能检查程序对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据。程序调试过程: 整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。首先要对计算程序进行调试,其中关键就是那个四字节除三字节的程序显得尤为重要,在整个程序中,四字节的被除数是确定的常数,而除数是测量记数的值,当各个模块调试时,我们可以先对除数先赋不同的值,利用查看内部数据的数据窗口观察出计算出来
38、的结果和用计算器算得的结果是否一致,可以举例多次数据,确保程序正确,才能得到想得到的数据。其次、二进制到十进制的转换,我们依然可以利用上述列举的方法,多次给出数据,然后运行程序,可以设置观察变量,观察出程序转换的结果。最后、拆分压缩BCD码十进制以及最后的显示程序,可以利用上述提到的各种方法,观察30-34H内部的数据,缓冲数据的观察检查完毕后,调用显示程序,观察数码管上显示的数据是否是内存缓冲中需要显示的数据。7.3 综合调试在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:1.使霍尔传感器有方波信号输出;2.使单片机获得中断信号,计算出转速值并存储;3.通过LED数码管
39、把测量的数据显示出来。4.通过通信使得PC机与单片机之间的通信成功。7.4 故障分析与解决方案故障出现情况:1、霍尔传感器不能产生有效的TTL电平,产生波形不稳2、单片机的中断服务程序不能执行,不管是定时中断还是外部中断;3、中断执行低速情况也就是软件记数功能不对;4、测得的转速不准确,而且在波形频率变化下显示转速却不变5、单片机显示部分无法工作,显示不稳定;6、信号发生器模拟转速测量正确,接电机不稳定7、通信时单片机接收显示数据不正常,PC机接收乱码;解决方案(针对上述故障一一对应的解决方案):(1)硬件电路中霍尔传感器应工作在5V电压,中间引脚接地,数据线接单片机的外部中断0。在电机的转轴
40、上还要贴上一粒磁钢,利用霍尔效应产生方波。利用万用表检查时发现接5V和地的PCB上的线都坏了,重新用线接在电路板上。当波形出来后,显示的波形不稳,而且不够理想,后来在信号线与地之间接了472的瓷片电容滤波。波形得到了大大改善;(2)首先检查程序中的开头,中断入口地址,发现中断定时0的地址写成中断定时1的入口地址了。外部中断没有执行跟没有中断信号加入有关系。在前面还没有解决的时候,我们暂时用信号发生器来代替外部中断9的输入,由于中断执行与否我们没法看到,可以用设置中断点的方法或者利用示波器,在中断服务程序中重新编写一些程序观察单片机的某一输出口的波形变换或者中断程序中让数码管点亮等直观可以看到的方法来检查中断的执行情况;(3)中断服务程序中程序设计有问题,要先读去反映转速的TH0,TL0,再去清0,软件记数的高字节VTT应该在定时中断0中的服务程序中自增的同时清TH0,TL