单片机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转换进一步理解这两个重要芯片的用法。

 

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

单片机实验报告(五)

 

南京理工大学紫金学院电光系

一、  实验目的

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与单片机接口

三、  实验内容

#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进行电压信号的采集和数据处理的使用方法。

相关推荐