数字电压表设计与制作

合集下载
  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 〈intrins。h>

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)

{

tmel=0;

sim=1;

}

2 AD0832AD转换子程序

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

AD0832AD转换子程序

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

sbit bADcs=P2^2; //片选位

sbit bADcl=P2^1; //时钟位

sbit bADda=P2^0; //数据位

void ad(void)

{ uchar i;

bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,开始工作CS为低电平

bADcl=0; //第一个时钟下降沿前da为1,第二个及第三时钟下降沿前的数据为通道选择

bADda=1; //选置起始位

bADcl=1;

bADcl=0; // 1down

bADda=1; //通道选择第1位

bADcl=1;

bADcl=0;// 2 down

相关文档
最新文档