基于单片机的数字电压表设计毕业论文 下载本文

西安工业大学学士学位论文 仪器仪表在设计和使用中的安全性,对生产厂家和广大用户都至关重要。一方面厂家必须为仪表设计安全保护电路,并使之符合国家标准;另一方面用户必须安全操作,时刻注意仪表上的各种安全警告指示。

(5).操作简单化

集成电路的发展使电压表只在外围配置少量元件,即可构成完整的智能仪表,可以完成储存、计算、比较、控制等多项功能。这使的按键变少,操作简单。但是数字电压表并不能完全取代指针式的电压表,在反映电压的连续变化和变化趋势方面不如指针表的直观。为克服这种缺憾,20世纪90年代初,一种“数字/光柱”的双重显示仪表已经出现,并成功地应用于生产实践中[5]。

综上所述,十几年来智能仪器虽然有了很大的发展,但总的看来,人们还是较习惯于从硬件的角度做工作,这是由于设计者的(硬件)技术背景,LSI器件不断迅速更新的冲击以及在现阶段仪器硬件更新的数量还很大等因素所造成的。这种趋势虽然仍会继续下去,但从智能仪表的内涵,从软件的角度上看,软件的作用还远未发挥出来,这里有许多的领域等待着去开发。智能仪表最终必然会与人工智能联系起来开创出全新的仪器。从这个观点看,目前的智能仪器尚处于“幼年时期”。所以,就仪表的发展看来电压表会朝着具有微控制处理单元的智能仪表方向发展。

1.2课题的意义和目的

数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计,湿度计,酸度计,重量,厚度仪等),几乎覆盖了电子电工测量,工业测量,自动化仪表等各个领域。除此之外,数字电压还有着传统指针电压表无可比拟的优点:读数直观、准确,显示范围宽、分辨力高,转入阻抗高,功耗小、抗干扰强等[3]。因此 对数字电压表作全面深入的了解是很有必要的。但是传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成,可是这种设计方法灵活性差,系统功能固定,难以更新扩展,不能满足日益发展的电子工业要求[6]。而应用微处理器(单片机)为核心单元的数字电压表,其灵活性高、系统功能扩展简单,性能稳定可靠。在这些背景下,设计一种以单片机为基础、结构简单、工作可靠、灵活性好的数字电压表是很有意义的。

1.3本文所作的主要工作

1.对系统总体框架进行分析,根据系统所要实现的目标,设计基于单片机的数字电压表的硬件系统,以模块设计法为依据进行系统各个部分的具体设计。

2.设计基于单片机的数字控制系统,发挥单片机的处理功能强大,运算速度快的特点,对被测电压进行实时检测和显示。

3.制作印刷电路板,使硬件电路的设计更加清晰,同时使系统的抗干扰能

3

西安工业大学学士学位论文 力进一不加强。

4.针对系统的总体框架和硬件设计的特点,设计相应的软件系统,更合理的去完成系统测电压的目的。

5.对系统进行整机调试,使得基于单片机的数字电压表的实验结果尽可能的满足设计指标。

2 基于单片机数字电压表的总体设计

2.1设计指标

在日常维修、教学和科研中,电压表是不可缺少的,传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成,但是这种设计方法灵活性差,系统功能固定,难以更新扩展,不能满足日益发展的电子工业要求。而应用微处理器(单片机)为核心单元,其灵活性高、系统功能扩展简单,性能稳定可靠。本课题目的就是以单片机为基础设计出一种结构简单、工作可靠、灵活性好的直流数字电压表。要求数字电压表精度为±0.05V,测量范围为0~5V。

2.2系统概述

本课题所设计的数字电压表主要包括两部分:硬件电路及软件程序。而硬件电路采用ATMEL公司的AT89C51作为主处理器,系统主要由信号采集、A/D转换、数据处理输出、驱动显示等几个功能模块组成。各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。 系统框图(图2.1)如下: 被测电压 A/D转换 单元 数据处 理单元 图2.1 硬件原理框图

显示驱 动单元 显示 单元 被测直流电压由A/D转换单元采集后被量化,再由单片机对A/D转换的结果进行标度变换,得到被测电压的数值,通过单片机对数次转换结果求平均值、并通过SOI串行数据接口把所求平均值输出给显示驱动单元,由该单元完成译码,并驱动数码管显示。

4

西安工业大学学士学位论文 2.2.1硬件电路图及工作过程简介

电压表的数字化是将连续模拟的电压量经A/D转化后变为不连续的离散的数字量并加以显示[7]。在设计过程中采用分模块设计,按照图2.1把电路分A/D转换、数据处理输出、驱动、显示四个单元,分别设计。

A/D转换器选用的是八位模/数转换器ADC0809。其次,计算机中的数字都是十六进制数,而我们习惯于十进制数的读写,因此,在软件设计中则要把十六进制数转换成十进制数。在显示的时候也是如此。本装置的输出用四位LED显示,因此在软件设计中还要解决数字输出与LED的接口问题。硬件则需要将输出线接到八段数码管上[8]。

数值显示采用八段数码管,由单片机以动态扫描方式驱动,在此方式下能保证足够的亮度和较长的使用寿命。

由电路原理图2.2可以看出ADC0809通过IN0采集电压信号并送给单片机,单片机将采集来的信号进行一定的处理然后通过串口扩展的共阴极LED数码管显示采集的电压值。

数码管显示是采用动态显示的原理,要显示的数码通过单片机的串口发送然后通过ZLG7289转换为并行信号分别加到四个数码管的SA—DP,而四个数码管的公共端分别接ZLG7289的DIG0-DIG3接口,因此要使哪个数码管显示就把相应 的公共端口置零即可。比如:数字“1”的字型码通过串口发送出来并经过ZLG7289译码加到了四个数码管上,如果其中一个引脚为“0”那么对应的数码管显示数字“1”。在此电路中电压值的三个数字分别通过串口依次的送出,对应的公共端也依次被置“0”,由于两次置“0”的时间间隔很短,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。因此给人的感觉就是三个数码管同时的显示出电压值四个数字[5]。 数字电压表电路图如图2.2所示:

5

西安工业大学学士学位论文

图2.2 电路原理图

ADC0809的REF(-)接地,REF(+)接电源+5V,因此采集电压的范围是0~5V,A/D转换输出的结果D0~D7为8位二进制数。转换输出的结果在0~255之间分别对应着0~+5V之间的256个电压值,因此单片机必须把A/D转换输出的结果转换成可以显示的电压值,具体的方法是:

Dout (2.1) Vin??5255

由上公式可知:当ADC0809输出为(11111111)B时,输入电压值VIN=5.00V;当ADC0809输出为(00000000)B时,输入电压值VIN=0.00V;当ADC0809输出为(10000000)B时,输入电压值VIN=2.50V,但是单片机在进行数学运算时结果只读取整数部分,因此当输出为(10000000)B时计算得来的电压值VIN=2.00V。由此可以看出这样运算的输出结果很不准确,在0~+5V之间只有0,1,2,3,4,5六个电压值,所以必须把单片机运算结果中的小数部分保留下来[8]。具体方法是:如果保留小数点后两位,在运算的时候分子乘以100,保留三位就乘以1000。小数点后保留两位的公式如下: DoutDout?1000Vin??5?1000? (2.2) 25551

由新公式可知当ADC0809输出位(10000000)B时,单片机运算结果为2500。然后单片机将250除以10得到商为250,余数为0,再将250除以10得到商为25,余数为0,再将25除以10得到商为2,余数为5。这样就可以得到电压值的四个数字,最后分别将2、5、0、0四个数通过串口送出,显示在四个数码管上,并且把第一个数码管的dp脚(即小数点)直接接地使其一直发亮,那么数码管上就可以显示输入的电压值“2.500” [5]。 2.2.2 软件程序设计简介

开机后首先初始化,使数码管显示为“0.000”然后调用A/D转换子程序启动AD转换器,单片机等待查询转换结束信号,如果有信号则通过并行口读取转换数据并存储,就这样连着读取五次数据后求平均值,再按上面的方法通过串行口把数据传输出,经译码在数码管显示。具体方法和程序见程序设计部分和附录。

2.3 小结

在电路设计和软件设计中都采用了分模块设计,这种设计方法清晰的电路的功能,为设计和以后的调试和维修带来了极大的方便。特别是在软件设计中,这

6

西安工业大学学士学位论文 中方法曾强了程序的可移植性,为以后的功能扩展奠定了基础。

3 基于单片机数字电压表的硬件设计

3.1器件的选择

模数转换器选用ADC0809 单片机用AT89C51 显示驱动用ZLG7289

数码管用四位共阴级LED(SM420364)

退耦电容100nf无极性电容和100μf的电解电容 位电容用10μf的电解电容 零欧电阻 限流电阻

共阴极八段数码管sm420364

3.2 A/D转换电路

3.2.1 A/D转换芯片的选择

A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。

随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。

双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动较零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示[9]。

本设计中,要求精度小于0.5%,则选用分辨率为8位的芯片,如ADC0809,ADC0801,ADC0808就能满足设计要求。本电路采用ADC0809。

7