数字电压表的设计与制作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毕业设计(论文)

题目:数字电压表的设计与制作年级专业:电气自动化14321班

学生姓名:秦小钧

指导教师:杨海蓉

2016年 10 月 13 日

毕业设计任务书

毕业设计题目:数字电压表的设计与制作

题目类型工程设计题目来源学生自选题

毕业设计时间从 2016/09/25 至 2016/10/13

1.毕业设计内容要求:

采用AT89S52作MCU,ADC0809(或其他芯片)进行AD转换,测量电压的范围为直流0-5V 电压,四位数码管显示。

2.主要参考资料

[1]万福君,潘松峰.单片微机原理系统设计与应用[M],中国科学技术大学出版社,01年8月第2版

[2]周责魁. 控制仪表与计算机控制装置[M] ,化学工业出版社,02年9月第1版

[3]李青. 电路与电子技术基础[L] ,浙江科学技术出版社,05年2月第1版

[4]陈乐. 过程控制与仪表[M], 中国计量学院出版社,07年3月

[5]孙育才. 新型AT89S52系列单片机及其应用[M] ,清华大学出版社,05年5月第1版3.毕业设计进度安排

摘要

本设计由A/D转换、数据处理及显示控制等组成,测量0~5V范围内的输入电压值,由4位共阳8段数码管扫描显示,最大分辨率0.1V,误差±0.05V。数字电压表的核心为AT89S52单片机和ADC0832 A/D转换集成芯片。

关键词:数字电压表;单片机;AT89S52; ADC0832

第一章设计方案的选择

1.1功能要求及设计目标

采用AT89S52作MCU,ADC0809(或其他芯片)进行AD转换,测量电压的范围为直流0-5V电压,四位数码管显示。(设计并制作出实物为优).

1.2 系统设计方案

AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器

AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash 存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

AT89S5与AT89c52相比,前者的性能比后者高,所以本设计采用AT89S52芯片。

数模转换芯片:

ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换,转换时间为100μs。

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

由于ADC0832芯片的转换时间短,并且性能比较高,所以采用ADC0832作为数模转换芯片.

1 选择AT89S5

2 作为控制芯片

2 选择ADC0832芯片来进行模数转换

3 选择GEM5461GE 四位一体的共阳数码管来显示数字

4 用9012三极管来作为驱动电路,使GEM5461GE 四位一体的共阳数码工作.

5 用SW1按键作为复位按键,实现复位电路的功能。

第二章数字电压表系统设计

2.1 硬件系统的设计

2.1.1 硬件原理框图

图2-1硬件原理框图

2.1.2硬件系统设计原理

硬件设计原理:电阻R11上的电压经过ADC0832芯片进行模数转换后,由AT89S52芯片的P1口连接到驱动电路,当驱动电路工作使数码管显示前面转换过来的数字。

复位电路和晶振电路的设计

在接通电源后,当按下SW1后AT89S52不工作,使数码管全部变暗,当SW1一松开后AT89S52工作,数码管又变亮。晶振电路中的两个30pF的电容具有微调的作用.

2.2软件系统设计

2.2.1程序流程图

图2-3程序流程图

2.2.2编写程序

1 1,0选通道0

bADcl=1;

bADcl=0; // 3 down

bADda=1;

bADcl=1;

bADcl=0; // 4 down数码管显示程序

//数字电压表

#include

#define uchar unsigned char

#define uint unsigned int

#include

code uchar TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数码管显示数值

uchar str_TME[4]={0,0,0,0,}; //定义数码管显示初始值

unsigned char data1; //data1用来存放转换以后的数据

void delay(uchar ms) //定义ms延迟程序

{

uchar j;

while(ms--)

for(j=0;j<125;j++);

}

uchar tmel=0;

bit sim=1;

/***********************计数器中断函数,用于控制电压转*********************

*******************时间间隔,此程序设定间隔为1S电压转换一次***************/

void tme_tr0(void) interrupt 1

{

TL0=0x58;

TH0=0x9e; //设置25ms 延时的初值

if(++tmel==40)

{

相关文档
最新文档