-1-大连海事大学信息科学技术学院2012年专业技能大赛基于51单片机的数字万用表论文队名:风中旗舰队长:石镇嘉11级电信2班队员:吴俊峰11级通信1班队员:耿钰11级通信3班2012年6月2日目录-2-一、摘要及关键词…………………………………………………1二、总设计流程图…………………………………………………2三、方案比较………………………………………………………3四、各单元设计原理4.1供电电压的选取……………………………………………34.2AD7705采集与转换(测量直流电压)……………………44.3单片机内部数据处理………………………………………54.41602液晶显示器……………………………………………5五、扩展部分5.1AD7705采集与转换(测量电流)…………………………75.2AD7705采集与转换(测量电阻)…………………………85.3短路检测…………………………………………………9六、系统调试流程…………………………………………………10七、总结7.1元件清单及其特性………………………………………107.2设计总结…………………………………………………117.3比赛心得…………………………………………………11八、PCB板及原理图………………………………………………12附录:详细程序…………………………………………………12参考文献…………………………………………………………20-3-一、摘要及关键词摘要:在比赛中我们通过A/D芯片(AD7705)对外部电压值进行采集,经转换后传输给单片机(89C52),使用液晶(1602)输出测量得到的电压值。该实验板可以测量不同增益下对应范围的电压值,并使部分量程下精确度理论上达到8增益。对于-20~20V,增益值为1。在拓展中,我们根据闭合电路欧姆定律,改进程序及实验板,使之能够测量电流、电阻,同时能对短路状态做出检测。关键词:A/D7705双极性多量程电压测量多量程电流电阻测量短路检测二、总设计流程图-4-三、方案比较外部待测模拟量外部供电电压AD780提供基准电压AD7705对外部模拟量的采集、处理89C52对传输的数据进行处理1602液晶对被测量数据的实时显示-5-本次比赛基础要求设计量程为0-5V,精确度至少为0.02V的电压表。根据精确度计算公式:精确度=量程/2^n(n为ADC的位数),结合扩展的25V,做出以下方案比较:方案一:使用STC12C51进行模数转换,但由于其内置ADC精度不够(8位),勉强能够满足基础要求,但无法达到扩展要求。故舍弃此方案。方案二:ADC选用AD7705,单片机采用89C52,使用AD780提供基准电压。16位AD处理25V时精度为0.0004。同时使用继电器完成自动量程转换,但由于电路的复杂程度和比赛时间,最终我们没有做此扩展。方案三:ADC选用AD7705,单片机采用89C52,使用AD780提供基准电压。充分利用89c52的丰富I/O口及AD7705的高精度、双极性特性将作品设计成拥有五档电压测量、五档电流测量、七档电流测量及短路检测的多用表。最终我们组决定使用方案三完成比赛。四、各单元设计原理1、供电电压选取由于实验要求使用A/D测量0~5V电压,使用DCPowerSupply提供外部供电电压,或以USB接口给系统上电,经过AD780芯片,对A/D输入适合工作的基准电压,为AD7705、单片机提供稳定的2.5V工作电压。-6-2、AD7705对模拟量的采集及转换(测量电压)(1)AD7705为16位双极性模数转换器,它包括一个Σ-Δ(或电荷平衡)ADC、片内带静态RAM的校准微控制器、时钟振荡器、数字滤波器和一个双向串行通信端口。该器件的电源电流仅为320μA,使得它理想地用于电池供电的仪器中。器件具有两种可选电源电压范围分别是2.7~3.3V或4.75~5.25V。它具有高精度校准、测量的能力,适应电压表的精度要求。(2)设计实验板共有5个量程,分别为:-200mV~200mV对应增益值为8-2~2V对应增益值为1-20~20V对应增益值为1-200~200V对应增益值为1-500~500V对应增益值为1(3)实验通过开关使不同阻值分压电阻接入电路来改变电压表-7-量程。开关抬起有效。如图连接A/D与单片机,对A/D进行初始化,设置为双极性、无缓冲、增益为1、滤波器不工作、自校准、更新速率为20Hz的状态。通过编译的读、写程序,完成A/D对外部模拟量的采集和处理,并将数据传送给单片机。3、单片机数据处理(直流电压)(1)本作品设计有五个电压档位。在程序中我们通过设置switch语句实现对不同档位的选取和控制,AD转换后的数据被传输至单片机中对应档位的数据处理函数,单片机根据相应档位的参数设置将数据处理还原为真实电压值,并转换为可被液晶读取的2进制形式。(2)测量直流电压的公式为:电压真值=数据V/增益值*对应的档位参数4、1602液晶显示器(1)对1602进行初始化,设置相关功能。1602液晶初始化程序:-8-显示器模块原理图:(2)关于显示正负号及小数点,本次显示000.00000精度(3)关于数据处理之后的输出,将经过单片机处理得到的数据V发送至1602液晶,通过display函数(部分程序如下),实现液晶对数据的显示。同时设计保护数据,当测得数据大于档位上限时,系统输出档位上限值。voiddisplay()(部分程序)-9-{chardisp[9]=12345678;disp[0]=(v/10000000)+0x30;v%=10000000;disp[1]=(v/1000000)+0x30;v%=1000000;disp[2]=(v/100000)+0x30;v%=100000;disp[3]=(v/10000)+0x30;v%=10000;disp[4]=(v/1000)+0x30;v%=1000;disp[5]=(v/100)+0x30;v%=100;disp[6]=(v/10)+0x30;v%=10;disp[7]=(v/1)+0x30;……五、扩展部分1、电流测量利用闭合电路欧姆定律,在测电压的基础上可以实现对电流的测量。实验中共有五个档位,分别为:-2~2mA对应增益值为8-20~20mA对应增益值为8-200~200mA对应增益值为8-2~2A对应增益值为8-15~15A对应增益值为1对于电流数据的处理,将AD采集到的数据v输入单片机后,根据计算公式对v进行处理,以第一档程序举例:-10-其中对数据处理的公式为:电流真值=数据/增益值*对应的档位参数2、电阻测量(1)本次比赛的电阻测量在说明中并没有,我们组为了充分利用AD7705资源、锻炼组员的能力,额外做了电阻测量和短路检测的拓展。(2)电阻测量的原理为:根据闭合电路欧姆定律R=U/I,由于前两步已完成对电压与电流的测量,所以此处只需要在数据处理时,使用某档位电压/对应档位流过待测电阻的电流值即可。(3)电阻测量的档位及对应增益值0~20Ω对应增益值为20~200Ω对应增益值为20~2kΩ对应增益值为20~20kΩ对应增益值为20~200kΩ对应增益值为20~2MΩ对应增益值为20~100MΩ对应增益值为1(4)电阻测量的数据处理(20Ω档为例)-11-电阻测量的数据处理公式为:U/Rx=2.5/(Rx+Ro)Ro:相应电阻档的已知串联电阻3、短路检测在P2.5连接蜂鸣器系统,当表笔两端电阻小于15Ω时,P2.5赋低电平,蜂鸣器工作。六、系统调试流程1、给开发系统上电,调节液晶对比度,检测电路各处有无短路、断路、或元件工作状态不正常的情况。2、依次按下所有开关,检查各档位跳转情况。3、进入电压档,依次从大量程检测至小量程,计算理论与实际的偏差,通过对程序的控制和对硬件的修改。使误差保持在0.1%以下。4、按照步骤3的方法测量电流、电阻,记录数据,检测精确度。5、进入20Ω档,接通短路检测端口,将正负表笔短接,检测蜂鸣器发声是否正常。6、多次测量各物理量,检测实验板稳定性。最后将实验板断电,做好实验记录。七、总结1、元件清单及其特性-12-表7-1:元件清单元件名称规格型号单位数量ADCAD7705片1瓷片电容33pF只1瓷片电容0.1uF只1电解电容1uF只1电解电容10uF只1电阻5M只2电阻1M只2单片机STC89C52片1基准电压芯片AD780片1无源晶振2.4576M只1液晶1602块1自锁开关个20表7-2:STC89C52主要功能特性兼容MCS51指令系统8K可反复擦写FlashROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位-13-2、设计总结本次比赛,我们组使用AD7705模数转换器,完成了对直流电压、电阻,电流,短路检测等量的测量,分别有5个、7个、5个档位。1602液晶上行显示档位,下行显示实时数据。实验功能基本实现,精确度达到要求范围。3、比赛心得本次比赛是我们进入大学以来参加的第一次电子设计大赛,从一开始对此的一无所知,对各种知识的渴求,一点点学习我们需要的知识,在网上搜寻资料寻找最合适的AD芯片,对AD的学习,编写程序,焊制电路板,调试系统,改进和更新……每一步都是不容易的。在这个过程中,我们不仅收获了知识,还有与学长的交流,与队员之间的默契,调试成功的喜悦。回想这次比赛,需要改进的有几点:(1)在调试过程中对元器件的损耗,由于错误的使用外部电压导致元件烧坏的事情应注意避免;(2)在写程序的过程中,对已有材料的借鉴,开始并没有很好的和我们自己的实验结合上,耽误了一些时间;(3)硬件处理方面,由于电路的复杂,开始用手焊的孔板测试,在电路连接上出现较多失误,导致调试失败。以后要认真连好每一条线、每一元件。-14-八、PCB板及原理图-15-附录:部分程序/*****************************************************文件名称:ad7705.c功能:数字万用表说明:电压五档、电流五档、电阻七档设计者:石镇嘉、吴俊峰、耿钰***************************************************/#includereg52.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharsbitADC_CLK=P1^7;sbitADC_DIN=P3^0;sbitADC_DOUT=P3^0;sbitADC_DRDY=P3^1;sbitlcden=P3^2;sbitlcdrs=P3^3;sbitU=P2^7;sbitI=P3^5;sbitR=P1^5;/*电压档*/sbita=P1^4;……/*电流档*/sbitf=P2^0;……/*电阻档*/sbitk=P1^0;……/*短路口*/sbitDUANLU=P2^5;/********************函数声明***********************************/Voiddelayms(uintxms);uintchoose();voidreadad_16deal_choose();voidInitADC(void);50……voiddisplay();voiddisplay0();-16-……charcodetable0[]=welcome!;//欢迎界面charcodetable11[]=DC-200mV~200mV;//档符显示……charcodetable35[]=0~200k;100charcodetable36[]=0~2M;charcodetable37[]=0~100M;/******************************************************/voidmain(){DUANLU=1;InitLCD();whi