基于c51的转速测量课程设计论文_第1页
基于c51的转速测量课程设计论文_第2页
基于c51的转速测量课程设计论文_第3页
基于c51的转速测量课程设计论文_第4页
基于c51的转速测量课程设计论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常熟理工学院课程设计报告PAGE - PAGE 37 -基于单片机的转速测量显示装置设计目录 TOC o 1-3 h z u HYPERLINK l _Toc329268873 课程设计任务书 PAGEREF _Toc329268873 h 1 HYPERLINK l _Toc329268874 一 概 述 PAGEREF _Toc329268874 h 2 HYPERLINK l _Toc329268875 1.1背景概述和应用介绍: PAGEREF _Toc329268875 h 2 HYPERLINK l _Toc329268876 1.2 总体设计方案 PAGEREF _Toc3292

2、68876 h 3 HYPERLINK l _Toc329268877 1.2.1 硬件电路设计思路 PAGEREF _Toc329268877 h 3 HYPERLINK l _Toc329268878 1.2.2 软件设计思路 PAGEREF _Toc329268878 h 3 HYPERLINK l _Toc329268879 二 硬件电路的设计 PAGEREF _Toc329268879 h 4 HYPERLINK l _Toc329268880 2.1 传感器的选型 PAGEREF _Toc329268880 h 4 HYPERLINK l _Toc329268881 2.1.1 霍

3、尔元件的应用 PAGEREF _Toc329268881 h 4 HYPERLINK l _Toc329268882 2.1.2 UGN3144霍尔开关元件 PAGEREF _Toc329268882 h 4 HYPERLINK l _Toc329268883 2.2传感器接口电路设计 PAGEREF _Toc329268883 h 5 HYPERLINK l _Toc329268884 2.3 单片机最小系统的设计 PAGEREF _Toc329268884 h 6 HYPERLINK l _Toc329268885 2.3.1 AT89C51单片机的简介 PAGEREF _Toc32926

4、8885 h 6 HYPERLINK l _Toc329268886 2.3.2 复位电路 PAGEREF _Toc329268886 h 9 HYPERLINK l _Toc329268887 2.3.3时钟电路 PAGEREF _Toc329268887 h 10 HYPERLINK l _Toc329268888 2.4 显示电路的设计 PAGEREF _Toc329268888 h 10 HYPERLINK l _Toc329268889 三 系统软件设计 PAGEREF _Toc329268889 h 14 HYPERLINK l _Toc329268890 3.1 主程序初始化 P

5、AGEREF _Toc329268890 h 14 HYPERLINK l _Toc329268891 3.2主程序流程图程序流程图 PAGEREF _Toc329268891 h 16 HYPERLINK l _Toc329268892 四 仿真及结果 PAGEREF _Toc329268892 h 18 HYPERLINK l _Toc329268893 4.1 软件调试 PAGEREF _Toc329268893 h 18 HYPERLINK l _Toc329268894 4.2 仿真结果 PAGEREF _Toc329268894 h 19 HYPERLINK l _Toc32926

6、8895 设计总结 PAGEREF _Toc329268895 h 20 HYPERLINK l _Toc329268896 参考文献 PAGEREF _Toc329268896 h 21 HYPERLINK l _Toc329268897 附录一:原理图 PAGEREF _Toc329268897 h 22 HYPERLINK l _Toc329268898 附录二:单片机程序 PAGEREF _Toc329268898 h 23 HYPERLINK l _Toc329268899 致 谢 PAGEREF _Toc329268899 h 25一 概 述1.1背景概述和应用介绍:智能化转速测量

7、可以对转速进行测量,电机在运行的过程中,需要对其平稳性进行监测,适时对转速的测量有效地可以反映电机的状况。本系统主要由传感器,单片机AT89C51构成。可以对大范围转速进行测量,测量的转速精度高,实现对电机转速的测量。单片机的英文名称是Micro Controller unit,缩写为MCU,又称为微控制器,它是一种面向控制的大规模集成电路芯片。它具有功能强、体积小、可靠性高、应用简单灵活,因而使用非常广泛,有力地推动各行业的技术发展和更新换代。 本文首先在第二章绪论介绍了此系统的功能、技术指标以及主要内容等;在第三章论述了总体设计过程,确定了技术指标及器件的选择;第四章着重描述了系统硬件电路

8、设计、硬件设计框图及所使用的各种芯片功能与特性;在第五章中重点剖析了软件设计的过程;最后在第六章中具体论述单片机、电平转换电路、通信的处理及调试。系统主要实现功能是:AT89C51单片机接收传感器传来的脉冲信号,单片机根据中断,以及内部定时器进行记数计算出电机转速送到LED显示。传感器电路、转速测量、LED显示、电平转换电路设计等将在以下章节作详细地设计。传感器单 片 机 AT89C51LED显示驱动电路图2-1 系统硬件电路1.2 总体设计方案1.2.1 硬件电路设计思路硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。

9、89C51单片机通过INT0输入传感器的脉冲信号,P0口P2口接LED动态显示。转速测量部分的硬件设计思路:本次设计单片机部分的硬件框图如 图21所示。光电传感器整形电路CPU执行单元(单片机) 时钟电路显示电路图3-1 单片机部分硬件框图1.2.2 软件设计思路软件需要解决的是定时器1的记数和定时器0的计时设定、由于测量的转速范围大,所以低速和高速都要考虑在内,关键在于一个四字节除三字节程序的实现。显示部分、需要有一个二进制到十进制的转化程序,以及转换成非压缩BCD 的程序后、才能进行调用查表程序送到显示。软件工作流程:传感器利用磁电效应产生一周期脉冲向单片机的定时器1(P3.1)口发送一个

10、脉冲信号,定时器0工作在内部定时,TH0、TL0设定初值为50um,作为除数的低两字节,利用软件记数器、定时器0作为时间信号。定时完毕读取内部记数值,再对二进制数进行一系列变换后调用查表显示程序,显示在数码管上。二 硬件电路的设计2.1 传感器的选型2.1.1 霍尔元件的应用使用霍尔器件检测磁场的方法极为简单,将霍尔器件做成各种形式的探头,放在被测磁场中,因霍尔器件只对垂直于霍尔片表面的磁感应强度敏感,因而必须令磁力线和器件表面垂直,通电后即可由输出电压得到被测磁场的磁感应强度。若不垂直,则应求出其垂直分量来计算被测磁场的磁感应强度值。而且,因霍尔元件的尺寸极小,可以进行多点检测,由单片机进行

11、数据处理,可以得到场的分布状态,并可对狭缝,小孔中的磁场进行检测用磁场作为被传感物体的运动和位置信息载体时,一般采用永久磁钢来产生工作磁场。例如,用一个542.5(mm3)的钕铁硼号磁钢,就可在它的磁极表面上得到约2300高斯的磁感应强度。在空气隙中,磁感应强度会随距离增加而迅速下降。在计算总有效工作气隙时,应从霍尔片表面算起。在封装好的霍尔电路中,霍尔片的深度在产品手册中会给出。因为霍尔器件需要工作电源,在作运动或位置传感时,一般令磁体随被检测物体运动,将霍尔器件固定在工作系统的适当位置,用它去检测工作磁场,再从检测结果中提取被检信息。2.1.2 UGN3144霍尔开关元件1UGN3144霍

12、尔开关元件的工作原理UGN3144霍尔开关元件属于开关型霍尔传感器(集成霍尔开关),它是把霍尔片产生的霍尔电压VH放大后驱动触发电路,输出电压是能反映B的变化的方脉冲。集成霍尔开关由稳压器、霍尔电势发生器(即硅霍尔片)、差分放大器、施密特触发器和OC门输出五个基本部分组成。在输入端(1、2之间)输入电压Vcc,经稳压器稳压后加在霍尔发生器的两电流端。根据霍尔效应原理,当霍尔片处于磁场中时,霍尔发生器的两电压端将会有一个霍尔电势差VH 输出。VH 经放大器放大以后送至施密特触发器整形,使其成为方波输送到OC门输出。图2-1 开关型霍尔传感器的原理当外磁场B达到“工作点”Bop时,触发器输出高电平

13、(相对于地电位),三极管导通,此时,OC门输出端输出低电平,通常称这种状态为“开”;当外磁场B达到“释放点”Brp时,触发器输出低电平,三极管截止,OC门输出高电平,这时称其为“关”状态。Bop与Brp是有一定差值的,此差值BH=Bop-Brp称为霍尔开关的磁滞。B的变化不超过BH,霍尔开关不翻转,这就使得开关输出稳定可靠。集成霍尔开关传感器的输出特性如图(3-6)。图2-2 开关型霍尔传感器的输出特性UGN3144主要技术性能与特点Allegro MicroSystems 公司生产的UGN 3144 器件是双极性磁场即N,S交变场磁启动的霍尔开关电路,它的主要性能特点如下:(1)电源电压为4

14、.524V;(2)连续输出电流为25MA;(3)磁通密度不受限制,输出关断电压为25V;(4)具有反向电压保护(反向电压为35V)和极好的温度稳定性;3UGN3144霍尔开关元件的引脚功能和封装形式UGN3144 采用SOT89或者TO-243封装。其中,引脚端1为电源正端,引脚端2为接地,引脚端3为输出(OC形式)。图2-3 UGN3144的封装结构2.2传感器接口电路设计UGN3144霍尔开关元件芯片内部包含有稳压电路,霍尔效应电压产生电路,信号放大器,施密特触发器和一个集电极开路输出电路。集电极开路输出电路可连续输出25MA电流,可直接控制继电器,双向可控硅,可控硅,LED和灯负载。其具

15、有输出自举电路,也可直接与双极型和MOS逻辑电路连接。转速测量是开关型霍尔元件的典型应用,UGN3144霍尔开关元件感应被测量量的转速,当被测量量每转动一周,霍尔传感器便输出一个脉冲,因为该器件为集电极开路输出,故输出端加接一上拉电阻,其电压电压范围宽达4.5 V到24 V,对磁感应强度B要求不严,其输出电压经9012后可提高其负载能力。其具体电路图如3-8所示:图2-4 UGN3144霍尔开关元件与单片机的连接电路2.3 单片机最小系统的设计2.3.1 AT89C51单片机的简介单片机我们采用AT89C51(其引脚图如图5-1),相较于INTEL公司的8051它本身带有一定的优点。AT89C

16、51是一种带4K字节闪烁可编程可擦除只读存贮器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2-5 AT89C51引脚图主要特性:与MCS-51 兼容4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间

17、:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路管脚说明:1.VCC:供电电压;2.GND:接地;3.P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。4.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲

18、器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。5.P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口

19、输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。6.P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表3-1所示:7.RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。8.ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,A

20、LE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。表2-1 P3口的第二功能引 脚第 二 功 能信 号 名 称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0请求P3.4INT1外部中断1请求P3.4T0定时器/计数器0输入P3.5T1定时器/计数器1输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通P3口同时为闪烁编程和编程校验接收一些控制信号。此时, ALE只有在执行MOVX,MO

21、VC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。9./PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 10./EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 11.XTAL1:反向振荡放大器的输入及内部时钟工作电路

22、的输入。 12.XTAL2:来自反向振荡器的输出。2.3.2 复位电路计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。 本设计中采用电容进行复位,其电路图如下:图2-6

23、复位电路2.3.3时钟电路 时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ 。MCS-51内部都有一个反相放大器, XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。电路中的电容C1和C2典型值通常选择为30pf左右。对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器的频率的高低,振荡器的稳定性和起振的快速性。晶振的振荡频率的范围通常是在1.2MHZ-12MHZ之间。晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。但反过来运行速度

24、快对存储器的速度要求就高,对印制电路板的工艺要求也高,即要求线简的寄生电容要小;晶振和电容应 尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定,可靠地工作。综合考虑,本设计采用30pf的电容,因为晶振的频率无法精确达到12MHZ,所以一般情况采用11.0592MHZ(本例中采用12MHZ),其电路图如下所示:图2-7 AT89C51的时钟电路2.4 显示电路的设计显示电路采用LED数码管动态显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也

25、有共阴和共阳两种。显示器结构:常用的七段显示器的结构如图44所示。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来,如图4-5所示,为七段数码管的管脚图。图2-8 七段发光显示器的结构 图2-9 七段发光显示器管脚的结构驱动方式:采用的数码管驱动为74l

26、s245,其结构简单,使用方便,图4-6为74ls245的图以及各个引脚的分布功能介绍。图2-10 74ls245管脚的结构显示方式:为了节省I/O口线,我们采用的动态显示方式。所谓动态显示,就一位一位地轮流点亮各位显示器(扫描),对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需8位口(称为扫描口),控制各位显示器所显示的字形也需一个8位口(称为段数据口)。本次设计要求的转速测量范围60r/min-36000r/min,所以只需要5位数

27、码管即可。5位共阴极显示器和AT89C51的接口逻辑如图4-7所示。AT89C51的P0口作为段数据口,接上拉电阻到显示器的各个段;P2口作为扫描口,经同相驱动器7407接显示器公共极。对于图4-7中的5位显示器,在AT89C51RAM存贮器中设置五个显示缓冲器单元30H35H,分别存放5位显示器的显示数据,AT89C51的P2口扫描输出总是只在一位为低电平,即5位显示器中仅有一位公共阴极为低电平,其它位为高电平,AT89C51的P0口相应位(阴极为低)的显示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P2口输出为高的位,P0口输出对应的段数据,5位显示器就显示出由缓冲器中显示数

28、据所确定的字符。图2-11 四位动态显示电路三 系统软件设计3.1 主程序初始化(1).定时器的初始化AT89C51 有两个定时器/计数器T0 和T1,每个定时器/计数器均可设置成为16位,也可以设置成为13 位进行定时或计数。计数器的功能是对T0 或T1 外来脉冲的进行计数,外部输入脉冲负跳变时,计数器进行加1。定时功能是通过计数器的计数来实现的,每个机器周期产生1 个计数脉冲,即每个机器周期计数器加1,因此定时时间等于计数个数乘以机器周期。定时器工作时,每接收到1 个计数脉冲(或机器周期)则在设定的初值基础上自动加1,当所有位都位1时,再加1 就会产生溢出,将向CPU 提出定时器溢出中断身

29、请。当定时器采用不同的工作方式和设置不同的初值时,产生溢出中断的定时值和计数值将不同,从而可以适应不同的定时或计数控制。定时器有4 种工作方式:方式0、方式2、方式2 和方式3,在此对工作方式不做具体介绍。工作方式寄存器TMOD 的设定:GATEC/TM1MOGATEC/TM1M0 TMOD 各位的含义如下:GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。C/T:定时或计数方式选择位,当C/T=1 时工作于计数方式;当C/T=0 时工作于定时方式。M1、M0 为工作方式选择位,用于对T0 的四种工作方式,T1 的三种工作方式进行选择,选择情况如下表6-1:M1M0=0

30、0 为方式0;M1M0=01 为方式1;表3-1 M1、M0 为工作方式选择位M0M1工作方式方式说明00110101012313位定时、计数器16位定时、计数器8位自动重置定时、计数器两个8位定时。计数器(只有T0有)13 位定时/计数器16 位定时/计数器8 位自动重置定时/计数器两个8 位定时/计数器(只有T0 有)(2)中断允许控制MCS-51 单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE 的_各位来控制的。中断允许寄存器IE 的字节地址为A8H,可以进行位寻址.表3-2 中断位寻址表IED7D6D5D4D3D2D1(A8H)EAET2ES

31、ST1EX1EX0EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。ET2:定时器/计数器T2 的溢出中断允许位ES:串行口中断允许位。ET1:定时器/计数器T1 的溢出中断允许位。EX1:外部中断INT1 的中断允许位。ET0:定时器/计数器T0 的溢出中断允许位。EX0:外部中断INT0 的中断允许位。3.2主程序流程图程序流程图1.主程序流程开始刷新数码管延时2ms显示初始化定时器计时器 图3.1 主程序流程图2.显示子程序流程开始显示缓存初始化Led显示初始化数码显示 图3.2 显示子程序流程图3.定时计数子程序流程图3.3 定时计数子程序流程图四 仿真及结果4.

32、1 软件调试单片机程序调试思路:单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将转速测量系统中的各个模块计算程序中的除法程序、双字节的二-十进制数制转换程序,压缩BCD码十进制数转换为非压缩BCD码的程序以及显示部分程序调试好,不断调试,不断修改直到正确为止。LCA51软件是一种非常实用的多窗口编辑、调试软件。 LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。用户可同时打开多个窗体编辑、调试

33、、变量观察.用户可在线对原文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改值。1.跟踪调试调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以下方法对程序的执行进行跟踪。2.断点调试 如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码

34、中预定处设置断点,大多数调试程序通过使用断点中止程序执行。3.查看变量 显然,通过一系列指令查看应用程序,了解导致某一错误的执行也是一种非常有效的方法。LCA51软件提供了以下几种方法对变量进行查看。通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观察。用户程序在单步或断点停下时,将更新变量的取值。用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,显示这个变量的当前值。用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察。4.更改数值 如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的

35、内容是很有效的方法,以确保该值在正确范围内不会产生错误。LCA51软件提供一系列更改变量数值的方法,以便用户能检查程序对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据。程序调试过程: 整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。4.2 仿真结果在软件单独调试成功后进行系统仿真,它可以分成以下几个步骤:1.使传感器有方波信号输出;2.使单片机获得信号,计算出

36、转速值并存储;3.通过数码管把测量的数据显示出来。4.通过比较显示数值与真实值之间的差异来完成仿真。首先用模拟的脉冲表示传感器输入的量:图4.1 模拟量输入 图4.2模拟量输入界面图4.3 仿真结果 设计总结本次课程设计完成转速检测显示装置设计,都是基于传感器的一个理论与时间相结合的成功应用。在进行具体的电路设计之前,先学习了相关的专业知识,这对我完成电路带来了莫大的帮助。在为期一周的课程设计中,同学们用在课堂上所学到的知识亲自去构思、设计、连接、调试,完成一个电路。虽然拙作还不成熟、不完善,但大家的收获还是很多的,学会了在复杂的问题面前怎样去分析,找到问题的关键所在,而且努力去寻找解决的方法

37、。从总体上来看,这次的电路设计制作还是比较成功的,跟以往的制作相比,本次电路完全是在自己个人的思路下创作出来的,因此获得了很多的经验,综合如下:1设计思路是实施操作的扎实基石 一个良好的设计思路,是电路的生命。宁愿在思路设计上多花上50%的时间,因为前期看似慢,实际上恰恰给后期的制作带来很大的方便,效果往往是更节省了许多时间。2活学活用这次设计让我真正体会到了书本知识永远是基础,而基础正是你向高层次迈进的扎实阶梯,没有这个基础,就无法实现技术上的腾飞。在实践当中,灵活运用书本上所讲的知识,万变不离其中,只有扎实掌握了核心的方法,才有可能做到活用巧用。在课程设计中,将理论转化为知识,真正变为自己

38、的东西,让我们体会到创意设计的乐趣。参考文献1彭介华.电子技术课程设计指导M 湖南大学:高等教育出版社,19992蒋换文.电子测量.北京:中国计量出版社,20033张克农.数字电子技术基础.北京:高等教育出版社,20034康华光.电子技术基础.数字部分(第四版).北京:高等教育出版社,20005张锡富.传感器.北京:机械工业出版社,20016 梁廷贵、王裕琛.现代集成电路实用手册.北京:科学技术文献出版社,19997 于海生.微型计算机控制技术选编.北京:清华大学出版社,19998 徐爱钧.智能化测量控制仪表原理与设计. 北京:北京航空航天大学出版社,19959 扈啸,周旭升编著.单片机数据通

39、信技术从入门到精通.西安:西安电子科技大学出版社,200210 Schroeder,ME Wolman,RL Wetterneck,TB Carayon,PTubing misload allowsfree flow event with smart intravenous infusion pumpJAnesthesiology,2006附录一:仿真图附录二:单片机程序#include#define uchar unsigned char#define uint unsigned intuint count=0000;uchar qian,bai,shi,ge,t;uint jj; ucha

40、r code table=0 xc0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,;void delay(uint m) uint i,j; for(i=m;i0;i-) for(j=110;j0;j-);void display()jj=count;qian=jj/1000;bai=jj%1000/100;shi=jj%100/10;ge=jj%10;P2=0 x10;P0=tableqian;delay(10);P2=0 x20;P0=tablebai;delay(10);P2=0 x40; P0=tableshi;delay

41、(10);P2=0 x80; P0=tablege;delay(10);void init() EA=1;ET0=1;ET1=1;TMOD=0X51;TH0=(65535-50000)/256;TL0=(65535-50000)%256;TH1=0;TL1=0;TR0=1;TR1=1;void main() init(); P0=0; while(1) display(); void timer0() interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; t+; if(t=20) t=0; TR0=0; TR1=0; count=0

42、;count|=TH1;count=(count8)|TL1;TH1=0;TL1=0;TR0=1;TR1=1; void timer1() interrupt 3 TR1=0; TR0=0; count=0;致 谢本文介绍的应用于单片机系统在电机转速这一领域的应用,实现了单片机对电机转速的测量以及。可以对电机转速的平稳性做个分析。关于本次课程设计,感受颇多。总的来说是可以的,富有收获的,尽管其中充满了艰辛与困难。但看到自己的成果时,所有的艰辛与疲倦都抛到了九霄云外。一种成就感在心头油然而生。另外一方面,在自己的亲身实践中,也发现了自己的一些不足的地方,有待进一步提高与改善。此次毕业设计任务是高

43、精度大范围的电机转速测量系统,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。整个课程设计过程是对自己大学所学知识归纳总结和应用,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,对自己有信心,相信自己能够很好的完成本次设计任务。在调试中不断发现问题进而解决问题,这是一个再学习的过程,其本身就是对自己的一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的

44、工作打下基础。在本次毕业设计中,特别要感谢戴老师以及其他老师和同学给我们的热心帮助和鼓励,才使得我的课程设计能够很好的完成。附录资料:不需要的可以自行删除C语言编译环境中的调试功能及常见错误提示调试功能1常用健 : 激活系统菜单: 将光标在编辑窗口和、信息窗口之间切换: 加载一个文件+: 查看程序运行结果: 得到有关编辑器在线帮助+: 得到有关C语言的在线帮助+: 终止正在运行的程序2块操作 KB: 定义块首 KK: 定义块尾 KV: 块移动 KC: 块复制 KY: 块删除 KH: 取消块定义3查找、替换和删除操作 QF: 查找字符串 QA: 查找并替换字符串 Option: G(全程), B

45、(向文件头), N(直接替换) Y : 删除一行 QY: 删除从光标位置到行末的所有字符编译中的常见错误例析(1)警告类错误 XXXdeclare but never used 变量XXX已定义但从未用过。 XXXis assigned a value which is never used 变量XXX已赋值但从未用过。 Code has no effect 程序中含有没有实际作用的代码。 Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0的数值。 Possible use of XXXbefore definition 表

46、达式中使用了未赋值的变量 Redeclaration of main 一个程序文件中主函数main不止一个。 Suspicious pointer conversion 可疑的指针转换。通常是使用了基本类型不匹配的指针。 Unreachable code 程序含有不能执行到的代码。(2)错误或致命错误 Compound statement missing in function main 程序结尾缺少括号。 “”expected; “(”expected等 复合语句或数组初始化的结尾缺少“)”;“(”。 Case outside of switch case 不属于Switch结构,多由于sw

47、itch结构中的花括号不配对所致。 Case statement missing : switch结构中的某个case之后缺少冒号。 Constant expression required 定义数组时指定的数组长度不是常量表达式。 Declaration syntax error 结构体或联合类型的定义后缺少分号。 Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。 Default outside switch Default部分放到了switch结构之外,一般是因为花括号不匹配而引起的。 do statement must h

48、ave while do语句中缺少相应的while部分。 Expression syntax 表达式语法错。如表达式中含有两个连续的运算符 Extra parameter in call fun 调用函数fun时给出了多余的实参。 Function should return a value 函数应该返回一个值,否则与定义时的说明类型不匹配。 Illegal use of pointer 指针被非法引用,一般是使用了非法的指针运算。 Invalid pointer addition 指针相加非法。一个指针(地址)可以和一个整数相加,但两个指针不能相加。 Lvalue required 赋值运算

49、的左边是不能寻址的表达式。 Misplaced else 程序遇到了没有配对的else No matching 表达式中的括号不配对。 Pointer required on left side of_ 在“_”运算的左边只能允许一个指针而不能是一个一般的结构体变量或联合类型的变量。 Statement missing; 程序遇到了后面没有分号的语句。 Too few parameters in call 调用某个函数时实参数目不够。 Unable to open include file XXXXXXXXXXX 头文件找不到。 Unexpected 或:或 在不希望的地方使用了或:。 Und

50、efined symbol Xin function fun 函数fun中的变量X没有定义。5.连接中的常见错误主要错误类似于“undefined symbol _print in modula xxx”(print没有定义),通常是函数名书写错误。6.运行中的常见错误Abnormal program termination 程序异常终止。通常是由于内存使用不当所致。Floating point error : Domain 或Divide by 0 运算结果不是一个数或被0 除Null pointer assignment 对未初始化的指针赋值,程序有严重错误。User break 在运行程

51、序时终止。7.程序的跟踪调试利用Run菜单可以进行程序的跟踪调试(1)GO to Cursor ()选择该选项使程序执行到光标所在行首先将光标移到某行(一般为可执行),选择该功能项,则程序执行到该行的前一行暂停。此时程序处于跟踪调试状态,并有亮条显示在暂停处,此时可以查询变量或表达式的值。(2)Trace into ()执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项可跟踪到被调函数的内部。(3)Step over ()执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项将自定义函数当作一个语句执行,不跟踪到函程序的内部。(4)Debug 菜

52、单程序处于跟踪状态时,可使用该菜单的选项。其主要是使用Evaluate目的是查询或更新变量或表达式的值。选择Evaluate功能后,系统弹出一个对话框。该对话框包含三个选项区域:Evaluate域可以输入一个含有目前代码中(程序暂停区的作用域)正在使用的变量名、或含变量的表达式、或常量表达式。按回车键后,在Result域中显示变量或表达式的值。还可以用New value域进行调试。如果调试程序时发现Result域显示的某变量或表达式的值不正确,并能估计出该变量或表达式的值,则可以将该值输入到New value域,继续执行程序,其目的是肯定错误发生处是否在当前位置之前。如果输入这个正确的值并将程

53、序继续执行完毕而结果正确,说明在目前暂停处之前已经发生错误而之后无错误。(5)Break/Watch用于设置断点和监视表达式。选择Add Watch功能选项,系统将弹出一个菜单,在Add Watch框中输入变量名或表达式,按回车键后,系统在屏幕底部开辟一个窗口并显示 该变量或表达式的值。【常见错误信息语句索引】Ambiguous operators need parentheses:不明确的运算需要用括号括起 Ambiguous symbol xxx :不明确的符号 Argument list syntax error:参数表语法错误 Array bounds missing in funct

54、ion main 缺少数组界限符 Array bounds missing :丢失数组界限符 Array size too large :数组尺寸太大 Bad character in paramenters :参数中有不适当的字符 Bad file name format in include directive :包含命令中文件名格式不正确 Bad ifdef directive synatax :编译预处理ifdef有语法错 Bad undef directive syntax :编译预处理undef有语法错 Bit field too large :位字段太长 Call of non-

55、function :调用未定义的函数 Call to function with no prototype :调用函数时没有函数的说明 Cannot modify a const object :不允许修改常量对象 Case outside of switch :漏掉了case 语句 Case syntax error :Case 语法错误 Code has no effect :代码不可述不可能执行到 Compound statement missing :分程序漏掉 Conflicting type modifiers :不明确的类型说明符 Constant expression requ

56、ired :要求常量表达式 Constant out of range in comparison :在比较中常量超出范围 Conversion may lose significant digits :转换时会丢失意义的数字 Conversion of near pointer not allowed :不允许转换近指针 Could not find file xxx :找不到XXX文件 Declaration missing ; :说明缺少; Declaration syntax error :说明中出现语法错误 Default outside of switch :Default 出现在

57、switch语句之外 Define directive needs an identifier :定义编译预处理需要标识符 Division by zero :用零作除数 Do statement must have while :Do-while语句中缺少while部分 Enum syntax error :枚举类型语法错误 Enumeration constant syntax error :枚举常数语法错误 Error directive :xxx :错误的编译预处理命令 Error writing output file :写输出文件错误 Expression syntax error

58、 :表达式语法错误 Extra parameter in call :调用时出现多余错误 File name too long :文件名太长 Function call missing ) :函数调用缺少右括号 Fuction definition out of place :函数定义位置错误 Fuction should return a value :函数必需返回一个值 Goto statement missing label :Goto语句没有标号 Hexadecimal or octal constant too large :16进制或8进制常数太大 Illegal characte

59、r x :非法字符x Illegal initialization :非法的初始化 Illegal octal digit :非法的8进制数字 Illegal pointer subtraction :非法的指针相减 Illegal structure operation :非法的结构体操作 Illegal use of floating point :非法的浮点运算 Illegal use of pointer :指针使用非法 Improper use of a typedefsymbol :类型定义符号使用不恰当 In-line assembly not allowed :不允许使用行间汇

60、编 Incompatible storage class :存储类别不相容 Incompatible type conversion :不相容的类型转换 Incorrect number format :错误的数据格式 Incorrect use of default Default使用不当 Invalid indirection 无效的间接运算 Invalid pointer addition 指针相加无效 Irreducible expression tree 无法执行的表达式运算 Lvalue required 需要逻辑值0或非0值 Macro argument syntax error

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论