《袖珍式智能化电容表软件设计.doc》由会员分享,可在线阅读,更多相关《袖珍式智能化电容表软件设计.doc(56页珍藏版)》请在三一办公上搜索。
1、袖珍式智能化电容表软件设计工 学 部 工学部专 业自动化班 级B641301学 号B64130115姓 名金 光指导教师赵文成负责教师赵文成沈阳航空航天大学北方科技学院2010年6月摘 要电容是重要的电子器件,本文设计了一个袖珍式智能化电容表以测量电容,其量程为19.9pf199.9pf和199pf1999pf两段,对算法原理和软件设计做了较详细的描述。通过获取C-F曲线并分段线性化,给出测量频率导出电容的算法。系统以单片机为核心,并由555定时器搭接成R-C振荡电路,与单片机相连。针对具体硬件设计频率采集程序和电容计算程序,最终实现了电容测量。具有体积小,自动更换量程且成本低的优点。关键字:
2、线性化;电容;频率AbstractCapacitors are important electronic device,this paper designs a pocket watch to measure of intelligent capacitance,its range to 19.9pf capacitance 199.9 pf and 199pf capacitance 1999pf two paragraphs,principle and software design of the algorithm is to make a detailed description.By
3、 accessing C - F curve and given piecewise linear frequency,and the algorithm are capacitance.System based on singlechip and 555 timing of overlapped by into r-c oscillating circuit.and SCM.In light of the specific hardware design frequency calculation program acquisition program and capacitance,fin
4、ally realizes the capacitance measurements.Has the advantages of small size,low cost and automatic replacement range.Key words: Linearization;capacitance measure;Frequency目 录1 绪 论11.1电容的定义及测量的意义和作用11.2电容测量技术的发展概况22 基于单片机电容测量设计32.1方案论证32.2 555定时器62.3 STC89C51单片机103 基于单片机电容测量软件设计143.1 软件设计143.2 软件设计任务
5、143.3 软件设计的步骤143.4 软件设计的工具153.4.1 MedWin集成开发环境的特点153.4.2 MedWin开发163.4.3 不使用项目管理方式开发应用程序163.4.4 使用项目管理方式开发应用程序183.5 算法设计204 程序设计274.1 程序流程图274.2 中断系统程序284.2.1 STC89C51的中断源284.2.2 STC89C51的中断控制寄存器及结构284.2.3 中断程序314.3 LCD显示程序314.3.1 关于LCD显示方式314.3.2 关于LCD编程流程334.4 编写程序335 结论34致 谢35参考文献36附录371 绪 论1.1电容
6、的定义及测量的意义和作用电容(或称电容量)是表征电容器容纳电荷本领的物理量。电容的主要物理特征是储存电荷。电容有固定电容和可变电容之分。电容的用途非常多,主要有如下几种:固定电容在电路中常常用来做为耦合,滤波,积分,微分,与电阻一起构成RC充放电电路,与电感一起构成LC振荡电路等。此外还用于:1隔直流:作用是阻止直流通过而让交流通过。2旁路(去耦):为交流电路中某些并联的元件提供低阻抗通路。3耦合:作为两个电路之间的连接,允许交流信号通过并传输到下一级电路。4滤波:这个对DIY而言很重要,显卡上的电容基本都是这个作用。5温度补偿:针对其它元件对温度的适应性不够带来的影响,而进行补偿,改善电路的
7、稳定性。6计时:电容器与电阻器配合使用,确定电路的时间常数。7调谐:对与频率相关的电路进行系统调谐,比如手机、收音机、电视机。8整流:在预定的时间开或者关半闭导体开关元件。 9储能:储存电能,用于必须要的时候释放。例如相机闪光灯,加热设备等等。如今某些电容的储能水平已经接近锂电池的水准,一个电容储存的电能可以供一个手机使用一天。在电子产品的生产和维修中,电容测量这一环节至关重要,一个好的电子产品应具备一定规格年限的使用寿命。因此在生产这一环节中,对其产品的检测至关重要,而检测电子产品是否符合出产要求的关键在于检测其内部核心的电路,电路的好坏决定了电子产品的好与坏,而电容在基本的电子产品的集成电
8、路部分有着其不可替代的作用。同样,在维修人员在对电子产品的维修中,电路的检测是最基本的,有时需要检测电路中各个部件是否工作正常,电容器是否工作正常。随着科学技术的飞速发展,工业自动化日趋走向成熟,以传统的手工控制生产工艺和生产过程的方式,已经满足不了现代企业高质量、高效益的要求,渐渐成为企业扩大生产规模、提高产品质量、降低生产成本的一个障碍。只有采用现代的电子测量技术和以计算机技术为主体的测控系统,开发先进的生产检测设备与系统,才是行之有效的解决方案。传统的测量电容的仪表体积都比较庞大,不同量程的测量需手动按键选择,测量的效率就比较低而且费时费力,就需要一种体积更小,更省电更智能化的仪表来满足
9、如今测量电容的需要。1.2电容测量技术的发展概况电容测量技术是伴随着科学技术的发展而发展的,它是科技发展的产物。电容通常以传感器形式出现,因此,电容测量技术的发展归根结底就是电容传感器的发展。由最初的用交流不平衡电桥就能测量基本的电容传感器。最初的电容传感器有变面积型,变介质介电常数型和变极板间型。现在的电容式传感器越做越先进,现在用的比较多的有容栅式电容传感器,陶瓷电容压力传感器等。电容测量技术发展也很快现在的电容测量技术也由单一化发展为多元化。现在国内外做传感器的厂商也比较多,在世界范围内做电容传感器做的比较好的公司有:日本figaro德国tecsis和美国的alphasense。电容器作
10、为非常重要的一个元件在现代电子技术中有着非常广泛的用途,电容定义为:电容器所带的电荷量Q与电容器两极板间的电势差U的比值,即:C=Q/U。这种原始的方法必须通过测量两个物理量来计算电容的大小,而其中的Q是比较难以测量的量。目前常用的两种测量电容的实现方法:一是利用多谐振荡产生脉冲宽度与电容值成正比信号,通过低通滤波后测量输出电压实现;二是利用单稳态触发装置产生与电容值成正比门脉冲来控制通过计数器的标准计数脉冲的通断,即直接根据充放电时间判断电容值。利用多谐振荡原理测量电容的方案硬件设计比较简单,但是软件实现相对比较复杂,而直接根据充放电时间判断电容值的方案虽然基本上没有用到软件部分,但是硬件却
11、又十分的复杂。而且他们都无法直观的把测量的电容值大小显示出来。根据上面两种方案的优缺点,本次设计提出了硬件设计和软件设计都相对比较简单的方案:基于STC89C51单片机和555定时器芯片的数显式电容测量。该方案主要是根据555时基芯片的应用特点,把电容的大小转变成555输出频率的大小,进而可以通过单片机对555输出的频率进行测量。本方案具有硬件设计和软件设计都相对简单的优点。2 基于单片机电容测量设计基于STC89C51单片机电容测量系统的设计方案是整个设计过程中的最重要的部分,也是最困难的部分。需要充分了解设计的各种需求,确定合适的解决方案。启动一个硬件开发项目,原始的推动力会来自于很多方面
12、,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。2.1方案论证本次设计中考虑了三种设计方案,三种设计方案中主要区别在于硬件电路和软件设计的不同,对于本设计三种方案均能够实现,最后根据设计要求、可行性和设计成本的考虑选择了基于STC89C51单片机和555时基芯片的数显式电容测量的方案。现在一一介绍论证如下:方案一、利用多谐振荡原理测量电容测量电容C(或)电阻R和施密特触发器(74IS14)构成一个多谐振荡器。在电源刚接通(或合上)时,电容C上的
13、电压为0,多谐振荡器输出为高电平。通过R对电容C充电。当C上充得的电压时,施密特触发器翻转,变成低电平。C又通过R放电,下降。当时施密特触发器又翻转,输出又变成高电平。如此往复产生振荡。 由理论分析可知: (1) (2) (3)化简为:由式(3)和测得的校准值测量值及存放在软件中的标准电容值可得出待测电容值。测量误差分析:由式(3)可以看出,经过软件校准后得出的的结果与的值有关。这样单片机晶振频率的绝对精度,环境温度的变化和电源电压的绝对精度引起的误差被消除。测量结果主要受标准电容的绝对精度影响,因此应该选择精度高、稳定性好的;其他误差来源包括周期测量的量化误差,除法运算产生的余数误差,电源电
14、压的波动造成谐振频率偏移带来的误差,因此电路应选用稳压性能好的稳压电源。这种方法的利用了一个参考的电容实现,虽然硬件结构简单,软件实现却相对比较复杂。方案二、直接根据充放电时间判断电容值这种电容测量方法主要利用了电容的充放电特性,放电常数,通过测量与被测电容相关电路的充放电时间来确定电容值。一般情况下,可设计电路使( T为振荡周期或触发时间;A为电路常数,与电路参数有关)。这种方法中应用了555定时器组成的单稳态触发器,在秒脉冲的作用下产生触发脉冲,来控制门电路实现计数,从而确定脉冲时间,通过设计合理的电路参数,使计数值与被测电容相对应。其原理框图如图2.1。反向器单稳态触发器显示窄脉冲触发器
15、秒脉冲发生器译码器锁存器记数器标准记数脉冲图2.1电路原理框图误差分析:这种电容测量方法的误差主要由两部分组成:一部分是由555定时器构成的振荡电路和触发电路由于非线性造成的误差,其中最重要的是单稳态触发电路的非线性误差,(T由充放电时间决定;是被测电容值);另一部分是由数字电路的量化误差引起,是数字电路特有的误差该误差相对影响较小,可忽略不计。这种方法硬件结构相对复杂,实际上是通过牺牲硬件部分来减轻软件部分的负担,但在具体设计中会碰到很大问题,而且硬件一旦设计好,可变性不大。方案三、基于单片机和555定时器的数显式电容测量这种电容测量方法主要是通过一块555定时芯片来测量电容,让555定时芯
16、片工作在直接反馈无稳态的状态下,555时基芯片输出一定频率的方波,其频率的大小跟被测量的电容之间的关系是:,我们固定的大小,其公式就可以写为:,只要我们能够测量出555定时芯片输出的频率,就可以计算出测量的电容。计算频率的方法可以利用单片机的计数器和中断配合使用来测量,这种研究方法相当的简单。硬件结构框图见图2.2。555振荡电路STC89C51单片机控制电路三位半液晶显示电路CD4543电路部分电路驱动地址控制数据采集数据控制图2.2 硬件结构框图本次设计采用方案三来设计,系统主要由四部分组成:单片机及复位电路和晶振电路设计,555振荡电路设计,显示电路设计。2.2 555定时器555定时器
17、是本次设计的重要组成部分,它是一种多用途的数字模拟混合集成电路,利用它能极方便的构成施密特触发器、单稳态触发器和多谐振荡器。由于使用灵活、方便,所以555定时器在波形的产生于变换、测量与控制、家用电器、电子玩具等许多领域中都得到了应用。图2.3 是国产双极型定时器CB555的电路结构图。它由比较器C1和C2、基本RS触发器和集电极开路的放电三极管TD三部分组成。图2.3 555电路结构图是比较器C1的输入端9,是比较器C2的输入端。C1和C2的参考电压和由Vcc经三个5k欧电阻分压给出。在控制电压输入端Vco悬空时,=2/3Vcc,=1/3Vcc。如果Vco外接固定电压,则=Vco,=1/2V
18、co。RD是置零输入端。只要在RD端加上低电平,输出端v0便立即被制成低电平,不受其他输入端状态的影响。RD是置零输入端,只要在RD端加上低电平,输出端v0便立即被置成低电平,不瘦其他输入状态的影响。正常工作时必须使RD处于高电平。图中的数码1到8为器件引脚的编号。图2.4为555逻辑符号,图2.5为555引脚排列。 图2.4 555逻辑符号图2.5 555引脚排列由图可知当、时,比较器C1的输出=0、比较器C2的输出=1.,基本RS触发器被置0,TD导通,同时vo为低电平。当时,=1、=1,触发器的状态保持不变,因而TD和输出的状态也保持不变。当、时,=0、=0,触发器处于Q=Q非=1的状态
19、,vo处于高电平,同时TD截止。这样我们就得到了表2.1的CB555功能表。表2.1 CB555功能表用555定时器接成的施密特触发器将555定时器的v11和v12两个输入端连在一起作为信号输入端,如图2.6所示,即可得到施密特触发器。图2.6 施密特触发器由于比较器C1和C2的参考电压不同,因而基本RS触发器的置0信号和置1信号必然发生在输入信号v1的不同电平。因此,输出电压vo由高电平变为低电平和由低电平变为高电平所对应的v1值夜不相同,这样就形成了施密特触发特性。为了提高比较参数电压Vr1和Vr2的稳定性,通常在Vco端接有0.01uF左右的滤波电容。用555定时器接成的多谐振荡器用55
20、5定时器能很方便的接成施密特触发器,那么我们就可以先把它接成施密特触发器,然后利用前面讲过的方法,在施密特触发器的基础上改接成多谢振荡器。只要把施密特触发器的反向输出端经RC积分电路接回到它的输入端,就构成了多谢振荡器。因此,只要将555定时器的v11和v12连在一起接成施密特触发器,然后将vo经RC积分电路接回输入端就可以啦。为了减轻门G4的负载,在电容C的容量较大时不宜直接由G4提供电容的充放电电流。为此在电路中将TD与R1接成一个反相器,它的输出vo与vo在高低电平状态上完全相同。将vo经R2和C组成的积分电路接到施密特触发器的输入端同样也能构成多谐振荡器,如图2.7图2.7 多谐振荡器
21、电容上的电压vc将在Vt+与Vt-之间往复振荡,vc和vo的波形如图2.8所示。T1T2Tvctt00vo2/3Vcc1/3Vcc图2.8 波形图2.3 STC89C51单片机 单片机作为本次设计的核心是非常重要的,单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可
22、靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高
23、端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 STC89C51是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得STC89C51为众多嵌入式控制应用系统提
24、供高灵活、超有效的解决方案。 STC89C51具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC89C51可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash STC89C51P0 口:P0口是一个8
25、位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分
26、别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作
27、为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于
28、内部电阻的原因,将输出电流(IIL)。P3口亦作为STC89C51特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PRO
29、G当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信
30、号,当STC89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。图2.9 STC89C51芯片图。图2.9 STC89C51芯片图3 基于单片机
31、电容测量软件设计3.1 软件设计软件设计是一个创造性的过程,对一些设计者来说需要一定的资质,而最后设计通常都是由一些初步设计演变而来的。从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会。对于高效的软件工程,良好的设计是关键,一个设计得好的软件系统应该是可直接实现和易于维护、易懂和可靠的。设计得不好的系统,尽管可以工作,但很可能维护起来费用昂贵、测试困难和不可靠,因此,设计阶段是软件开发过程中最重要的阶段。直到最近,软件设计在很大程度上仍是一个特定过程。一般用自然语言给定一个需求集,预先作非正式设计,常常用流程图的形式说明,接着开始编码,当系统实现时设计还需修改。当实现阶段完
32、成后,设计往往已与起初形式相去甚远以至于设计的原始文档完全不适合对系统的描述。3.2 软件设计任务 软件设计主要是针对硬件设计里面的控制部分的,这里指STC89C51单片机,一般的单片机均可用汇编语言和C语言进行编程。C语言直观,相对比较的简单,但占用的程序存储器的内存比较大,汇编语言是针对硬件设计的语言,如果想用汇编语言设计的话必须要对硬件有很大的了解,相对C语言就比较的复杂,但是比较的精简,占用的程序存储器的空间比较的小。作为还在学生阶段的我们,用汇编语言进行编程对我们理解单片机的内部结构、资源都有很好的帮助,但是C语言编程在以后的实际工作中将会大大简化自己的工作。因此本论文的程序都是基于
33、C语言的。要完成的任务是:初始化程序设计、按键程序设计、中断处理程序,计数器计数程序,显示程序设计等。3.3 软件设计的步骤大型的软件设计是一个庞大的系统工程,需要前期的市场调查、需求分析,还需要各个行业的支持。本次毕业设计的程序是一个很简单的过程,所以步骤也相对应的简单了许多。第一步:分析整个系统可以由几个子系统组成,并考虑几个子系统之间的内在的关系。第二步:编写各个子系统的程序,最后组合在一起,得到整个系统。第三步:编译,查错,改错(包括语法错误、逻辑错误)。第四步:把编译,看是否得到我们需要的结果,如果得不到结果就回到第三步,直到最后得到我们想要的结果。3.4 软件设计的工具本次毕业设计
34、所选用Keil C51中的编译/连接器软件Keil uVision2作为编译器/连接工具,使用万利公司Medwin软件作为集成开发环境。MedWin是万利电子有限公司Insight系列仿真开发系统的高性能集成开发环境。集编辑、编译/汇编、在线及模拟调试为一体,VC风格的用户界面,内嵌自主版权的宏汇编器和连接器,并完全支持Franklin/Keil C扩展OMF格式文件,支持所有变量类型及表达式,配合Insight系列仿真器,是您开发80C51系列单片机的理想开发工具。3.4.1 MedWin集成开发环境的特点(1)完美的Windows版集成开发环境MedWin。(2)内嵌自主版权的宏汇编器A5
35、1和连接器L51,并支持Keil/Franklin编译、连接工具。(3)具有分别独立控制项目文件的工程项目管理器。(4)在工程项目管理下,实现多模块和混合语言编程调试。(5)VC风格的窗口停驻、窗口切分和工作簿模式界面。(6)在线编辑、编译/汇编、连接下载运行和错误关联定位。(7)符合编程语言语法的彩色文木显示。(8)完全的表达式分析,支持所有数据类型变量的观察。(9)无须点击的感应式鼠标提示功能。(10)外部功能部件编程向导。(11)不限制打开数据区观察窗口的数目。(12)调试状态下用户程序自动重装功能。(13)提供真实的软件模拟仿真开发环境。3.4.2 MedWin开发MedWin集成开发
36、环境提供了以下两种方式开发用户应用程序:(1)不使用MedWin集成开发环境项目管理方式对源程序文件直接进行汇编/连接,兼容传统开发习惯。(2)使用MedWin集成开发环境项目管理方式可进行多模块、混合语言编程的,同样也适合单模块程序的开发。用户无论是单模块或多模块的程序开发,我们都建议使用项目管理方式管理应用程序。3.4.3 不使用项目管理方式开发应用程序不使用MedWin集成开发环境项目管理方式,只能对单模块方式下的应用程序开发,具有很大的局限性。以下是不使用MedWin集成开发环境项目管理方式开发应用程序的步骤:第一步:关闭当前项目文件命令:项目管理|关闭当前项目不使用MedWin集成开
37、发环境项目管理方式开发应用程序,用户必须关闭已经打开的项目,此时MedWin集成开发环境关闭界而上所有的窗口。因为当打开项目文件后,MedWin集成开发环境默认所有编译/汇编、产生代码的过程都是对项目或项目所包含的文件进行的。第二步:在文件菜单下打开应用程序命令:文件|新建或文件|打开单模块方式下的文件调试可以按照以下方法新建或打开文件:(1)点击文件|新建,输人文件名和扩展名,新建文件(2)点击文件|打开,选择文件检取框中的文件将其打开第三步:编译/汇编命令:项目管理|编译/汇编MedWin集成开发环境根据文件的扩展名,自动对当前激活的文件选择调用外部编译器或汇编器:(1)如果当前文件的扩展
38、名为ASM或系统定义的扩展名,编译/汇编命令调用外部汇编命令对当前文件汇编。(2)如果当前文件的扩展名为C或系统定义的扩展名,编译/汇编命令调用外部C编译命令对当前文件编译。执行项目管理|编译/汇编命令后产生的结果显示在消息框中。如果需要设置文件编译/汇编的命令行参数,可以选择项目管理|文件属性命令设置。第四步:错误估息关联MedWin集成开发环境调用外部命令编译/汇编后产生的结果,显示在消息窗口中,消息窗口可由热键Ctrl+9激活。当编译/汇编发生错误时,消息窗口中的错误信息自动与源文件关联,提示出错的位置。在消息窗口中错误提示处双击。鼠标左键或键人回车,可将错误信息与源文件的错误位置关联。
39、(1)如果编译/汇编没有错误,可进人第五步操作。(2)如果编译/汇编出现错误,在修改源文件后重复进行第三步操作。第五步:产生代码并装人仿真器调试 命令:项目管理|产生代码或项目管理|产生代码并装人产生代码或产生代码并装人命令对经过编译/汇编无误后产生的OBJ文件进行连接产生用于下载的代码。此命令自动地对修改过的源程序进行编译或汇编,对没有修改过的程序将越过编译或汇编过程,然后连接所有的OBJ, LIB文件,再装载代码到仿真器,完成调试程序所需的准备工作。装载完成后,出现Loading program“(项目名)。Completed”的字样。3.4.4 使用项目管理方式开发应用程序使用MedWi
40、n集成开发环境项目管理方式开发程序,适用于各种方式下的单模块和多模块方式应用程序。以下是使用MedWin集成开发环境项目管理方式开发应用程序的步骤:(1)建立一个新的项目进人第一步新建项目文件(2)打开已经存在的项目文件进人第二步打开项目文件第一步:新建项目文件 命令:项目管理|新建项目文件 项目名称MedWin集成开发环境的项目器是按项目名称管理的,项目管理器内的项目名称不可以相同。在项目名称输人栏内,用户必须输人项目名称,并且项目名不得超过8个字符,不可以使用汉字以及“-,?,*,/”等DOS文件名所不可以使用的字符,也不可以输人盘符和路径! 高级设置高级设置是用户程序所处路径与当前工作目
41、录不同时,选择存放项目文件路径的过程。通常,当用户源程序文件存放在当前工作目录时,不需要进行高级设置。如果源程序文件不在当前工作目录时,用户必须选择高级设置,将项目文件存放到用源程序所处的目录。如果源文件与项目文件不在同一目录时,将会出现不能进行源文件调试的情况发生。添加文件选择添加文件选项,表示在项目建立后会自动打开文件检取框,供用户选择文件添加到项目管理器中。存储器属性存储器属性Small / Compact / Large,此属性为C编译器所需,如果项目文件中包含C程序,用户必须设置存储器属性。RAM尺寸:128/256,此属性为连接器所需的控制项。系统默认128字节。系统默认标准80C
42、51汇编选项,此选项为汇编器所需的控制项。选中时,汇编器默认SFR为80C51。项目头文件路径为该项目所定义的头文件所处的路径。该路径与系统定义的头文件路径在DOS环境设置的关系是:set c51 inc=(系统定义的头文件路径);(项目定义的头文件路径)项目库文件路径为该项目所定义的库文件所处的路径,该路径与系统定义的库文件路径在DOS环境设置的关系是:set c511ib=系统定义的库文件路径);(项目定义的库文件路径)在项目的编译和连接过程中,MedWin自动加人以上环境变量的设置。通常用户需要设置项目定义的头文件和库文件路径,只有在高级应用时才需设置。调试信息建立新的项目后,系统默认为
43、产生调试信息,能够进行源文件调试。更多的文件属性关于编译/汇编程序的更多的文件属性,可在项目管理|文件属性中设置。如果在多模块调试中需要关闭一个或多个文件的源文件调试,可在文件属性对话框中,分别关闭产生调试信息选项。第二步:添加文件命令:项目管理|添加文件项添加文件命令用于将各类文件添加至项目管理器,新建项目文件后集成环境会自动打开添加文件对话框,提供选择。请根据:(1)如果文件存在,在文件检取框中选择并打开文件添加。(2)如果文件不存在,必须输人文件名(包含扩展名),建立新文件。新建文件后,键人命令项目管理|添加文件项,将新建文件添加到项目中。第三步:打开项目文件命令:项目管理|打开项目文件
44、对于已经存在的项目文件,可以打开项目文件进人第四步操作。第四步:编辑,编译/汇编/连接 命令:项目管理|编译/汇编MedWin集成开发环境根据文件的扩展名,自动对激活的文件选择调用外部编译器或汇编器:(1)如果当前文件的扩展名为ASM或系统定义的扩展名,编译/汇编命令调用外部汇编命令对当前文件汇编。(2)如果当前文件的扩展名为C或系统定义的扩展名,编译/汇编命令调用外部C编译命令对当前文件编译,文件编译/汇编的命令行参数由项目管理|文件属性确定。第五步:错误信息关联文件经过编译/汇编后的结果显示于消息窗口,出现错误后错误信息与文件关联。在消息窗口中错误之处双击鼠标左键或键人回车,即可将错误与文
45、件关联:(1)如果没有错误,进人第六步操作。(2)如果出现错误,修改文件后重复进行第四步操作。第六步:产生代码并装入仿真器命令:项目管理|产生代码命令:项目管理|产生代码并装人命令:项目管理|重新产生全部代码产生代码或产生代码并装人命令,对经过编译/汇编无误后产生的OBJ文件进行连接,产生用于下载的代码。此命令对修改过的源程序自动进行编译或汇编,否则将越过编译或汇编过程进行连接,并装载代码到仿真器,完成调试文件所需的准备工作。(1)使用产生代码命令,项目管理器会自动判别文件是否需要重新编译/汇编,提高调试效率。(2)使用产生代码并装人命令,项目管理器会自动判别文件是否需要重新编译/汇编,并将连
46、接产生的代码下载到仿真器,提供调试运行。3.5 算法设计 整个程序设计过程中遇到的最大的问题的如何根据测量到的方波的频率来计算所测量的电容的大小。在前面的介绍中我们知道:555定时器芯片的输出频率跟所使用的电阻R和电容C的关系是:。555简单时序图如图3.1。图3.1 简单时序图那就设定电阻R=10k欧,ln2=0.693,所以确定C值就可以算出f的理论值,19.9pf到199.9pf对应频率值见表3.1。表3.1 电容与频率对应值 C(电容) F(频率) C(电容) F(频率)19.9pf7251300Hz69.9pf2064400Hz20.9pf6904000Hz79.9pf1806000Hz21.9pf6589000Hz89.9pf1605100Hz22.9pf6301300Hz99.9pf1444400Hz23.