1、东北石油大学秦皇岛分院毕业设计数字电流表的设计与仿真学生姓名 隋维旭院系名称 电气信息工程专业名称 供用电技术班 级 2013 级 2 班学 号 15指导教师 李红霞完成时间 2014 年 12 月 11 日简易数字电压表设计The Design of Simple Digital Voltmeter学生姓名:隋维旭Student: Sui weixu指导教师:李红霞 讲师Advisor: Li hongxia东北石油大学电气信息工程系School of Physics Digital Voltmeter; A/D conversion; Analogue Signal东北石油大学设计(论文)
2、 目 录1. 引言 .11.1 设计背景 .11.2 设计意义 .21.3 课题完成的功能 .22. 总体设计 .22.1 设计方案思路 .22.2 总体设计框图 .33. 硬件设计 .43.2 采集模块设计 .63.2.1 ADC0809A/D 功能描述 .63.2.2 ADC0809A/D 转换芯片的原理 .73.2.3 ADC0809 数据采集 .83.3 显示模块设计 .84. 软件设计 .94.1 总体方案 .94.2 模/数转换测量子程序 .105. 制作与调试 .115.1 硬件电路的布线与焊接 .115.2 调试 .115.2.1 硬件调试 115.2.2 软件调试 116.
3、结论和心得 .12参考文献 13谢 辞 14附件 15东北石油大学设计(论文) 01. 引言随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。同时随着微电子技术的迅速发展和超大规模集成电路的出现,特别是单片机的出现,正在引起测量控制仪表领域的新的技术革命 1。由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平 2。数字电压表相对于指针表而言读数直观准确,电压表
4、的数字化是将连续的模拟量转换成不连续的离散的数字形式并加以显示。这有别于传统的以指针与刻度盘进行读数的方法,避免了读数的视差和视觉疲劳 3。1.1 设计背景数字电压表在 1952 年由美国 NLS 公司首次创造,它刚开始是 4 位,50 多年来,数字电压表有了不断的进步和提高。数字电压表是从电位差计的自动化过程中研制成功的。开始是 4 位数码显示,然后是 5 位、6 位显示,而现在发展到 7 位、8 位数码显示;从最初的一两种类型发展到原理不同的几十种类型;从最早的采用继电器、电子管发展到全晶体管、集成电路、微处理器化;从一台仪器只能测 1-2 种参数到能测几十种参数的多用型;显示器件也从辉光
5、数码管发展到等离子体管、发光二极管、液晶显示器等。数字电压表的体积和功耗越来越小,重量不断变轻,价格也逐步下降,可靠性越来越高,量程范围也逐步扩大 4。DVM 的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的 DC-DVC 的出现,又使DVM 进入了精密标准测量领域。随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如
6、:东北石油大学设计(论文) 1温度计、湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。从而提高计量检定人员的工作效率 5。1.2 设计意义这个课题的目的和意义在于使自己掌握对数字电压表的理解,自己动手设计数字电压表与仿真,它可以广泛的应用于电压测量外,通过各种变换器还可以测量其他电量和非电量,测量是一种认识过程,就是用实验的方法将被测量和被选用的相同参量进行比较,从而确定它的大小。DVM 广泛应用于测量领域每期测量的准确度和可信度取决于它的主要性能和技术指标。所示我们要学习和掌握如何设计 DVM 就显得十分重要 6。1.3 课题完成的功能 设计的基本内
7、容是使基于单片机所设计出的数字电压表可以测量 0-5V 的 8 路输入电压值,并在四位 LED 数码管上轮流显示或单路显示。测量最小分辨率为0.019V,测量误差约为 0.02V。系统除能确保实现要求的功能外,还可以方便地进行8 路其他 A/D 转换量的测量、远程测量结果传送等功能。所要解决的主要问题是如何更有效地设计出符合设计要求的简易数字电压表,特别是要注意其测量电压的误差,难点是数码管需轮流显示或单路显示所测出的电压值,并且能使软硬件有效的结合起来 7。2. 总体设计2.1 设计方案思路 方案一:A/D 转换器采用 ICL7071 型三位半显示的芯片,输入信号,流经取样与电路取样后送到
8、ICL7071 型三位半 A/D 转换器,只需要很少的简单的外围元件,就可组成数字电流表模块,直接驱动三位半 LED 显示器显示,最后输入电流在现实部分东北石油大学设计(论文) 2显示。这块是用 LED 数字表,最大的确定就是数字乱跳不稳定。实用数字电路实现,采用译码芯片 CD4543 作为接口芯片,这种方案实现功能但是稳定性不高 结构复杂。方案二: 用 ADC0809 转换芯片,其中 A/D 转换器用于实现模拟量数字量的转换,单电源供电。它是具有 8 路模拟量输入,8 位数字量输出功能的 A/D 转换器,转换时间为 100vs,模拟输入电压范围为 0V5V,不需零点和满刻度校准,功耗低,约1
9、5mW。转换速度快而且精度高 价格低廉 所以选择用 ADC0809。采用 AT89S51单片机作为系统的控制单元,通过 A/D 转换将被测值转换为数字量送入单片机中 再有单片机来送显,此方案各类功能易于实现,成本低 功耗低 显示稳定 8。经过以上两种方案的特点比较,方案二中的电路设计采用比较常见的元器件,对这种方案有一定的专业基础,故采用第二种方案。2.2 总体设计框图总体设计框图如图2-1所示,通过模数转换器ADC0809采集模拟数据并转换为数字信号,在51单片机的控制与74LS74及三极管的驱动下,将采集的数据显示在LED数码管上 8。两个开关用作选择测量电压的路数,一个控制单路显示,另一
10、个控制循环显示,能够同时测量8路电压值。电压采集模块A/D转换接口模块显示模块图 2-1 简易数字电压表总体设计框图东北石油大学设计(论文) 33. 硬件设计3.1 单片机 AT89C51 介绍AT89C51 是一个低电压,高性能 CMOS 8 位单片机,片内含 4k bytes 的可反复擦写的 Flash 只读程序存储器和 128 bytes 的随机存取数据存储器(RAM ) ,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,内置功能强大的微型计算机的 AT89C51提供了高性价比的解决方案 9。
11、AT89C51 是一个低功耗高性能单片机,40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中断口,2 个 16 位可编程定时计数器,2 个全双工串行通信口,AT89C51 可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和 Flash 存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降低开发成本 10。3.1.1主要特性AT89C51能与 MCS-51 兼容 ,4K 字节的可编程闪烁存储器,寿命为1000写/擦循环,数据能保留10年,全静态工作为0Hz-24Hz。三级程序存储器锁定, 128*8位内部 RAM,32 可编程 I/O 线,两个
12、16位定时器/计数器, 5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路 11。3.1.2管脚说明P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高
13、,可用作输入,P1 口被外部东北石油大学设计(论文) 4下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也
14、可作为AT89C51 的一些特殊功能口,P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密
15、方式 1 时,/EA 将内部锁定为 RESET;当/EA端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出 12 。 VCC:供电电压。 GND:接地。东北石油大学设计(论文) 53-1 AT89C51 引脚图3.1.3振荡器特性XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时
16、钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度 10。3.1.4芯片擦除整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持 ALE管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51 设有稳态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU 停止工作。但 RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 RAM 的内容并冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止 10。东北石油大学设计(论文) 63.2 采集模块设计3.2.1 A
17、DC0809A/D 功能描述ADC0809 是采样频率为 8 位的、以逐次逼近原理进行模数转换的器件。下面 3-2 是 ADC0809 管脚图介绍,其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选通 8 个单断模拟输入信号中的一个进行 A/D 转换。图 3-2 ADC0809 管脚图A/D 转换器是连接模拟世界与数字世界的桥梁,它担负着将模拟信号变换成适合数字处理的二进制代码的任务。目前,8 位 A/D 转换器的转换速度已经达到 1.5GHz;并且,有些 A/D 转换器还可以工作在欠采样状态。对于高速 A/D 转换器动态性能的测试,目前常用的方法主要是相干采样测试法和加窗
18、测试法 12。3.2.2 ADC0809A/D 转换芯片的原理ADC0809 的 工 作 过 程 是 : 首 先 输 入 3 位 地 址 , 并 使 ALE=1, 将 地 址 存 入 地 址锁 存 器 中 。 此 地 址 经 译 码 选 通 8 路 模 拟 输 入 之 一 到 比 较 器 。 START 上 升 沿 将 逐 次逼 近 寄 存 器 复 位 。 下 降 沿 启 动 A D 转 换 , 之 后 EOC 输 出 信 号 变 低 , 指 示 转 换 正在 进 行 。 直 到 A D 转 换 完 成 , EOC 变 为 高 电 平 , 指 示 A D 转 换 结 束 , 结 果 数 据已
19、存 入 锁 存 器 , 这 个 信 号 可 用 作 中 断 申 请 。 当 OE 输 入 高 电 平 时 , 输 出 三 态 门 打开 , 转 换 结 果 的 数 字 量 输 出 到 数 据 总 线 上 。东北石油大学设计(论文) 7由图 3-3 可知,ADC0809 由一个 8 路模拟开关、一个地址锁存与译码器、一个 A/D 转换器和一个三态输出锁存器组成。三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据 11。 。图 3-3 ADC0809 的内部逻辑结构3.2.3 ADC0809 数据采集ADC0809 采集电压时,首先单片机执
20、行一条传送指令,在指令执行过程中,单片机在控制总线的同时产生 CS1、WR1 低电平信号,启动 A/D 转换器工作,ADC0809 经100us 后将输入模拟信号转换为数字信号存于输出锁存器,并在 INTR 端产生低电平表示转换结束,并通知单片机可来取数。当单片机通过总线查询到 INTR 为低电平时,立即执行输入指令,以产生 CS、RD2 低电平信号到 ADC0809 相应引脚,将数据取出并存入存储器中。整个数据采集过程中,由单片机有序地执行若干指令完成 11将 8 位 A/D 转换芯片 ADC0809 与单片机进行如此连接,其目的有二:一是为了利用单片机的信息处理能力,在总线上或由总线经过功
21、能芯片,设置满足 ADC0809芯片启动过程的时序信号,将启动 A/D 转换置于单片机的控制之下,这时 ADC0809芯片的地址锁存器可以视为 I/O 接口中的只写寄存器;二是将 A/D 转换结果数据读入东北石油大学设计(论文) 8CPU,这时 ADC0809 芯片中的输出数据寄存器可以作为普通 I/O 接口中的只读寄存器对待。3.3 显示模块设计用单片机驱动 LED 数码管有很多方法,按显示方式分,有静态显示和动态显示。此次设计用的是动态扫描显示,显示电路如图 3-4。动态扫描方法是用其接口电路把所有显示器的 8 个笔画段 a-h 同名端连在一起,而每一个显示器的公共极 COM 各自独立的受
22、 I/O 线控制。CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于 COM 段,而这一段是由 I/O 控制的,由单片机决定何时显示哪一位了 12动态扫描用分时的方法轮流控制各个显示器的 COM 端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余晖效应,看上去就是一组稳定的显示数据。图 3-4 显示电路数据在传送过程中,对输出端来说是透明的,这样,数据在传送过程中,数码管上有闪动现象,驱动的位数越多,闪动现象越明显。为了消除这种现象,在显示模块中加了四个三极管作为位驱动,在数据传送过程
23、中,关闭三极管使数码管没电不显示,数据传送完后立刻使三极管导通,这样就可以实现锁存功能。东北石油大学设计(论文) 9LED 动态显示都是一位一位显示的,比如第一个数码管是显示通道的,当单片机输出显示通道信号时,只导通第一个三极管,这样第一个数码管就显示出通道,其他三个暂时不显示。当单片机输出电压整数信号时,此时再导通第二个三极管,这样就能在第二个数码管上显示电压的整数,以此类推,就可以把所测的电压精确值显示在数码管上,虽然这些数码管是一位一位显示,但因为人眼的惰性,给人的感觉就是 4位数码管同时点亮的,在任意的时刻只有一个数码管在亮,只是人的眼睛无法分辨。4. 软件设计4.1 总体方案电路主流
24、程如 4-1 所示,设计,包括主程序,显示控制程序,显示数据转为三位BCD 码子程序,显示子程序,延时程序,电压测量子程序,按键检测子程序等子程序。初始化调用 A/D 转换程序调用数据处理程序调用显示程序开始图 4-1 主程流程图东北石油大学设计(论文) 104.2 模/数转换测量子程序图4-2 A/D转换测量程序流程图模/数转换子程序用来控制对0809八路模拟输入电压的 A/D转换,并将对应的数值移入70H-77H内存单元。5. 制作与调试5.1 硬件电路的布线与焊接设计布线图时走线尽量少拐弯,力求线条简单明了。布线条宽窄和线条间距要适中,电容器两焊盘间距应尽可能与电容引线脚的间距相符。通过
25、 protel99 软件绘制出原理图,将打印出来的原理图在铜板上转印好并用盐酸溶液和双氧水溶液腐蚀,这样就得到了一块电路板。把上面的元器件焊接在板上便完成了硬件的安装。在焊接时元器件的放置上尽量要贴近电路板,要注意烙铁头与被焊件的接触方式,(1)接触位置:烙铁头应同时接触要相互连接的 2 个被焊件(如焊脚与焊盘) ,烙铁一东北石油大学设计(论文) 11般倾斜 45 度,应避免只与其中一个被焊件接触。当两个被焊件热容量悬殊时,应适当调整烙铁倾斜角度,烙铁与焊接面的倾斜角越小,使热容量较大的被焊件与烙铁的接触面积增大,热传导能力加强。 (2)接触压力:烙铁头与被焊件接触时应略施压力,热传导强弱与施
26、加压力大小成正比,但以对被焊件表面不造成损伤为原则。在焊接前还要注意观察各个焊点(铜皮)是否光洁、氧化等。在焊接物品时,要看准焊接点,以免线路焊接不良引起的短路。5.2 调试5.2.1 硬件调试硬件电路的调试主要是对硬件电路进行检查,使用万用表、示波器等常规工具检查电路制作是否正确,并核对元器件规格、型号,检查芯片间连线是否正确,是否有短路、虚焊、极性接错等故障,尤其应该注意芯片放置方向是否有误,各个芯片的接地线与电源线的连接是否有误。除此之外,硬件电路运行是否正常,还可通过测定一些重要的波形来确定。5.2.2 软件调试 单片机系统的软件采用 C51 来编写,节省了时间。所有代码在 Keil7
27、.06 下编译调试,软件调试比较复杂。先用软仿真排除语法差错和逻辑差错,然后通过 JTAG 下载到单片机来调试。可采取自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统调试。调试中主要精力放在防真和程序优化。在一开始调试时,数码管的显示较不稳定,感觉较闪烁,数据变化不连贯,好像在跳变。经过反复思考发现,一开始程序是使用静态显示方法。查了很多资料发现,一般数码管显示采用动态扫描的方法,于是将程序的显示部分改成动态扫描程序,经再次调试可以显示比较稳定的数字串了。6. 结论和心得毕业设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及相对应的工程意识,同学之间的友
28、谊互助也充分的在毕业设计当中体现出来了,不论是在之前的 查找资料,身旁的同学都给予了不少的帮助与支持。东北石油大学设计(论文) 12在毕业设计过程中,巩固了在大学3年内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕设提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。 由于时间太仓促,经验不足,理论方面也相应的存在不足,加上条件有限,仍存在着一些设计方面的问题,个人技能也有待提高,理论知识还要巩固加强。 东北石油大学设计(论文) 13参考文献1 徐爱钧智能化测量控制仪表原理与设计M北京:北京航空航天大学
29、出版社,2004,56-1232 天津市计算机学会单片机分会,2003年全国单片机及嵌如入式系统学术年会论文集(下册)C 北京:北京航空航天大学出版社,2003,790-7943 李光飞,楼然苗单片机课程设计实例指导M 北京:北京航空航天大学出版社,2004,1-124 余永权 ATMEL89系列单片机应用技术M北京:北京航空航天大学出版社,2002,103-1105 杨文龙单片机原理及应用M西安:西安电子科技大学出版社,1998,62-806 黄继昌电子元器件应用手册M北京:人民邮电出版社,2004,165-2047 刘文涛单片机应用开发实例M北京:清华大学出版社,2005,16-318 孙
30、涵芳,徐爱卿MCS-51系列单片机原理及应用M 北京:北京航空航天大学出版社,1998,54-699 范立南,李雪飞,尹授远单片微型计算机控制系统设计M 北京:人民邮电出版社,2004,213-24110 李刚,林凌与8051兼容的高性能、高速单片机M 北京:北京航空航天大学出版,200211 周航慈,周立功PHILIPS51PC系列单片机原理及应用设计M 北京:北京航空航天大学出版社,2002,97-19812 阎石数字电子技术基础M北京:高等教育出版社,1998,475-49013 J. Frank. Instrumentation for Process Measurement and
31、ControlM. BEIJING: Science Publishing House.2000, 60-79. 14 He Jian-jun, Yu Shou-yi. Temperature Intelligent Control System of Large-Scale Standing Quench FurnaceJ.Journal of Electronic Science and Technology of China, 2005,(1),72-88.东北石油大学设计(论文) 14附 件附件 1 实物图东北石油大学设计(论文) 15附件 2 系统原理图东北石油大学设计(论文) 16
32、附件 3 系统 PCB 图东北石油大学设计(论文) 17附件 4 元器件清单表器件类别 元件序号 型号参数 数量 参考价封装形式单片机 89C51 1晶振 6MHz 1四联体数码管 共阳 1开关 拨动开关 2普通电容 30pF 2电解电容 10uF 1200 810K 2普通电阻4.7K 4可变电阻 10K 1三极管 PNP 4A/D 转换器 ADC0809 1分频器 74HC74 1东北石油大学设计(论文) 18附件 5 简易数字电压表的源程序#include#include#includenumber10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x
33、80,0x90;number110=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;sbit four=P20;sbit three=P21;sbit two=P22;sbit one=P23;sbit ST=P30;sbit OE=P31;sbit EOC=P32;unsigned int adcdata, adcdata3;unsigned int i;unsigned int adc08;unsigned int k;unsigned int avedata();void show();void delay_2ms();void mai
34、n()P2=0xff;P3=0xff;OE=0;ST=0;ST=1;while(1)东北石油大学设计(论文) 19ST=0;while(!EOC);OE=1;adcdata=avedata();show();ST=1;/-void show()unsigned int adcdata1;adcdata1=adcdata*19;four=0;P1=number1adcdata1/1000;adcdata1%=1000;delay_2ms();four=1;three=0;P1=numberadcdata1/100;adcdata1%=100;delay_2ms();three=1;two=0;P1=numberadcdata1/10;delay_2ms();two=1;one=0 ;P1=numberadcdata1%10;东北石油大学设计(论文) 20delay_2ms();one=1;/-void delay_2ms() unsigned int i;for(i=0;iadc0i)max=adc0i+1;else max=adc0i;for(j=0;jadc0j)min=adc0j;else min=adc0j+1;for(i=0;i8;i+)sum=sum+adc0i;adcdata3=(sum-max-min)/6;return(adcdata3) ;