测控技术与仪器-明德学院-智能电压表课程设计.doc

上传人:rrsccc 文档编号:9802015 上传时间:2021-03-27 格式:DOC 页数:23 大小:594.50KB
返回 下载 相关 举报
测控技术与仪器-明德学院-智能电压表课程设计.doc_第1页
第1页 / 共23页
测控技术与仪器-明德学院-智能电压表课程设计.doc_第2页
第2页 / 共23页
测控技术与仪器-明德学院-智能电压表课程设计.doc_第3页
第3页 / 共23页
测控技术与仪器-明德学院-智能电压表课程设计.doc_第4页
第4页 / 共23页
测控技术与仪器-明德学院-智能电压表课程设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《测控技术与仪器-明德学院-智能电压表课程设计.doc》由会员分享,可在线阅读,更多相关《测控技术与仪器-明德学院-智能电压表课程设计.doc(23页珍藏版)》请在三一文库上搜索。

1、智能电压表课程设计摘要科学技术的发展为测量仪器、仪表提供了新原理和新技术以及新型的元、器体,同时又对测量仪表提出了更新、更高的要求。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。关键词:单片机;数字电压表;Proteus仿真目 录摘要I第1章 引 言11.1课题的研究背景11.2课题的研究意义1第2章 相关概述12.1 AT89

2、C51简介12.2 单片机最小系统22.3模数转换器3第3章 硬件设计53.1整体电路图53.2信号输入模块53.3信号衰减模块63.4信号放大模块73.5 信号采样模块83.6信号处理模块93.7数字显示模块10第4章 软件设计114.1主程序设计114.2A/D转换子程序12第5章 系统测试135.1显示结果135.2误差分析14第6章 总结15参考文献16致 谢17附录17II第1章 引 言1.1课题的研究背景数字电压表作为电压表的一个分支,在近五十年间得到巨大发展,构成数字电压表的核心器件已从早期的中小规模电路跨入到大规模ASIC(专用集成电路)阶段。数字电压表自1952年问世以来,已

3、有50年多年的发展史,大致经历了五代产品。第一代产品是20世纪50年代问世的电子管数字电压表,第二代产品属于20世纪60年代出现的晶体管数字电压表,第三带产品为20世纪70年代研制的中、小规模集成电路的数字电压表。今年来,国内外相继推出有大规模集成电路(LSI)或超大规模集成电路(VLSI)构成的数字电压表、智能数字电压表,分别属于第四代、第五代产品。它们不仅开创了电子测量的先河,更以高准确度、高可靠性、高分辨力、高性价比等优良特性而受到人民的青睐。1.2课题的研究意义十几年来智能仪器虽然有了很大的发展,但总的看来,人们还是较习惯于从硬件的角度做工作,这是由于设计者的(硬件)技术背景,LSI器

4、件不断迅速更新的冲击以及在现阶段仪器硬件更新的数量还很大等因素所造成的。这种趋势虽然仍会继续下去,但从智能仪表的内涵,从软件的角度上看,软件的作用还远未发挥出来,这里有许多的领域等待着去开发。智能仪表最终必然会与人工智能联系起来开创出全新的仪器。从这个观点看,目前的智能仪器尚处于“幼年时期”。所以,就仪表的发展看来电压表会朝着具有微控制处理单元的智能仪表方向发展。第2章 相关概述2.1 AT89C51简介AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51

5、引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。图2.1 AT89C51单片机AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 Bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级,2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计

6、数器,串行口,外中断系统可继续工作。掉电模式下,冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。2.2 单片机最小系统单片机的最小系统就是能使单片机在最低限度下运行的系统。最小系统包括时钟电路、复位电路、电源电路。STC89C52单片机的工作电压范围为4V-5.5V,所以通常给单片机外界5V的直流电源。连接方式为单片机的40脚VCC接正+5V,而20脚GND接电源地端。 复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工

7、作状态。当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序从头开始执行。一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RST端持续给出2个机器周期的高电平时就可以完成复位操作。本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。 时钟电路好比单片机的心脏,它控制着单片机的工作节奏。时钟电路就是振荡电路,是向单片机再提供一个正弦波作为基准,决定单片机的执行速度,XTAL1和XTAL2分别作为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,

8、而每个状态周期为2个振荡周期,所以一个周期共有12个振荡周期,如果外接石英晶体振荡器,它的振荡频率为12MHZ,一个振荡周期为1/12us。由复位电路、时钟电路和单片机组成的单片机最小系统如图2.2所示。图2.2 单片机最小系统2.3模数转换器ADC0809芯片是CMOS型单片双列直插式模数转换器件,具有28个引脚。其中,IN0-IN7模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围05V,若信号过小还需要进行放大。另外,在A/D转换过程中,模拟量输入的值不应变化太快。因此,对变化速度快的模拟量,在输入前应增加采样保持电路。ADDA、ADDB、ADDC为地址输入线,

9、用于选通IN0-IN7上的一路模拟量进入转换器进行转换。ALE为地址锁存允许输入线,高电平有效。当ALE为高电平时,地址锁存与译码器将A,B和C三条地址线的地址信号进行锁存,经译码后被选中模拟量的通道。ATART为转换启动信号。当START为上跳沿时,所有内部寄存器清0;START为下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束,否者,表明正在进行模数转换,OE为输出允许信号。其用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据呈高电阻;OE=1,输出转换得到的数据。初始化时START和OE要全为

10、低电平。CLK为时钟输入信号线。因ADC0809内部没有时钟电路,所需时钟信号必须由外界提供。其引脚图会在与单片机的连接中出现,就不在这里描述了。图2.3所示为ADC0809与单片机的接口电路。图2.3 ADC0809与单片机的连接方式由图可以看到,我们选用的通道是IN0,ADC0809的启动信号START由片选线P2.7与写信号的“或非”产生。这要求一条向ADC0809写操作指令来启动信号。ALE与START相连,即按打入的通道地址接通模拟量并启动转换。输出允许信号OE由读信号与片选信号P2.7“或非”产生,即一条ADC0809的读操作使数据输出。第3章 硬件设计3.1整体电路图如图3.1所

11、示,为系统的整体设计电路图。外部1m V100V的直流电压从J1输入,通过继电器从三种分压比1、1/10、1/100中选择得到一个较小的适合MAX4236的输入电压,经过运算放大器MAX4236的精确放大后送入模数转换器ADS7822进行信号采样。采样后的信号送入单片机AT89S51,单片机进行数据处理,转换成相应的电压值后显示在LCD1602上。整个电路是以单片机控制为核心,通过信号衰减,放大,采样处理,显示出来。图3.1 整体电路图3.2信号输入模块如图4-2所示,J1为输入信号的正极,J2为输入信号的负极。由R3,R5,R6三个电阻串联作为输入信号的负载电阻,输入阻抗为100K。输入电压

12、的范围:DC 1mV100V。采用三个电阻的目的是为了在不改变输入阻抗的情况下配合后级的量程选择。这三个电阻采用高精度金属膜电阻,既可以做到高精度的分压比,又能有效的抑制高频噪声。图3.2 信号输入模块3.3信号衰减模块前级输入的信号可通过K1,K2,K3三个继电器来选择。考虑到传统的电磁继电器体积大、功耗大、动作时对电路冲击大等缺陷,这里采用较为先进的光继电器AQY214S。AQY214S是日本松下电器公司生产的Photo MOS继电器,它具有耐压值高,动作时间短,超低功耗、体积小、超低噪声等特点,它的控制电压可低至1.5V,控制电流可低至5mA。它的负载电压可以达到400V,引脚耐压可达1

13、500V,甚至在1MHz的信号频率时,它的引脚电容都只有1.5pF,因此它非常适合于高压、高速、低功耗的应用场合,比如工业测量、高速信号处理等。图3.3 信号衰减模块考虑到直接用单片机I/O口驱动继电器时可能存在的不稳定因素,这里采用MOS管AO3416做I/O口的驱动管以确保继电器的开启与闭合,AO3416是N沟道的MOS管,其G极开启电压可低至2V,非常适合于低压控制场合。若K3闭合,K2,K1断开。此时外部输入信号被衰减100倍然后输出给后级处理。若K2闭合,K3,K1断开。此时外部输入信号被衰减10倍然后输出给后级处理。若K1闭合,K3,K2断开。此时外部输入信号不衰减,直接输出给后级

14、处理。3.4信号放大模块信号放大模块采用MAX4236做放大芯片。MAX4236为高精度运放,在不采用斩波技术的情况下取得了优异的低失调电压和低失调电压温度系数。MAX4236的典型大信号开环电压增益为120dB。该器件的输入偏置电流极小,仅为1pA。MAX4236的增益带宽积为1.7MHz,单位增益稳定,有关断功能,使静态电流降至小于0.1A,输出呈高阻态。MAX4236的共模输入范围可低于负电源,输出可达到满摆幅。这些特性使其非常适合于采用+3V或+5V单电源供电的应用。MAX4236对于较高精度的应用,A级MAX和SO封装的器件经过测试可以保证在+25C下失调不超过20V,漂移小于2V/

15、C。图3.4 信号放大模块MAX4236的引脚特性是:1脚和5脚置空,2脚反相输入端,3脚同相输入端, 4脚接地端,7脚电源端,8脚休眠端。8脚可以让器件处于休眠模式,置低时,器件处于低功耗。在本系统中,放大器MAX4236连成同相放大的方式,以提高输入阻抗,放大倍数为2倍。C1,C2为电源退耦电容,其作用是:有效的抑制来自电源线上的干扰,抑制电源线上给放大芯片带来的噪声。放大后的信号供后级AD采样。3.5 信号采样模块信号采样模块采用12位AD转换芯片ADS7822做模数转换。考虑到分辨率的要求,选取电源基准芯片TL431做参考电压。ADS7822 是一种高性能12 位A/ D 转换器,它的

16、采样速率可达75 kHz ,单电源供电,可以在2. 05. 0 V 的电源电压下;微功耗,采样速率75kHz 时为0. 54 mW,7. 5kHz时,为0. 06 mW,掉电模式时,最大电流为3A 。TL431是高精度输出可调电压基准芯片,它具有以下特点:可编程输出电压,可设定036V之间任意值;参考误差最大0.4%(25环境下);低动态输出阻抗,典型值为0.22;1m A100m A的灌电流能力;在整个额定工作温度范围内能进行温度补偿;低输出噪声。图3.5 信号采用模块本模块中,先用R17和C6构成一个低通滤波器来滤除前级传输过来的高频干扰信号,然后再进行采样。由于参考电压是2.5V,而AD

17、为12位,因此采样模块可分辨的最低电压是:2500/4095=0.61mV。而前级将信号放大了2倍,因此整个系统可分辨的最低电压是0.305mV。3.6信号处理模块信号处理模块采用AT89S51做数据处理。P1.2作为采样频率控制口,单片机输出,P1.3作为采样数据输入口,从ADS7822输入到单片机。P1.3作为ADS7822的片选控制口。外部电压从J1输入后,单片机会控制继电器将分压比设为1/100,此时外部信号会被衰减100倍。这个衰减后的信号经运放放大2倍之后送入AD采样。单片机会判断转换后的数据是不是合适(满值是4095,若小于5则认为过小,大于4050则认为过小)。若数据过小,则将

18、分压比设置为1/10,再次测量,若还是过小,则分压比设置为1,若此时数据还是过小,则提示超出量程。若数据大于4050,则将分压比再增大,若达到分压极限,则提示超出量程。这样,整个电压表可以实现自动换挡,无需人工操作。图 3-6 信号处理模块3.7数字显示模块数据处理模块采用LCD1602显示模块。可以通过R7,R8两个电阻来调节LCD1602的背光强度。数据端口D0D7接单片机的P2口,读写端口R/W接P1.5,数据命令选择端口接P1.6,时钟接口CLK接P1.7。图3.7 数字显示模块第4章 软件设计4.1主程序设计 由于ADC0809在进行A/D转换时需要有CKL信号,而此时的ADC080

19、9的CLK是连接在AT89C51单片机的30管脚,也就是要求从30管脚输出CLK信号供ADC0809使用。因此产生CLK信号的方法就等于从软件产生。电压表系统有主程序,A/D转换子程序和显示子程序,如下流程8.1所示:图4.1 程序流程图4.2A/D转换子程序A动ADC0809对模拟量输入信号进行转换通过判断EOC(P3.7来确定转换是否完成若EOC为0则继续等待若EOC为1则把OE置位,将转换完成。程序流程图如8.2所示。图4.2 A/D转换子程序图第5章 系统测试5.1显示结果(1)当IN0口输入电压值为0V时,显示结果如图11.1.1所示,测量误差为0V。图5.1 仿真1(2) 当IN0

20、输入电压值为1.50V时,显示结果如图11.1.2所示。测量误差为0V。图5.2 仿真1(3)当IN0口输入电压值为3.30V时,显示结果如图11.1.3。测量误差为0.01V。图5.3仿真15.2误差分析通过以上仿真测量结果可得到简易直流数字电压表与“标准”数字电压表对比测试表,如下表11.2所示:从上表可看到,测试电压一般以0.01V的幅度变化。从上表可以看出,直流数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中

21、只要将计算程序的除数进行调整就可以了。第6章 总结经过一段时间的努力,基于单片机的直流数字电压表基本上设计完成。但设计中的不足之处仍然存在。这次设计是我第四次次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计单片机的使用等都有了进一步的认识。通过这次设计我对Proteus和Keil软件的使用方法也有了进一步的了解,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。基于单片机的直流数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了设计的预期要求、系统在硬件设计上充分

22、考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了直流数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89C51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片ADC0809,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练,但是在同学们和老师的

23、帮助下我还是克服了种种困难,最后这次电路的设计和仿真基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有更大的提升。参考文献1项莉萍,张志刚. 基于51单片机的数字电压表的设计与仿真J. 洛阳师范学院学报,2012,02:39-41.2赵明明. 基于MEGA8单片机的PC数字电压表设计J. 企业技术开发,2012,01:56-57+61.3王若男,韩进. 基于MSP430F448单片机的交流数字电压表设计J. 电子设计工程,2012,02:144-147.4李庭贵. 基于TLC549 A/D转换器与AT89S52单片机的数字

24、电压表设计J. 自动化技术与应用,2012,03:73-77+81.5朱晓玲. 直流数字电压表设计与Proteus应用J. 通信电源技术,2012,02:59-60+87.6杨建成. 基于单片机的数字电压表设计与仿真J. 现代电子技术,2012,21:170-172.7于洋,钟珊,尹斌. 基于AT89C2051的数字电压表最简接口设计J. 机械制造与自动化,2012,06:124-126.8杜松晏. 基于单片机的数字电压表的设计J. 科技信息,2012,35:150+194.9翟永前,蒋芳芳. 基于MSP430单片机的智能数字电压表设计J. 化工自动化及仪表,2011,03:297-300.1

25、0刘敏娜,潘宏侠,王乔. 基于51单片机的数字电压表仿真设计J. 山西电子技术,2011,02:46-47+64.11赵静,刘少聪,丁浩,王莉莎. 基于单片机的数字电压表设计J. 数字技术与应用,2011,06:121+125.12徐倩,孙泽阳,王亚飞. 基于51单片机的数字电压表设计J. 企业技术开发,2011,14:92.13宋悦孝,王俊杰,徐连孝. 基于单片机的数字电压表设计J. 潍坊学院学报,2011,04:13-15+35.14张莉. 基于TLC549数字电压表的设计J. 科技广场,2011,07:146-149.15翟蓓蓓,孙运强,姚爱琴. 液晶显示数字电压表的设计J. 山西电子技

26、术,2011,05:22-24.16叶钢. 基于TLC2543数字电压表的设计J. 数字技术与应用,2011,10:59-60+62.致 谢本论文是在XXX老师的谆谆教诲和指导下完成的,论文从选题、构思到定稿无不渗透着导师的心血和汗水;教授渊博的知识和严谨的学风使我受益终身,在此表示深深的敬意和感谢。我还要感谢含辛茹苦、任劳任怨、望子成龙、不图回报的父母的养育之恩,他们给予我的爱和支持让我顺利地完成了自己的学业。最后,因本人水平有限,在文中难免有不足之处,恳请各位老师批评指正。附录程序代码如下:#include#include#define uchar unsigned char#define

27、 uint unsigned int /设置P3口为数码管位选,P0口为段选,p1口为数据读入sbit ST=P20; /启动转换位sbit EOC=P21;/转换结束sbit OE=P22; /输出允许sbit ALE=P23; /地址允许锁存sbit CLK=P24;/时钟sbit BEEM=P27;/蜂鸣报警sbit green=P25;sbit red=P26;bit flag;bit m;bit am;long int shangxian=0x03;/设置的临界浓度值long int con,bai,shi,ge;/con为AD转换后的数字量(检测到的CO浓度)uchar dan;

28、/ 作为取num的中间变量uchar num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/七段数码管09的对应电平(共阴极)uchar num_dot=0xbf,0x86,0xdb,0xcf,0xe6,0xed; /带小数点的0-5uchar wei=0x0d,0x0b,0x07; /位选 void delay(uint z) /延迟函数,初始化的缓冲uint i;while(z-)for(i=0;i120;i+) CLK=CLK; /时钟沿的跳变触发启动器void delayled(uint z) /延迟函数 LED灯uint i;w

29、hile(z-)for(i=0;i10;i+); void alarm()if(am=1)BEEM=1;elseBEEM=0; am=0; void ledam()green=1;red=0;delayled(15);red=1;void display() uint j;bai=con/100;/百位取值 ,比如CO浓度为213时,将2作为百位取出来,然后在num数组中找出对应的2shi=con/10%10; /十位取值ge=con%10; /个位取值for(j=0;j=0x03)am=1;alarm();ledam();else green=0;BEEM=1;am=0;alarm();display(); 21

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1