1 / 35

实训课题七 D/A 与 A/D 转换

实训课题七 D/A 与 A/D 转换. 7.2. DAC0832 及其单片机的接口. 7.1. DAC0832 应用举例. 7.2. 7.3. ADC0809 及其与单片机的接口. ADC0809 应用举例. 7.4. 7.1 DAC0832 及其与单片机的接口. 一、 芯片主要特性与结构. 引脚功能 : DI0 ~ DI7 : 8 位数字信号输入端 : 片选端,为低电平时,本芯片被选中。 I LE : 数据锁存允许控制端,高电平有效。 : 第一级输入寄存器写选通控制,低电平有效。

linus
Download Presentation

实训课题七 D/A 与 A/D 转换

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实训课题七 D/A与A/D转换 7.2 DAC0832及其单片机的接口 7.1 DAC0832应用举例 7.2 7.3 ADC0809及其与单片机的接口 ADC0809应用举例 7.4

  2. 7.1DAC0832 及其与单片机的接口 一、 芯片主要特性与结构

  3. 引脚功能: DI0~DI7:8位数字信号输入端 :片选端,为低电平时,本芯片被选中。 ILE:数据锁存允许控制端,高电平有效。 :第一级输入寄存器写选通控制,低电平有效。 :第二级DAC寄存器写选通控制,低电平有效。 :数据传送控制,低电平有效。 VCC:电源输入端,在+5V~+15V范围内。 Rfb:内部反馈电阻引脚 DGND、AGND:分别为数字信号地和模拟信号地 4

  4. :负跳变时锁存数据,正脉冲时,输入锁存器的输出随输入变化。 :作用与上面的类似。 IOUT1:模拟电流输出1端,约等于 输入数字量全为“1”时,IOUT1最大约为 输入数字量全为“0”时,IOUT1最小,为“0”。 IOUT2:模拟电流输出2端,IOUT2 + IOUT1 = 常数。 VREF:基准电压输入端,可在-10~+10V范围内调节。 5

  5. 二、D/A转换器的主要性能指标 1、分辨率 指单片机输入给D/A转换器的单位数字量的变化,所引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的二进制位数)。 例如:对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。

  6. 2、建立时间 用于表明转换时间或转换速度的一个参数。电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定于运算放大器的响应时间。 根据建立时间的长短,可以将DAC分成超高速(<1μS)、高速(10~1μS)、中速(100~10μS)、低速(≥100μS)几档。

  7. DAC0832主要特性 • 分辨率8位; • 电流建立时间1μS; • 数据输入可采用双缓冲、单缓冲或直通方式; • 输入逻辑电平与TTL兼容; • 单电源供电(+5V~+15V); • 低功耗,20mW。

  8. 由于DAC0832为电流输出型,要想输出电压,可外接运放,下图是一种典型应用电路由于DAC0832为电流输出型,要想输出电压,可外接运放,下图是一种典型应用电路

  9. 三、DAC0832与单片机的接口 1.直通方式: 当引脚 、 、 、直接接地,ILE接电源,DAC0832工作于直通方式,此时,8位输入寄存器和8位DAC寄存器都直接处于导通状态,8位数字量到达,就立即进行D/A转换。特点:转换速度快。

  10. 2.单缓冲方式: 输入寄存器和DAC寄存器共用一个地址,同时选通输出,输入数据在控制信号作用下,直接进入DAC寄存器中;WR1和WR2同时进行,并且与CPU的WR相连,CPU对0832执行一次写操作,将数据直接写入DAC寄存器中。 适用:只有一路模拟信号输出或几路模拟信号非同步输出。

  11. 3.双缓冲方式: 输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输出多路模拟信号。适用:同时输出几路模拟信号的场合,可构成多个0832同步输出电路。 当8位输入锁存器和8位DAC寄存器分开控制导通时,DAC0832工作于双缓冲方式,双缓冲方式时单片机对DAC0832的操作分两步,第一步,使8位输入锁存器导通,将8位数字量写入8位输入锁存器中;第二步,使8位DAC寄存器导通,8位数字量从8位输入锁存器送入8位DAC寄存器。第二步只使DAC寄存器导通,在数据输入端写入的数据无意义。

  12. 四、应用实例——简易锯齿波发生器

  13. 程序: #include<reg51.h> #include<absacc.h> //绝对地址访问头文件 #define uchar unsigned char #define unit unsigned int #define DAC0832 XBYTE[0x7fff] void delayms()//延时函数(T1定时实现) {TH1=0xfc; TL1=0x18; TR1=1;

  14. while(!TF1); TF1=0;} void main() {uchar i; TMOD=0x10; while(1) {for(i=0;i<=255;i++) {DAC0832=i;delayms();} } }

  15. 若将 for(i=0;i<=255;i++) {DAC0832=i;delayms();} 改为:for(i=255;i>=255;i--) {DAC0832=i;delayms();} 则示波器中观察到的波形有什么变化? 问答:如果改变锯齿波的周期和幅值? 答:改变延时时间可改变波形周期;改变输出二进制的最大值,可以改变波形的幅值。

  16. 7.3 ADC0809及其与单片机的接口 • ADC0809的结构与引脚 IN0~IN7:8路模拟信号输入端。 D0~D7:8位数字量输出端。 VR(+)、VR(−):基准电压输入端。 A、B、C:8路输入通道的选择 CLK:为时钟信号输入端。 ALE:地址锁存允许信号 OE:输出允许端 START:为启动A/D转换的输入端,上升沿复位,下降沿开始转换。 EOC:转换结束信号输出端。转换结束后为高电平。

  17. ADC0809A/D转换器主要性能 • 分辨率为8位; • 精度:ADC0809小于±1LSB; • 单+5V供电,模拟输入电压范围为0~+5V; • 具有锁存控制的8路输入模拟开关; • 可锁存三态输出,输出与TTL电平兼容; • 功耗为15mW; • 不必进行零点和满度调整; • 转换时间约为100µS(时钟频率640KHz时)。

  18. ADC0809的工作流程 1.输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。 2.送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。 3.当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。 4.当CPU执行一读数据指令,使OE为高电平,则从输出端D0~D1读出数据。

  19. ADC0809与MCS-51单片机的接口 • 涉及2个问题: (1)8路模拟信号通道选择; (2)A/D转换完成后转换数据的传送。 • 转换数据的传送: ①定时传送方式; (不需接EOC脚) ②查询方式; (测试EOC脚的状态) ③中断方式。 (EOC脚接INTi脚) 注意: (1)不能用无条件方式; (2)2个ALE不能直接相接。

  20. P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 ALE WR P2.7 RD INT0 D0 D1 D2 D3 D4 D5 D6 D7 ADDA ADDB ADDC CLK ALE START OE EOC IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 VREF+ VREF- ADC0809 分 频 器 8051 +5V GND + +

  21. ADC0809与单片机接口

  22. ADC0809采样通道3输入的模拟量,转换后的结果显示在数码管上。ADC0809采样通道3输入的模拟量,转换后的结果显示在数码管上。

  23. #include<reg51.h> #define uchar unsigned char #define unit unsigned int uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char dispcount; sbit CLK=P3^0; //时钟信号 sbit ST=P3^3;//启动信号 sbit OE=P3^1; //输出使能 sbit EOC=P3^2;//转换结束信号

  24. void delayms(unit x)//延时函数 {uchar i,j; for(i=x;i>0;i--) for(j=0;j<120;j++) ;} void Display_Result(uchar d) //显示函数 {P0=0xfb; //第4个数码管显示个位数 P1=dispcode[d%100%10]; delayms(5); P0=0xfd; //第3个数码管显示十位数 P1=dispcode[d%100/10]; delayms(5);

  25. P0=0xfe; //第2个数码管显示百位数 P1=dispcode[d/100]; delayms(5); } void main(void) {TMOD=0x02; //T0工作模式2 TH0=0xf0; TL0=0xf0; IE=0x82; TR0=1; P3=0x3f; //选择ADC0809的通道3

  26. while(1) {ST=0; ST=1; ST=0; //启动A/D转换 while(EOC==0); //等待转换完成 OE=1; Display_Result(P2); OE=0;}} //T0定时器中断给ADC0808提供时钟信号 void Timer0_INT() interrupt 1 {CLK=~CLK;}

  27. 简易数字电压表 要求:通过调整电位器,采集0—5V连续可变的模拟电压信号,通过ADC0809转换为数字信号0x00-0xff后,送单片机处理,并在四位数码管上显示0.000—5.000V。

  28. #include<reg51.h> #define uchar unsigned char #define unit unsigned int uchar code dispcode1[]={0xbf,0x86,0xdb,0xcf,0xe6, 0xed}; uchar code dispcode2[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; uchar ch1,ch2,ch3,ch4; sbit ST=P3^3;//启动信号 sbit OE=P3^1; //输出使能 sbit EOC=P3^2;//转换结束信号 sbit CLK=P3^0;

  29. void delayms(unit x)//延时函数 {uchar i,j; for(i=x;i>0;i--) for(j=0;j<120;j++) ; } void Display (uchar i,uchar d) {if(i==1) P1=dispcode1[d]; else P1=dispcode2[d]; delayms(10);} void sepr(uchar x) {uchar ch;ch=x; ch1=ch/51; ch=ch%51; ch2=ch*10/51; ch=ch*10%51; ch3=ch*10/51;ch=ch*10%51;ch4=ch*10/51;}

  30. void main(void) {uchar a; TMOD=0x02; //T0工作模式2 TH0=0xf0; TL0=0xf0; IE=0x82; TR0=1; while(1) {ST=0;delayms(1); ST=1;delayms(1); ST=0; //启动A/D转换

  31. while(EOC==0); //等待转换完成 OE=1; P2=0xff; a=P2;sepr(a); P0=0xfe; Display(2,ch4); P0=0xfd; Display(2,ch3); P0=0xfb; Display(2,ch2); P0=0xf7; Display(1,ch1); OE=0;}} void Timer0_INT() interrupt 1 {CLK=~CLK;}

More Related