毕业设计(论文)《简易自动电阻测试仪》专业(系)班级学生姓名指导老师完成日期2目录3前言在工程实践中,常需要测定某些高导电材料的电阻率。我们电阻测量的思路是:由精密恒流源电流通过被测电阻,通过放大器将信号扩展到信号能被提取出来,接着进行信号处理,然后进行信号采集和A/D转换,最后显示测量结果。在测量电路中,电压的分辨率影响测量精度,即受A/D转换的位数影响。而整个电路的误差决定电路所采用的形式。系统的误差主要由量化误差及模拟误差组成,当然也要考虑外部噪声和干扰对测量的影响。因此,恒流源和放大器的性能非常关键。在电路的测试过程中,常常会碰到由于忽略某些电阻实际值与理论值之间的误差,从而影响检测结果。我们选用了单片机来设计该测量仪。该测量仪可直接从液晶显示屏上读出所测得的电阻值,同时可以对需要指定测试的数据进行设定,能够帮助我们更快更好的选出我们所需要的电阻。4摘要本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用伏安法测电阻的测量方法,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量功能、自动换挡和筛选功能、电位器阻值变化曲线测试的功能。再通过单片机与显示模块的连接,显示测量结果。关键词:电阻自动测试仪、STC89C52、电阻测量功能、自动换挡、曲线测试、AD77055AstractThispaperintroducesAkindofbasedonAkindofAT89S52SCMvoltagemeasurementcircuit,thiscircuitadoptshighprecision,AD7705dual-slopeA/Dcircuit,measurementrangedc0-+2.500v,useLCDmodulethatcanbewithAPCforserialcommunication.Thetextmainlygivesallthepartsofthecircuithardwareandsoftwaresystem,thispaperintroducestheprincipleofthedoubleintegralcircuitAT89S52devices,thecharacteristicsoftheAD7705,functionandapplicationofthefunctionandapplication,CD4040.Thecircuitdesignisnovel,thepowerful,flexibleexpandability.Thetechniquetobeusedmainlyhas:(1)throughtheprogrammingtorealizetheresistancevaluedirectlymeasuringthe;(2)ICL7135convertereffectiveapplication;(3)12864LCDmonitoreffectiveapplication;(4)throughthekeyboardtorealizeresistancetoleranceofparametersset;(5)throughthesingle-chipmicrocomputercontrolmotortorealizetheautomaticcontrolofpotentiometer.Keywords:AT89S52devices,ICL7135,12864liquidcrystaldisplay,keyboard.6第1章方案设计与论证1.1比较与选择采用单片机电阻的设计目前有多种方案可以实现,例如、使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。在设计前本文对各种方案进行了比较:方案一、基于模拟电路的测量仪利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较法,电感可用时间常数发和同步分离法等,虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。方案二、可编程逻辑控制器(PLC)此方案采用PLC对硬件进行控制,应用较为广泛。它能够非常方便地集成到工业控制系统中。其速度快,体积小,可靠性和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。方案三、采用CPLD或FPGA实现此方案则采用广泛应用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用。但相对而言设计规模大,系统结构复杂。方案四、利用基于伏安法的电阻测量与单片机结合利用基于伏安法电阻测量方法,将电阻参数转化为电压模拟信号,此模拟量由高精度AD转换芯片转换为数字量。这样由单片机处理数字量,能够满足测量精度高、易于实现自动化测量等设计需要,而且单片机构成的应用系统有较大的可靠性、系统扩展、系统配置灵活,容易构成各种规模的系统。通过对上述方案的比较,利用基于恒流源的电阻测与单片机结合实现7电阻测试仪更为简便可行,节约成本。所以,本文选定以单片机为核心来实现对电阻测量的设计。1.2方案描述本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用基于LM358构成的恒流源的电阻测量方法,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量。再通过单片机与显示模块的连接,显示测量结果。该测试仪由电阻测量电路模块、电位器阻值变化曲线测试模块、单片机,A/D转换电路,时钟电路,稳压电源,恒流源,显示,报警,键盘等模块组成。系统方框图如图1所示。图1系统方框图8第2章理论分析与计算2.1基于电阻测量原理说明图2所示电路是该系统采用的电阻测量示意图,电路中A点的电位为1.25伏,电压表侧A,B两点的电位,根据电路理论可得如下表达式:11.251.25ABABxUURR由此可得被测电阻xR,11.251.25ABxABURRU图2电阻测量示意图2.2自动量程转换与筛选功能通过多次测量和对比,然后对数据进行分析,最后得到一个算法,公式如下:电阻显示值=[247500/(测量值*0.038147)]-990筛选功能通过设置一个初始电阻值及其阻值范围,将阻值范围内的电阻选择出来,并测量阻值。具体方法是用单片机STC89S52软件编程来自动控制继电器实现电阻的自动转换量程和筛选功能2.3电位器阻值变化曲线装置将4.7kΩ旋转式单圈电位器的旋转角度范围划分为16等分(包括电阻最小值和最大值对应的角度),测试每一个等分点所对应的阻值,然后9利用单片机求出相邻两个点之间的函数关系式ykb,再根据函数关系式描点划线。示意图如图3所示图3电位器阻值变化曲测试示意图10第3章硬件电路设计3.1电路设计(1)电阻测量电路图4电阻测量原理图(2)电源模块输入的外部电源首先经过桥式整流、滤波电路滤波,再经过7805芯片稳压成5V的直流电压,向主控制器供电。11图4电源模块电路(3)AD采样模块本模块利用AD7705实现AD转换功能把整流滤波后的模拟信号转换为单片机能够处理的数字信号,并传送给处理器。图5AD转换模块12(4)主控制模块本模块采用低功耗的STC89C52微处理器控制AD装换,并对转换结果数据进行接收和处理;通过按键控制测量的类型和单位。图6主控模块电路图键盘功能如下:s1;电阻筛选功能键;s2:-s3:+s4:自动测量电位器(5)显示模块通过LCD驱动程序对STC89S52处理后的结果数据进行稳定显示,在测试期间显示能够保持稳定状态,当离开测试能够迅速归零。13图7液晶模块连接电路图(6)电机驱动电路电机驱动模块采用电机驱动芯片LN297和LN298来控制步进电机。输入的信号用光耦TLP512-5送入LN297,很好的隔离了输入与输出信号,抗干扰能力强。进而带动电位器旋转,实现电位器阻值变化曲线测试功能。图8电机驱动电路图14第4章系统软件设计4.1软件组成(1)控制测量程序,单片机控制测量程序不仅担负着量程的识别与转换,而且还负责数据的修正和传输;因此主控制器的工作状态直接决定着整个测量系统能否正常工作,所以控制测量程序对整个测量来说至关重要;(2)按键处理程序,根据按键的状态做相应的功能设置;(3)电阻计算程序,单片机根据A/D转换得到的电压值计算出电阻值;(4)液晶模块显示程序。该自动电阻测试仪的系统流程图如图9所示:4.2系统软件流程图15图9系统流程图Y主流程图主控模块采集数据转换数据档位显示适配超限处理Y开始调主控模块(仅一次)读A/D数据显示数据更新扫描按键键盘主控NNNN按启动?调主控?Y显示初显N数据更新?延迟时间?读A/D数据164.3系统总程序#includeLCD12864.h#includereg51.h#includeADC.h#defineucharunsignedchar#defineuintunsignedint#defineTHO_int0xff#defineTL0_int0x15#defineTMOD_int0x01#defineTCON_int0x10uchartime_4ms;ucharcont_200ms;ucharstop_run_delay;ucharset_read_cont;ucharkey;ucharkey_buf;ucharkey_cont;ucharset_step;uchartast_delay;//************************************uintmoto_cont;uintmoto_time;ucharP1_buf;ucharbeef_delay;ucharbeef_cont;uintpdatabuf[50];17ucharmode;ucharset_mode;ucharR_wc;//************************************ucharAD_data[2];chardsp_buf[10];unsignedlongAD_BUF1,R1,RA,A0,set_R;uintAD_UOR;ucharad_cont;//***********************************sbitout1=P1^4;sbitout2=P1^5;sbitout3=P1^6;sbitout4=P1^7;sbitbuz=P3^6;sbitled=P3^7;ucharcodemoto_tap[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09,};//步进电机时序表格ucharcodemoto_tap2[8]={0x08,0x0a,0x02,0x06,0x04,0x05,0x01,0x09,};//步进电机时序表格charcodeLCD_TAP2[10]={0123456789};ucharcodedsp_[16]={};ucharbdataFLG;sbitFLG_200MS=FLG^0;sbitrun_flg=FLG^1;sbitbeef_en=FLG^2;18sbitcolck=FLG^3;sbitkey_out=FLG^4;sbitad_out=FLG^5;sbitcall_en=FLG^6;voidAd_read(void);voidT0_int(void){TMOD=TMOD_int;//设置定时器工作模式TCON=TCON_int;//启运定时器TL0=TL0_int;//装入定时器初值TH0=THO_int;//装入定时器初值ET0=1;//允许定时器0中断EA=1;//开总断}voidtimer0_(void)interrupt1using1//定时器溢出周期为125us已加入16t{TR0=0;//TL0=TL0_int;TH0=THO_int;TR0=1;time_