冷静基于单片机的数字电压表设计Word文档下载推荐.docx

上传人:b****2 文档编号:3216378 上传时间:2023-05-01 格式:DOCX 页数:13 大小:262.56KB
下载 相关 举报
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第1页
第1页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第2页
第2页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第3页
第3页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第4页
第4页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第5页
第5页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第6页
第6页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第7页
第7页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第8页
第8页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第9页
第9页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第10页
第10页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第11页
第11页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第12页
第12页 / 共13页
冷静基于单片机的数字电压表设计Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

冷静基于单片机的数字电压表设计Word文档下载推荐.docx

《冷静基于单片机的数字电压表设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《冷静基于单片机的数字电压表设计Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

冷静基于单片机的数字电压表设计Word文档下载推荐.docx

1、题目:

多路数字电压表

2、利用单片机AT89C52与ADC0809CCN设计一个多路数字电压表,能够测量0~5V的直流电压值,通过四位数码管显示。

二、主要技术要求:

1、单片机的定时中断技术

2、数字芯片A\D转换技术

3、单片机的数据处理技术

4、单片机控制的数码管显示技术

三、硬件设计思想和原理图

1系统总体设计框图

本系统采样CT89C52单片机作为控制核心,以ADC0809CCN为数据采样系统,实现被测电压的数据采样;

使用系列比较器检测输入电压的范围,用共阴极数码管显示结果。

显示电路

输入电压

52单片机

极性检测

AD转换

电压检测

2单片机系统

单片机最小系统包括复位电路,晶振电路,电源电路,仿真时需搭建复位电路和晶振电路。

晶振电路:

单片机最小系统如下所示,其中P1口用于驱动数码管,P0口用于接收ADC0809转换的数据。

P2口用于控制ADC0809CCN。

单片机最小系统:

3A\D转换电路

利用ADC0809作为AD数据采样器件,ADC0809是CMOS单片型逐次逼近式A/D转换器它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近。

ADC0809的工作过程是:

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

 

  ADC0809各个管教功能:

IN0~IN7:

8路模拟量输入端。

  2-1~2-8:

8位数字量输出端。

  ADDA、ADDB、ADDC:

3位地址输入线,用于选通8路模拟输入中的一路

ALE:

地址锁存允许信号,输入,高电平有效。

  START:

A/D转换启动信号,输入,高电平有效。

  EOC:

A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

  OE:

数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

  CLK:

时钟脉冲输入端。

要求时钟频率不高于640KHZ。

  REF(+)、REF(-):

基准电压。

  Vcc:

电源,单一+5V。

      GND:

地。

ADC0809与单片机的连接。

4信号调理模块

   该部分主要实现的功能是自动量程切换和电压变换,模块主要由电压极性检测电路、电压范围粗测电路、电压变换电路三部分组成。

电压极性检测电路

  电压极性检测电路采用过零比较器检测负电压的方式实现的,运算放大器LM324的反向端接地,同向端通过100K电阻接输入信号。

电压范围粗测电路

  为了粗略地得到被测量的电压范围我们采用多组比较器的方式,通过阶梯式比较的方法确定输入电压的范围。

量程切换电路

  电路由衰减电阻、切换继电器和运算放大器组成,对应的是衰减1/2、1/3、1/4和无零漂放大50倍,切换电路如图所示。

电压变换到0-5V标准信号后,再由A/D转换进行采样,最后由单片机算法还原。

四、软件设计与流程

1程序流图

   软件部分采用模块化程序设计的方法,由单片机控制主程序、A/D转换子程序、电压检测及继电器控制程序、液晶显示组成。

系统软件设计是在KeilC编译环境下进行的,由于C语言程序可移植性好,所以提高了编程的效率。

软件程序流程图:

2功能介绍

  P0首先接收数据,据此控制PC6,PC7实现电压转换,保证正电压输出。

PB0,PB1,PB2,PB3,PA6的输入值通过PA1,PA2,PA3,PA4,PA5控制继电器1,2,3,4,5实现电压增减并输入A/D转换器MAX187进行测量。

最后输入PB4,PB6,PB7并由P1输入数码管显示。

五、软件仿真及测试数据

1仿真结果

  将写好的程序下载到仿真软件中的51单片机中,点击运行,观察数码管显示数值与图中输入电压进行比较。

理解其误差有多大。

由于仿真软件缺少相应器材,故而未能进行彻底仿真。

总体电路图:

              

参考文献

1、陈汝全《微机与单片机接口技术及应用》成都电讯工程学院出版社。

2、诸林俗《电子技术基础》中国劳动社会保障出版社。

3、张志良,马彪《单片机原理与控制技术》机械工业出版。

4、陈伟人《单片微型计算机原理及应用》清华大学出版社。

5、沈任元,吴勇《常用电子元器件简明手册》机械工业出版。

6、霍国良《微控制器应用基础》中国劳动社会保障出版社

7、谢维成《单片机原籍与应用及C51程序设计》清华大学出版社。

附录

主程序:

#include<

reg52.h>

Unsigned char codedispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedchardispbuf[4];

unsignedinti;

unsignedintj;

unsignedchargetdata;

unsignedinttemp;

unsignedinttemp1;

unsignedcharcount;

unsignedchard;

sbitST=P3^0;

sbitOE=P3^1;

sbitEOC=P3^2;

sbitCLK=P3^3;

sbitP20=P2^0;

sbitP21=P2^1;

sbitP22=P2^2;

sbitP23=P2^3;

sbitP17=P1^7;

voidTimeInitial();

voidDelay(unsignedinti);

voidTimeInitial()

{TMOD=0x10;

TH1=(65536-200)/256;

TL1=(65536-200)%256;

EA=1;

ET1=1;

TR1=1;

}

voidDelay(unsignedinti)

{

unsignedintj;

for(;

i>

0;

i--)

{

for(j=0;

j<

125;

j++)

{;

}

voidDisplay()

{

P1=dispbitcode[dispbuf[3]];

P20=0;

P21=1;

P22=1;

P23=1;

Delay(10);

P1=0x00;

P1=dispbitcode[dispbuf[2]];

P17=1;

P20=1;

P21=0;

P1=dispbitcode[dispbuf[1]];

P22=0;

P1=dispbitcode[dispbuf[0]];

P23=0;

voidmain()

TimeInitial();

while

(1)

ST=0;

OE=0;

ST=1;

while(EOC==0);

//查询转换结束

OE=1;

getdata=P0;

temp=getdata*1.0/255*500;

dispbuf[0]=temp%10;

dispbuf[1]=temp/10%10;

dispbuf[2]=temp/100%10;

dispbuf[3]=temp/1000;

Display();

voidt1(void)interrupt3using0

CLK=~CLK;

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

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2