简易数字电压表的设计论文.docx

上传人:b****7 文档编号:9509850 上传时间:2023-02-05 格式:DOCX 页数:17 大小:172.84KB
下载 相关 举报
简易数字电压表的设计论文.docx_第1页
第1页 / 共17页
简易数字电压表的设计论文.docx_第2页
第2页 / 共17页
简易数字电压表的设计论文.docx_第3页
第3页 / 共17页
简易数字电压表的设计论文.docx_第4页
第4页 / 共17页
简易数字电压表的设计论文.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

简易数字电压表的设计论文.docx

《简易数字电压表的设计论文.docx》由会员分享,可在线阅读,更多相关《简易数字电压表的设计论文.docx(17页珍藏版)》请在冰豆网上搜索。

简易数字电压表的设计论文.docx

简易数字电压表的设计论文

2.1ATMEL89C51单片机系统和显示电路3

2.2A/D转换电路4

3系统软件设计5

3.1初始化程序5

3.2A/D转换子程序5

3.3显示子程序6

4系统安装调试及结果14

4.1系统安装调试14

4.1.1电路焊接14

4.1.2程序下载及程序下载14

4.2系统调试结果14

4.2.1调试所用工具14

4.2.2记录测试数据14

5总结15

6致谢15

7注释

8参考文献

 

简易数字电压表的设计

【内容摘要】此在现代检测技术中,常需用高精度数字电压表进行现场检测,将检测到的数据送入微计算机系统,完成计算、存储、控制和显示等功能。

本文中的数字电压表的控制系统采用ATMEL89C51单片机,A/D转换器采用TLC549为主要硬件,实现数字电压表的硬件电路与软件设计。

该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化。

【关键词】数字单片机;数字电压表;A/D转换;模拟信号

1引言

数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

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

与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

 

2系统硬件设计

硬件电路设计主要包括:

ATMEL89C51单片机系统,A/D转换电路,显示电路。

图2-1是数字电压表硬件电路原理图。

图2-1数字电压表硬件电路原理图

2.1ATMEL89C51单片机系统和显示电路

由于单片机体积小、重量轻、价格便宜,所以本系统采用ATMEL89C51单片机,其原理图如图1所示。

89C5l的P1、P3.0~P3-3端口作为四位LED数码管显示控制。

P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。

P0端口作TLC549的A/D转换数据读入用,P2端口用作TLC549的A/D转换控制。

ATMEL89C51的性能特点:

  ·4K字节可编程闪烁存储器

  ·寿命:

1000写/擦循环

  ·数据保留时间:

10年

  ·全静态工作:

0Hz-24MHz

  ·三级程序存储器锁定

  ·128×8位内部RAM

  ·32可编程I/O线

  ·两个16位定时器/计数器

  ·5个中断源

  ·可编程串行通道

  ·低功耗的闲置和掉电模式

  ·片内振荡器和时钟电路

2.2A/D转换电路

图2-2TLC549A/D转换原理图

D/A转换电路就是将数字信号转换成模拟信号的电路。

数据转换精度和转换速度是衡量D/A转换器的重要指标。

A/D转换由集成电路TLC549完成。

TLC549A/D转换电路如图2所示。

TLC549具有8路模拟信号输入端口,地址线(23~25脚)可决定对哪一路模拟信号进行A/D转换。

22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。

6脚为测试控制,当输入一个2s宽高电平脉冲时,就开始A/D转换。

7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。

9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。

l0脚为0809的时钟输入端,利用单为0809的时钟输入端,利用单片机30引脚的六分频晶振频率再通过14024Z分频得到1MHz时钟。

3系统软件设计

图3-1主程序图图3-2A/D转换测量程序

3.1初始化程序

系统上电,初始化程序将70H~77H内存单元清0,P2口置0。

系统默认为循环显示8个通道的电压值,当进行一次测量后,将显示每一通道的A/D转换值,每个通道显示时间为1S。

70H~77H内存单元存放采样值,78H~7BH内存单元存放显示数据,依次为个位、十位、百位、通道标志位。

3.2A/D转换子程序

A/D转换子程序用来控制对0809/k路模拟输入电压的A/D转换,并将对应的数值存入70H~77H内存单元。

3.3显示子程序

显示子程序采用动态扫描实现四位数码管的数值显示。

测量数据在显示时需转换成BCD码放在78H~7BH内存单元中,其中7BH存放通道标志数。

R3作为8路循环控制,R0用作显示数据指针。

程序代码如下:

/*******************************************************************/

*文件名:

tlc549.c

*主要功能:

应用IIC总线读取tlc549模数转换后的电压值

*时钟:

11.0592MHz

********************************************************************/

 

#include

#include

#include

#include<164.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

//sbitsda=P0^2;

//sbitscl=P0^3;

sbitTlc549_CLK=P2^5;

sbitTlc549_DATA=P2^6;

sbitTlc549_CS=P2^7;

voiddelay_us(uintx);

voidshift(unsignedcharfunction,intb);

voidled_display();

//ucharAD_convert();

intTLC549_OUTPUT();

/*constcharled_code[19]={0x11,0xd7,0x32,0x92,0xd4,//0,1,2,3,4

0x98,0x18,0xd3,0x10,0x90,//5,6,7,8,9

0x50,0x1c,0x39,0x16,0x38,0x78,//a,b,c,d,e,f

0xfe,0xef,0xff};//-dotdark

 

/*******************************************************************/

*名称:

voiddelay_us(uintx)

*功能:

延时

*输入:

NULL

*全局变量:

NULL

*返回值:

NULL

*调用:

NULL

*说明:

通过改参数X来改变延时的时间

********************************************************************/

voiddelay_us(uintx)

{

uinti;

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

{

_nop_();

}

}

 

/********************************************************************

*名称:

voidshift(ucharn)

*功能:

把一个显示代码送入数码管显示

*输入:

NULL

*全局变量:

NULL

*返回值:

NULL

*调用:

NULL

*说明:

从最高位开始读入

********************************************************************/

/*

voidshift(ucharn)

{

ucharm,i;

m=led_code[n];

scl=0;

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

{

if(m&0x80)

{

sda=1;

}

else

{

sda=0;

}

scl=1;

scl=0;

m<<=1;

}

}

*/

/********************************************************************

*名称:

voidled_display(uintqian,ucharbai,ucharshi,ucharge)

*功能:

从tlc549读出一个字节数据

*输入:

NULL

*全局变量:

NULL

*返回值:

NULL

*调用:

voidshift(ucharn)

*说明:

把模数转换后得到的电压值调数码管显示

********************************************************************/

 

voidled_display()

{

ucharshi,ge;

uchardianya;

uintch;

volatilefloatSdata=0;

//dianya=AD_convert();

dianya=TLC549_OUTPUT();

Sdata=dianya*100/50.0;

ch=(uint)Sdata;

shi=ch/10%10;//取十位

ge=ch/100;//取个位

shift(0,18);

shift(0,18);

shift(0,18);

shift(0,18);

shift(0,18);

shift(0,18);

shift(0,shi);

shift(1,ge);

}

/********************************************************************

*名称:

ucharAD_convert()

*功能:

从tlc549读出一个字节数据(模数转换)

*输入:

NULL

*全局变量:

NULL

*返回值:

T1:

从tlc549中读出的数据

*调用:

NULL

*说明:

一个变量与数据口的数相或8次,就取走一个数据

********************************************************************/

ucharAD_convert()

{

ucharT1=0,i=0;

Tlc549_CLK=0;

Tlc549_CS=1;

delay_us

(2);

//delay(10);

Tlc549_CS=0;

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

{

T1=T1|Tlc549_DATA;

Tlc549_CLK=1;

delay_us

(2);

//delay(10);

Tlc549_CLK=0;

T1<<=1;

}

Tlc549_CS=1;

delay_us(3);

//delay(10);

returnT1;

}

/**************TLC初开始化****************************************/

voidTLC549_Init()

{

Tlc549_CS=1;

Tlc549_DATA=1;

Tlc549_CLK=0;

}

/**************TLC数据输出*****************************************/

intTLC549_OUTPUT()

{

unsignedinti,v=0;

Tlc549_CS=0;

Tlc549_CLK=0;

delay_us

(1);

for(i=8;i>0;i--)

{

v<<=1;

Tlc549_CLK=1;

delay_us

(1);

if(Tlc549_DATA)v|=0x01;

delay_us

(1);

Tlc549_CLK=0;

}

Tlc549_CS=1;

delay_us

(1);

return(v);

}

 

/********************************************************************

*名称:

voidmain()

*功能:

主函数

*输入:

NULL

*全局变量:

NULL

*返回值:

NULL

*调用:

NULL

********************************************************************/

intmain()

{

TLC549_Init();

//TLC549_OUTPUT();

while

(1)

{

led_display();

delay_us(10000);

}

return0;

/*while

(1)

{

shift(1,1);

shift(0,3);

shift(1,4);

shift(0,5);

delay_us(10000);*/

//}

}

4系统安装调试及结果

4.1系统安装调试

系统调试主要分三部分:

电路焊接,软件调试及程序下载。

4.1.1电路焊接

完成PCB板的制作后,在电路板上安装元件,并焊接。

经过将近三天的电路焊接,系统电路焊接基本完成。

4.1.2程序下载及程序下载

软件编程采用C语言和汇编语言设计,C语言在KeiluVision3开发环境和MicrosoftVisualC++开发环境下完成设计和编译。

在系统板以及各功能模块连接好后,将从PC机并口接上ISP下载线,给系统上电,并对系统板进行程序下载测试,51单片机支持ISP在线编程。

4.2系统调试结果

4.2.1调试所用工具

表1仪器设备使用说明

仪器设备名称

仪器设备型号

示波器

TDS2012型

万用表

DT9205A型

信号发生器

SPF40型

稳压电源

HH1733B2型

4.2.2记录测试数据

制作的作品按照课题设计要求,对各项指标进行测试,测量最大值+5V最小值0V,精确到0.1V。

5总结

通过这次课程设计的学习我学到了不少知识,并且进一步熟悉了做板的流程和仪器的使用,专业知识更加精深真的是受益匪浅啊。

制作过程也并不是一帆风顺的,我们也遇到了许多困难,但是我们通过上网查资料,图书馆内查阅书籍克服了这些困难并最终制作成功。

据调试和所测量数据,本系统采用ATMEL89C51单片机作为主控核心,按照设计要求,完成了数字电压表的设计。

该系统的数字电压表电路简单,所用的元件较少,成本低,设计简单,容易实现,适合于要求不同的电子技术应用领域。

6致谢

在本课题完成之际,我们的基础理论得到了进一步巩固和加深,同时在此基础上,我们掌握了仪器仪表的硬件设计原理和软件调试方法。

但这些都离不开我们身边的老师和同学的大力帮助与支持。

感谢彭宇林老师的帮助。

 

7注释

[J].北京:

北京航空航天大学出版社,2004.第172页.

8参考文献

[1]谢自美.点子线路设计·实验·测试(第三版)[J].西安:

华中科技大学大

学出版社,2006.

[2]谢自美.点子线路综合设计[J].北京:

华中科技大学出版社,2006.

 

Designofsimpledigitalvoltagemeter

RenkaiChenMiaoxin

[Abstract]:

Thisinmoderndetectiontechniques,theyoftenneedtousehigh-precisiondigitalvoltmeteron-sitetestingwilldetectthedataintothemicro-computersystems,completethecalculation,storage,controlanddisplayfunctions.ThefiguresinthisarticlevoltagemetercontrolsystemATMEL89C51microcontroller,A/DconvertersuseaTLC549asthemainhardware,thehardwareimplementationofdigitalvoltagemetercircuitandsoftwaredesign.Thesystem'sdigitalvoltmetercircuitissimple,usingfewercomponents,lowcost,regulationworkcanbeautomated.

[Keywords]:

Digitalmicrocomputer;digitalvoltmeter;A/Dconversion;analogsignal

 

附件

简易数字电压表实物图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1