数字电压表毕业设计

更新时间:2024-04-29 18:50:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计

摘要:

本文介绍的是数字电压表的发展背景和利用单片机,A/D转换芯片结合的方法设计一个直流数字电压表。它的具体功能是:最高量程为200V,分三个档位量程,即2V,20V,200V,可以通过调档开关来实现各个档位。当测得电压的数值小于1V时,系统会自动的将电压数值转换为以mV为电压单位的电压值。并且通过按键的方法能够测得后五秒的平均电压值。

1

目录

一.数字电压表简介:................................................................................................................... 3 二.数字电压设计两种方案简介: ............................................................................................... 4

1.由数字电路及芯片构建。 ................................................................................................. 4 2.由单片机系统及A/D转换芯片构建。 ............................................................................. 5 三.单片机简介及本设计单片机的选择 ....................................................................................... 5

1.常用单片机的特点比较及本设计单片机的选择 ............................................................. 5 2.本设计使用的单片机的简介 ............................................................................................. 6 四.各种显示器件的介绍和选择................................................................................................... 7

1.常用显示器件简介............................................................................................................. 7 2.1602液晶的参数资料........................................................................................................ 8 五.模数(A/D)转换芯片的选择 .............................................................................................. 10

1.常用的A/D芯片简介....................................................................................................... 10 2.模数(A/D)芯片TLC2543的资料 ................................................................................ 11 六.总体设计 ................................................................................................................................ 13 七.硬件电路系统模块的设计..................................................................................................... 14 八.系统软件的设计 .................................................................................................................... 18

1.汇编语言和C语言的特点及选择 ................................................................................... 18 2.主程序设计....................................................................................................................... 18 九.系统的调试 ............................................................................................................................ 29

1. 硬件调试 ..................................................................................................................... 29 2. 软件调试 ..................................................................................................................... 30 十.总结 ........................................................................................................................................ 30 参考文献 ........................................................................................................................................ 31

2

一.数字电压表简介:

数字电压表出现在50年代初,60年代末发起来的电压测量仪表,简称DVM,

它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测理仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦锁和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。

如今,数字电压表已绝大部分已取代了传统的模拟指针式电压表。因为传统

的模拟指针式电压表功能单一,精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化仪表,自动测试系统等智能化测量领域。显示出强大的生命力。

数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采

样速度慢,重量达几十公斤,体积大。继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点是抗干扰能力差,很容易受到外界各种因素的影响。随后,在斜波式的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达1NV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。

目前实现电压数字化测量的方法仍然模-数(A/D)转换的方法。而数字电压

3

表种类繁多,型号新异,目前国际仍未有统一的分类方法。而常用的分类方法有如下几种:

1.

按用途来分:有直流数字电压表,交、直流数字电压表,交直流万用表等。

2. 3. 4.

按显示位数来分:有4位,5位,6位,7位,8位等。 按测量速度来分:有低准确度,中准确度,高准确度等。 按测量速度来分:有低速,中速,高速,超高速等。

但在日常生活中,数字电压表一般是按照原理不同进行分类的,目前大致分为以下几类:比较式,电压——时间变换式,积分式等。

在电量的测量中,电压、电流和频率是最基本的三个被测量。其中,电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受用户青睐,数字式电压表就是基于这种需求而发展起来的,是一种必不可少的电子测量仪表。

二.数字电压设计两种方案简介:

设计数字电压表有多种的设计方法,方案是多种多样的,由于大规模集成电路数字芯片的高速发展,各种数字芯片品种多样,导致对模拟数据的采集部分的不一致性,进而又使对数据的处理及显示的方式的多样性。又由于在现实的工作生活中,电压表的测量测程范围是比较大的,所以必须要对输入电压作分压处理,而各个数据处理芯片的处理电压范围不同,则各种方案的分段也不同。下面介绍两种数字电压表的设计方案。 1.由数字电路及芯片构建。

这种设计方案是由模拟电路与数字电路两大部分组成,模拟部分包括输入放大器、A/D转换器和基准电压源;数字部分包括计数器、译码器、逻辑控制器、

4

振荡器和显示器。其中,A/D转换器是它的核心器件,它将输入的模拟量转换成数字量。模拟电路和数字电路是相互联系的,由逻辑控制电路产生控制信号,按规定的时序将A/D转换器中个组模拟开关接通或断开,保证A/D转换正常进行。A/D转换结果通过计数译码电路变换成段码,最后驱动显示器显示出相应的数值。此方案设计其优点是,设计成本低,能够满足一般的电压测量。但设计不灵活,都是采用纯硬件电路。很难将其在原有的基础上进行扩展。 2.由单片机系统及A/D转换芯片构建。

这种方案是利用单片机系统与模数转换芯片、显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出许多的应用电路来。此方案的原理是模数(A/D)转换芯片的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换芯片将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电压的值。最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以显示。

此方案不仅能够继承上一种方案的各种优点,还能改进上一种设计方案设计不灵活,难与在原基础上进行功能扩展等不足。

三.单片机简介及本设计单片机的选择

1.常用单片机的特点比较及本设计单片机的选择

综合上一章提到的两种设计方案的各方面优点及其在现在的所设计电压表的实用性,我们选择第二种电压表设计方案,即由单片机系统及数字芯片构建的方法来我们本次设计。

5

综合上述几种A/D转换芯片的特点,前两种芯片的性能和精度都不如第三种芯片。在本设计中,我们的目标是设计高精度的电压表,因此在此,我们选择精度为12位的TLC2543芯片。

2.模数(A/D)芯片TLC2543的资料

综合本设计的各方面考虑,我们选了TLC2543模数转换芯片。下面就介绍此芯片的各方面资料。

TLC2543芯片的封装引脚图和引脚说明如下:

引脚说明: 引脚号 名称 I/O 说明 模拟输入端。 片选端。 1-9,11,12 AIN0-AIN10 I 15 ~CS I 11

17 16 19 10 18 14 13 20 。

Data input I Data out EOC GND I/O clk REF+ REF- VCC O O I I I 串行数据输入端。 用于A/D转换结果输也的3态串行输出端 转换结束端 接地端 输入/输出时钟端 正基准电压端 负基准电压端 正电压端 各引脚的使用详细介绍。

1.AIN0-AIN10这11个模拟信号输入由内部多路选器选择。对4.1MHZ的I/O clk,驱动源阻抗必须小于或等于50欧并且能够将模拟电压由60PF的电容来限制其斜率。

2.在CS端的一个由高低低变化将复位内部计数器并控制使能data out,data input和I/O clk。一个由低至高的变化将在一个设置时间内禁止data input和I/O clk.

3.串行数据输入端data input是一个4位的串行地址选择下一个即将被转换的所需的模拟输入或测试电压。串行数据以MSB为前导并在I/O clk的前4个上升沿被移入。在4个地址位被读入地址寄存器后,I/O clk 将剩下的几位依次输入。

4.Data out在CS为高时处于高阻抗状态,而当CS为低时处于激活状态。CS一旦有效,按照前一次转换结果的MSB/LSB值将data out从高阻抗状态转变成相应的逻辑电平,I/O clk 的下一个下降沿将根据下一个MSB/LSB将data out驱动成相应的逻辑电平,剩下的各位依次移出。

5.EOC在最后的I/O clk 下降沿之后,从高电平变为低电平并保持低直到转换完成及数据准备传输。

6.GND端是内部电路的地回路端,除加有说明外,所有电压测量都相对于GND

12

7.I/O clk端串行输入并完成以下四个功能:第一,在I/O clk的前8个上升沿,它将8个输入数据信键入输入数据寄存器。在第4个上升沿之后为多路器的地址。第二,在I/O clk的第4个下降沿,在选定的多路器的输入端上的模拟输入电压开始和电容器充电并继续到I/O clk的最后一个下降沿。第三,它将前一次转换的数据的其余11位移出data out端。在I/O clk的下降沿时数据变化。第四,在I/O clk的最后一个下降沿它将转换的控制信号传送到内部的状态控制位。

8.REF+端通常接VCC,最大输入电压范围取决于加于本端与加于REF-端的电压差。

9.REF-端通常接地。

六.总体设计

1.技术要求: 1)最高量程为:200V。

2)分为三档量程:2V,20V,200V。可以通过调档开关实现各档位。最高精度为0.01mv。

3)被测电压的电压值小于1V时,有自动换以MV为单位显示。 4)通过按键可以显示5秒的平均电压的电压值。

2.设计方案:

根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:AT89C51单片机,TLC2543模数转换芯片,1602液晶显示器,开关,按键,电容,电阻,晶振,标准电源等等。 设计的基本框图如下:

13

1602液晶显示模块 A/D转换模块 单片机系统模块 输入电路模块 按键模块

七.硬件电路系统模块的设计

根据上述选择的各元器件,各电路模块的电路图如下描述。 1.单片机系统

单片机最小系统包括晶振电路,复位电路,电源。其原理图如下:

14

此模块中,单片机的晶振是12MHZ,C1和C2的电容是10UF,C3可选1-10UF。R1电阻为1K。

2.输入电路

由于输入电路的电压比基准电压(2V)高很多,因此在输入电路必须加电压衰减器。衰减电路可由开关来选择不同的衰减率,从而切换档位。 则完整输入电路如下:

15

通过计算,可知设计衰减器用的电阻R2,R3和R4分别为:9M,900K,100K控制档位的开关是双开关的,目地是能够使单片机CPU自动识别档位,即可用相应的档位的数据转换的算法计算出正确的电压值。被测电压输入端、整理过的模拟电压输入端,开关与单片机的连接如图所示。 3.A/D转换芯片与单片机的连接

此设计中选择的是A/D转换芯片的通道0,A/D芯片的数据输入口连接单片机的P1.3口,数据输出口连接单片机的P1.4口,芯片使能端连接单片机的P1.5口,脉冲端连接单片机的P1.6口。模块连接如下图所示。

16

4.1602液晶与单片机连接

此模块液晶的RS,RW和E端分别连接单片机的P1.2,P1.1和P1.0口;液晶的数据各端口连接单片机的P0口。具体如下图所示。

5.

键盘与单片机的连接如下。

17

此键盘的一端与单片机的P2.0口连接,另一端接地。原理图如下所示。

该键盘的功能:当键盘被按下时,即可计算后5秒的平均电压值。

八.系统软件的设计

1.汇编语言和C语言的特点及选择

本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高。执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。

由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。

2.主程序设计

主程序设计包括以下方面: 按照硬件电路对单片机位定义。

18

编写延时模块程序。

编写驱动1602液晶显示模块程序。 编写驱动A/D转换模块程序。 编写键盘扫描模块程序。

主程序的总体流程如下图:

开始 对液晶,定时器初始化 A/D转换 数据转换 显示5秒键盘判断 的平均电压值 显示瞬时3秒后电压值 清屏

全部软件程序如下:

#include

#define uchar unsigned char #define uint unsigned int

#define key_state0 0 //键盘扫描的各个状态

19

#define key_state1 1 #define key_state2 2 #define key_state3 3

sbit rs=P1^2;//1602液晶写命令/数据标志,0时写命令 sbit rw=P1^1;//1602液晶写入/读出标志,0时写入数据 sbit ep=P1^0; sbit input=P1^4; sbit output=P1^3; sbit cs=P1^5; sbit clk=P1^6; sbit key=P2^0;

sbit flag_1=P2^1;//定义电压表档位相关标志 sbit flag_2=P2^2; sbit flag_3=P2^3; sbit flag_4=P2^4;

uchar code tab0[]=\显示的单位及有关的字符 uchar code tab1[]=%uchar code tab2[]=\

uchar code tab3[]=\平均电压值标志符 uchar t;

void delay(int z)//延时函数 { int x,y; for(x=z;x>0;x--)

for(y=10;y>0;y--);

}

20

void write_com(uchar com)//往1602液晶写命令函数 { rs=0; P0=com; delay(5); ep=1; delay(5); ep=0;

}

void write_dat(uchar dat)//往1602液晶写数据函数 { rs=1; P0=dat; delay(5); ep=1; delay(5); ep=0; }

void init_1602()//对1602液晶的初始化函数 {

rs=0; rw=0; 21

}

write_com(0x38); delay(1); write_com(0x0c); delay(1); write_com(0x06); delay(1); write_com(0x01); delay(1);

void init_timer0()//定时计数器0初值化函数, { }

void display(uchar x,uchar y,uint dat)//显示电压值的函数,x行y列开始显示 {

uint add; uchar i,a[5]; TMOD=0x01;//方式一

TH0=(65536-50000)/256;//每50ms中断一次 TL0=(65536-50000)%6; IE=0x82;//打开中断 TR0=0;//定时器首先不可工作

22

write_com(add); add=add+y; }

case 1:add=0x80+0x40;break; switch(x) {

case 0:add=0x80;break;

for(i=0;i<5;i++)

{ }

a[i]=dat; dat=dat/10;

write_dat(a[4]+0x30); write_dat(a[3]+0x30); write_dat(a[2]+0x30); write_dat('.');

write_dat(a[1]+0x30); }

void display_zifu(uchar x,uchar y,uchar *str)//显示字符函数,x行y列开始显示

write_dat(a[0]+0x30);

23

{ uint add; switch(x) { case 0:add=0x80;break; case 1:add=0x80+0x40;break;

}

add=add+y; write_com(add); while(*str!='\\0') { write_dat(*str); str++;

}

}

uint read_AD(uchar con_way)//读取AD转换值操作函数{ uint dat=0; uchar i; cs=0; clk=0; con_way<<=4;

for(i=0;i<12;i++) 24

{

con_way<<=1;/*选择0通道,在输入该控制数据的同时输出前一次AD

转结果*/ input=CY;

dat<<=1;

if(output)/*输出AD转换结果*/

dat=dat|0x01;

delay(2); clk=1; delay(5); clk=0;

} cs=1; return dat;

}

uint read_value() { long float dq; long float dat_v;

dq=read_AD(0);//把读取得的AD转换值给变量dq

if(!flag_3)

dat_v=(200*dq)/4096*100;//二档,量程为200V else if(!flag_2)

dat_v=(20*dq)/4096*100;//二档,量程为20V

25

else if(!flag_1) dat_v=(2*dq)/4096*100;//一档,量程2V

return dat_v;

}

void read_key()//键盘扫描函数 { static uchar key_state=0; switch(key_state) { case key_state0: if(key==0)

key_state=key_state1;

break;

case key_state1: if(key==0) { TR0=1;

display_zifu(1,0,tab3);

key_state=key_state2;

} else

key_state=key_state0;

break;

case key_state2:

26

}

}

if(key)

key_state=key_state0;

break;

void main() {

long float dat;

long float dat_aver,dat1,dat2,dat3,dat4,dat5;//定义5个随机电压值

变量

uchar flag;//后五秒取随机电压的标志 init_timer0(); init_1602(); delay(10);

while(1) {

dat=read_value();

if(dat>=100)//当电压值大于1V时,用V显示,否则用mV显示 { }

display_zifu(0,1,tab2); display(0,7,dat); display_zifu(0,13,tab0);

27

else { display_zifu(0,1,tab2); display(0,7,dat*1000); display_zifu(0,13,tab1);

}

read_key(); //当键盘按下时,计算后五秒的平均电压值if(t==20) { t=0; flag++;

}

if(flag==1)

dat1=dat;

if(flag==2)

dat2=dat;

if(flag==3)

dat3=dat;

if(flag==4)

dat4=dat;

if(flag==5) { dat5=dat;

dat_aver=(dat1+dat2+dat3+dat4+dat5)/5;

display(1,7,dat_aver);

display_zifu(1,13,tab0); 28

}

dat_aver=0;

}

if(flag==8) {

flag=0;

write_com(0x01); TR0=0;

}

}

void timer0() interrupt 1//定时器中断函数 { }

TH0=(65536-50000)/256;//重新放入初始值 TL0=(65536-50000)%6; t++;

九.系统的调试

完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。调试分了硬件和软件调试。 1. 硬件调试

硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。

1)检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。检查开关/按键是否正常,是

29

否连接正确,为了保护芯片,应先对各IC座电位进行检查,确认无误后再插入芯片。

2)将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。 2. 软件调试

软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的。首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。

1)

检查液晶显示模块程序。在主程序中调用display()和dislay_zifu()函数,观察在1602液晶上是否能够显示相应的字符。如果不能,则在相关的子程序中设计断点,反复调试直到能够显示。

2)

检查按键模块程序。本设计的按键模块程序是用状态机的方法,可以在key_state1状态下加一个任务,如显示一个字符在液晶上。观察是否正确显示。

3)

检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察液晶上是否显示相应的电压值。

4)

检查数据的转换模块程序。可以拨动硬件电路的档位开关,输入相应的电压,观察液晶显示的电压值是否一致。如果一致。则数据转换的算法正确的。

5)

总调试。当相应的各模块环节都正确后,可程序下载到单片机。接上电源运行。再检查所有功能,观察是否能预期的一样。如果一样,说明设计成功完成。

十.总结

由于本设计使用的是高效的51系列单片机作为核心的测量系统,以及高精度,高速度,高抗干扰的A/D转换器。使得本直流电压表具体精度高,灵敏度强,

30

本文来源:https://www.bwwdw.com/article/zckg.html

Top