第十章 8051输出控制的C编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 8051输出控制的C编程 一、D/A转换器的性能参数与选型 主要性能参数: 分辨率:分辨率是指D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。 转换精度:指满量程时DAC的实际模拟输出值和理论值的接近程度。 偏移量误差:偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。 线性度:线性度是指DAC的实际转换特性曲线和理想直线之间的最大偏移差。 选取原则: 考虑性能指标的要求 考虑结构特性与应用特性(输入信号的方式、模拟输出特性、锁存特性、参考电压源) 8位D/A芯片DAC0832引脚功能 D7~D0:8位数据输入端 ILE:输入寄存器锁存允许信号 CS:芯片选择信号 WR1:输入寄存器写信号 XFER:数据传送信号 WR2:DAC寄存器写信号 VREF:基准电压 Rfb:反馈信号输入端 IOUT1:电流输出1端 IOUT2:电流输出2端 VCC:电源 AGND:模拟地 DGND:数字地 8位D/A芯片DAC0832内部结构 DAC0832的工作方式 对两个寄存器可采用不同的控制方法,因此DAC0832可有三种不同的工作方式: 直通工作方式 单缓冲工作方式 双缓冲工作方式 直通工作方式 所有控制信号(CS、WR1、WR2、ILE、XFER)都为有效时,两个寄存器处于直通状态,不起锁存作用,此时数据线的数字信号经两个寄存器直接进入D/A转换器进行转换并输出。 适用于连续反馈控制中。 单缓冲工作方式 使两个寄存器中始终有一个(多为DAC寄存器)处于直通状态,另一个起锁存作用。如使WR2=0和XFER=0,或将WR1与WR2相连及XFER与CS相连,则DAC寄存器处于直通状态,输入寄存器处于受控状态。 适用于应用系统中只有一路D/A转换或有多路转换但不要求同步输出。 双缓冲工作方式 使DAC0832片内的两个寄存器全部起锁存作用。数字量的输入锁存和D/A转换输出分两步完成,各个DAC0832芯片输入寄存器的锁存控制由不同地址线控制,而它们的DAC寄存器的锁存控制则由同一个地址线完成。 编程时,首先给各个DAC0832芯片输入转换数据并锁存在各自芯片的输入寄存器上,然后再向所有的DAC0832的DAC寄存器发锁存控制信号,所有的DAC0832芯片的DAC寄存器同时从它的前级寄存器得到数据并锁存,同时转换,最后同时输出。 适用于要求多路DAC0832芯片同时输出的场合。 输出方式 DAC0832为电流输出型D/A转换器,外加转换电路可获得电压输出。 Vout1为单极性输出:Vout1=-B·VREF/256 Vout为双极性输出: Vout=(B-128)·VREF/128 DAC0832与MCS-51系列单片机接口 产生锯齿波电压信号程序 #include reg51.h #include absacc.h #define DAC0832 XBYTE[0xFF7F] #define uchar unsigned char void main(void) { uchar i; while(1) { for(i=0;i=255;i++) DAC0832=i; } } 产生正弦波信号程序 #include reg51.h #include absacc.h #include intrins.h #define uint unsigned int #define DA0832 XBYTE[0x6FFF] uchar code Wave[]={ 0x7F,0x8C,0x98,0xA5,0xB0,0xBC,0xC7,0xD1, 0xDA,0xE2,0xEA,0xF0,0xF6,0xFA,0xFD,0xFE, 0xFF,0xFE,0xFD,0xFA,0xF6,0xF0,0xEA,0xE2, 0xDA,0xD1,0xC7,0xBC,0xB0,0xA5,0x98,0x8C, 0x80,0x73,0x67,0x5A,0x4F,0x43,0x38,0x2E, 0x25,0x1D,0x15,0x0F,0x09,0x05,0x02,0x01, 0x00,0x01,0x02,0x05,0x09,0x0F,0x15,0x1D, 0x25,0x2E,0x38,0x43,0x4F,0x5A,0x67,0x73}; void OutSin(void) { uchar i; while(1) { for(i=0;i64;i++) { DA0832=Wave[i]; _nop_(); } }

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档