




已阅读5页,还剩72页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子工业出版社 单片机控制技术项目式教程 C语言版 电子工业出版社 项目9信号发生器的设计 能了解D A转换器的相关技术指标 能理解DAC0832的工作原理与应用方法 能掌握DAC0832与51单片机的接口方法 能掌握信号发生器的硬件电路的分析与设计方法 能熟练编写信号发生器产生各种波形信号的单片机控制程序 学习目标 叙述D A转换器的技术指标要求 叙述DAC0832的工作原理 设计单片机控制的信号发生器的工作电路 编写信号发生器产生各种波形信号的单片机控制程序 工作任务 任务9 1灯光亮度调节器的设计任务9 2信号发生器的设计项目拓展串行D A转换芯片PCF8591在实验板上的应用项目小结思考与训练 项目9信号发生器的设计 任务9 1灯光亮度调节器的设计 D A转换的功能就是将数字量转换成模拟量 基本的D A转换器由电压基准或电流基准 精密电阻网络 电子开关及全电流求和电路构成 9 1 1D A转换器的基本原理 1 D A转换器的分类按工作方式分 并行D A转换器 权电阻D A转换器 R 2RT型D A转换器 串行D A转换器间接D A转换器 按D A转换的分辨率分 低分辨率D A转换器中分辨率D A转换器高分辨率D A转换器 按模拟量输出方式分 电流输出D A转换器电压输出D A转换器 按模拟电子开关电路的不同分 CMOS开关型D A转换器 速度要求不高 双极型开关D A转换器电流开关型 速度要求较高 ECL电流开关型 转换速度更高 2 D A转换器的组成 D A转换器由数码寄存器 模拟电子开关电路 解码网络 求和电路及基准电压等几部分组成 以R 2RT型D A转换器为例 其由基准电压Vref T型 R 2R 电阻网络 位切换开关和运算放大器组成 3 D A转换器的工作原理 数字量是用代码按数位组合起来表示的 对于有权码 每位代码都有一定的位权 为了将数字量转换成模拟量 必须将每1位的代码按其位权的大小转换成相应的模拟量 然后将这些模拟量相加 即可得到与数字量成正比的总模拟量 实现数字 模拟转换 R 2RT型D A转换器工作原理 图9 1R 2RT型D A转换器原理电路 图示的电路是一个3位二进制数的D A转换电路 每位二进制数控制一个开关S 当第i位的数码为 0 时 开关Si打在左边 当第i位的数码为 1 时 开关Si打在右边 当S0接通时 I0 I0 I0 I1 I0 I0 2I0同理I1 I1 I1 I2 2I1I2 I2 I2 I 2I2推出I0 I 8 I1 I 4 I2 I 2 I I0 I1 I2 1 8 1 4 1 2 I Uref 1 8 1 4 1 2 R 将上式推广到n位二进制数的转换 可得一般表达式 I Uref a0 2n a1 2n 1 an 1 21 an 20 R则输出电压为Uo I Rf Uref a0 2n a1 2n 1 an 1 21 an 20 Rf R 输出电压会因器件误差 集成运放的非理想特性而产生一定的转换误差 一般D A转换器 OUT B Ur其中 Ur为常量 由参考Uref决定 B为输入数字量 为二进制数 B可为8位 12位 16位等 由DAC芯片型号决定 当B为n位时 B bn 1bn 2 b1b0 bn 1 2n 1 bn 2 2n 2 b1 21 b0 20式中 bn 1为最高位 b0为最低位 1 分辨率分辨率是D A转换器对输入量变化敏感程度的描述 与输入数字量的位数有关 如果数字量的位数为n 则D A转换器的分辨率为1 2n 即数 模转换器能对满刻度的1 2n输入量作出反应 9 1 2D A转换器的技术性能指标 分辨率 输出模拟量的满量程值 2n 如 8位数的分辨率为1 256 10位数分辨率为1 1024 通常用D A转换器输入数字量的位数来表示分辨率 D A转换器常可分为8位 10位 12位三种 2 精度 如果不考虑D A的转换误差 D A转换的精度为其分辨率的大小 因此 要获得一定精度的D A转换结果 首要条件是选择有足够分辨率的D A转换器 转换速度是DAC每秒可以转换的次数 其倒数为转换时间 转换时间是指从输入数字量到转换为模拟量输出所需的时间 当D A转换器的输出形式为电流时 转换时间较短 当D A转换器的输出形式为电压时 转换时间要加上运算放大器的延迟时间而长一点 一般在几十微秒内 3 转换速度 4 建立时间 建立时间是指从输入数字量变化到输出达到终值误差 1 2 LSB 最低有效位 时所需的时间 即输入的数字量变化后 输出模拟量稳定到相应的数字范围内所需的时间 通常以建立时间来表示转换速度 输入编码形式是指D A转换电路输入的数字量的形式 如二进制码 BCD码等 5 输入编码形式 6 线性度 线性度是指D A转换器的实际转移特性与理想直线之间的最大误差 或最大偏移 通常给出在一定温度下的最大非线性度 一般为0 01 0 03 大部分D A转换芯片是电压型输出 一般为5 10V 也有高压输出型的 为24 30V 有一些是电流型的输出 低者为20mA左右 高者可达3A 7 输出电平 8 尖峰 尖峰是输入的数字量发生变化时产生的瞬时误差 通常尖峰的转换时间很短 但幅度很大 在许多场合是不允许有尖峰存在的 应采取措施予以消除 正确了解D A转换器件的技术性能参数 对于合理选用转换芯片 正确设计接口电路十分重要 D A转换器的性能指标很多 但在选用合适的芯片型号时主要考虑的是它的分辨率 精度和转换速度 目前单片机系统常用的D A转换器的转换精度有8位 10位 12位等 与单片机的接口方式有并行接口 串行接口 9 1 3DAC0832芯片及其与单片机接口电路 1 DAC0832芯片介绍 1 DAC0832的性能8位D A转换器 单电源供电 在 5 15V范围均可正常工作 基准电压的范围为 10V 电流建立时间为1 s CMOS工艺 低功耗 仅为20mW DAC0832主要特性 输出电流线性度可在满量程下调节 转换时间 电流建立时间 为 数据输入可采用双缓冲 单缓冲或直通方式 增益温度补偿为0 02 FS 每次输入数字为8位二进制数 低功耗 20mW 逻辑电平输入与TTL兼容 基准电压的范围为 10V 单电源供电 可在 5 15V内正常工作 2 DAC0832的内部结构 该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存 使用时数据输入可以采用两级锁存 双锁存 形式 或单级锁存 一级锁存 一级直通 形式 或直接输入 两级直通 形式 此外 由3个与门电路可组成寄存器输出控制逻辑电路 该逻辑电路的功能是进行数据锁存控制 当 0时 输入数据被锁存 当 1时 锁存器的输出跟随输入的数据 D A转换电路是一个R 2RT型电阻网络 可实现8位数据的转换 3 DAC0832的引脚DAC0832为20引脚 双列直插式封装 Vcc 电源线 DAC0832的电源可以在 5 15V内变化 典型使用时用 15V电源 AGND和DGND AGND为模拟量地线 DGND为数字量地线 使用时 这两个接地端应始终连在一起 CS 片选输入信号 低电平有效 只有当CS 0时 这片DAC0832才被选中 DI0 DI7 8位数字量输入端 应用时 如果数据不足8位 则不用的位一般接地 ILE 输入锁存允许信号 高电平有效 只有当ILE 1时 输入数字量才可能进入8位输入寄存器 WR1 写信号1 低电平有效 控制输入寄存器的写入 ILE和WR1信号控制输入寄存器是数据直通方式还是数据锁存方式 当ILE 1且WR1 0时 为输入寄存器直通方式 当ILE 1且WR1 1时 为输入寄存器锁存方式 WR2 写信号2 低电平有效 控制DAC寄存器的写入 XFER 数据传送控制输入信号 低电平有效 控制数据从输入寄存器到DAC寄存器的传送 WR2和XFER信号控制DAC寄存器是数据直通方式还是数据锁存方式 当WR2 0且XFER 0时 为DAC寄存器直通方式 当WR2 1或XFER 1时 为DAC寄存器锁存方式 Vref 参考电压线 Vref接外部的标准电源 与芯片内的电阻网络相连接 该电压可正可负 范围为 10 10V Iout1和Iout2 电流输出端 Iout1为DAC电流输出1 当DAC寄存器中的数据为0 xFF时 输出电流最大 当DAC寄存器中的数据为0 x00时 输出电流为 Iout2为DAC电流输出2 DAC转换器的特性之一是Iout1 Iout2 常数 在实际使用时 总是将电流转为电压来使用 即将Iout1和Iout2加到一个运算放大器的输入端 Rfb 运算放大器的反馈电阻端 电阻 15k 已固化在芯片中 因为DAC0832是电流输出型D A转换器 为得到电压的转换输出 使用时需在两个电流输出端接运算放大器 Rfb即为运算放大器的反馈电阻 图9 5运算放大器的接法 4 DAC0832的工作原理 将数字量的每一位按权值分别转换成模拟量 再通过运算放大器求和相加 D A转换器内部有一个解码网络 以实现按权值分别进行D A转换 5 DAC0832的输出 DAC0832是电流输出型D A转换器 图9 6DAC0832单极性电压输出电路 单极性输出运放 Vout Iout1 Rfb B Vref 256 双极性输出运放 Vout Vout1 R Vref 2R 2R 2Vout1 Vref 2B Vref 256 Vref B Vref 128 Vref Vref B 128 128 图9 7DAC0832双极性电压输出电路 当Vref为正 数字量在0 x01 0 x7F之间变化时 Vout为负值 当数字量在0 x80 0 xFF之间变化时 Vout为正值 1 直通方式下的接口电路直通方式是数据直接输入 两级直通 的形式 两个8位数据寄存器都处于数据接收状态 LE1 1 LE2 1 ILE 1 而WR1 WR2 CS和XFER均为0 输入数据直接送到内部D A转换器去转换 2 DAC0832与51单片机的接口电路 DAC0832的工作方式 直通方式 单缓冲方式和双缓冲方式 图9 8直通方式下89C51与DAC0832的连接图 2 单缓冲方式下的接口电路单缓冲方式是单级锁存 一级锁存 一级直通 形式 就是使DAC0832的两个8位数据寄存器中有一个处于直通方式 而另一个处于受控的锁存方式 或者两个8位数据寄存器处于同时受控的方式 即同时送数 同时锁存 在单缓冲工作方式下 可以将8位DAC寄存器置于直通方式 为此 应将WR2和XFER接地 而输入寄存器的工作状态受单片机的控制 WR 0 P2 7 0 DAC0832的地址为0 x7FFF 将数字量0 x08转换为模拟量的程序 defineDAC0832XBYTE 0 x7FFF DAC0832 0 x08 或output 0 x7FFF 0 x08 两个输入寄存器同时受控的连接方法 WR1和WR2一起接89C51的WR CS和XFER共同接89C51的P2 7 因此两个寄存器的地址相同 3 双缓冲方式下的接口电路双缓冲方式的数据输入可以采用两级锁存 双锁存 的形式 就是把DAC0832的两个锁存器都接成受控锁存方式 DAC0832的WR1 WR2 CS和XFER都受单片机送来的信号的控制 当WR 0 P2 7 0 P2 6 1 8位输入寄存器处于送数状态 8位DAC寄存器处于锁存状态 不能进行D A转换 双缓冲方式下89C51与两片DAC0832的连接图 如DAC0832的8位输入寄存器地址为0 x7FFF WR 0 P2 7 1 P2 6 0 8位DAC寄存器处于送数据状态 开始进行D A转换 DAC0832的8位DAC寄存器的地址为0 xBFFF 将一个数字量转换为模拟量的程序 defineDAC0832 1XBYTE 0 xBFFF defineDAC0832 2XBYTE 0 x7FFF DAC0832 1 0 x08 DAC0832 2 0 x08 或output 0 xBFFF 0 x08 output 0 x7FFF 0 x08 1 任务要求 9 1 4灯光亮度调节器的设计 用AT89C51单片机和DAC0832控制一个发光二极管 使发光二极管的亮度逐渐变暗 再逐渐变亮 不断循环 2 任务分析 改变发光二极管的亮度 就要改变通过发光二极管的电流 方法很多 利用AT89C51控制DAC0832数模转换芯片 DAC0832的输出转换成电压去驱动发光二极管 当DAC0832的输入数字量变化时 输出电压改变 通过发光二极管的电流变化 发光二极管的亮度就改变 3 任务设计 1 器件选择 2 硬件原理图设计DAC0832单缓冲方式 P2和P0决定地址 片选信号CS低电平有效 P2 7为0 DAC0832的地址为0 x7FFF 3 软件程序设计 include include defineuintunsignedint defineucharunsignedchar defineDAC0832XBYTE 0 x7FFF 延时子程序voidDelayMS uintx uchart while x for t 0 t 120 t 主程序控制灯光亮度变化voidmain uchari while 1 for i 256 i 0 i AC0832 i DelayMS 1 for i 0 i 256 i AC0832 i DelayMS 1 4 软硬件联合调试在Protus环境下 将编译好的软件下载到AT89C51中运行 可以看到LED灯如任务要求的一样先由亮逐渐变暗 再由暗逐渐变亮 1 任务要求 任务9 2信号发生器的设计 用单片机AT89C51和D A转换芯片DAC0832组成的信号发生器生成要求周期和幅度 0V 5V 的锯齿波 三角波 方波或正弦波 2 任务分析 锯齿波 向DAC0832反复送入0 x00 0 xFF数据 就会生成幅度为0V 5V的锯齿波三角波 向DAC0832反复送入0 x00 0 xFF和0 xFF 0 x00数据 就会生成幅度为0V 5V的三角波 方波 向DAC0832送入一定时长的0 x00和一定时长的0 xFF 就会生成幅度为0V 5V的方波 波形的周期与单片机的机器周期和程序中的延时长短相关 正弦波 等时间间隔分割正弦信号 计算出分割时刻的信号幅值 将幅值对应的数字量存储到ROM中 然后用查表的方法取出这些取样值 送到DAC0832转换后输出 那么输出信号就是正弦波形 如 波形频率为50Hz的正弦波信号 正弦波信号以5 作为1个阶梯 则分成360 5 72份 时间间隔为20 72 0 278ms 当参考电压为 5V时 72个采样值 输出电压值 正弦值 角度如表9 2所示 表9 2正弦波数据表 3 任务设计 1 器件选择 2 硬件原理图设计DAC0832工作于单缓冲方式 地址为0 x7FFF Vref接 5V电压 输出的单极性电压在0 5V之间变化 3 软件程序设计 产生锯齿波的源程序如下 include include defineuintunsignedint defineucharunsignedchar defineDAC0832XBYTE 0 x7FFF 延时子程序voidDelayMS uintx uchart while x for t 0 t 120 t 主程序生成锯齿波voidmain uchari while 1 for i 0 i 256 i DAC0832 i DelayMS 1 产生三角波的源程序如下 include include defineuintunsignedint defineucharunsignedchar defineDAC0832XBYTE 0 x7FFF 延时子程序voidDelayMS uintx uchart while x for t 0 t 120 t 主程序生成三角波voidmain uchari while 1 for i 0 i0 i DAC0832 i DelayMS 1 产生正弦波的源程序如下 include include defineuintunsignedint defineucharunsignedchar defineDAC0832XBYTE 0 x7FFF 初始化正弦波波形数据数组ucharcodedata 0 x7F 0 x8A 0 x95 0 xA0 0 xAB 0XB5 0 xBF 0 xC8 0 xD1 0 xD9 0 xE1 0 xE7 0 xED 0 xF3 0 xF7 0 xFA 0 xFD 0 xFE 0 xFF 0 xFE 0 xFD 0 xFA 0 xBF 0 xF3 0 xED 0 xE7 0 xE1 0 xD9 0 xD1 0 xC8 0 xBF 0 xB5 0 xAB 0 xA0 0 x95 0 x8A 0 x7F 0 x75 0 x6A 0 x5F 0 x54 0 x4A 0 x40 0 x36 0 x2D 0 x25 0 x1E 0 x17 0 x11 0 x0C 0 x07 0 x04 0 x02 0 x01 0 x00 0 x01 0 x02 0 x04 0 x07 0 x0C 0 x11 0 x17 0 x1E 0 x25 0 x2D 0 x36 0 x40 0 x4A 0 x54 0 x5F 0 x6A 0 x75 延时子程序voidDelayMS uintx uchart while x for t 0 t 120 t 主程序生成正弦波voidmain uchari while 1 for i 0 i 72 i DAC0832 data i DelayMS 1 4 软硬件联合调试将上面相应波形的程序编译为 hex文件后 在Proteus绘制的原理图中 将 hex文件加载到单片机AT89C51中运行 在虚拟示波器上可以看到对应的波形图 在Proteus仿真运行过程中可能会提示CPU过载 这时虚拟示波器可能会无法实时显示波形 可将虚拟示波器通道A中指向1的黄色旋钮从1开始先正向旋转一圈 再反向旋转一圈 这样会使虚拟示波器尽快刷新显示波形 1 PCF8591简介 项目拓展串行D A转换芯片PCF8591在实验板上的应用 PCF8591是一个单片集成的具有I2C总线接口的8位A D及D A转换器 有4路A D输入 1路D A输出 PCF8591的输入输出地址 控制和数据信号都是通过I2C总线以串行的方式进行传输 PCF8591的主要特性 单独供电PCF8591的操作电压范围 2 5V 6V低待机电流通过I C总线串行输入 输出PCF8591通过3个硬件地址引脚寻址PCF8591的采样率由I C总线速率决定4个模拟输入可编程为单端型或差分输入自动增量频道选择PCF8591的模拟电压范围从VSS到VDDPCF8591内置跟踪保持电路8 bit逐次逼近A D转换器通过1路模拟输出实现DAC增益 2 PCF8591内部结构框图 3 PCF8591引脚功能 4 PCF8591工作原理 PCF8591采用典型的I2C总线接口器件寻址方法 即总线地址由器件地址 1001 引脚地址 由A0 A2接地或 5V来确定 接地代表0 接 5V代表1 方向位 即R W 组成 在I2C总线系统中最多可接8个这样的器件 表9 5PCF8591总线地址 R W 1表示读操作 R W 0表示写操作 如果将A0 A2接地 则读地址为91H 写地址为90H 地址字节 由器件地址 引脚地址 方向位组成 它是通信时主机发送的第一字节数据 控制字节 用于控制PCF8951的输入方式 输入通道 D A转换等 是通信时主机发送的第二字节数据 其格式如下表 D A转换的数据输入和A D转换的数据输出都是通过I2C总线串行输入和输出的 因此PCF8951中I2C总线的通信格式包括写数据格式和读数据格式 PCF8591的I2C总线写数据格式 PCF8591的I2C总线读数据格式 5 I2C总线 1 I2C总线数据位的传输 I2C总线上每传输一个数据位必须产生一个时钟脉冲 I2C总线上数据传输的有效性要求SDA线上的数据必须在时钟线SCL的高电平期间保存稳定 数据线的改变只能在时钟线为低电平期间 I2C总线由2根线 串行数据线 SDA 和串行时钟线 SCL 总线上的每一个器件都有一个唯一的地址 2 I2C总线数据的传输 数据传输中的应答 相应的应答位由接收方 从机 产生 在应答的时钟脉冲期间 发送方 主机 应释放SDA线 使其为高电平 在应答过程中 接收方 从机 必须将数据线SDA拉低 使它在这个时钟脉冲的高电平期间保持稳定的低电平 数据传输的字节格式 发送到SDA线上的每一个字节必须为8位 每次发送的字节数量不受限制 从机在接收完一个字节后向主机发送一个应答位 主机在收到从机应答后才会发送第二字节数据 发送数据时先发数据的最高位 3 I2C总线的传输协议 主机写数据到从机的通信格式 主机从从机中读数据的通信格式 6 实验板上锯齿波信号的输出 1 STC89C52控制PCF8591生成锯齿波信号的电路设计 将U15的J23的19和20脚用杜邦线与J8的SDA和SCL脚连接 2 生成锯齿波的软件设计 主程序main c PCF8591的DA转换程序 include include i2c h defineAddWr0 x90 写数据地址 defineAddRd0 x91 读数据地址 锯齿波数据表 表格数值越多 波形越平滑unsignedcharcodetab 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 定义全局变量externbitack 写入DA转换数值 dat表示需要输入转换的DA数值 从0 255bitWriteDAC unsignedchardat unsignedcharnum unsignedchari Start I2c 启动总线SendByte AddWr 发送器件地址if ack 0 return 0 SendByte 0 x40 发送器件子地址if ack 0 return 0 for i 0 i num i SendByte dat 发送数据if ack 0 return 0 Stop I2c 主程序main unsignedchari while 1 for i 0 i 26 i WriteDAC tab1 i 1 I2C头文件i2c h ifndef I2C H define I2C H include 头文件的包含 include define Nop nop 定义空指令 启动总线voidStart I2c 结束总线voidStop I2c 字节数据传送函数voidSendByte unsignedcharc endif I2C程序i2c c 函数是采用软件延时的方法产生SCL脉冲 晶振频率是12MHz 即机器周期为1us include i2c h define Nop nop 定义空指令bitack 应答标志位sbitSDA P2 1 sbitSCL P2 0 启动总线voidStart I2c SDA 1 发送起始条件的数据信号 Nop SCL 1 Nop 起始条件建立时间大于4 7us 延时 Nop Nop Nop Nop SDA 0 发送起始信号 Nop 起始条件锁定时间大于4 Nop Nop Nop Nop SCL 0 钳住I2C总线 准备发送或接收数据 Nop Nop 结束总线voidStop I2c SDA 0 发送结束条件的数据信号 Nop 发送结束条件的时钟信号SCL 1 结束条件建立时间大于4 Nop Nop Nop Nop Nop SDA 1 发送I2C总线结束信号 Nop Nop Nop Nop 字节数据传送函数voidSendByte unsignedcharc unsignedc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聚酯底漆行业深度研究分析报告(2024-2030版)
- 2025年 公路交通安全生产管理能力考试练习题附答案
- 2025年 蚌埠行知高级中学招聘考试笔试试题附答案
- 2023-2028年中国干果坚果行业市场发展监测及投资战略咨询报告
- 中国纤维柄斧子行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 中国天花板行业市场深度研究及发展趋势预测报告
- 2025年中国点阵式显示器行业发展潜力分析及投资方向研究报告
- 中国紫胶行业市场调查报告
- 2025年中国止挡片行业市场发展前景及发展趋势与投资战略研究报告
- 中国空调压缩机减震垫行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 土木工程施工课程设计完整版
- 检修质量管理培训课件
- 2022年浙江农业博览会参展单位汇总表
- 货物签收单确认单
- 《走进民间音乐》资料
- 螺杆冷水机组使用说明书
- 非固化橡胶沥青防水涂料技术交底
- 讲稿董关鹏:如何面对媒体与公众
- 酒店治安保卫管理制度
- Q∕SY 06521-2016 炼油化工建设项目EPC总承包管理规范
- 课件心肺复苏(CPR)
评论
0/150
提交评论