单片机AD转换实验报告

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

单片机实验报告(五)
实验名称:A/D转换
姓名:张昊
学号:110404247
班级:通信2班
时间:2013.12
南京理工大学紫金学院电光系
一、实验目的
1、理解A/D转换的工作原理;
2、理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法;
3、学习使用并行模/数转换芯片ADC0809进行电压信号的采集和数据处理。

二、 实验原理
在设计A/D 转换器与单片机接口之前,往往要根据A/D 转换器的技术指标选择A/D 转换器。

A/D 转换器的主要技术指标-----量化间隔和量化误差是A/D 转换器的主要技术指标之一。

量化间隔可用下式表示,其中n 为A/D 转换器的位数:
A/D 转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D 转换器;按其分辨率可分为8~16位的A/D 转换器芯片。

目前最常用的是逐次逼近式和双重积分式。

A/D 转换器与单片机接口具有硬、软件相依性。

一般来说,A/D 转换器与单片机的接口主要考虑的是数字量输出线的连接、ADC 启动方式、转换结束信号处理方法以及时钟的连接等。

一个ADC 开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。

不同型号的ADC ,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种:
对于脉冲启动型ADC ,只要给其启动控制端上加一个符合要求的脉冲信号即可,如ADC0809、ADC574等。

通常用WR 和地址译码器的输出经一定的逻辑电路进行控制;
对于电平启动型ADC ,当把符合要求的电平加到启动控制端上时,立即开始转换。

在转换过程中,必须保持这一电平,否则会终止转换的进行。

因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用D 触发器、锁存器或并行I/O 接口等来实现。

AD570、AD571等都属于电平启动型ADC 。

当ADC 转换结束时,ADC 输出一个转换结束标志信号,通知单片机读取转换结果。

单片机检查判断A/D 转换结束的方法一般有中断和查询两种:
对于中断方式,可将转换结束标志信号接到单片机的中断请求输入线上或允许中断的I/O 接口的相应引脚,作为中断请求信号;
对于查询方式,可把转换结束标志信号经三态门送到单片机的某一位I/O 口线上,作为查询状态信号。

A/D 转换器的另一个重要连接信号是时钟,其频率是决定芯片转换速度的基准。

整个A/D 转换过程都是在时钟的作用下完成的。

A/D 转换时钟的提供方法有两种:一种是由芯片内部提供(如AD574),一般不许外加电路;另一种是由外部提供,有的用单独的振荡电路产生,更多的则把单片机输出时钟经分频后,送到A/D 转换器的相应时钟端。

ADC0809与单片机接口
22∆==量化间隔绝对误差11100%2n +=⨯相对误差
三、实验内容
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define PIN0 XBYTE[0X7FF8]
bit flag;;
typedef unsigned char byte;
typedef unsigned int word;
byte k2,kl,i;
float result=0;
float result_reg;
unsigned char code
tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3e,0x31, 0x6e,0xff};
int a,b,c,d,e,r;
void delay(word i)
{
word j=0;
while (j<i)
j++;
}
void panduan()
{
PIN0=0xFF;
while(!INT0);
result_reg=PIN0;
result=result_reg*5/255;
}
void display(int a,b,c)
{
P1=0x00;
P2=0xf4;
P1=tab[c];
delay(100);
P1=0x00;
P2=0xf2;
P1=tab[b];
delay(100);
P1=0x00;
P2=0xf1;
P1=tab[a]+0x80;
delay(100);
P1=0x00;
}
void main(void)
{
while(1)
{
panduan();
r=result*100;
a=r/100;
b=(r-a*100)/10;
c=(r-a*100)%10;
display(a,b,c);
}
}
电路连线图
四、小结与体会
在这次的实验中,我成功的理解掌握了ADC0809的A/D转换原理和并行A/D转换器接口的编程方法,也学习了并行模/数转换芯片ADC0809进行电压信号的采集和数据处理的使用方法。

相关文档
最新文档