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

上传人:仙人指路1688 文档编号:4149703 上传时间:2023-04-07 格式:DOC 页数:46 大小:700KB
返回 下载 相关 举报
毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc_第1页
第1页 / 共46页
毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc_第2页
第2页 / 共46页
毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc_第3页
第3页 / 共46页
毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc_第4页
第4页 / 共46页
毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于STC89C52单片机的简易自动电阻测试仪.doc(46页珍藏版)》请在三一办公上搜索。

1、毕业设计(论文) 简易自动电阻测试仪 专业(系) 班 级 学生姓名 指导老师 完成日期 目 录前 言在工程实践中,常需要测定某些高导电材料的电阻率。我们电阻测量的思路是:由精密恒流源电流通过被测电阻,通过放大器将信号扩展到信号能被提取出来,接着进行信号处理,然后进行信号采集和A/D转换,最后显示测量结果。在测量电路中,电压的分辨率影响测量精度,即受A/D转换的位数影响。而整个电路的误差决定电路所采用的形式。系统的误差主要由量化误差及模拟误差组成,当然也要考虑外部噪声和干扰对测量的影响。因此,恒流源和放大器的性能非常关键。在电路的测试过程中,常常会碰到由于忽略某些电阻实际值与理论值之间的误差,从

2、而影响检测结果。我们选用了单片机来设计该测量仪。该测量仪可直接从液晶显示屏上读出所测得的电阻值,同时可以对需要指定测试的数据进行设定,能够帮助我们更快更好的选出我们所需要的电阻。摘 要本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用伏安法测电阻的测量方法,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量功能、自动换挡和筛选功能、电位器阻值变化曲线测试的功能。再通过单片机与显示模块的连接,显示测量结果。关键词:电阻自动测试仪、STC89C52、电阻测量功能、自动换挡、曲线测试、AD7705AstractThis

3、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 circui

4、t 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

5、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 microco

6、mputer control motor to realize the automatic control of potentiometer.Keywords: AT89S52 devices, ICL7135, 12864 liquid crystal display, keyboard.第1章 方案设计与论证1.1比较与选择采用单片机电阻的设计目前有多种方案可以实现,例如、使用可编程逻辑控制器(PLC)、振荡电路与单片机结合或CPLD与EDA相结合等等来实现。在设计前本文对各种方案进行了比较:方案一、基于模拟电路的测量仪利用模拟电路,电阻可用比例运算器法和积分运算器法,电容可用恒流法和比较

7、法,电感可用时间常数发和同步分离法等,虽然避免了编程的麻烦,但电路复杂,所用器件较多,灵活性差,测量精度低,现在已较少使用。方案二、可编程逻辑控制器(PLC) 此方案采用PLC对硬件进行控制,应用较为广泛。它能够非常方便地集成到工业控制系统中。其速度快,体积小,可靠性和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。 方案三、采用CPLD或FPGA实现此方案则采用广泛应用的VHDL硬件电路描述语言,实现电阻,电容,电感测试仪的设计,利用MAXPLUSII集成开发环境进行综合、仿真,并下载到CPLD或FPGA可编程逻辑器件中,完成系统的控制作用。但相对

8、而言设计规模大,系统结构复杂。方案四、利用基于伏安法的电阻测量与单片机结合利用基于伏安法电阻测量方法,将电阻参数转化为电压模拟信号,此模拟量由高精度AD转换芯片转换为数字量。这样由单片机处理数字量,能够满足测量精度高、易于实现自动化测量等设计需要,而且单片机构成的应用系统有较大的可靠性、系统扩展、系统配置灵活,容易构成各种规模的系统。通过对上述方案的比较,利用基于恒流源的电阻测与单片机结合实现电阻测试仪更为简便可行,节约成本。所以,本文选定以单片机为核心来实现对电阻测量的设计。1.2方案描述本简易电阻自动测试仪采用STC89C52单片机为核心控制器,利用基于LM358构成的恒流源的电阻测量方法

9、,将测量的电压值通过模数转换模块AD7705转换成数字信号,将数字信号输入STC89C52单片机进行处理,完成电阻测量。再通过单片机与显示模块的连接,显示测量结果。该测试仪由电阻测量电路模块、电位器阻值变化曲线测试模块、单片机,A/D转换电路,时钟电路,稳压电源,恒流源,显示,报警,键盘等模块组成。系统方框图如图1所示。图1 系统方框图第2章 理论分析与计算2.1基于电阻测量原理说明图2所示电路是该系统采用的电阻测量示意图,电路中A点的电位为1.25伏,电压表侧A,B两点的电位,根据电路理论可得如下表达式:由此可得被测电阻,图2 电阻测量示意图2.2 自动量程转换与筛选功能通过多次测量和对比,

10、然后对数据进行分析,最后得到一个算法,公式如下:电阻显示值=247500/(测量值*0.038147)-990筛选功能通过设置一个初始电阻值及其阻值范围,将阻值范围内的电阻选择出来,并测量阻值。具体方法是用单片机STC89S52软件编程来自动控制继电器实现电阻的自动转换量程和筛选功能2.3电位器阻值变化曲线装置将4.7k 旋转式单圈电位器的旋转角度范围划分为16等分(包括电阻最小值和最大值对应的角度),测试每一个等分点所对应的阻值,然后利用单片机求出相邻两个点之间的函数关系式,再根据函数关系式描点划线。示意图如图3所示图3 电位器阻值变化曲测试示意图第3章 硬件电路设计3.1电路设计(1) 电

11、阻测量电路图4 电阻测量原理图(2) 电源模块输入的外部电源首先经过桥式整流、滤波电路滤波,再经过7805芯片稳压成5V的直流电压,向主控制器供电。图4 电源模块电路(3) AD采样模块本模块利用AD7705实现AD转换功能把整流滤波后的模拟信号转换为单片机能够处理的数字信号,并传送给处理器。图5 AD转换模块(4) 主控制模块本模块采用低功耗的STC89C52微处理器控制AD装换,并对转换结果数据进行接收和处理;通过按键控制测量的类型和单位。图6 主控模块电路图键盘功能如下:s1;电阻筛选功能键;s2:-s3:+s4:自动测量电位器(5)显示模块通过LCD驱动程序对STC89S52处理后的结

12、果数据进行稳定显示,在测试期间显示能够保持稳定状态,当离开测试能够迅速归零。图7 液晶模块连接电路图(6) 电机驱动电路电机驱动模块采用电机驱动芯片LN297和LN298来控制步进电机。输入的信号用光耦TLP512-5送入LN297,很好的隔离了输入与输出信号,抗干扰能力强。进而带动电位器旋转,实现电位器阻值变化曲线测试功能。图8 电机驱动电路图第4章 系统软件设计4.1软件组成(1) 控制测量程序,单片机控制测量程序不仅担负着量程的识别与转换,而且还负责数据的修正和传输;因此主控制器的工作状态直接决定着整个测量系统能否正常工作,所以控制测量程序对整个测量来说至关重要; (2) 按键处理程序,

13、根据按键的状态做相应的功能设置; (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 unsi

14、gned 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

15、 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,0x

16、01,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_r

17、ead(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) /

18、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_s

19、tep=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

20、(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

21、_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=

22、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

23、); /清除显示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_bu

24、f3=.;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_

25、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(

26、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);voi

27、d 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, 请稍等

28、候! ,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,

29、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)

30、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_del

31、ay=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)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号