当前位置:文档之家› 基于单片机高精度直流电压表设计

基于单片机高精度直流电压表设计

前言 (2)一、设计任务及方案分析 (3)1、设计任务具体要求 (3)2、设计总方案论证 (3)二、硬件电路设计 (4)1、数据输入模块电路设计 (4)2、运算放大电路及通道选择电路设计 (5)3、AD转换模块电路设计 (6)4、单片机控制模块电路设计 (7)5、LCD1602液晶显示模块电路设计 (8)三、系统软件流程设计 (9)1、系统主程序流程框图 (9)2、系统部分程序如下: (10)四、系统调试结果 (11)五、实习收获与感受 (12)基于51单片机的数字直流电压检测仪的设计前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。

众所周知,在当今的社会中电已成为人们日常生产,生活中一个必不可缺的因素。

电的发现和应用极大的节省了人类的体力劳动和脑力劳动,使人类的力量长上了翅膀,使人类的信息触角不断延伸。

而在这其中,电压,电流等已成为描述电的一些重要参数。

在电气测量中,电压是一个很重要的参数。

如何准确地测量模拟信号的电压值,一直是电测仪器研究的内容之一。

目前,市场上的主要使用的电压表有:指针式电压表和数字电压表两种。

由于传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,因此,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信等优点已使数字电压表成为现在电子测量的主要应用产品。

数字电压表是通用仪器中使用较广泛的一种测试仪器,很多电量或非电量经变化后都用可数字电压表完成测试。

目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。

本设计主要研究的是以51系列单片机为核心的电压测量系统,能够在单片机的控制下完成对电压信号采集,能够根据采样值进行毫伏值与伏值量程自动转换。

采用4位半双积分A/D转换器,在20000字(2V满量程)范围内,保证转换精度1字,相当于14bitA/D转换器,相比于其他数字电压表使用的A/D转换器,具有精度高的特点。

并且测量结果可通过液晶屏显示出来,使用液晶屏显示具有功耗低,使用简单,焊接电路方便等特点。

显示准确可靠,误差小。

基本能够满足生产的要求。

一、设计任务及方案分析1、设计任务具体要求设计一个数字直流电压检测仪,具体要求如下:(1)实现0-50V直流输入电压的测量(2)将直流电压表划分三个测量档位(3)测量精度>=0.1V+2%2、设计总方案论证在由单片机构成的数字电压表中,一般包含三种模块:数据采集保持模块,数据处理模块(单片机系统)和输出显示模块。

在本次设计中,可将这几个模块进行更细的划分,可分为数据输入模块,A/D转换模块,数据处理及控制模块,显示模块。

(1)数据采集输入模块在本模块中,采用放大器电路。

先将输入的电压值送入集成运放进行放大,分三路,每个档位都有相对应的通道和运算放大器,最后经运算放大器放大后,将要测量的电压值直接输入AD转换器。

通到选择因考虑到模拟开关本身具有一定的电阻,故采用普通自锁开关来进行通道选择。

(2) AD转换模块在A/D转换模块中,A/D 转换器的转换精度对测量电路极其重要,它的参数关系到测量电路性能。

由于ADC0809是八位AD转换器,精度达不到设计要求,故本设计采用双积A/D 转换器ICL7135,它的性能比较稳定,转换精度高,相当于14位AD转换器的精度,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低。

在对转换精度要求较高,而对转换速度要求不高的场合如电压测量有广泛的应用。

另外,ICL7135有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转换的控制信号。

使用ICL7135也可以实现对付电压的测量(3)数据处理及控制模块在数据处理及控制模块中,主要通过89C52将A/D 转换后的信号处理,送到单片机某一端口中,用于显示。

(4)数据显示模块在输出显示模块中,采用LCD1602液晶屏,本次设计开始时选用数码管和发系统基本方框图光二极管用于显示输入电压值,但是在进行PCB 板布线和布局时,发现连接线较多,焊接的时候过于复杂。

采用LCD1602液晶屏显示,连接线较少,控制较方便。

而且采用LCD1602液晶显示可以显示电压值的单位以及当前的电压测量档位。

综上所述,经讨论决定使用LCD1602液晶显示屏进行数据显示。

(5) 电路总体设计框架二、硬件电路设计1、数据输入模块电路设计在下图中的主要元件有:三个分压电阻以及开关等等在上图中我们可以看到,输入测量电压从最左端的CON口输入,先经过电阻分压,在这里选择的是9M,900K,,100K阻值的电阻,可以计算知道通过这三个电阻的分压,各个开关闭合后各通道的输入电压值。

把50V,20V,2V档位的信号,经过相对应的运算放大器得到合适的信号接到A/D输入端检测。

2、运算放大电路及通道选择电路设计上图中通过运算放大器对输入信号进行合适的放大,通过开关选择输入AD转换器的输入信号的通道。

3、AD转换模块电路设计在图中,我们可以看到2个主要芯片,其中ICL7135,CD4024。

CD4024芯片[6]主要为ICL7135提供时钟脉冲,可见它的1号引脚CLK接单片机的ALE端,输入信号频率为2MHZ,而CD4024芯片为一个7段的二进制计数器,Q1输出相当于输入的二分频,而Q4端相当于输入信号的16分频,2MHZ/16=125KHZ,将此频率为125KHZ的信号接到ICL7135的时钟端。

ICL7135芯片为双积分A/D转换器。

其中1号引脚接-5V电压;2号引脚为基准电压输入端接1V电压,有5V分压,接稳压二极管得到;4脚为积分器输入端,接积分电容;5脚接自零电容; 6脚为缓冲器输出端,接积分电阻;7,8脚接基准电容; 9脚被测信号负输入端; 10脚被测信号正输入端;11脚+5V电源端;13~16脚(B1—B4)BCD码输出端接单片机的P1.0—P1.7口; 22脚CLK时钟信号输入端;23脚POL负极性信号输出端接单片机的P2.2口;24脚DGND数字地端;25脚为运行/读数控制端接单片机的1.6口;26脚STR数据选通输出端接单片机的INT0口;27脚OR超量程状态输出端接单片机的P1.4口;28脚UR 欠量程状态输出端接单片机的P1.5口。

此处需要注意的是,2号引脚为基准电压输入端,必须保证是标准的1V电压输入,而且必须稳定,由于此信号的轻微变化,都可以时输出有较大的变化,产生较大的误差。

4、单片机控制模块电路设计在下图中,可以看到控制芯片89C52,它的P2.0,P2.1,P2.2口接输入电路开关控制端,控制选择哪路信号作为A/D的输入信号; P1.7,P1.4,P1.5口接ICL7135的负极性信号输出端,超量程状态输出端,欠量程状态输出端,在这里我们可以通过判断P1.7口信号的高低电平,来判断输入信号的正负极性,为高电平说明输入信号为正,反之亦然,可以通过判断P1.4口信号的高低电平,来判断输入信号是否超出量程,为高电平说明输入信号已经超过A/D转换器所能测的信号的量程,反之表示信号输入正常;9脚接复位电路;18,19脚外接12MHZ 晶振;P2.7口接LCD1602的数据端,用于传输数据让液晶屏显示;30脚ALE输出2MHZ信号;P1.0-P1.3接ICL7135输出的BCD码4个端口;P1.6接ICL7135的使能端,控制A/D是否工作,当输出为高电平时,A/D处于连续转换状态;P2.5—P2.7分别接LCD1602的3个控制端,P3.3-P3.7接ICL7135的D1-D5输出端。

5、LCD1602液晶显示模块电路设计上图是用于显示的液晶屏LCD1602,其中3脚VL用于调节显示的对比度,接1K电阻接地;4脚RS为它的数据,指令选择端接单片机的P2.6口;5脚RW为它的读写控制端,接单片机的P2.7口;6脚E为它的使能端,接单片机的P2.8口;7—14脚为它的数据,指令传送端;15,16脚接+5V和地提供背光灯。

三、系统软件流程设计1、系统主程序流程框图2、系统部分程序如下:void L1602_init(void){enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);}void L1602_char(uchar hang,uchar lie,uchar dat) {uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);write(dat);}void display1(){L1602_char(1, 10, 0x30+data5);L1602_char(1, 12, 0x30+data4);L1602_char(1, 13, 0x30+data3);L1602_char(1, 14, 0x30+data2);}void display2(){L1602_char(1, 10, 0x30+data5);L1602_char(1, 11, 0x30+data4);L1602_char(1, 13, 0x30+data3);L1602_char(1, 14, 0x30+data2);}void display3(){L1602_char(1, 10, 0x30+data5);L1602_char(1, 11, 0x30+data4);L1602_char(1, 12, 0x30+data3);L1602_char(1, 14, 0x30+data2);}void L1602_string(uchar hang,uchar lie,uchar *p) {uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);while(1)if(*p == '\0') break;write(*p);p++;}}void Main(){EA=1;IT0=1;EX0=1;adstart=1; //开启A/DL1602_init();L1602_string(1,1," watting ");while(1){Key_Scan();}}void int0() interrupt 0{while(!D5);data5=redata(d_1,d_2,d_4,d_8);while(!D4);data4=redata(d_1,d_2,d_4,d_8);while(!D3);data3=redata(d_1,d_2,d_4,d_8);while(!D2);data2=redata(d_1,d_2,d_4,d_8);while(!D1);data1=redata(d_1,d_2,d_4,d_8);while(stb==0);}四、系统调试结果1、系统能正常工作,测量精度已超出预期的目标,测量数据如下2ICL7135具有自动极性转换功能。

相关主题