51单片机的数字电压表设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1基于单片机的数字电压表的设计摘要近些年来,数字电压表逐渐进入人们的视线中,它主要采取数字化测量技术。与传统的指针式仪表相比,它的功能有了进一步的完善,并且精度也有了很大的提高。数字电压表主要采用单片机和模/数转换模块,这样不仅提高了测量速度,而且抗干扰能力强、使用便捷、可扩展性强、测量准确。本文主要采用AT89C51单片机和ADC0808芯片制作的简易数字电压表,可以采集0~5V和5~10V的模拟直流电压进行测量,其测量结果在液晶LCD1602上显示。该设计硬件电路主要有三个模块组成:A/D转换模块、数据处理模块及输出显示模块。数据处理由单片机AT89C51来完成,它主要把ADC0808传送来的数值经一定的数据处理,然后送至显示模块进行显示,同时控制显示芯片1602的工作。程序设计上有各模块初始化操作、电压档位选择和LCD1602液晶显示程序等。关键词:单片机;数字电压表;LCD1602;ADC0808;AT89C512系统硬件设计总体方案1.1设计要求以MCS-51单片机为关键部件,制作一个简易的数字电压表。(1)使用双通道可选择直流电压输入,能够测量0-5V和5-10V之间的直流电压。当电压值超过5V时,选择通道2(5-10V通道)采集电压。(2)使用LCD1602来完成电压的液晶显示。(3)使用较少的元器件,尽可能降低功率损耗,同时准确、快速完成测量。(4)由于电压表允许过载,因此所测电压允许适当超过量程。1.2设计方案总体设计电路有以下几部分组成:AT89C51单片机、A/D转换电路、液晶LCD显示电路、时钟电路、复位电路、被测电压输入电路及量程选择和报警电路。总体硬件设计框图如图1-1所示:AT89C51P1P2时钟电路复位电路A/D转换电路显示电路输入直流电压量程选择图1-1硬件电路设计框图31.32.系统硬件电路设计2.1A/D转换模块日常生活中的物理量都是模拟量,为了能够方便的分析各个量,就需要把模拟量转换成数字量的器件。现在越来越多的设备都需要进行模数转换,把复杂的模拟信号转换成已明白的数字信号,因此A/D转换器也得到了更深一层的研究。按照不同的A/D转换芯片的转换原理可把其分为逐次逼近行、双积分型等。其中双积分式A/D转换器抗干扰能力强、转换精度高、价格便宜。但与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,它们可以与单片机系统连接,将数字量送入单片机进行分析和显示。一个n位的逐次逼近型转换器只需要比较n次,这样大大节省了时间,而且逐次逼近型转换速度快,因而在实际中得到广泛的使用。由于ADC0808芯片采用逐次逼近式A/D转换原理,因此本设计便运用其进行模/数转换,它可以实现8路模拟信号的选择采集,而且它的转换时间为100us。此次使用的是12MHz的晶振,因此它能够提供转换的时钟即满足设计的需要。对于n位的A/D转换器,它的分辨率是满量程输入电压和2n之比。ADC0808的满量程为5V。则其分辨率为0.02V。ADC0808内部结构主要有8路模拟通道选择开关、地址锁存与译码器和8位A/D转换器、三态输出锁存器等构成,其引脚及连接电路如图2-1所示:4图2-1ADC0808引脚图由图2-1所示,其中IN0~IN7为模拟量输入通道,其输入电压范围均为0~5V。此次设计分为两通道输入分别为IN0(0-5V)和IN1(5-10V),并且采用开关K1、K2来选择。A、B、C为模拟量输入通道的选择端,是与单片机的P1相连并通过软件的编程产生控制信号。ALE、START为地址锁存允许信号和转换启动信号,它们都有单片机P3口产生控制信号。转换器的CLK由单片机的中断程序产生,主要是完成输入数据的扫描。EOC是ADC0808转换结束信号端口,只有等到EOC变为高电平,数据转换才结束。实现这个过程,就需要使用程序设计来完成。OE是输出允许信号,只有OE为低电平时,才能输出转换得到的数据。程序中先让OE为0,然后为1,这样把数据送入单片机P2口。VREF(+)、VREF(—)是芯片的电源接口。2.2电压输入电路ADC0808的基准电压为+5V,所以当要测量的电压值超过5V时则需要由开关选择衰减电路,经过衰减后输入转换采集器。输入电路如图2-4所示:5图2-4输入电路图当要测试的电压为0~5V时,选择IN0输入,在仿真中运用滑动变阻器分压的原理产生0-5V的电压来代表实际电压。而当超过5V时则选择左边的电路,由于实际的电压变允许适当的超量程,所以图中R5和R6的电阻值分别为6k、3k,这样就把电压衰减为原来电压值的1/3,同时由于RV5分压的原理可以得到5~10V的电压来模拟实际要测试的电压值。同时其最高测量电压允许适当超过10V。这样本电压表就有两个量程即0~5V和5V~10V。需要变换量程时,由选侧开关K1、K2相互切换。由于本此设计采用手动调节电压档位的方式,因此在测量电压时应该先对被测电压进行估算,同时先由较大量程进行测量,如果值过小,再调节档位。不然不容易超量程损坏仪器。直流电压输入时,由于尖峰的出现,也就需要对输入的电压进行滤波,电容C4、C5在次的作用就是进行滤波62.3接口电路对于本设计,主要的接口电路有时钟电路、复位电路、电压量程选择和报警电路。2.4.1时钟电路单片机89C51芯片中有一个内部时钟,其中引脚18为输入端,19为输出端引脚,这两个引脚连接一个12MHz的晶振,同时再连接两个瓷片电容,这样便提供片内相移的条件,时钟电路如图2-5所示:图2-5时钟电路图由图2-4可知,晶体的振荡频率通常取取12MHz,对于11.0592MHz一般在单片机串行通信时使用。这时单片机一个时钟周期为:ussT112101216(2-1)图电容C1和C2,它们和晶振的主要作用是结合单片机内部振荡电路实现相位的180°移相,这样晶振才能够起振。同时对电路中所需的电容储电量要求不高,均为30pF。若过高或过低都会对振荡产生影响。2.4.2复位电路AT89C51单片机的RST为复位引脚,复位信号高电平有效,并且其有效时间应该延续出现2个机器周期以上即可确保系统复位,复位操作完成后,RST端一直保持高电平,那么单片机就始终处于复位状态,当RST恢复低电平后单7片机才能进入其他操作。单片机复位电路有几种类,本次设计主要采用手动复位电路,这样可以人为的操作,简单方便。电路如图2-6所示:图2-6复位电路由上图2-6可知,只有RST端维持2个周期以上高电平才能完成复位操作。电容C3两端在单片机启动时持续充电为5V,由于按键未按下,电阻R1两端电压为0,此时RST处于低电平系统工作正常,当按键摁下时,电阻R2所在的支路导通,与C3形成一个回路,电容C3开始释放之前所充的电量,在很短的时间内,其电压值由5V变为1.0V,甚至更小些,与此同时,RST又收到高电平,这时系统自动复位。2.4.3量程选择和报警电路本设计由于采用双通道输入的方式,所以可以选择不同的量程,分别为0~5V和5~10V。这个操作由选择开关K1、K2来完成,但是如果K1、K2同时闭合,报警提示灯点亮。电路如图2-7所示:图2-7量程选择和报警电路图82.4LCD1602显示电路设计本次设计中采用LCD1602作为显示器,与以前的LED数码管显示相比,其显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路。同时可以满足不同的输入、移位要求,而且接口方式简单、可靠。LCD1602模块的引脚及连接电路如图2-8所示:图2-8LCD1602引脚其中D0~D7数据接收端口与单片机P0口相连。E端为使能端,当它由0变为1,LCD1602才能进行读写操作,它和单片机P3.5相连,并由其输出控制信号。RS、RW是1602的读写控制端,它们分别与单片机的P3.6、P3.7相对应,这样使用LCD显示时可由单片机的程序完成控制。VDD、VSS为液晶屏的电源端口,VEE端电压信号的大小可以改变液晶屏的亮度。由于P0口作为输出口时,它没有高电平的状态所以仿真电路时需要加上拉电阻RP1,这样P0口就有高电平状态。93.系统程序设计系统的主程序流程如图3-1所示:开始初始化m1000?接收并处理数据选择量程显示电压值等待下一次数据显示MAXNY图3-1系统主程序流程图本设计程序设计主要分为几个模块:初始化程序设计、A/D采样程序设计、测量参数数据处理程序设计、量程选择和报警程序设计、LCD1602显示程序设计。下面逐个介绍各个模块的程序设计。3.1初始化程序所谓初始化,将利用到单片机内部各部件或扩展芯片进行初始工作状态设定,其主要负责设置定时器模式、初始设定、开中断和打开定时器等,对于液晶1602同样也要进行初始化,其中包括清除显示屏、显示开/关控制、功能设置、进入模式设置等。其中部分初始化程序如下:10w_comd(0x0c);//开显示屏,关光标;w_comd(0x06);//字符进入模式:屏幕不动,字符后移;ET0=1;//开定时中断;3.2A/D转换程序模/数转换流程图如图3-2所示。开始EOC=1?输出数据启动转换器数值转换Y数值转换N图3-2A/D转换流程图由图可知,A/D转换程序首先定义启动信号、输出允许信号、输入地址锁存信号、A/D转换结束信号及CLK时钟信号的变量。然后利用AT89C51中定时器T0的工作方式2产生CLK信号,供A/D转换器使用,START信号的上升沿启动A/D转换,等待转换结束,即EOC从0变为1,同时OE是输出使能信号端,其信号从高到低电平,输出转换数据并将其进行数值转换分别求出百、十、个位,再送入LCD进行数据显示。3.3LCD1602显示程序3.3.1LCD1602初始化液晶LCD初始化主要就是在液晶显示器的每一个寄存器的初始设置,也就是向LCD中的各个寄存器写入要设定的数据。该设计的初始化过程为先上电,11然后进行判忙操作,最后再进行各个功能的设置,其中包括显示状态的设置(行、位的起始位置)、输入方式的设置。初始化过程如图3-5所示:上电开始调用延时功能设置调用延时显示状态设置清屏延时程序输入方式设置结束图3-5LCD初始化流程图该设计主要使用了LCD1602的读忙操作、写数据操作、写命令操作和写字符操作。其中每个操作都需要使能端RW、RS的控制信号,当RS、RW均为0的情况下,可以进行读、写操作,而读忙只有RS=0、RW=1时,才能进行此操作。LCD1602如果要显示字符,首先要写入显示字符的首地址,此次使用的是从第一行第四个字符04地址开始显示,但是液晶写数据操作时地址最高位D7必须为高电平,因此写入数据的时候应该是00000100(04H)+10000000(80H)=10000100(84H)。124.4.1显示结果及误差分析4.2.1显示结果1.当输入电压为4.55V时,显示结果如图4-1所示,实际电压为4.54V。图4-1输入电压为4.55V时,LCD显示结果2.当输入电压为9.97V时,显示结果如图4.2所示,实际电压为9.96V。134.2.2误差分析通过对输入不同的电压进行测试,得到了仿真数据。可得出两者的对比测试表,如下表4-1所示:表4-1简易电压表与“标准”电压表对比测试表从表4-1中的几组数据的分析,测试电压误差以0.01V的幅度变化。这主要是硬件本身的误差导致。由于单片机AT89C51、ADC0808数据传输端口为8,当输入电压为5.00V时,输出端口的数据为11111111(FFH),所以ADC0808的最高分辩率为0.0196V(5/255)。这就决定了电压表的最高分辩率只能到0.0196,因此测试电压通常以0.01的幅度变化。该数字电压表所测得的电压值和标准的电压相比,大概有0-0.01V的偏差。由于硬件方面的原因,此误差只能通过硬件上的完善才能得以校正。因为该电压表设计时用的是5V的供电电源作为基准电压,所以电压可能出现误差。如果要测量大于5V的电压时,应当使用分压电路,程序中对计算结果进行调整就可以了。通过多次的仿真和调整,此次设计的电压表的绝对误差为0~0.

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功