基于单片机的数字万用表设计.doc
《基于单片机的数字万用表设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字万用表设计.doc(19页珍藏版)》请在冰豆网上搜索。
![基于单片机的数字万用表设计.doc](https://file1.bdocx.com/fileroot1/2022-11/2/1235bcb3-04c3-4f75-b78e-2c8720cf5ebb/1235bcb3-04c3-4f75-b78e-2c8720cf5ebb1.gif)
基于单片机的数字万用表设计
摘要
本次设计用单片机芯片AT89C52设计一个数字万用表,能够测量直流电压值、直流电流、直流电阻,四位数码显示。
此系统由分流电阻、分压电阻、基准电阻、电容测试芯片电路、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体精度得以保障,本电路使用了AD0809数据转换芯片,单片机系统设计采用AT89C52单片机作为主控芯片,驱动液晶显示管显示。
程序每执行周期耗时缩到最短,这样保证了系统的实时性。
关键词数字万用表AT89C52单片机AD转换与控制
Abstract
ThisdesignisdesignadigitaluniversalmeterwithchipAT89C52ofone-chipcomputer,canmeasureandhandin,directcurrentpressingvalue,directcurrentflow,thedirectcurrentishindered,fournumbersshow.Thissystemisshuntedresistance,resistanceofpartialpressure,basicresistance,minimumsystemof51one-chipcomputers,shownthatsome,warningpart,ADchangeandcontrolmakinguppartly.Inordertomakethesystemmoresteady,makethewholeprecisionofthesystembeensured,thiscircuithasusedAD0809datatochangethechip,theone-chipcomputersystemisdesignedtoadoptAT89C52one-chipcomputerasthetopmanagementchip,urge4numberstobeinchargeofshowing.Theeveryexecutioncycleconsumingtimeofprocedurecontractstogetshortest,inthiswaythereal-timecharacterofthesecuritysystem.
Keyword:
DigitaluniversalmeterAT89S52one-chipcomputerADchangesandcontrols
一、设计背景
数字万用表亦称数字多用表,简称DMM(DigtialMultimeter)。
它是采用数字化测量技术,把连续的模拟量转换成不连续的、离散的数字形式并加以显示的仪表。
传统的指针式万用表功能单精度低,不能满足数字化时代的需求,采用单片的数字万用表,精度高、抗干扰能力强,可扩展尾强、集成方便,目前,由各种单片机芯片构成的数字电万用表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。
二、数字万用表的设计依据
根据数字万用表的原理,结合以下的设计要求:
“设计一个数字万用表,能够测量直流电压值,直流电流、直流电阻,四位数码显示。
实现多级量程的直流电压测量,其量程范围是5V、,20V,.实现多级量程的直流电流测量,其量程范围是2mA ,20mA,200mA.实现多级量程的电阻测量,其量程范围是200、1k,10k。
”由此设想出以下的解决方法,即数字万用表的系统由分流电阻、分压电阻、基准电阻、电容测试芯片电路、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体精度得以保障。
三、设计任务
3.1设计目的
采用8位8路A/D转换器ADC0809和AT89S52单片机,设计一台数字多用表,能进行电压、电流和电阻的测量,测量结果通过液晶显示管显示,通过按键进行测量功能转换。
3.2设计指标及要求
电压测量范围0~5,0~20V,电流测量范围1~2,1~20,1~200mA,电阻测量范围0~200,0~1K,0~10KΩ。
四、设计思路与总体框图
4.1设计思路
首先利用P0口数据地址复用,将地址通过P0口输入到单片机中。
再利用模数转换将模拟信号转换成数字信号,再次利用P0口将其输入到单片机。
最后,充分利用单片机强大的运算转化功能将其转成适当的二进制信号控制数显以确保正确的显示被测量的读数。
4.2总体框图
89S52
振荡电路
复位电路
ADC0809
液晶显示管显示
待测电阻电路阻
待测电流电路
待测电压电路
图1—1
五、MCU主控制器的选择与论证
方案一此方案采用凌阳公司的16位单片机SPCE061A作为主控制器,它具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强、处理速度高等特点,尤其适用于语音处理和识别等领域。
但是其软件设计相对复杂,故我们放弃此方案。
方案二此方案采用STC公司的8位单片机STC89C52作为主控制器,具有与MCS-51指令集完全兼容的CIP-51内核,但其同样时钟下运行速度和抗干扰能力军比普通80518位单片机要高,而且开发环境是我们很熟悉的KeilC51,编译效率高,非常适合C语言开发人员,因此我们采用该方案。
六、A/D转换器的选择与论证
方案一此方案选用12位串行A/D转换集成AD574,只需要2根线就能够很好的与MCU相通信组成测量系统,但其输入电压不能为负值,故使用范围受到了限制,不适合用作负压测量电路中而且价格较高。
因此,我们放弃此方案。
方案二此方案选用双积A/D转换器AD0809,它的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。
它的特点是在每次A/D转换前,内部电路都自动进行调零操作,可保证零点在常温下的长期稳定。
图2—1AD转换电路
七、测量电路的选择与论证
7.1电阻测量
图1所示为数字多用表的电阻测量输入电路。
运算放大器的反馈电阻R作为待测量电阻,通过R14,R2,R15及多路开关接到电源-5V。
假定运算放大器理想,那么放大器的输出电压RV=,将RV送给ADC0809,转换后得到数字量为DV=。
单片机读取A/D转换数据,再经过逆向运算可得R=,注意此时得到的R为二进制数,需要转化为十进制数后才能送给液晶显示管显示。
程序中采用4字节专利号除法,连续进行4次除以10的除法。
为使电路所求电阻更加精确,故采用了一个单刀三掷开关,当所测电阻处于千欧级别时,闭合开关一,由所得电压得出待测电阻。
当待测电阻处于200至一千欧时,如果再次以10千欧作为比例电阻,则所测待测电阻准确度大大下降,顾此时应闭合开关二,以一千欧电阻作为比例电阻,可大大扩大所测电阻精度。
同理当所测电阻为0至200欧时,闭合开关三,此时所测电阻才能更加精确。
图1电阻测量原理图
7.2电压测量输入电路
图3所示为数字多用表的电压测量输入电路。
待测电压经过低通滤波器滤除高频干扰,再送给ADC0809,电压测量范围为0~5,0~20V,ADC0809的分辨率为8位.当待测电压为为0~5V,关闭开关一,经过滤波电路后此时输出的电压VV=Vx,将VV送给ADC0809,转换后得到数字量为DV=。
单片机读取A/D转换数据,再经过逆向运算可得Vx=注意此时得到的Vx为二进制数,需要转化为十进制数后才能送给液晶管显示。
当电压为5~20V时,因为AD0809的工作电压为5V,所以需降压,闭合开关二,输出的电压为待测电压的五分之一。
图二直流电压的测量
7.3直流电流的测量
测量电流的原理是:
根据欧姆定律,用合适的取样电阻把待测电流转换为相应的电压,再进行测量。
如下图为直流电流的测量原理图,当输入一个电流时,先判断待测电流大概在哪个范围内,然后根据下图中的开关,来控制待测电流的精确度和准确度。
如输入一个待测电流时,集成运放正相端电压即为V+=RIx,同时此电流也经过一个交流滤波电路,滤除交流成分,由于V+最大值为0.2V,比较小,若直接输出,则误差较大,因此进行同相放大4倍,使输出的电压大大提高,从而使输出的电流更加准确。
从运放端输出的电压IV=V+4,将IV送给ADC0809,转换后得到数字量为DV=。
单片机读取A/D转换数据,再经过逆向运算可得Ix=注意此时得到的Vx为二进制数,需要转化为十进制数后才能送给液晶显示管显示。
根据不同的开关可得到在不同范围内待测电流值。
7.4蜂鸣器的设置
如下图所示,为报警部分,当万用表的外接部分短接时,则电路出现高电平,此时蜂鸣器发出声音。
图四蜂鸣器的设计
八、结论和体会
8.1设计结果综述:
(1)、数字万用表完成的功能主要是对电压、电流、电阻的测量,它主要由分流电阻、分压电阻、基准电阻、51单片机最小系统、显示部分、报警部分、AD转换和控制部分组成。
(2)、数字万用表属于一种测量工具,其本身的好坏直接影响到测量结果。
(3)、单片机部分跟AD转换部分是整个设计的核心,ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值(D/256*VREF);AT89S52单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,使系统稳定运行。
(4)、在本次软件设计过程中,采用的是c语言。
(5)、对于硬件的制作,由于布线麻烦等原因,做起来复杂,对Proteus仿真软件使用不熟练,使画仿真图时遇到不少问题。
51单片机基础知识不扎实,电路分析遇到比较多的问题。
捍接也很难,以致未能完全实现设计报告要求。
8.2体会
这次课程设计暴露出了很多问题,但在做课程设计的过程中也学到了很多东西。
比如查阅资料,动手焊接万用板等等,这些都是平时很少做的。
此次课程设计让我对基于单片机的c语言有了新的认识,另外对于电子设计也有基本的了解,这会让我在以后更能有效地去学习这方面的知识,对单片机学习有很大的助益,也在激励我们多动手,从实践中去获取新知识。
附录一
电路图仿真图(图2—1):
图2—1
程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]="0123456789.vAmA";
uinti,j;
sbitST=P2^0;
sbitEOC=P2^1;
sbitOE=P2^2;
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitx1=P2^4;
sbitx2=P2^5;
sbitx3=P2^6;
sbitE=P1^5;
sbitRS=P1^4;
sbitRW=P1^3;
voiddelay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
voi