毕业设计论文基于STC89C52单片机的简易自动电阻测试仪

上传人:沈*** 文档编号:69656604 上传时间:2022-04-05 格式:DOC 页数:46 大小:700KB
返回 下载 相关 举报
毕业设计论文基于STC89C52单片机的简易自动电阻测试仪_第1页
第1页 / 共46页
毕业设计论文基于STC89C52单片机的简易自动电阻测试仪_第2页
第2页 / 共46页
毕业设计论文基于STC89C52单片机的简易自动电阻测试仪_第3页
第3页 / 共46页
点击查看更多>>
资源描述
毕业设计(论文) 简易自动电阻测试仪 专业(系) 班 级 学生姓名 指导老师 完成日期 目 录前 言在工程实践中,常需要测定某些高导电材料的电阻率。我们电阻测量的思路是:由精密恒流源电流通过被测电阻,通过放大器将信号扩展到信号能被提取出来,接着进行信号处理,然后进行信号采集和A/D转换,最后显示测量结果。在测量电路中,电压的分辨率影响测量精度,即受A/D转换的位数影响。而整个电路的误差决定电路所采用的形式。系统的误差主要由量化误差及模拟误差组成,当然也要考虑外部噪声和干扰对测量的影响。因此,恒流源和放大器的性能非常关键。在电路的测试过程中,常常会碰到由于忽略某些电阻实际值与理论值之间的误差,从而影响检测结果。我们选用了单片机来设计该测量仪。该测量仪可直接从液晶显示屏上读出所测得的电阻值,同时可以对需要指定测试的数据进行设定,能够帮助我们更快更好的选出我们所需要的电阻。摘 要本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用伏安法测电阻的测量方法,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量功能、自动换挡和筛选功能、电位器阻值变化曲线测试的功能。再通过单片机与显示模块的连接,显示测量结果。关键词:电阻自动测试仪、STC89C52、电阻测量功能、自动换挡、曲线测试、AD7705AstractThis paper introduces A kind of based on A kind of AT89S52 SCM voltage measurement circuit, this circuit adopts high precision, AD7705 dual-slope A/D circuit, measurement range dc 0-+ 2.500 v, use LCD module that can be with A PC for serial communication. The text mainly gives all the parts of the circuit hardware and software system, this paper introduces the principle of the double integral circuit AT89S52 devices, the characteristics of the AD7705, function and application of the function and application, CD4040. The circuit design is novel, the powerful, flexible expandability.The technique to be used mainly has:(1) through the programming to realize the resistance value directly measuring the;(2) ICL7135 converter effective application;(3) 12864 LCD monitor effective application;(4) through the keyboard to realize resistance tolerance of parameters set;(5) through the single-chip microcomputer control motor to realize the automatic control of potentiometer.Keywords: AT89S52 devices, ICL7135, 12864 liquid crystal display, keyboard.第1章 方案设计与论证1.1比较与选择采用单片机电阻的设计目前有多种方案可以实现,例如、使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。在设计前本文对各种方案进行了比较:方案一、基于模拟电路的测量仪利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较法,电感可用时间常数发和同步分离法等,虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。方案二、可编程逻辑控制器(PLC) 此方案采用PLC对硬件进行控制,应用较为广泛。它能够非常方便地集成到工业控制系统中。其速度快,体积小,可靠性和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。 方案三、采用CPLD或FPGA实现此方案则采用广泛应用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用。但相对而言设计规模大,系统结构复杂。方案四、利用基于伏安法的电阻测量与单片机结合利用基于伏安法电阻测量方法,将电阻参数转化为电压模拟信号,此模拟量由高精度AD转换芯片转换为数字量。这样由单片机处理数字量,能够满足测量精度高、易于实现自动化测量等设计需要,而且单片机构成的应用系统有较大的可靠性、系统扩展、系统配置灵活,容易构成各种规模的系统。通过对上述方案的比较,利用基于恒流源的电阻测与单片机结合实现电阻测试仪更为简便可行,节约成本。所以,本文选定以单片机为核心来实现对电阻测量的设计。1.2方案描述本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用基于LM358构成的恒流源的电阻测量方法,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量。再通过单片机与显示模块的连接,显示测量结果。该测试仪由电阻测量电路模块、电位器阻值变化曲线测试模块、单片机,A/D转换电路,时钟电路,稳压电源,恒流源,显示,报警,键盘等模块组成。系统方框图如图1所示。图1 系统方框图第2章 理论分析与计算2.1基于电阻测量原理说明图2所示电路是该系统采用的电阻测量示意图,电路中A点的电位为1.25伏,电压表侧A,B两点的电位,根据电路理论可得如下表达式:由此可得被测电阻,图2 电阻测量示意图2.2 自动量程转换与筛选功能通过多次测量和对比,然后对数据进行分析,最后得到一个算法,公式如下:电阻显示值=247500/(测量值*0.038147)-990筛选功能通过设置一个初始电阻值及其阻值范围,将阻值范围内的电阻选择出来,并测量阻值。具体方法是用单片机STC89S52软件编程来自动控制继电器实现电阻的自动转换量程和筛选功能2.3电位器阻值变化曲线装置将4.7k 旋转式单圈电位器的旋转角度范围划分为16等分(包括电阻最小值和最大值对应的角度),测试每一个等分点所对应的阻值,然后利用单片机求出相邻两个点之间的函数关系式,再根据函数关系式描点划线。示意图如图3所示图3 电位器阻值变化曲测试示意图第3章 硬件电路设计3.1电路设计(1) 电阻测量电路图4 电阻测量原理图(2) 电源模块输入的外部电源首先经过桥式整流、滤波电路滤波,再经过7805芯片稳压成5V的直流电压,向主控制器供电。图4 电源模块电路(3) AD采样模块本模块利用AD7705实现AD转换功能把整流滤波后的模拟信号转换为单片机能够处理的数字信号,并传送给处理器。图5 AD转换模块(4) 主控制模块本模块采用低功耗的STC89C52微处理器控制AD装换,并对转换结果数据进行接收和处理;通过按键控制测量的类型和单位。图6 主控模块电路图键盘功能如下:s1;电阻筛选功能键;s2:-s3:+s4:自动测量电位器(5)显示模块通过LCD驱动程序对STC89S52处理后的结果数据进行稳定显示,在测试期间显示能够保持稳定状态,当离开测试能够迅速归零。图7 液晶模块连接电路图(6) 电机驱动电路电机驱动模块采用电机驱动芯片LN297和LN298来控制步进电机。输入的信号用光耦TLP512-5送入LN297,很好的隔离了输入与输出信号,抗干扰能力强。进而带动电位器旋转,实现电位器阻值变化曲线测试功能。图8 电机驱动电路图第4章 系统软件设计4.1软件组成(1) 控制测量程序,单片机控制测量程序不仅担负着量程的识别与转换,而且还负责数据的修正和传输;因此主控制器的工作状态直接决定着整个测量系统能否正常工作,所以控制测量程序对整个测量来说至关重要; (2) 按键处理程序,根据按键的状态做相应的功能设置; (3) 电阻计算程序,单片机根据A/ D 转换得到的电压值计算出电阻值; (4) 液晶模块显示程序。该自动电阻测试仪的系统流程图如图9所示:4.2系统软件流程图Y主流程图主控模块采集数据转换数据档位显示适配超限处理Y开 始调主控模块(仅一次)读A/D数据显示数据更新扫描按键键盘主控NNNN按启动?调主控?Y显示初显N数据更新?延迟时间?读A/D数据图9 系统流程图4.3 系统总程序#includeLCD12864.h #includereg51.h#includeADC.h#define uchar unsigned char#define uint unsigned int#define THO_int 0xff#define TL0_int 0x15#defineTMOD_int 0x01#define TCON_int 0x10uchar time_4ms;uchar cont_200ms;uchar stop_run_delay;uchar set_read_cont;uchar key;uchar key_buf;uchar key_cont;uchar set_step;uchar tast_delay;/*uint moto_cont;uint moto_time;uchar P1_buf;uchar beef_delay;uchar beef_cont;uint pdata buf50; uchar mode;uchar set_mode;uchar R_wc;/*uchar AD_data2;char dsp_buf10;unsigned long AD_BUF1,R1,RA,A0,set_R;uint AD_UOR;uchar ad_cont;/*sbit out1=P14;sbit out2=P15;sbit out3=P16;sbit out4=P17;sbit buz= P36;sbit led= P37;uchar code moto_tap8=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09,;/步进电机时序表格 uchar code moto_tap28=0x08,0x0a,0x02,0x06,0x04,0x05,0x01,0x09,;/步进电机时序表格 char code LCD_TAP210=0123456789;uchar code dsp_16= ;uchar bdata FLG;sbit FLG_200MS=FLG0;sbit run_flg= FLG1;sbit beef_en= FLG2;sbit colck= FLG3;sbit key_out= FLG4;sbit ad_out= FLG5;sbit call_en= FLG6;void Ad_read(void);void T0_int(void)TMOD=TMOD_int; /设置定时器工作模式 TCON=TCON_int; /启运定时器 TL0=TL0_int; /装入定时器初值TH0=THO_int; /装入定时器初值ET0=1; /允许定时器0中断 EA=1; /开总断 void timer0_(void)interrupt 1 using 1 / 定时器溢出周期为125us已加入16t TR0=0;/ TL0=TL0_int;TH0=THO_int;TR0=1;time_4ms+;if(beef_en)buz=!buz;elsebuz=1;if(time_4ms=16) /4ms平台 time_4ms=0;if(set_mode=0)led=0;else led=1;if(beef_delay)beef_delay-;if(stop_run_delay)stop_run_delay-;if(set_step=0)out1=0;out2=1;out3=1;out4=1;elseif(set_step=1)out1=1;out2=0;out3=1;out4=1;elseif(set_step=2)out1=1;out2=1;out3=0;out4=1;elseif(set_step=3)out1=1;out2=1;out3=1;out4=0;elseif(set_step=4)out1=1;out2=1;out3=1;out4=0;colck=1;cont_200ms+;if(cont_200ms=25)cont_200ms=0;FLG_200MS=1;if(moto_cont) moto_cont-;P1_buf=P1&0xf0;if(run_flg)P1=P1_buf|moto_tapmoto_cont;elseP1=P1_buf|moto_tap7-moto_cont;elseif(moto_time)moto_time-; moto_cont=8;P1=P1&0xf0;if(moto_time=0)stop_run_delay=20;elseif(moto_time=0)P1=P1&0xf0;void moto_control(uint cont,uchar fx)if(fx=1)run_flg=1;elserun_flg=0;moto_time=cont;void tast_control(void)unsigned char i,j=0;char dsp10;delay_ms(200);if(ad_out)&(tast_delay=0)ad_out=0;lcd_dsp(0,0, 电阻测试仪,12);lcd_dsp(1,0,检测值: ,8);lcd_dsp(2,0,筛选值: ,8);lcd_dsp(3,0,误 差: ,10);dsp_buf0=set_R/1000000;dsp_buf1=(set_R%1000000)/100000;dsp_buf2=(set_R%1000000)%100000)/10000;dsp_buf3=(set_R%1000000)%100000)%10000)/1000;dsp_buf4=(set_R%1000000)%100000)%10000)%1000)/100;dsp_buf5=(set_R%1000000)%100000)%10000)%1000)%100)/10;dsp_buf6=(set_R%1000000)%100000)%10000)%1000)%100)%10;for(i=0;i3;i+)if(dsp_bufi=0)dsp_bufi= ;j+;for(i=0;iset_R) if(RA-set_R)(set_R*R_wc)/100) if(call_en)beef_cont=1;elseif(RA(set_R*R_wc)/100) if(call_en)beef_cont=1;if(set_step=0)if(R11010)set_step=1;wcode(0x01); /清除显示elseif(set_step=1)if(R11010)set_step=2;wcode(0x01); /清除显示elseif(R11050)set_step=3;wcode(0x01); /清除显示elseif(R1100)set_step=1;wcode(0x01); /清除显示elseif(set_step=3)if(R199999)wcode(0x01); /清除显示set_step=4;elseif(set_step=4)if(R199999)set_step=3;wcode(0x01); /清除显示 if(set_step=0)dsp_buf0=LCD_TAP2(R1%10000)/1000;dsp_buf1=LCD_TAP2(R1%10000)%1000)/100;dsp_buf2=LCD_TAP2(R1%10000)%1000)%100)/10;dsp_buf3=.;dsp_buf4=LCD_TAP2(R1%10000)%1000)%100)%10;if(R1%10000)/1000)=0)dsp_buf0= ;lcd_dsp(1,4,dsp_buf,5);elseif(set_step=1)dsp_buf0=LCD_TAP2(R1%10000)/1000;dsp_buf1=LCD_TAP2(R1%10000)%1000)/100;dsp_buf2=LCD_TAP2(R1%10000)%1000)%100)/10;dsp_buf3=LCD_TAP2(R1%10000)%1000)%100)%10;if(R1%10000)/1000)=0)dsp_buf0= ;lcd_dsp(1,4,dsp_buf,4);elseif(set_step=2)dsp_buf0=LCD_TAP2(R1%10000)/1000;dsp_buf1=LCD_TAP2(R1%10000)%1000)/100;dsp_buf2=.;dsp_buf3=LCD_TAP2(R1%10000)%1000)%100)/10;dsp_buf4=LCD_TAP2(R1%10000)%1000)%100)%10;if(R1%10000)/1000)=0)for(i=0;i4;i+)dsp_bufi=dsp_bufi+1;lcd_dsp(1,4,dsp_buf,4);lcd_dsp(1,7,K,1);elseif(set_step=3) dsp_buf0=LCD_TAP2R1/10000;dsp_buf1=.;dsp_buf2=LCD_TAP2(R1%10000)/1000;dsp_buf3=LCD_TAP2(R1%10000)%1000)/100;dsp_buf4=LCD_TAP2(R1%10000)%1000)%100)/10;dsp_buf5=LCD_TAP2(R1%10000)%1000)%100)%10;lcd_dsp(1,4,dsp_buf,4);lcd_dsp(1,7,M,1);elseif(set_step=4) lcd_dsp(1,4,_M,6);void key_control(void)uchar i;if(key_out)key_out=0;if(key=0x0f)wcode(0x01); /清除显示mode=0;elseif(key=0x17)mode=1;beef_en=0;beef_cont=0;beef_delay=0;set_step=1;out1=1;out2=0;out3=1;out4=1;wcode(0x01); /清除显示lcd_dsp(0,0,dsp_,16);lcd_dsp(1,0,dsp_,16);lcd_dsp(2,0,dsp_,16);lcd_dsp(3,0,dsp_,16);lcd_dsp(1,0, 请稍等候! ,12);set_read_cont=50;for(i=0;i=30;i+) bufi=3*i;ad_out=0;for(i=0;i4;)if(stop_run_delay=0)&(moto_time=0)if(set_read_cont)set_read_cont-;if(set_read_cont=0)i=4;moto_time=8; ad_out=0;while(ad_out=0)Ad_read();delay_ms(100);A0=AD_UOR*0.038147;R1=(2480000)/A0)-992;buf49-set_read_cont=R1/10;lcd_dsp(0,0,dsp_,16);lcd_dsp(1,0,dsp_,16);lcd_dsp(2,0,dsp_,16);lcd_dsp(3,0,dsp_,16);show_line(buf);elseif(key=0x1b) beef_cont=1;if(set_mode=0)set_R+;elseif(set_mode=1)R_wc+;elseif(key=0x3b) key_cont=180;beef_cont=1;if(set_mode=0)set_R+;elseif(set_mode=1)R_wc+;elseif(key=0x3d)key_cont=180;if(set_mode=0)if(set_R)set_R-;elseif(set_mode=1)if(R_wc)R_wc-;beef_cont=1;elseif(key=0x1d)if(set_mode=0)if(set_R)set_R-;elseif(set_mode=1)if(R_wc)R_wc-;beef_cont=1;elseif(key=0x1e)set_mode=set_mode0x01;beef_cont=1;elseif(key=0x3e)call_en=!call_en;if(call_en)beef_cont=0x81;elsebeef_cont=1;void beef_control(void)if(beef_delay=0)if(beef_en)beef_en=0;beef_delay=20;elseif(beef_cont&0x0f)beef_cont-;beef_en=1;if(beef_cont&0x80)beef_delay=100;elsebeef_delay=20; void key_scan(void)if(P2&0x1f)!=0x1f)if(key_cont=10)&(key_cont200)key=key_buf;key_out=1;key_cont=0;void Ad_read(void)uint temp,i,cons;/ max0,min0,max1,min1,uint data05,data15;/,t0,t1;long temp0=0,temp1=0;cons=5;if(FLG_200MS)FLG_200MS=0;for(i=0;icons;i+)AD7705_Write_Reg(0x38); /启动AD7705AD转换delay_ms(2);AD_data0=AD7705_Read_Reg(); /保存高8位数据data0i=AD_data0; delay_ms(2);AD_data1=AD7705_Read_Reg(); /保存低8位数据 data1i=AD_data1;for(i=0;i=2)ad_cont=0;AD_UOR=AD_BUF1/2;AD_BUF1=0;ad_out=1;if(tast_delay)tast_delay-; void main(void) AD7705_Reset(1);setup();T0_int();run_flg=0;moto_cont=8;set_step=3;beef_cont=1;set_R=4000;R_wc=10;set_mode=0;call_en=0;while(1) if(colck) colck=0;if(mode=0)tast_control();delay_ms(2);Ad_read(); beef_control();key_scan();key_control(); 第4章 系统测试1、测试原理:在系统设计中,STC89C52单片机为核心的简易自动电阻测试仪,将电阻对应的电压实现各个参数的测量。,将模拟电压信号送入AD采样,通过AD把模拟信号转换为数字信号,再把数字信号送入STC89C52单片机处理。使用C语言编写了系统应用软件;包括主控制模块、显示模块、电阻测试模块和电机驱动模块。2、测试方法:在测试时将被测参数通过本系统测量出来的示值与参数的标称值进行对比,得到本系统的测量精度。3、测试仪器:示波器,万用表。4、测试结果:通过按键操作,实现测量类型和量程的选择。电阻测试数据如表1所示。表1电阻测试数据标称值()系统测量()相对误差(%)20.020.010.05200.0199.770.16000.05993.750.10450000.049926.630.147301000.0297839.501.05自动筛选功能展示图,如图10所示。图10 自动筛选功能展示图电位器阻值变化曲线,如图11所示图11 电位器阻值变化曲线5、测试分析:根据以上的测试结果表明,本系统完成了文章开始所提出设计内容和功能。本测量仪的测量范围较宽,并且达到了很好的精度,相对误差小于1 %。在实际测量中,由于测试环境,测试仪器,测试方法等都对测试值有一定的影响,都会导致测量结果或多或少地偏离被测量的真值。为了减小本设计中误差的大小,主要利用修正的方法来减小本测试仪的测量误差。所谓修正的方法就是在测量前或测量过程中,求取某类系统误差的修正值。在测量的数据处理过程中选取合适的修正值很关键,修正值的获得有三种途径。第一种途径是从相关资料中查取;第二种途径是通过理论推导求取;第三种途径是通过实验求取。本测试修正值选取主要通过实验求取,对影响测量读数的各种影响因素,如温度、湿度、电源电压等变化引起的系统误差。通过对相同被测参数的多次测量结果和不同被测参数的多次测量选取平均值,最后确定被测参数公式的常数K值,从而达到减小本设计系统误差的目的。第5章 总结与体会本系统采用单片机和伏安法电阻测量结合的方式实现了一个简易数字式电阻测量仪,到达了系统基本要求。本仪器利用单片机技术实现了电阻测量的智能化设计,而且系统性能稳定,测量精度较高,相对误差小于1 % ,操作简单,具有较强的实用性。当然本系统还存在着许多需要改进的地方,比如还可以继续提高测量的精度和加大测量的范围。因为是采用单片机实现的,利用其可以编程的特性,使测量的值结合一些数据处理方式使测量更加接近真实值。本系统也还有许多可以扩展的功能,可以增加语音功能,每次测量值稳定的时候就通过语音报告出来;也可以增加在线测量的功能,这样就更能够测量出元件工作时的正常值,而不仅仅是静态时的值。在此要感谢我的指导老师对我悉心的指导,感谢老师给我的帮助。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。参考文献1 刘修文.实用电子电路图集.北京.中国电力出版社,20052 黄智伟.全国大学生电子设计竞赛技能训练.北京.北京航空航天大学出版社,2007.23 周惠潮,孙晓峰.常用电子器件及典型应用.北京.电子工业出版社,2007.44 王昊,李昕.集成运放应用电路设计360例.北京.电子工业出版社,2007.15 楼然苗,李飞光.单片机课程设计指导编著.北京.北京航空航天大学出版社,2007.7附录A 总原理图附录B 总PCB图
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!