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

时间:2024.4.7

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:地址输入线。

(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芯片

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”时, 输出电流最大,约为:。全”0”时, 输出电流为0

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<reg51.h>

#define uchar unsigned char

#define uint unsigned int //头文件

uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,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<reg51.h>

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能将八位二进制数转化为相应的双极型和单级型电压输出。


第二篇:单片机AD转换实验报告


实验八  A/D实验报告

实验目的

1.  掌握单片机与A/D的接口及编程方法;

2.  进一步了解A/D的工作原理;

3.  通过实验了解单片机如何进行数据采集;

4.  进一步了解单片机系统地址分配概念。

实验器材

1.  G6W仿真器                    一台

2.  MCS—51实验板            一台

3.  PC机                                一台

4.  信号发生器                      一台

实验内容及要求

首先利用8051单片机的高位地址进行线译码,以分别给实验板中的各有关芯片提供CS信号,实现单片机系统地址分配。

ADC0809是输入为8通道、可与8051单片机直接接口的8位逐次逼近型CMOSA/D。在8模拟输入通道中的每个通道上接至不同的信号源,改变通道号,并把A/D转换结果显示出来,即可检查A/D转换过程是否正确。

根据实验板的硬件线路可知,当8051向0809写入通道数时,即启动A/D转换,约经过100μs后,A/D转换完成,并向8051发出中断申请。

要求在ADC0809的输入端加上不同的模拟信号,通过键盘输入ADC0809的通道号并启动A/D转换,采集N个(如N=256)数据存入外部RAM中,打开XDATA窗口,检查实验结果。

注意:①在进行A/D采样前,应先检查ADC0809的参考电压是否正确。

(要求ADC0809的参考电压值Vref = +5V,用万用表观察ADC0809芯片的12脚电压值。若不对,可调节实验板上的电位器W1来改变A/D的参考电压值。)

②实验板上电位器W2可调节校准信号的值。

实验框图 (见下页)

思考题

1.        本实验中,对采样信号的频率有没有限制?若有,其频率应在什么范围内?

       根据采样定理,采样频率必须大于最高频率的两倍。

2.        如果要采集具有正负值的输入模拟信号,则应对实验板中的A/D线路接法作哪些修正?

关于这一点,记得实验前夏兰老师好像提过,但是由于专注于硬件电路的连接,忘记了该怎么修正,希望老师给点提示。

ORG 0000H

LJMP START

ORG 0003H

LJMP INT_0

ORG 0040H

START:

MOV SP, #60H

MOV R7,#0FFH            ;读取数据个数初始化

MOV R1,#0B0H            ;片外储存数据首地址

MOV R0, #00H

MOV DPTR,#7FFFH       ;选中6116芯片

MOV A,#02H             ;根据硬件连接选择通道号 

MOVX @DPTR,A         ;启动 A_D

SETB IT0                ;开中断

SETB EA

SETB EX0               

CJNZ R7,#0H,T            ;判断256个数据是否转换完毕,是则停止,否则原地等待中断

INT_0:

MOVX A,@DPTR         ;读 A_D 数据

MOV DPH,R1

MOV DPL,R0

MOVX @DPTR,A          ;将数据放到片外存储地址

INC R0                   ;指向下一个单元

DEC R7                   ;数据个数减一

MOV DPTR,#7FFFH       

MOV A,#02H               

MOVX @DPTR,A          ;再次启动A_D

RETI                     ;返回中断

T:SJMP $                  ;数据转换完毕则程序停止

实验过程中犯了一些很低级的错误,比如说中断地址和所用中断不匹配,中断返回的位置自己不确定,对于怎样写地址才能选中芯片不确定,这些看似不起眼的细微的东西往往决定了整个实验的成败。实验证明,只有牢固的掌握基础知识,才能顺利完成程序的执行。

做了本次实验之后,个人感觉对于之前对于中断的理解还不是很透彻。本次实验让我进一步学习了中断的相关用法。由于实验比较简单,对于A_D的启动和转换数据方面没有什么太大的疑惑,希望可以结合下一次的D/A转换进一步理解这两个重要芯片的用法。

更多相关推荐:
单片机实验报告

单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实验目的熟悉MCS51指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机实验报告

题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握Keil软件的基本使用12掌握单片机汇编语言基本编程二实验内容1学习用Keil软件...

51单片机课程设计实验报告

51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会…

单片机实验报告

海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握汇编编程控制蜂鸣器播放音乐2掌握单片机编程控制蜂鸣器发出不同频率声音的方法3了解...

单片机实验报告

单片机课程设计报告实验五系别物理与电子工程学院年级专业班级学号学生姓名指导教师设计时间常熟理工学院课程设计报告目录1题目22实验要求221实验目的222实验内容23总体设计231硬件设计232软件设计44运行结...

51单片机实验报告

08424020xx单片微型计算机原理学院班级学号姓名指导教师成绩120xx年6月08424020xx硬件实验实验一定时器中断实验实验内容fosc110592MHzT0方式2产生定时中断实现秒表功能数码管后两位...

单片机交通灯实验报告

交通灯控制系统设计院系:电子电气工程学院专业:电气自动化班级:P10电气四班成员:*************交通灯控制系统设计实验一.设计目的1.通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加…

单片机实验报告1

实验1开发环境使用及常用指令功能一、实验目的1、掌握集成开发环境的使用;2、初步了解实验装置的使用方法;3、熟悉常用指令的功能;4、熟悉程序调试的方法;5、学习自己编写、调试计算程序。二、实验说明利用单片机及K…

短学期单片机实验报告

宁波大学信息与工程学院课程名称姓名学号专指导老师班级完成时间单片机应用系统设计自动化09120xx7121目录一实验内容及设计要求311实验内容312设计要求3二概述课题意义及背景介绍3三硬件电路图设计及说明4...

单片机学习实验报告

嵌入式系统实验报告实验1KeilC51的使用汇编语言实验目的初步掌握KeilC51汇编语言和ZY15MCU12BD型综合单片机实验箱的操作和使用能够输入和运行简单的程序实验设备ZY15MCU12BD型综合单片机...

单片机秒表实验报告

单片机课程设计说明书题目电子秒表学生姓名任闯徐金超张飞俞军蒲敏谢长安陈琛曾超刘强强专业农业机械化与自动化班级08级1班指导教师吴敏日期20xx年12月12日目录第一章单片机课程设计任务书1一目的意义1二设计时间...

单片机实验报告(42篇)