简易电阻、电容和电感测试仪报告
- 格式:doc
- 大小:903.50 KB
- 文档页数:23
简易数字式电阻、电感和电容测量仪摘要本系统主控制部分采用TI公司的16位超低功耗单片机MSP430F149。
以自制电源作为LRC测量模块和各个主要控制芯片的输入电源,测量原理是通过测量电阻、电容或者电感和标准电阻各自的引起的频率变化,利用频率与电阻、电容、电感的函数关系推算出电阻值、电容值或者电感值。
测量的原理是LM311组成的LC震荡器的震荡回路的频率由单片机采样,然后再依据震荡频率计算出对应的电容或电感值,以及由NE555多谐振荡电路实现对电阻的测量。
软件设计部分使用C语言编程编写了包括控制测量程、按键处理、电阻电感电容计算、液晶显示程序。
利用MSP430F149单片机控制测量和计算结果,测量结果采用12864液晶模块实时显示。
关键词: MSP430F149、NE555芯片、LRC测量、12864液晶目录1 系统总体方案设计 (1)1.1系统方案选择 (1)1.2系统软硬件总体设计 (1)1.2.1硬件部分 (1)1.2.2软件部分 (2)2系统模块设计 (3)2.1硬件模块设计 (3)2.1.1电感电容测量模块 (3)2.1.2电阻测量模块 (4)2.1.3主控制模块 (5)2.1.4 AD采样模块 (5)2.1.5 液晶显示模块 (5)2.2软件模块设计 (5)2.2.1 控制测量程序模块 (5)2.2.2按键处理程序模块 (6)2.2.3电阻电感电容计算程序 (7)2.2.4液晶显示程序模块 (7)3系统测试 (8)3.1测试原理 (8)3.2测试方法 (8)3.3测试结果 (8)3.4测试分析 (9)4系统总结 (9)参考文献: (10)1 系统总体方案设计1.1系统方案选择方案一.基于模拟电路的测量仪利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较法,电感可用时间常数法和同步分离法等,虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。
简易电阻、电容、电感测试仪1.1 基本设计要求(1)测量周长:电阻100Ω~1MΩ;;电容100pf~10000pf;电感为100μh~10mh。
(2)测量精度:5%。
(3)做4位数码管显示,显示测量值。
原理框图1.2 设计要求发挥作用(1)扩大测量范围;(2)提高测量精度;(3) 量程自动转换。
本系统采用555多谐振荡器电路将电阻、电容参数转换为频率,电感通过电容的三点振荡转换为频率,使模拟量近似转换为数字量,频率f 为数字量单片机可轻松处理,测量精度高,易于实现自动化。
而且,由单片机组成的应用系统具有很高的可靠性。
系统扩展和灵活的系统配置。
什么样的应用系统容易构建,应用系统的软硬件利用率高。
单片机可编程,硬件的功能描述完全可以用软件实现,设计时间短,成本低,可靠性高。
综上所述,将振荡电路与单片机结合实现电阻、电容、电感测试仪更加简单可行,节约了成本。
因此,本设计基于单片机。
关键词: 单片机, 555多谐振荡器电路, 电容三点振荡一、 系统演示1. 电阻测试方案演示 方案一:电阻分压法。
图 1.1结构如图 1.1 所示。
待测电阻Rx 和参考电阻R 串联在电路中。
由于电阻分压的影响,当串联在电路中的电阻Rx 的阻值不同时,Rx 两端的压降也不同。
Rx 可以通过测量 Vx 获得。
)(X X X V VCC R V R -=这个方案的原理很简单。
理论上,只要参考电阻准确,您就可以测量任何电阻。
但在实际应用中,由于AD 的分辨率有限,当待测电阻非常大或非常小时,很难测量Rx 上的压降Vx ,从而缩小了测量范围。
为了提高测量范围和精度,需要分阶段测试电阻,提高AD 的分辨率。
这无疑会增加系统的复杂性和成本。
选项 2:桥接法。
图 1.2结构如图 1.2 所示。
Rx=R2*R3/R1电桥法又称零位指示法。
它采用归零电路作为测量指标,工作频率较宽,能在很大程度上消除或减弱系统误差的影响,精度高。
但是为了保证电桥的平衡,信号源的电压和频率要稳定,特别是波形失真要小,增加了硬件电路的难度。
简易数字式电阻、电容和电感测量仪设计摘要:本系统设计主要有控制模块、正弦信号产生模块、测量模块、显示模块组成。
以MSP430作为主控制器,通过SPWM产生频率可调的正弦波信号,标准正弦信号流经待测电感与标准电阻的串连电路,通过峰值检波得到测量电压值,利用电压比例计算的方法推算出电感值。
电容及电阻测量则是通过MSP430控制IO口电平对RC电路充放电测电阻电容。
通过单片机控制12864液晶显示屏显示测试元件类型以及元件参数,并通过手动拨码选择测量的量程,实现精确读数。
一、方案分析与论证1.系统设计方案分析:方案①:用恒流源测量电阻,NE555谐振测量电容以及用LC三点式震荡测量电感的方法。
方案②:用MSP430控制IO口电平对RC电路充放电测电阻电容,用电压比例法来测量电感。
多档位选择用拨码开关实现。
方案一原理简单,但焊接困难、调试复杂,同时考虑到系统的精度,最后选用方案二。
整体系统框图:2.单元电路分析:电阻测量方案分析:用MSP430的IO口产生不同的电平控制RC充放电,对不同的测量档位选取不同的电阻参考阻值。
具体档位分为:100-300Ω、300-20KΩ、20KΩ-200KΩ、200KΩ-1MΩ档位。
电容测量实现方案分析:用MSP430的IO口产生不同的电平控制RC充放电,对不同的测量档位选取不同的电阻参考阻值。
具体档位分为:100-300Ω、300-20KΩ、20KΩ-200KΩ、200KΩ-1MΩ档位。
电感实现方案分析:本设计采用电压比例法来测量电感。
由于电感属电抗元件 ,因此不能采用直流来产生测量信号 ,而只能采用交流信号在角频率为ω的交流信号的作用下 ,电感获得的电压为:(式中Lx为待测电感)标准元件的选择有许多种方法 ,但为了提高测量精度和降低成本 ,本设计采用了标准电阻 ,它获得的电压为:根据电压比例法 ,经过计算可得:(式中:、分别是、向量电压的模值)。
三、系统测试1、主要测试仪器数字万用表、YB1732B3A型直流稳压电源、精密数字电桥。
电阻电感电容测试仪的设计与制作论文编号B甲1301参赛题目电阻电感电容测试仪的设计与制作参赛学校山东理工大学学院电气与电子工程指导老师李震梅唐诗参赛队员姓名吴硕刚王鹿鹿张兵联系方式电阻电容电感测试仪的设计与制作摘要:本文设计了一种基于单片机的数字式RCL自动测量仪。
该系统由STC89C52、DDS、自校准电路、分压及R运算电路、频率测量及控制电路、高精度交流/有效值转换电路、DAC、译码控制电路、液晶显示电路等构成,采用AD9850产生高精度的正弦波信号,采用电压比例算法推算出电阻、电容值或者电感值。
测量电路由八级标准电阻、继电器和NEC5532组成,能自动选择相应的标准电阻挡级及标准信号源的频率,完成量程的自动转换。
用单片机控制测量和计算结果,运用自校准电路提高测量精度,采用1602液晶模块实时显示数值。
实验测试结果表明,本设计性能稳定,测量精度高,超过设计要求。
关键词: STC89C52,测量,DDS,显示,频率The Design and Manufacture of Resistance Capacitance & InductanceTest InstrumentThis paper presents a Digital Automatic RCL Meter based on MCU. This system consists of STC89C52, DDS, Self-calibration circuit, V oltage divider and RCL operation circuit, Frequency measurement and control circuit, High Precision AC / RMS conversion circuit, DAC, Decoding control circuit, and LCD display circuit. The high-precision sine wave signal was produced by AD9850, The resistance, capacitance and inductance can be calculated by voltage ratio algorithmThe measurement circuit consists of eight standard resistance, relays and NEC5532. It can automatically select the appropriate level of resistance and frequency of signal source, fulfill the automatic switch of measurement range.The measurement and calculation were controlled by chip microcomputer.The self-calibration circuit was used to improve the measurement accuracy. The real-time values were displayed by 1602 LCD module.The experimental results show that the performance of the system is stable with high accuracy; the capacity of the system is over the design requirements.Keywords: S TC89C52, measurement, DDS, dislay, frequency前言电阻、电容、电感精确测量仪是实验室及工程中经常遇到的常用仪器。
简易数字式电阻、电容和电感测量仪设计报告摘要:本系统利用TI公司的16位超低功耗单片机MSP430F149和ICL8038精密函数发生器实现对电阻、电容和电感参数的测量。
本系统以自制电源作为LRC数字电桥和各个主要控制芯片的输入电源,并采用ICL8038芯片产生高精度的正弦波信号流经待测的电阻、电容或者电感和标准电阻的串联电路,通过测量电阻、电容或者电感和标准电阻各自的电压,利用电压比例计算的方法推算出电阻值、电容值或者电感值。
利用MSP430F149单片机控制测量和计算结果,运用自校准电路提高测量精度,同时用差压法,消除了电源波动对结果的影响。
测量结果采用12864液晶模块实时显示。
实验测试结果表明,本系统性能稳定,测量精度高。
关键词:LRC 数字电桥、电压比例法、液晶模块、MSP430F149、电阻电容电感测量一、设计内容及功能1.1设计内容设计并制作一台简易数字式电阻、电容和电感参数测量仪,由测量对象、测量仪、LCD 显示和自制电源组成,系统模块划分如下图所示:1.2 具体要求1. 测量范围(1)基本测量范围:电阻100Ω~1MΩ;电容100pF~10000pF;电感100μH~10mH。
(2)发挥测量范围:电阻10Ω~10MΩ;电容50pF~10μF;电感50μH~1H。
2. 测量精度(1)基本测量精度:电阻±5% ;电容±10% ;电感±5% 。
(2)发挥测量精度:电阻±2% ;电容±8% ;电感±8% 。
3. 利用128*64液晶显示器,显示测量数值、类型和单位。
4. 自制电源5. 使用按键来设置测量的种类和单位1.3系统功能1. 基本完成以上具体要求2. 使用三个按键分别控制R、C、L的测试3. 采用液晶显示器显示测量结果二、系统方案设计与选择电阻、电容、电感测试仪的设计目前有多种方案可以实现,例如、使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。
赛区编号:18-012011年全国大学生电子设计竞赛简易自动电阻测试仪设计与总结报告组别:高职高专题号:G完成日期:2011年9月3日简易自动电阻测试仪设计与总结报告摘要本设计完成了一种通过检测电压测量电阻的恒流源式简单自动电阻测量仪。
它以单片STC89C52为核心,通过恒流源模块、A/D转换模块和显示模块电阻实现了电阻在大范围内测量,并且能在测量量程为100Ω、1kΩ、10kΩ、10MΩ四档中自由切换,测量精度高,并且具有电阻筛选功能、自动测量和显示电位器阻值随旋转角度变化的曲线。
在恒流源设计部分采用微恒流源和压控电流源,通过4051电子开关的程控实现了各档位的自由切换,此部分性能优越,稳定性较高。
整机系统均达到设计要求的指标。
关键词:恒流源,程控控制,A/D转换1目录摘要 (1)目录 (2)§1.设计任务与要求 (3)1.1 设计任务 (3)1.2 技术指标 (3)1.3 题目评析 (3)§2.系统方案 (3)2.1 各种方案比较与选择 (3)2.2 方案描述 (4)3理论分析与计算 (5)3.1电阻测量原理 (5)3.2自动换量程原理 (5)4 电路设计与程序设计 (6)4.1电路设计 (6)4.1.1微恒流源电路 (6)4.1.2压控电流源电路 (7)4.1.3有源滤波电路 (8)4.1.4 A/D采样电路 (8)4.2程序设计 (9)4.2.1程序总流程图 (9)4.2.2程序主要模块流程图 (10)5测试方案与测试结果 (12)5.1测试方案及测试条件 (12)5.1.1测试方案 (12)5.1.2测试仪器 (12)5.2测试结果 (12)6结论 (13)参考文献 (14)附录 (15)附录1 元器件清单 (15)附录2 总设计思想图 (16)2§1.设计任务与要求1.1 设计任务设计并制作一台简易自动电阻测试仪。
1.2 技术指标基本要求(1)测量量程为100Ω、1kΩ、10kΩ、10MΩ四档。
一、课题的开发背景与需求分析在电子电路实验中经常需要测量电容的容量和电感的电感量,特别对一些小容量和小感量的器件,虽然专业测量仪很好,但不是每人都能配备,所以,如果能够自己动手制作,那么既锻炼了动手能力,又解决了问题。
国外有一个网站上出售使用PIC16C622制作的电容电感测试议套件,可以测量电容量或电感量;后来又有人介绍使用AT89C2051制作的同类测量仪。
这里根据上述仪器的原理模仿制作了一个,经试用效果不错,而且电路简单实用,测量范围较宽,测量结果也较准确,完全可以满足一般电子爱好者的需要自制的电容电感测量仪。
二、调研分析经过开题期间的文献查阅和实际情况调研,了解到电容器的参数很多,通常有:电容量、耐压、漏电、等效电感、损耗、频率特性、温度稳定性、等效串联电阻(超大容量电容器)等;电感器的参数有:电感量、漏感、等效电阻、损耗、频率特性、饱和电流、最大功率等。
在故障诊断以及电器维修中更换元器件时,需要对这些参数予以全面考虑。
但是一般条件下,元器件上只会标明电容量或电感量、电容器的耐压值等,普通仪器也能测量到这些基本参数,其他的参数只能靠选用规定类型、规格的电容器或电感器来保证。
电容器的种类很多,依其中使用的绝缘介质材料不同可分为:纸介电容、金属化纸介电容、云母电容、瓷介电容、涤纶薄膜电容、聚本乙烯薄膜电容、钽电解电容、铝电解电容、双电层电容等。
大多数电容器没有正负极之分,容量一般都在1uf 以下,一般适合在较高频率的场合使用;电解电容器的容量可以做到10^4uf,超大容量的双电层电容器(EDLC)其容量以可做到法拉级,但都有级性,适合低频场合使用,容量测量方法与无极性电容器不同。
电感器一般有空心、磁心、铁心之分,但电感的测量方法一般没有区别。
有以下测量方法:1.经典测量方法经典测量方法利用交流电桥的平衡原理,既可以测电容,也可以测量电感。
交流电桥测量电容的原理图如图1所示。
当电桥平衡时,有Rx+1/(jwCx)=R4(R2+1/(jwC2))/R3由上式可求得Cx=R3C2/R4,Rx=R4R2/R3。
简易电阻、电容和电感测试仪的设计一、任务设计并制作一个简易电阻、电容和电感测试仪系统,包括测量、控制与显示三部分。
其中测量电路包括:被测电阻,被测电容,被测电感,其中包括模拟快关、整形、分频等部分;显示电路包括:二极管的显示、数字显示;控制电路括:按键的选择测量电路与单片机的控制部分。
二、要求1、基本要求(1)测量范围:电阻100Ω~1MΩ;电容100pF~10000pF;电感100μH~10mH。
(2)测量精度:±5% 。
(3)制作4位数码管显示器,显示测量数值。
示意框图2.发挥部分(1)扩大测量范围;(2)提高测量精度;(3)测量量程自动转化。
3 评分标准项目得分基本要求设计与总结报告:方案设计与论证、理论50 计算与分析、电路图,测试方法与数据结果分析实际完成情况50发挥部分完成第(1)项9 完成第(2)项9 完成第(3)项12 特色与创新20摘要:本文先对设计功能及要求进行了阐述,然后提出要完成该功能的设计方案,最后综合考虑之后选定方法,再对电阻,电容,电感的测量电路进行设计。
本设计是利用单片机来实现测试的,其中电阻和电容是采用555多谐振荡电路产生的,而电感则是根据电容三点式产生的,从而实现各个参数的测量。
在电阻的测量电路中,我们把它分为两档来进行测量,并用单片机来驱动继电器以实现,这样,一方面测量精度较高,另一方面便于使仪表实现智能、自动化。
关键词:单片机 555多谐振荡电容三点式继电器In this article, the function and the requirement of design were introduced, and then puts forward to want to complete the function, the design of the last comprehensive consideration selection methods, and then a resistor, capacitor, inductor measurement circuit design. This design is to realize the test using single chip computer, of which the resistor and capacitor is used more than 555 resonance swing circuitry, and inductance is produced according to the capacitance SanDianShi, so as to realize the measurement of each parameter. In the resistance and capacitance measurement circuit, we put it into two files to make the measurement, and single chip microcomputer to drive the relay to realize, so that, on the one hand, has high accuracy, on the other hand to make intelligent instrument and automation.Key words: more than 555 single chip microcomputer chip oscillation capacitance SanDianShi relay一、系统方案论证1.1 电阻测试模块电路方案一:电阻分压法。
简易电阻、电容和电感测试仪1.1 基本设计要求(1)测量范围:电阻100Ω~1MΩ;电容100pF~10000pF;电感100μH~10mH。
(2)测量精度:±5% 。
(3)制作4位数码管显示器,显示测量数值。
示意框图1.2 设计要求发挥部分(1)扩大测量范围;(2)提高测量精度;(3)测量量程自动转化。
摘要:本系统是依赖单片机MSP430建立的的,本系统利用555多谐振荡电路将电阻,电容参数转化为频率,而电感则是根据电容三点式振荡转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。
系统扩展、系统配置灵活。
容易构成何种规模的应用系统,且应用系统较高的软、硬件利用系数。
单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。
综上所述,利用振荡电路与单片机结合实现电阻、电容、电感测试仪更为简便可行,节约成本。
所以,本次设计选定以单片机为核心来进行。
关键词:430单片机,555多谐振荡电路,,电容三点式振荡一、系统方案电阻测量方案:555RC多谐振荡。
利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电阻的大小,如果固定电阻值,该方案硬件电路实现简单,通过选择合适的电容值即可获得适当的频率范围,再交由单片机处理。
综合比较,本设计采用方案三,采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。
电容测量方案:555RC多谐振荡同样利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电容的大小,如果固定电阻值,该方案硬件电路实现简单,能测出较宽的电容范围,能够较好满足题目的要求。
采用低廉的NE555构建RC多谐振荡电路,电路简单可行,单片机易控制。
电感测量方案:电容三点式采用LC配合三极管组成三点式震荡振荡电路,通过测输出频率大小的方法来实现对电感值测量。
该方案成本低,其输出波形为正弦波,将其波形整形后交给单片机测出其频率,并转换为电感值。
二、理论分析与计算1.电阻测量的分析及计算根据题目要求,如图2.1,采用555多谐振电路,将电阻量转化为相应的频率信号值。
考虑到单片机对频率的敏感度,具体的讲就是单片机对10KHz-100KHz的频率计数精度最高。
所以要选用合理的电阻和电容大小。
同时又要考虑到不能使电阻的功率过大,所以在选第一个量程时取R=330Ω,C=0.22uF(此时Rx=100欧为测量下限);在第二个量程取R=20 KΩ,C=0.01uf(此时Rx=1兆欧为测量上限)。
电路分为了两个档:1)、100≤Rx≤10000欧:R1=330欧,C=0.22uF:Rx=3.27885/f⨯10∧6-1952)、10000≤Rx≤10兆欧:R1=20千欧,C=0.01微法:Rx=7.215/f⨯10∧7-10000仿真图图2.12.电容测量的分析与计算测量电容采用的RC振荡电路与测电阻的振荡电路完全一样,如图2.2。
同样也选用两个量程。
第一个量程R1=R2=510千欧;第二个量程R1=R2=10千欧。
这样可使电容挡的测量范围很宽。
电容的测量采用“脉冲计数法”,由555电路构成的多谐振荡路,通过计算振荡电路的输出频率计算被测电容的大小。
电路分为了两个档:1)、100≤Cx≤1000pF: R1=R2=510kΩ:Cx =48100000/f2)、10000pF≤Cx≤47uF: R1=R2=10KΩ:Cx =8400000/f图2.2仿真图3.电感测量的分析与计算依据电感的特点,三点式振荡电路把电感值转换为相对应的频率值,如图2.3。
在此处这个三点式振荡电路中,C3,C4分别采用0.1u和0.22u的独石电容,因其电容值远远大于晶体管极间电容值,所以可把极间电容值忽略。
这样根据振荡频率公式可以确定电感值:则 L= [1/(2*3.14*fx)]^2/C C=C3*C4/(C3+C4)一般而言,电容的稳定性,特别是像独石电容一类性能比较好的电容,误差精度就能保持在-5%—+5%以内。
仿真图图2.3图3.3三、程序设计电阻、电容和电感参数测试仪主程序流程图如图4.1。
根据按键选择测量状态,进入相应的测试程序。
图4.1四、系统测试及结果分析1.测试使用的仪器设备测试使用的仪器设备如表4-1所示。
表4-1 测试使用的仪器设备2.测试方法在系统设计中,以MSP430F149单片机为核心的电阻、电容、电感测试仪,将电阻,电容,电感,使用对应的振荡电路转化为频率实现各个参数的测量。
其中电阻和电容是采用555多谐振荡电路产生的,而电感则是根据电容三点式产生的,通过定时并且计数可以计算出被测频率,再通过该频率计算出被测参数。
使用C语言编程编写了系统应用软件;包括主程序模块、显示模块、电阻测试模块、电容测试模块和电感测试模块、键盘模块、整形模块、模拟开关模块。
在测试时将被测参数通过本系统测量出来的示值与参数的标称值进行对比,进而可以知道本系统的测试精度。
2.测试数据我们RLC测试的量程为电阻:100 Ω至10 MΩ;电容:100pF至47uF;电感:10uH至15mH。
测量数据如表4-2。
4.测试结果分析在测试电阻电容时我们采用的是555振荡器产生脉冲波进而测试其频率来算出电容电阻。
在测试时测量小电阻时时误差有点大,但是测量大电阻时误差就比较小了,都能达到设计要求。
而测量电容时也是小电容时误差有点大,而大电容误差就很小了。
因为电阻电容我们都是划分为两个档,所以有可能是档位划分的不够精准,所以导致误差较大。
测电感时是通过电容三点式来测量的。
我们的测量范围为100uH到10mH,由于起振的幅度达不到555振荡器幅度要求,所以测量10uH的就不能测试,因而我们只能测试100UH以上的。
它的测量误差也基本能达到设计的要求。
五、小结本次课题是基于MSP430单片机的简易电阻电容电感测试仪的制作。
整体方案我们采用谐振法来测其频率来反算出其对应的值。
电阻电容我们采用的是555振荡器。
而电感测试我们采用的电容三点式起振。
硬件方面我们做出来基本能达到要求。
就是在测量小电容电阻时有点误差。
但是软件方面却遇到了许多问题。
从而导致最终结果没有出来。
做的来说我们这次课题是失败的。
此次课题中,我们进一步学习了 MSP430单片机,也了解到了555振荡器的工作原理。
以及进一步学习了电容三点式的工作原理。
但是,我们也有许多不足的地方,特别是软件这块。
希望在接下来的培训中能够赶上来。
参考文献[1] 黄智伟.全国大学生电子设计竞赛系统设计(第二版),北京航空航天大学出版社。
[2] 阎石.数字电子技术基础(第五版),高等教育出版社。
[3] 《电子技术基础》(第五版).康华光.高等教育出版社,2006.[4] 《电子线路设计 . 实验 . 测试》(第三版).谢自美.华中科技大学出版社,2006.附录:/****按键1表示测电阻,按键2表示测电容,按键3表示测电感按键4表示切换量程,每种对象默认用大量程,按键4可以在大小量程之间来回切换***/#include <msp430x14x.h>#include "boardConfig.h"#include "lcd1602.h"void delay1(unsigned char x){unsigned char y=100;for(;x>0;x--){while(y--);}}void Timerb_init(void){P4SEL |= BIT1; //选择P1.1为第二功能P4DIR &= ~BIT1;TBCTL = TBSSEL_2 + MC_2; //Timer_A 时钟源为MCLK、连续计数模式TBCCTL1 = CM_1 + CAP + CCIE + CCIS_1 + SCS; //上升沿捕获、捕获模式、开中断、选择输入端为CCI0A、同步捕获}void port1_init(){P1IES = 0x0f; // P1.0~P1.3选择下降沿中断P1IE = 0x0f; // 打开中断使能P1DIR = BIT7; //设置P1.0~P.3为输入状态,P.7为输出P1OUT = 0;}void main(){unsigned int i;WDTCTL = WDTPW + WDTHOLD;BCSCTL1 &= ~XT2OFF;do{IFG1&=~OFIFG; //激活失败标志位置零for(i=0;i<250;i++); //等待激活} while(IFG1&OFIFG); //判断是否激活BCSCTL2 = SELM_2 + SELS; //主系统时钟6M,子系统时钟6Mport1_init();BoardConfig(0xfF);LcdReset();Delay5ms();LcdWriteCommand(0x01, 1); //显示清屏Timerb_init();_EINT();while(1){if(r_now) //电阻第一档计算{DispNChar(0,0,3,Rx1);if(range){Rx = (7.215 * 1000 *10 /fx -10)*10;Disp1Char(4,0,0x30+((long)(Rx/100000)%10));Disp1Char(5,0,0x30+((long)(Rx/10000)%10));Disp1Char(6,0,0x30+((long)(Rx/1000)%10));Disp1Char(7,0,0x30+((long)(Rx/100)%10));Disp1Char(8,0,0x30+((long)(Rx/10)%10));Disp1Char(9,0,'.');Disp1Char(10,0,0x30+((long)Rx%10));DispNChar(13,0,2,unit_R);}else //电阻第二档计算{Rx = (3.27885 * 1000 * 1000/fx - 165)*10;Disp1Char(4,0,0x30+((long)(Rx/10000000)%10));Disp1Char(5,0,0x30+((long)(Rx/1000000)%10));Disp1Char(6,0,0x30+((long)(Rx/100000)%10));Disp1Char(7,0,0x30+((long)(Rx/10000)%10));Disp1Char(8,0,0x30+((long)(Rx/1000)%10));Disp1Char(9,0,0x30+((long)(Rx/100)%10));Disp1Char(10,0,0x30+((long)(Rx/10)%10));Disp1Char(11,0,'.');Disp1Char(12,0,0x30+((long)Cx%10));Disp1Char(13,0,' ');Disp1Char(14,0,'o');}}else if(c_now) //电容第一档计算{DispNChar(0,0,3,Cx1);if(range){Cx = 4.8089 * 1000 * 100/ fx;Disp1Char(4,0,0x30+((long)(Cx/100000)%10));Disp1Char(5,0,0x30+((long)(Cx/10000)%10));Disp1Char(6,0,0x30+((long)(Cx/1000)%10));Disp1Char(7,0,0x30+((long)(Cx/100)%10));Disp1Char(8,0,0x30+((long)(Cx/10)%10));Disp1Char(9,0,'.');Disp1Char(10,0,0x30+((long)Cx%10));DispNChar(13,0,2,unit_C1);}else //电容第二档计算{Cx = 0.94 * 1000 * 1000 * 10/ fx ;Disp1Char(4,0,0x30+((long)(Cx/10000000)%10));Disp1Char(5,0,0x30+((long)(Cx/1000000)%10));Disp1Char(6,0,0x30+((long)(Cx/100000)%10));Disp1Char(7,0,0x30+((long)(Cx/10000)%10));Disp1Char(8,0,0x30+((long)(Cx/1000)%10));Disp1Char(9,0,0x30+((long)(Cx/100)%10));Disp1Char(10,0,0x30+((long)(Cx/10)%10));Disp1Char(11,0,'.');Disp1Char(12,0,0x30+((long)Cx%10));DispNChar(13,0,2,unit_C2);}}else if(l_now) //电感计算{DispNChar(0,0,3,Lx1);Lx = 3.68441 * 1000 * 1000 * 1000 *1000 / fx/fx;Disp1Char(4,0,0x30+((long)(Lx/10000000)%10));Disp1Char(5,0,0x30+((long)(Lx/1000000)%10));Disp1Char(6,0,0x30+((long)(Lx/100000)%10));Disp1Char(7,0,0x30+((long)(Lx/10000)%10));Disp1Char(8,0,0x30+((long)(Lx/1000)%10));Disp1Char(9,0,0x30+((long)(Lx/100)%10));Disp1Char(10,0,0x30+((long)(Lx/10)%10));Disp1Char(11,0,'.');Disp1Char(12,0,0x30+((long)Lx%10));DispNChar(13,0,2,unit_L);}}}#pragma vector=PORT1_VECTOR__interrupt void PORT1_ISR(void){if(P1IFG & 0x0f){switch(P1IFG & 0x0f){case 0x01:if(keyin == 0x0e) //如果是第一个按键被按下{delay1(1);if(keyin == 0x0e){while(keyin != 0x0f); //等待按键放开KeyVal = 1;range = 1;r_now = 1;c_now = 0;l_now = 0;P1IFG = 0;return;}}case 0x02:if(keyin == 0x0d) //如果是第二个按键被按下{delay1(1);if(keyin == 0x0d){while(keyin != 0x0f); //等待按键放开KeyVal = 2;range =1; //复位到大量程r_now = 0;c_now = 1;l_now = 0;P1IFG = 0;return;}}case 0x04:if(keyin == 0x0b) //如果是第三个按键被按下{delay1(1);if(keyin == 0x0b){while(keyin != 0x0f); //等待按键放开KeyVal = 3;range = 1;r_now = 0;c_now = 0;l_now = 1;P1IFG = 0;return;}}case 0x08:if(keyin == 0x07) //如果是第四个按键被按下{delay1(1);if(keyin == 0x07){while(keyin != 0x0f); //等待按键放开KeyVal = 4;range ^= 0x01;P1IFG = 0;return;}}default:while(keyin != 0x0f); //等待按键放开KeyVal = 0;P1IFG = 0;return;}}}#pragma vector=TIMERA0_VECTOR__interrupt void TimerA0(void){static uchar index=0;uchar i;new_value=TBCCR0; //读取中断时的TACCR0值if(flag == 1){flag = 0;value_diff = 65535-old_value + new_value;}else{value_diff=new_value-old_value ; //差值=新值-旧值}capture_array[index]=value_diff; //将捕获的差值存入数组index++;if(index==Num){index=0;sum = capture_array[0];for(i=1;i<Num;i++){sum+=capture_array[i]; //将捕获的数据求和sum >>= 1 ;} //捕获的数据求平均值fx = (long)(((8.0*1000*1000)/sum) +1);Rx = (7.215 * 1000 *10 /fx -10)*10;}old_value=new_value; //退出中断后、新值变为旧值、保存旧值}。