电阻电容测量.

上传人:我** 文档编号:115305250 上传时间:2019-11-13 格式:DOCX 页数:24 大小:89.73KB
返回 下载 相关 举报
电阻电容测量._第1页
第1页 / 共24页
电阻电容测量._第2页
第2页 / 共24页
电阻电容测量._第3页
第3页 / 共24页
电阻电容测量._第4页
第4页 / 共24页
电阻电容测量._第5页
第5页 / 共24页
点击查看更多>>
资源描述

《电阻电容测量.》由会员分享,可在线阅读,更多相关《电阻电容测量.(24页珍藏版)》请在金锄头文库上搜索。

1、目录1系统方案整体设计 1.1设计方案论证1.2系统整体框图2系统硬件设计 2.1多谐振荡器模块 2.3 LCD显示模块2.2 单片机模块2.4 ADC0832转换模块3系统软件设计 3.1主程序设计 3.2电容值计算程序设置 3.3电阻值计算程序设计 3.4显示程序3.5程序整体设计图4程序清单5仿真结果 1系统方案整体设计1电阻、电容设计方案比较电阻、电容、电感测试仪的设计可用多种方案完成,例如利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较法,电感可用时间常数发和同步分离法等、使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。在

2、设计前对各种方案进行了比较:1)利用纯模拟电路虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。 2)可编程逻辑控制器(PLC) 应用广泛,它能够非常方便地集成到工业控制系统中。其速度快,体积小,可靠性和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。 3)采用CPLD或FPGA实现应用目前广泛应用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用。但相对而言规模大,结构复杂。4)利用振荡电路

3、与单片机结合利用555多谐振荡电路将电阻,电容参数转化为频率,而电感则是根据电容三点式电路也转化为频率,这样就能够把模拟量近似的转换为数字量,而频率f是单片机很容易处理的数字量,一方面测量精度高,另一方面便于使仪表实现自动化,而且单片机构成的应用系统有较大的可靠性。系统扩展、系统配置灵活。容易构成各种规模的应用系统,且应用系统有较高的软、硬件利用系数。单片机具有可编程性,硬件的功能描述可完全在软件上实现,而且设计时间短,成本低,可靠性高。综上所述,利用振荡电路与单片机结合实现电阻、电容、电感测试仪更为简便可行,节约成本。所以,本次设计选定以单片机为核心来进行。1.1设计方案论证对电阻的测量,可

4、将待测电阻与一标准电阻串联后接在+5V的电源上,根据串联分压原理,利用ADC测定电阻两端电压后,即可得到其阻值。对电容的测量,可将其与已知阻值的电阻RA和RB组成基于NE555的多谐振荡器如下图:其产生的方波信号频率为:f=1,44C(RA+2RB)故通过测定方波信号的频率可以比较精确的测定C的值,测定方波信号频率的方法有测频法和测周法。(1) 测频法:利用外部电平变化的外部中断,测算1s内的波数,从而实现对波数的测定;(2) 测周期法:通过测算某两次电平变化引发的中断之间的时间,实现对频率的测定。 简而言之,测频法是直接根据定义测量频率,测周法是通过测定周期间接测定频率,本方案采用测周法来测

5、量。1.2系统整体框图AT89S52输入电阻RADC0804复位电路 开关控制1602液晶显示NE555输入电容 图1 系统整体框图2系统硬件设计2.1多谐振荡器模块 该模块由NE555构成多谐振荡器,其中R10取100欧姆,R8取197欧姆,C5为被测电容。如下图所示: 图2多谐振荡器模块NE555 (Timer IC)为8脚时基集成电路,大约在1971年发布,在当时是唯一非常快速且商业化的Timer IC,在往后的30年中非常普遍被使用,且延伸出许多的应用电路,后来基于CMOS技术版本的Timer IC如MOTOROLA的MC1455已被大量的使用,但原规格的NE555依然正常的在市场上供

6、应,尽管新版IC在功能上有部份的改善,但其脚位劲能并没变化,所以到目前都可直接的代用。 NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种不同频率的脉波信号。2.2 单片机模块单片机电路是本设计的核心部分,本设计选用了常用的AT89S52单片机。AT89S52是低功耗、高性能、经济的8位CMOS微处理器,工作频率为024MHz,内置4K字节可编程只读闪存,128x8位的内部RAM,16位可

7、编程IO总线。AT89S52工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。 图3单片机模块2.3 LCD显示模块显示模块由LCD1602组成,本设计使用的是2行16个字的1602液晶模块作为测量值显示部分。其中字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据示的容量可以分为1行16个字、2行16个字、2行20个字等等。 图4 LCD显示模块2.4 ADC0832转换模块ADC0832是一个8位CMOS型逐次比较式A/D转换器,具有三态锁存输出功能,最短转换时间为100us, 图5 ADC0832转换模块 3系统软件设计3.1主程序

8、设计:配置单片机定时器0为计数模式,TH0,TL0初值均为0x00;外部中断0与多谐振荡器的脉冲输出端相连,NE555的参考电压引脚(4)与单片机IO口相连,系统上电后单片机给NE555参考电压引脚拉高,NE555开始震荡,同时外部中断接收多谐振荡器输出,当中断触发两次即表示计时一个周期,同时将多谐振荡器参考电压拉低,多谐振荡器停止震荡。取出定时器0中的值即得到一个周期的时间,再计算电容,完成显示。 3.2电容值计算程序设置:多谐振荡器震荡频率与电阻电容的关系为f=1.43/C*(R1+2R2),其中f的单位是赫兹,电阻单位是欧姆,电容单位是法拉。单片机晶振为12M所以单片机机器周期为1us,

9、计数器里面的值以us为单位。为了统一单位我将所以单位以ms为标准,作用计数器值应乘以1000。得到的电容值就是以uf为单位,而不再是法拉。3.3电阻值计算程序设计:将被测电阻与一标准电阻串联接在+5V上,根据串联分压原理,利用ADC0804测量被测电阻两端电压,经AD转换将模拟量转换成数字量,通过LCD1602显示出来。转换公式为:V测= 5*R测R测+R标3.4显示程序:计算得到的电容值,是一个浮点数对于整数部分采用求余数和求商的方法得到百位,十位和个位。对于小数部分,因为浮点数不允许进行求余数操作,所以我将这个数强制转化为int形,再乘以10,再求余数得到十分位,同理乘以100得到百分位。

10、再将每一位数送入液晶显示。开始3.5程序整体设计图初始化 电阻键按下?电容键按下? NO NOADC工作触发中断T-flag=T-flag YSYS显示T-flag=1?计算电阻值计算电容值开始计时 YS 显示T-flag=0?停止计时 YS4程序清单#include#include#define uchar unsigned char#define uint unsigned int#define LCD_Data P0unsigned char ReadADC(void); void delay1(unsigned char x);uchar Ji_s=0,Ji_s1=0,Ji_s2=0,

11、m4,js=0,T_flag;float R1=100,R2=197;/欧姆uchar code table=THE CAP IS:; uchar code table0=THE R IS:;uchar code table1=uF;sbit ADC_CLK=P11;sbit ADC_DO=P13;sbit ADC_DI=P12;sbit ADC_CS=P10;sbit lcden=P22;sbit lcdrs=P20;sbit lcdrw=P21;sbit _reset=P14;sbit start=P27;sbit p3_1=P31;sbit p3_0=P30; uchar get_ad(

12、); uchar jishu=0;uchar temp; void delay(void)uint y;for(y=5552;y0;y-); void write_com(uchar com) lcdrs=0;lcdrw=0;P0=com;delay();lcden=1;delay();lcden=0;void write_data(uchar date)lcdrs=1;lcdrw=0;P0=date;delay();lcden=1;delay();lcden=0; void init() uchar num,num1; lcden=0;write_com(0x38); /显示模式设置write_com(0x0e); /D=1开显示 C=1显示光标write_com(0x06); /N=1读或写一个字符后地址指针加一且光标加一write_com(0x01); /清屏write_com(0x80); /设置数据地址指针for(num=0;num11;num+)write_data(tablenum);delay();write_com(0xc8);for(num1=0;num12;num1+)write_data(table1num1);delay(); void initt() uchar num2; lcden=0;write_com(0x38);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号