好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

AD和DA转换技术ppt课件.ppt

93页
  • 卖家[上传人]:新**
  • 文档编号:592696159
  • 上传时间:2024-09-22
  • 文档格式:PPT
  • 文档大小:624KB
  • / 93 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单片机原理与接口技术单片机原理与接口技术 第第14章章 A/D与与D/A转换技转换技术术 在单片机应用系统中,输出控制是单片机实现控制运算处理后,对控制对象的输出通道接口单片机主要输出三种形态的信号:数字量,开关量和频率量 单片机对模拟信号的处理单片机对模拟信号的处理 被控制对象的信号除上述三种可以直接由单片机直接产生的信号外,还有模拟量控制信号,该信号通过D/A转换产生也就是说把单片机发出的数字信号转换成为模拟信号用来控制外部的设备,单片机仅能产生和处理数字信号,对于模拟信号只能借助D/A或者A/D转换芯片来完成 14.1 D/A、、A/D转换在单片机系统中的应用转换在单片机系统中的应用 14.1.1 A/D-D/A转换的数据通道 在一般的系统中通过传感器采集现场的信息也就是模拟量,模拟量经过前期电路处理再经过A/D转换进入到单片机中 14.1..1 A/D-D/A转换的数据通道转换的数据通道Ø单片机经过D/A转换对现场物理量进行控制Ø由于单片机的工作速度很快物理量的变化速度相对比较慢故一个A/D转换器可以通用于各现场监测点Ø 经过多路开关的定时循环接通,各路信号依次及时可靠进入到单片机 14.1..1 A/D-D/A转换的数据通道转换的数据通道n 多路开关循环接通电路,而现场信号通过采样保持器进行保存,以此来保证转换的通畅性。

      n 另外采样频率必须是现场被测信号频谱中最高频率的两倍以上 14.1..1 A/D-D/A转换的数据通道转换的数据通道D/A转换示意图: 14.1.2 D/A转换工作原理转换工作原理 •D/A转换是一种将数字信号转换成连续模拟信号的操作,它作为单片机系统的数字信号和模拟环境的连续信号之间提供了一种接口,它工作的原理就是输入数字信号输出模拟信号 A/D转换原理图转换原理图 14.1.2 D/A转换工作原理转换工作原理•D/A转换器的输入信号主要有两种分别为:数字信号和基准电压•D/A转换器的输出信号是模拟量,大部分的输出是电流,也有的输出电压 14.1.2 D/A转换工作原理转换工作原理p D/A转换器内置运算放大器以低阻抗输出电压,称之为电压输出型D/A转换器 p D/A转换器如果采用电流开关型电路,电流开关形电路如果直接输出生成的电流,则为电流输出型D/A转换器 14.1.2 D/A转换工作原理转换工作原理 D/A转换器的输入数据是在不断变换的,为了保持输出的稳定,须在其内部处理器与输入口之间增加锁存数据的功能一些D/A转换器甚至具有双重或者多重的数据缓冲结构,并具有数据锁存和地址译码电路。

      这样的转换器多见于12位甚至更高的D/A转换器 14.1.3 如何选择如何选择D/A转换器转换器 参考指标: 分辨率:则最小输出模拟量与最大输出模拟量之比 转换时间:将一个数字量转换为稳定模拟量所需要的时间叫转换时间一般情况下电流输出的D/A转换时间比较短,电压输出的D/A转换时间比较长 线性度:考虑输出的线形关系 转换精度:相对实际物理量的误差 14.1.3 如何选择如何选择D/A转换器转换器 D/A转换器的类型:根据输出端口是并口还是串口,可分为串型输出和并行输出器件根据输出是电流还是电压,可分为电压输出型和电流输出型器件根据能否进行乘法运算,可分为乘法运算型和非乘法运算型根据内部是否有锁存器,可分为锁存型器件和非锁存型器件 14.1.3 如何选择如何选择D/A转换器转换器 在D/A转换器中有在基准电压上加交流信号的,这样就可以得到数字输入和交流信号输入相乘的结果所以称为乘法型D/A转换器,这种转换器不仅可以进行乘法运算,还可以使输入信号衰减,也可以做调制器对输入信号进行调制 14.2 8位位D/A芯片芯片DAC0832 DAC0832是由8位输入寄存器,8位DAC寄存器和8位D/A转换器组成。

      DAC0832中有两级锁存器,第一级即输入寄存器,第二级为DAC寄存器除了能工作在单缓冲方式,通过这两级锁存器DAC0832可以工作在双缓冲方式下,在输出模拟信号的同时可以采集下一个数字量,提高了转换速度 14.2 8位位D/A芯片芯片DAC0832 利用两级转换器的作用可以让多个D/A转换器同时工作,再通过第二级锁存信号实现多路D/A转换的同时输出只要数据一进入DAC寄存器便启动D/A转换 14.2.1 DAC0832的引脚的引脚DAC0832的引脚如下:DI0~DI7:8为数据输入端ILE:输入寄存器的数据允许锁存信号 DAC0832的引脚的引脚Ø :输入寄存器选择信号Ø :输入寄存器的数据写信号Ø :DAC寄存器写信号,并启动转换Ø :数据向DAC寄存器传送信号,传送后即启动转换 14.2.1 DAC0832的引脚的引脚ØVREF:参考电压输入端ØIOUT1,IOUT2:电流输出端ØRfb:反馈信号输入端ØAGND:模拟电路地〔第三脚)ØDGND:数字电路地〔第十脚)ØVCC:芯片供电电压 14.2.1 DAC0832的引脚的引脚留意: 当 时,输入数据;当 时,数据被锁定。

      14.2.2 单片机与单片机与DAC0832的接口电路的接口电路 14.2.2 单片机与单片机与DAC0832的接口电路的接口电路 DAC0832带有数据输入寄存器,是总线兼容型的,可以将D/A芯片直接与数据总线相连,作为一个拓展的I/O口 单缓冲接口方式单缓冲接口方式 在单缓冲接口方式下,ILE接+5V写信号控制数据的锁存,和相连,接单片机的,即数据同时写入两个寄存器;传送允许信号与片选相连,即选中本片DAC0832后,写入数据立刻启动转换本例子DAC0832的地址为FFFEH这种单缓冲方式适用于只有一路模拟信号输出的场合 14.2.2 单片机与单片机与DAC0832的接口电路的接口电路本例子在运放输出端输出一个锯齿波电压信号,程序设计如下:#include#include#define DAC0832 XBYTE[0xfffe]#define uchar unsigned char#define unit unsigned int void star(void){ uchar i; while(1){ for(i=0;i<=255;i++) /*形成锯齿波输出值,最大255*/ {DAC0832=i} /*D/A转换输出*/ }} 14.3 基于基于MAX536的串行的串行D/A转换器转换器 MAX536是一款具有4路12位电压输出的D/A转换器,它包括一个16位输入/输出的移位寄存器,4个输入寄存器,4个DAC寄存器和4个输出放大器。

      D/A转换器采用倒T型R-2R电阻网络D/A转换器 14.3 基于基于MAX536的串行的串行D/A转换器转换器 通过对输入参考电压分压获得模拟电压输出其中,D/A转换器A和B共享REFAB参考电压,D/A转换器C和D共享REFCD参考电压参考电压范围为0V到VDD-4V 14.3 基于基于MAX536的串行的串行D/A转换器转换器 在单片机系统中,可分为硬件部分和软件部分其中硬件部分是整个系统的实体构成,是软件系统的平台和基础,没有硬件做支撑设计出的软件就无法调试也不能得到验证下面就是动态显示硬件设计例子,我们给出了完整的电路图 MAX536的内的内部结部结构图构图 MAX536的外的外部引部引脚图脚图 MAX536引脚功能引脚功能 –OUTB:DAC B电压输出 –OUTA:DAC A电压输出–VSS:负电压输入 –AGND:模拟地–REFAB:DAC A和B参考电压输出–DGND:数字地– :DAC加载输入〔低电平有效,将输入寄存器内容传送到DAC寄存器) MAX536引脚功能引脚功能–SDI:串行数据输入– :片选信号,低电平有效–SCK:移位寄存器输入时钟–SDO:串行数据输出–REFCD:DAC C和D的参考电压输出 MAX536引脚功能引脚功能–TP:测试引脚,正常使用时连接VDD–VDD正电压输入〔12~15V)–OUTD:DAC D电压输出–OUTC:DAC C电压输出 14.3.2 工作原理和时序工作原理和时序 MAX536的串行接口的最高时钟为10MHz。

      工作期间引脚的低电平必须保持20微秒以上它可以使用3线接口或4线接口的接口方式在3线接口时,它的时序如下: MAX536的时序的时序 14.3.2 工作原理和时序工作原理和时序 引脚接地或者接VDD在 为低电平期间,SDI引脚的串行输入数据由串行时钟SCLK的上升沿逐位送入移位寄存器,转换成并行数据输入数据全部进入移位寄存器后,置为高电平,利用的上升沿执行命令字,对MAX536内部寄存器进行相应控制 14.3.3 MAX536的编程方式的编程方式 MAX接收的是16位的串行数据,高位在前,低位在后在串行数据中包括两个地址位〔A1、A0),两个控制位〔C1、C0〕和待转换的12位数据〔D11~D0) 从高到低依次排列从高到低依次排列 这16位数据从高到低依次排列为:A1,A0,C1,C0,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0这些命令字与引脚的状态来共同控制MAX536的转换 14.3.3 MAX536的编程方式的编程方式16位串行字功能A1 A0C1 C0D11~D00 00 112位数据1加载DAC A 输入寄存器,DAC输出不变0 10 112位数据1加载DAC B 输入寄存器,DAC输出不变1 00 112位数据1加载DAC C 输入寄存器,DAC输出不变1 10 112位数据1加载DAC D 输入寄存器,DAC输出不变0 01 112位数据1加载DAC A输入寄存器,所有DAC寄存器改变0 11 112位数据1加载DAC B输入寄存器,所有DAC寄存器改变1 01 112位数据1加载DAC C输入寄存器,所有DAC寄存器改变1 11 112位数据1加载DAC D输入寄存器,所有DAC寄存器改变x 00 012位数据x从移位寄存器加载所有数据到DAC 14.3.3 MAX536的编程方式的编程方式 14.3.3 MAX536的应用的应用 14.3.3 MAX536的应用的应用 单片机的P2.1、P2.2、P2.3分别接MAX536的 、SCK、SDI。

      MAX536采用3线接口方式, 引脚接数字地,转换器A、B、C、D都使用+5V的参考电压,输出电压范围为〔0~5V) 单片机对单片机对MAX536的控制的控制 本电路主要实现单片机对MAX536的控制,并使用MAX536进行D/A转换四个通道都可以输出数据,实际应用中根据具体情况可以减少通道 主程序主程序 #include#includesbit cs=p2^1 //定义的控制接口sbit sck=p2^2 //定义SCK的控制接口sbit sdi=p2^3 //定义SDI的控制接口 void data_out(unsigned char numer,unsigned int value) //定义MAX536的输出函数,通道号和输出量{ switch(numer) //numer在实际应用中可根据情况赋值 { case1: cs=0; //置低电平,低电平有效,开启MAX536,可以输入数据 w536(value|0x1000); //定义DAC A 输出,由编程方式可以知道A通道输出的数字编码是0x1000,经过“或〞把命令加到输出数据中。

      cs=1; // 置高电平,利用的上升沿执行命令字,对MAX536内部寄存器进行相应的控制break;//程序返回 case2: cs=0; //置低电平,低电平有效,开启MAX536,可以输入数据w536(value|0x5000); //定义DAC B 输出,由编程方式可以知道B通道输出的数字编码是0x5000,经过“或〞把命令加到输出数据中 cs=1; // 置高电平,利用的上升沿执行命令字,对MAX536内部寄存器进行相应的控制 break; //程序返回 case3: cs=0; //置低电平,低电平有效,开启MAX536,可以输入数据 w536(value|0x9000); //定义DAC C 输出,由编程方式可以知道C通道输出的数字编码是0x9000,经过“或〞把命令加到输出数据中 cs=1; // 置高电平,利用的上升沿执行命令字,对MAX536内部寄存器进行相应的控制break; //程序返回 case4: cs=0; //置低电平,低电平有效,开启MAX536,可以输入数据 w536(value|0xD000); //定义DAC D 输出,编程方式可以知道D通道输出的数字编码是0xD000,经过“或〞把命令加到输出数据中 cs=1; // 置高电平,利用的上升沿执行命令字,对MAX536内部寄存器进行相应的控制。

      break;//程序返回 }} 子程序子程序 void w536(unsigned int indata) //indata 为准备输出的数据包含了命令字{ char n,i,j; unsigned int in_on; //定义数据逻辑in_on=ox0001; //初始化数据逻辑,预备输出数据,从最低位开始输出for(n=0;n<16;n++) //预备输出16位数据 { sck=0; //设置SCK为低电平 for(i=0,i<10;i++); //延时j=indata&in_on; //运用“与〞取出准备输出那一位的值 if(j==0001) //判断输出位 sdi=1; //输出 else sdi=0; //输出 for(i=0,i<10;i++); //延时 sck=1; //设置SCK为高电平,在SCK的上升沿由SDI输入的一位数据进入移位寄存器 indata=indata>>1; //数字逻辑右移,MAX536输入下一位数据}} 14.4 A/D转换工作原理转换工作原理 在单片机系统中,单片机所能处理的都是离散的数字信号。

      但是外部受控制的有关设备所产生的和接收的往往是模拟量例如:温度,速度,亮度等所以必须将外部设备产生的模拟信号转换成为数字信号才能使这些信号为单片机所识别,并在单片机中进行处理而将模拟信号转换成为数字信号的过程我们称之为模拟/数字〔A/D〕转换,所使用的器件我们就称之为模拟/数字〔A/D〕转换器 14.4 A/D转换工作原理转换工作原理 A/D转换是一种将连续的模拟信号转换成适合在单片机中处理并运行的二进制数,也就是把连续信号变成离散的信号A/D转换的工作原理如图所示 14.4.1 如何选择如何选择A/D转换器转换器 A/D转换器的种类很多,性能也有很大的不同,在A/D转换器的选择上不仅要考虑它的性能还要考虑具体的应用要求下面我们来看看选择A/D转换器的一些参考性能指标 14.4.1 如何选择如何选择A/D转换器转换器1.A/D转换器的位数A/D转换器位数的确定,主要的考虑因素是转换的误差,位数越多所产生的误差和失真就越小 为了减低硬件的消耗减少成本在一般的系统中我们都选用中分辨率的A/D转换器,而其中以10位和11位是最合适的 14.4.1 如何选择如何选择A/D转换器转换器2. A/D转换器的转换频率 A/D转换器从启动到结束总需要一定的时间,而每秒钟所完成的转换次数就是A/D转换器的转换频率。

      在确定A/D转换器的转换频率的时候还要考虑到系统的采样频率例如:A/D转换器的转换频率为10KHz,而模拟信号一个周期的信号需要10个采样点,根据采样定理这个A/D转换器所能处理的最高频率的模拟信号仅为1KHz当然通过提高A/D转换器的转换频率可以提高处理的频率,但是由于单片机的处理速度有限所以在单片机系统中始终有一个瓶颈无法突破 14.4.1 如何选择如何选择A/D转换器转换器3. 满量程误差这个指标指的是满量程输出的时候对应的输入信号和理想输入信号的差别4. 线性度本指标指的是A/D转换器的转移函数与理想直线的最大偏移5. 采样/保持器对于高频信号来说是必须加采样/保持器的如果是低频信号并采用高速的A/D转换器的时候是可以不用采样/保持器的而直流信号和变化很慢的信号也可以不使用采样/保持器 14.4.1 如何选择如何选择A/D转换器转换器6. A/D转换器的量程部分A/D转换器提供了不同量程的引脚,必须使用正确才能保证信号尽量不失真这样的A/D转换器不同的量程的输入电压可以从不同的引脚输入7. 偏置极性部分A/D转换器提供了双极性偏置控制当该引脚接地时,信号为单极性输入方式;当该引脚接基准电压时,信号为双极性输入方式。

      11.7 LED动态显示及实验动态显示及实验 2、分析: MAX7221在使用之前必须进行初始化,即设置MAX7221的显示模式、译码方式、亮度控制、扫描范围〔扫描LED个数)当采用Code B译码方式时,我们只要向数码管0〔digit0)~数码管7〔digit7〕送出0x0~0x7即可 14.4.2 8位位A/D转换芯片转换芯片ADC0809 ADC0809是8位逐次逼近型A/D转换器,带有8个模拟量输入通道,芯片内带通道地址译码锁存器,输出带三态数据锁存器,启动信号为脉冲启动方式,每一通道的转换大概需要100微秒 14.4.2 8位位A/D转换芯片转换芯片ADC0809 ADC0809由三个部分组成,第一个部分是输入部分,包括8位模拟开关,3条地址线的通道地址锁存器和译码器,第四条为ALE,这三个地址引脚通过编码可以用来实现8路模拟信号输入通道的选择;第二部分是转换部分,里面是一个逐次逼近型的A/D转换器;第三个部分是输出部分,该部分是一个三态输出数据锁存器,有8位数据输出最上为LSB最下为MSB 8位位A/D转换芯片转换芯片ADC0809内部结构图内部结构图 ADC0809的外部引脚图的外部引脚图 ADC0809的引脚功能的引脚功能üIN0~IN8::8个模拟通道输入端。

      个模拟通道输入端üSTART:启动转换信号:启动转换信号üEOC:转换结束信号:转换结束信号üOE:输出允许信号信号由:输出允许信号信号由CPU读信号和片选信号组合产生读信号和片选信号组合产生üCLOCK:外部时钟脉冲输入端,典型值为:外部时钟脉冲输入端,典型值为640KHzüALE:地址锁存允许信号:地址锁存允许信号üA,,B,,C:通道地址线通道地址线CBA的的8种组合状态种组合状态000~111对应了对应了8个通道的选择个通道的选择üVREF((+),),VREF((—):参考电压输入端):参考电压输入端üVCC::+5V电源电源üGND:地:地üD0~D7::D7为最高位为最高位MSB,,D0为最低位为最低位LSBD7~D0组成组成8位数据输出位数据输出 ADC0809的地址编码的地址编码地址码选通的模拟通道CBA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7 ADC0809的应用的应用 C,,B,,A输入的地址在输入的地址在ALE有效的时候有效的时候被锁存启动信号被锁存启动信号START上升沿到来时开上升沿到来时开始启动转换,始启动转换,EOC信号是在信号是在START下降沿下降沿到的到的10微秒后才变成低电平,表示转换已微秒后才变成低电平,表示转换已经结束。

      当单片机接收到转换结束的信号经结束当单片机接收到转换结束的信号后,发送一个读的信号给后,发送一个读的信号给OE,然后开始从,然后开始从ADC0809输入信号输入信号 14.3.2 ADC0809与单片机的接口与单片机的接口 14.3.2 ADC0809与单片机的接口与单片机的接口 本例子数据输出端口本例子数据输出端口D7~D0接单片机的接单片机的P0^7~P0^0启动信号启动信号START由由P3^0产生产生,,ALE和和START相连,即按输入的通道地相连,即按输入的通道地址接通模拟量并启动转换地址选通信号址接通模拟量并启动转换地址选通信号C,,B,,A分别由分别由P2^2,,P2^1,,P2^0产生输出允许信号由输出允许信号由P3^7产生,即通过读信号产生,即通过读信号使得数据从使得数据从P0口直接输入单片机转换结口直接输入单片机转换结束信号束信号EOC与与p3^2即外部中断即外部中断0相连 主程序主程序 #include#include#define uchar unsigned charsfr p0=0x80;//定义P0的地址sfr p2=0xA0; //定义P2的地址sfr p3=0xB0; //定义P3的地址sbit ad_ch=p3^2; //定义查询引脚,当0809转换结束的时候EOC为低电平sbit read=p3^7; //定义读信号sbit star=p3^0 //定义启动转换信号void main(void){ atatic uchar idata a[10]; a0809(a); //启动转换并采样AD0809通道的值}void a0809 (uchar idata *x) //转换函数{uchar i; uchar xdata *a_adr;p2=0xf8;//设置AD0809通道0的地址 a_adr=&p2;//把通道地址值赋给a_adrfor(i=0;i<8;i++) //处理8个通道的数据 { star=1;//启动转换 *a_adr=0; i=i; i=i; i=i; //延时等待EOC变为低电平 while(ad_ch= =0); //查询是否转换已经结束,若转换结束则读取数据 read=1; //读数据信号有效,使OE为高电平开始读取数据 x[i]=*a_adr; //存储转换的结果 a_adr++; //进入下一通道的转换 }} 14.5 12位位A/D转换芯片转换芯片ADS7804 与8位和16位的A/D转换器相比,12位A/D转换器以其较高的性能价格比而在各类系统中中得到广泛的应用。

      下面就以ADS7804为例子详细介绍12位A/D转换器的应用ADS7804为12位的A/D转换器,它不仅分辨率高、转换速度快,而且接口方便,电路简单、应用灵活,因而具有广泛的应用前景 14.5.1 ADS7804的内部结构的内部结构 14.5.1 ADS7804的内部结构的内部结构 ADS7804芯片采用28脚0.3英寸PDIP〔塑料双列直插式〕封装,两列管脚间距为0.3英寸,比一般DIP28封装窄一倍,所以俗称瘦型DIP;ADS7804采用单5V电源供电;芯片内部含有采样保持、电压基准和时钟等电路,可极大简化用户的电路设计和硬件开锁,并可提高系统的稳定性ADS7804采用CMOS工艺 制 造 , 转 换 速 度 快 、 功 耗 低 〔 最 大 功 耗 为100mW)另外ADS7804采用逐次逼近式工作原理,单通道输入,模拟输入电压的范围为±10V,采样速率为100kHz ADS7804的外部引脚图的外部引脚图 ADS7804的引脚功能的引脚功能 VDIG 数字电源,和模拟电源VANA通常一起接到5V电源上VANA 模拟电源,和数字电源VDIG通常一起接到5V电源上DGND 数字地,通常与模拟地共地AGND1、AGND2 模拟地,通常与数字地共地REF 为参考电压端,通常对地接2.2μF电容,芯片内部可产生2.5V基准电压。

      CAP 为参考电压所需电容,对地接2.2μF电容VIN 模拟信号输入端D11~D0 为数字量并行输出口DZ〔19~22脚〕是为了使管脚与16位A/D转换器ADS7805兼容而设的,可悬空 片选信号,与结合在下降沿有效,并持续40ns~6μs可启动A/D转换,第二个下降沿输出数据 读取模数转换结果的控制信号 转换结束信号,高电平表示转换结束,低电平表示转换进行中BYTE 控制从总线读出的数据是转换结果的高字节还是低字节它为低电平的时候选择低字节,为高电平的时候选择高字节 14.5.2 ADS7804如何启动转换和读取转换结果如何启动转换和读取转换结果 首先将脚电平变低;然后在脚输入一个脉冲并在其下降沿启动A/D转换,此脉冲的宽度要求在40ns~6μs之间;这时BUSY脚电平拉低表示正在进行转换;在经过大约8μs以后,转换完成,BUSY脚电平相应变高;再把R/C脚电平拉高,这样,脚脉冲的下降沿即把转换结果输出到数据总线上 ADS7804启动转换和读取转换结果的时序图启动转换和读取转换结果的时序图 模拟电压和数字输出的关系模拟电压和数字输出的关系 模拟输入初码形式的数字输出二进制十六进制9.99512V0111 1111 11117FF4.88mV0000 0000 00010010V0000 0000 0000000-4.88mV1111 1111 1111FFF-10V1000 0000 0000800 ADS7804的输出的输出 因为ADS7804为12位A/D转换器所以它的转换结果为12位,对8位单片机而言,就必须分两次读入,而这个功能是由BYTE引脚来实现的。

      当BYTE脚为高电平时,数据总线上输出高字节,当BYTE脚为低电平时,输出低字节 14.5.3 ADS7804与单片机的接口与单片机的接口 因为ADS7804的信号脉冲宽度要求为40ns~6μs之间,而对于单片机而言,如采用12MHz的晶振,单周期指令和双周期指令分别为1μs和2μs,而一个对位操作的指令为1μs所以我们把它和单片的P2.1端口相连,而 、 和BYTE信号,则分别与 P2.0, P2.2, P2.3相连 ADS7804与单片机的接口电路 程序分析程序分析本数据采集系统程序如下:单点采样子程序SPS():用来返回一个有符号整数形式的转换结果定长采样子程序DLS():根据入口参数fixedtime〔单位为μs〕给定的采样间隔采样N点,并采用查询单片机内置定时器的方式来控制采样时序,N点采样结果存储在外部存储器数组array中 主程序主程序1#include#include#define N==128 //定采样长度,每个周期内采样128点sfr p2=0xA0; //定义P2的地址sbit CS=p2^1; //定义片选地址sbit BYTE=p2^3;//定义数据选择地址sbit RC=P2^2; //定义读取结果地址sbit BUSY=P2^0; //定义特殊位int XDATA array(N); //在外部存储器内定义长度为N的有符号整数数组void SPS( ) //单点采样子程序{ uint dl,dh;int dd;RC=0; //R/C低电平,进入转换模式cs=0; //cs为低电平一个指令的时间为1μs,启动A/D转换cs=1; //cs为高电平,依据时序等待转换完成方便在下降沿输出程序while (BUSY= =1); //等待转换完成RC=1; //和CS配合输出数据cs=0; //cs为低电平,利用它的下降沿输出数据BYTE=0; //进入读模式,选择低字节dl=XBYTE[0xffff]; //读转换结果低8位BYTE=1; //选择高字节dh=XBYTE[0xffff]&0x0f;//读转换结果高4位,和0x0f相与把高位清零只保留四位有效数字dd=dh*256+dl; //得到12位转换结果,因为第8位数据的权为256,所以dh乘以256可以得到高四位的正确数值return(dd); /*返回转换结果*/} 定长采样子程序定长采样子程序void DLS(uint fixedtime==1000μs) //定长采样子程序{ uchar timeh,timel;fixedtime=fixedtime-5;//减去TF1清零和装载计数初值的时间5μsth=(65536-fixedtime)/256; //计算计数初值tl=(65536-fixedtime)%256; //计算计数初值TMOD=0x10; //定时器1,方式1 TH1=timeh; TL1=timel;//装载计数初值TR1=1;//启动定时for(i=0;i

      这两个参数的确定还要结合ADS7804和单片机的工作频率,不能超过额定的频率另外赋给计数寄存器TH和TL的值是定时器从开始计数到溢出所用的时间,这个时间再加上清TF和装载计数初值所需的时间〔共5个机器周期,对于12MHz晶振即为5μs〕才是所要的采样间隔,这一点在程序设计中必须注意 第第1414章结束章结束 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.