实验七DAC0832数模转换实验.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验七DAC0832数模转换实验

实验七、DAC0832数模转换实验 实验目的 掌握DAC0832直通方式、单缓冲方式、双缓冲方式的编程方法 掌握DA转换程序的编程方法和调试方法。 实验说明 美国国家半导体公司产品,具有两个输入数据寄存器的8位DAC,能直接与MCS-51单片机相连。主要特性如下: 分辨率为8位; * 电流输出,稳定时间为1(s; * 可双缓冲输入、单缓冲输入或直接数字输入; * 单一电源供电(+5~+15V); DAC0832的逻辑结构: 其引脚分布如图所示: DAC0832各引脚说明: DI0-DI7:转换数据输入端; CS:片选信号输入端。 ILE:数据锁存允许信号输入端,高电平有效。 WR1:输入寄存器写选通控制端。当CS*=0、ILE=1、 WR1*=0时,数据信号被锁存在输入寄存器中。 Xfer:数据传送控制信号输入端,低电平有效。 WR2:DAC寄存器写选通控制端。当XFER*=0,WR2* =0 时,输入寄存器状态传入DAC寄存器中。 Iout1:电流输出1端,当数据全为1时,电流输出最大;当数据全为0时,输出电流最小。 Iout2:电流输出2端。DAC0802具有Iout1+Iout2=常数的特性。 Rfb:反馈电阻端。 Vref:基准电压输入端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为-10V~10V; VCC和GND:芯片的电源和接地端。 DAC内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器有LIE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可以实现三种工作方式:直通方式,单缓冲方式,双缓冲方式。 直通方式是将两个寄存器的五个控制端预先置为有效信号,两个寄存器都开通,只要有数字信号输入就立即进入DA转换。 单缓冲方式是使DAC0832的两个输入寄存器中由一个处于直通方式,另一个处于受控方式,可以将WR2和Xref相连接到地上,并把WR1接到80C51的WR上,LIE接高电平,CS接高位地址或地址译码的输出端上。 双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可以用于多路模拟量要求同时输出的情况下。 三种工作方式的区别是:直通方式不需要选通,直接进行DA转换;单缓冲方式一次选通;双缓冲方式二次选通。 实验步骤 单片机最小应用系统1的P1口接DAC0832的DI0~DI7,单片机最小应用系统的P2.0、WR分别接DA转换的P2.0、WR,Vref接-5V,DA转换的out接示波器探头。 用串行数据线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,主要仿真器的方向:缺口朝上。 打开keil uvision2 仿真软件,首先建立本实验的项目文件,接着添加DA转换程序。 进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400. 打开模块电源和总电源,点击开始调试按钮,点击run按钮运行程序。观察示波器测量输出波形的周期和幅度。 实验内容 1、在硬件不改动的情况下,请编程实现输出波形为锯齿波及三角波、正弦波。 参考程序: 1、矩形波参考程序: #include reg51.h #include absacc.h #define DAC XBYTE[0xFEFF] void deley(unsigned int k) { unsigned int i; for(i=0;ik;i++); } void main() { unsigned int k; unsigned int dout; while(1) {DAC=0x00; deley(10); DAC=0xff; deley(10); } } 2、三角波参考程序: #include reg51.h #include absacc.h #define DAC XBYTE[0xFEFF] void deley(unsigned int k) { unsigned int i; for(i=0;ik;i++); } void main() { unsigned int k; unsigned int dout; while(1) { for(k=0;k0xff;k++) { DAC=k; } for(k=0xff;k0;k--) { DAC=k; } } } 3、锯齿波参考程序: #include reg51.h #include absacc.h #define DAC XBYTE[0xFEFF] void deley(unsigned int k) { unsigned int i; for(i=0;ik;i++); } void main() { unsigned int k; unsigned int dout; while(1) { for(k=0;k0xff;k++

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档