简易电阻、电容和电感测试仪报告

合集下载

1995D 简易电阻、电容和电感测试仪

1995D 简易电阻、电容和电感测试仪

基本要求
题目四
简易电阻、电容和电感测试仪
一、任务 设计并制作一台数字显示的电阻器、电容器和电感器参数测试仪。示意框图如图所示: 电阻器 电容器 电感器 外供±15V 电源 (500mA) 二、要求 1.基本要求 ① 测量范围 电阻:100Ω至 1MΩ 电容:100 至 10000pF 电感:100u H 至 10mH ② 测量精度±5%。 ③ 制作四位数码管显示器,显示测量数据,并用发光二极管分别指示所测无件的类别 和单位。 2.发挥部分 ① 扩大测量标准 项 目 得 50 50 9 9 12 20 分 设计与总结报告:方案设计与论证,理论分 析算与计算、电路图,测试方法与数据,结 果分析 实际制作完成情况 完成第①项 发挥部分 完成第②项 完成第③项 特色与创新 测试仪 数字显示

电容电阻电感测量仪设计报告

电容电阻电感测量仪设计报告

简易数字式电阻、电感和电容测量仪摘要本系统主控制部分采用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相结合等等来实现。

简易电阻电容电感测试仪

简易电阻电容电感测试仪

Howland 恒流源
AD637
1
设计任务与要求 1.1 基本要求 (1)测量范围:电阻 100Ω~1MΩ;电容 100pF~10000pF;电感 100μH~10mH。 (2)测量精度:±5% 。 (3)制作 4 位数码管显示器,显示测量数值,并用发光二极管分别指示 所 测 元件的类型和单位。也可用液晶显示屏显示。 1.2 发挥部分 (1)扩大电阻、电容或电感的其中一种的测量范围:测量上限或者下限扩 10 倍。 (2)提高测量精度,电阻、电容或者电感其中一种的测量精度提高到 1%。 (3)测量量程自动转换。 方案比较与论证
电压降
求真有效值 芯片 AD637
数模转换芯片 AD 压降有效值
求得待测 元件大小
图(1) 方案框图
我们选择方案二, 因为方案二电路结构简单, 测电阻电感和电容都统一在一个主电路中, 电路可靠性高、 成本低。 硬件档位少, 因为电流值大小可以通过切换输入信号的频率来改变,
输入信号由AD9850产生,其频率可以由单片机控制。 3 系统硬件组成
表(3)电容测量档位的划分 档位
信号源频率 10 KHz 1 KHz 100 Hz
标准电容 Co 470K 47K 4.7K
信号源幅值 1Vpp
10pF--260pF 260pF--26nF 26nF--2.6uF
Vo
2.7V
0 10pF 4.4.3测电感电路 4.4.3.1 测电感主电路
260pF
2
方案一:谐振法。将待测L/C/R接入振荡电路中,通过测量RC或LC振荡频率来计算L/C/R值。 将被测元器件参数转换成频率后, 频率易于实现高精度测量。 但此方案在振荡频率 低于1MHz时,很难保证频率稳定度,故测量误差比较大。 方案二:电压法。通过 AD9850 芯片和 Howland 电流泵产生交流恒流源,交流恒流源流过 待测元件两端产生与待测量呈线性关系的电压值。 在待测电 待测电阻和待测电感, 容两端加交流电压, 产生的电流流过与电容串联的取样电阻产生与电容量呈线性关 系的电压值。根据欧姆定律求得待测元件的大小。方案框图如下图(1) AD9850 芯片 频率可调的正弦信号 Howland 电流泵 恒流源 待测元件

简易自动电阻测量仪报告

简易自动电阻测量仪报告

赛区编号: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Ω四档。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易电阻、电容和电感测试仪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; //退出中断后、新值变为旧值、保存旧值}。

相关文档
最新文档