单片机AD与DA转换实验报告

更新时间:2023-10-03 01:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

AD与DA转换实验报告

一. 实验目的

⑴ ⑵ ⑶ ⑷ ⑸ ⑹

掌握A/D转换与单片机接口的方法;

了解A/D芯片0809转换性能及编程方法; 通过实验了解单片机如何进行数据采集。 熟悉DAC0832 内部结构及引脚。 掌握D/A转换与接口电路的方法。

通过实验了解单片机如何进行波形输出。

二. 实验设备

装有proteus的电脑一台

三. 实验原理及内容 1. 数据采集_A/D转换

(1) 原理

①ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

②ADC0809引脚结构:

D7 ~ D0:8位数字量输出引脚。IN0 ~ IN7:8位模拟量输入引脚。 VCC:+5V工作电压。GND:地。

REF(+):参考电压正端。REF(-):参考电压负端。 START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换). EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 OE:输出允许控制端,用以打开三态数据输出锁存器。

CLK:时钟信号输入端(一般为500KHz)。 A、B、C:地址输入线。

C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 选择模拟通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7

(2) 内容和步骤

1.硬件电路设计: 设计基于单片机控制的AD转换应用电路。AD转换芯片采用ADC0809。ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接+5V电压。

2. 软件设计: 程序设计内容

(1) 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,经过数据处理之后在数码管上显示。

(2) 进行A/D转换之前,要启动转换的方法:

ABC=110选择第三通道。ST=0,ST=1,ST=0产生启动转换的正脉冲信号

2. D/A转换及数字式波形发生器

(1) 原理

典型D/A转换DAC0832芯片

DI7ICWXW8& & & L8L8位RFB VIIRAVDGN

V cc 芯片电源电压, +5V~+15V VREF 参考电压, -10V~+10V

RFB 反馈电阻引出端, 此端可接运算放大器输出端 AGND 模拟信号地 DGND 数字信号地

DI7~ DI0数字量输入信号。其中: DI0为最低位,DI7为最高位 ILE 输入锁存允许信号, 高电平有效 CS 片选信号, 低电平有效 WR1 写信号1,低电平有效

当 ILE、CS、WR1同时有效时, LE=1,输入寄存器的输出随输入而变化 WR1, LE=0,将输入数据锁存到输入寄存器 XFER 转移控制信号,低电平有效 WR2 写信号2,低电平有效

当XFER、WR2同时有效时, LE2=1,DAC寄存器输出随输入而变化;WR1, LE=0,将输入数据锁存到DAC寄存器,数据进入D/A转换器,开始D/A转换 IOUT1 模拟电流输出端1

当输入数字为全”1”时, 输出电流最大,约为:255VREF。全”0”时, 输出电流为

256RFB0

IOUT2 模拟电流输出端2 ,IOUT1 + I OUT2 = 常数 (2) 内容和步骤

① 内容

1. AT89C51控制DAC0832实现数/模转换(D/A)转换。从单片机输出数据到DAC0832,经其转换成模拟量输出。

2. 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。 基本要求:

① 产生三种以上波形。如正弦波、三角波、矩形波等。 ②最大频率不低于 500Hz。并且频率可按一定规律调节。

③幅度可调,峰峰值在0 ~ 5V之间变化。 扩展要求:产生更多的频率和波形。 ② 步骤

(1)在proteus ISIS界面D/A转换电路原理图,把该电路保存。 (2)在keil中建立c程序文件并生成hex文件。 (3)添加仿真文件。

双击单片机AT89C51,打开其属性编辑框,在“program file”栏中,单击打开按钮,选取后缀名为*.HEX的目标代码文件。在“clock frequency”栏中设置时钟频率为11.0592MHZ。

(4)在proteus仿真界面中单击运行按钮,全速启动仿真。

四.实验结果

1. 数据采集_A/D转换

① 实验电路图

② 实验程序

#include

#define uchar unsigned char #define uint unsigned int //头文件

uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x

66,0x6d,0x7d,0x07,0x7f,0x6f}; //各数字的数码管段码(共阴)

sbit CLK=P1^3; sbit ST=P1^2; sbit EOC=P1^1; sbit OE=P1^0;

void DelayMS(uint ms) //延时 {

uchar i;

while(ms--) for(i=0;i<120;i++); }

void Display_Result(uchar d) { int i,j; P2=0xfb; i=d/51;

P0=DSY_CODE[i]; DelayMS(5); P0=0x80;

DelayMS(5); P2=0xf7;

j=(d-i*51)*10/51; P0=DSY_CODE[j]; DelayMS(5); }

void main() //主程序 {

TMOD=0x02; TH0=0x14; TL0=0x00; IE=0x82; TR0=1; P1=0x3f; while(1) {

ST=0;ST=1;ST=0; while(EOC==0); OE=1;

Display_Result(P3); OE=0; } }

void Timer0_INT() interrupt 1 {

CLK=~CLK;

③ 实验结果

}

2.D/A转换及数字式波形发生器

① 实验电路图

② 实验程序

#include sbit key1=P1^0;

sbit key2=P1^3; sbit key3=P1^6;

#define uchar unsigned char #define uint unsigned int void sanjiaobo(); void fangbo(); void juchibo(); void main() {

P1=0xff; while(1) {

if(key1==0) sanjiaobo(); if(key2==0) fangbo(); if(key3==0) juchibo(); } }

void sanjiaobo() {

unsigned int i; char flag=0; P2=0; while(1) {

if(flag==0){ for(i=0;i<10;i++); P2+=1; if(P2>=255)flag=1; } if(flag==1){ for(i=0;i<10;i++); P2-=1; if(P2==0)flag=0;

③ 实验结果

}

} }

void fangbo() {

unsigned int i ; while(1) {

for(i=0;i<1000;i++); P2=255;

for(i=0;i<1000;i++); P2=0; } }

void juchibo() {

unsigned int i; char flag=0; P2=0; while(1) {

if(flag==0){ for(i=0;i<10;i++); P2+=1; if(P2>=255)flag=1; } if(flag==1){ P2=0; if(P2==0)flag=0; } } }

五.实验心得

1.由于实验设备不精确而引起的系统误差,例如:实验设备制作不精确,使用时间过长引起的设备老化,而引起的误差。

2.读数不精确引起的偶然误差。在电压表读数未稳定时读数,或者由于电压表精确度不够,而造成的读数误差。

3.在处理数据时,由于取值以及计算精确度取值不够而造成的误差。 4.试验线路连接不稳定,或接触点电阻引起的误差。

5.在误差允许的范围内,ADC0809将0-5V的单级型电压或-5-5V的双极型电压转换为相应的八位二进制输出。

6.在误差允许范围内,DAC0832能将八位二进制数转化为相应的双极型和单级型电压输出。

本文来源:https://www.bwwdw.com/article/ssod.html

微信扫码分享

《单片机AD与DA转换实验报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top