D/A转换器输入的是数字量,经转换后输出的是模拟量。有关D/A转换器的技术性能指标很多,例如绝对精度、相对精度、线性度、输出电压范围、温度系数、输入数字代码种类(二进制或BCD码)等。
1) 分辩率
分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果数字量的位数为n,则D/A转换器的分辨率为2-n。这就意味着数/模转换器能对满刻度的2-n输入量作出反应。
2) 建立时间
建立时间是描述D/A转换速度快慢的一个参数,指从输入数字量变化到输出达到终值误差±(1/2)LSB(最低有效位)时所需的时间。通常以建立时间来表示转换速度.
转换器的输出形式为电流时,建立时间较短;输出形式为电压时,由于建立时间还要加上运算放大器的延迟时间,因此建立时间要长一点。但总的来说,D/A转换速度远高于A/D转换速度,快速的D/A转换器的建立时间可达1 μs。
3) 接口形式
D/A转换器与单片机接口方便与否,主要决定于转换器本身是否带数据锁存器。有两类D/A转换器,一类是不带锁存器的,另一类是带锁存器的。对于不带锁存器的D/A转换器,为了保存来自单片机的转换数据,接口时要另加锁存器,因此这类转换器必须在口线上;而带锁存器的D/A转换器,可以把它看作是一个输出口,因此可直接在数据总线上,而不需另加锁存器。
典型D/A转换器芯片DAC0832
DAC0832是一个8位D/A转换器。单电源供电,从+5 V~+15 V均可正常工作。基准电压的范围为±10 V;电流建立时间为1 μs;CMOS工艺,低功耗20 mW。
DAC0832转换器芯片为20引脚,双列直插式封装,其引脚排列图如图所示。DAC0832内部结构框图如图所示。 该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。使用时,数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。
此外,由三个与门电路组成寄存器输出控制逻辑电路,该逻辑电路的功能是进行数据锁存控制,当=0时,输入数据被锁存;当=1时,锁存器的输出跟随输入的数据。
D/A转换电路是一个R-2R T型电阻网络,实现8位数据的转换。对各引脚信号说明如下:
(1) DI7~DI0:转换数据输入。
(2) CS:片选信号(输入),低电平有效。
(3) ILE:数据锁存允许信号(输入),高电平有效。
(4) WR:第1写信号(输入),低电平有效。
上述两个信号控制输入寄存器是数据直通方式还是数据锁存方式,当ILE=1和 WR1 =1=0时,为输入寄存器直通方式;当ILE=1和WR1 =1时,为输入寄存器锁存方式。
(5) WR2 =1:第2写信号(输入),低电平有效。
(6) XFER:数据传送控制信号(输入),低电平有效。
上述两个信号控制DAC寄存器是数据直通方式还是数据锁存方式,当 WR2=0和XFER=0时,为DAC寄存器直通方式;当WR2=1和XFER=0时,为DAC寄存器锁存方式。
(7) Iout1:电流输出1。
(8) Iout2:电流输出2。
DAC转换器的特性之一是:Iout1+Iout2=常数。
(9) Rfb:反馈电阻端。
DAC 0832是电流输出,为了取得电压输出,需在电压输出端接运算放大器,Rfb即为运算放大器的反馈电阻端。运算放大器的接法如图7.31所示。
(10) Vref:基准电压,其电压可正可负,范围是-10 V~+10 V。
(11) DGND:数字地。
(12) AGND:模拟地。
关键字:51单片机 单缓冲方式
引用地址:
51单片机单缓冲方式的接口与应用
推荐阅读最新更新时间:2024-03-16 15:50
8051单片机定时器溢出中断误差补偿示例
1 前言 单片机内部一般有若干个定时器。如8051单片机内部有定时器0和定时器1。在定时器计数溢出时,便向CPU发出中断请求。当CPU正在执行某指令或某中断服务程序时,它响应定时器溢出中断往往延迟一段时间。这种延时虽对单片机低频控制系统影响甚微,但对单片机高频控制系统的实时控制精度却有较大的影响,有时还可能造成控制事故。为扩大单片机的应用范围,本文介绍它的定时器溢出中断与CPU响应中断的时间误差、补偿误差的方法和实例。 2 误差原因、大小及特点 产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。一是定时器溢出中断信号时,CPU正在执行某指令;二是定时器溢出中断信号时,CPU正在执行某中断服务程序。
[单片机]
51单片机IO口模拟串口通讯1-延时法
最近因工作需要,研究了一下单片机IO口模拟串口通讯的相关知识。相关内容主要参考了网上《51单片机模拟串口的三种方法》和《单片机IO口模拟串口程序(发送+接收)》两篇文档,并动手做了一下实验。感受颇多。 硬件环境:STC89C52 软件环境:IDE Keil uVision V4.10 编译器 C51 V9.0 代码如下: /********************************************** 方法1:延时法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:所谓延时法是指根据模拟出的波特率,每1位持续的时间的长短是通过循环空指令来延
[单片机]
51单片机 HC05蓝牙模块学习
一、注意事项 1、烧写程序时,要把蓝牙tx,rx信号线拔掉,对烧写程序有影响。 2、执行HC05集命令时,均以rn结尾。串口中断若选择“发送新行”时,不用添加rn。原理相同。 二、准备软硬件 1、硬件:单片机STC89C52RC开发板,蓝牙模块HC05 2、软件:串口工具SSCOM3.3,手机蓝牙客户端 三、蓝牙模块HC05端口定义(6引脚) state——蓝牙连接状态,未连接输出低,连接后输出高 TX——信号发 RX——信号收 GND——地 +5V EN——使能端,需要进入AT模式时接3.3V,接单片机i/o引脚即可,高电平 四、进入AT模式进行参数和状态的设置 两种工作模
[单片机]
51单片机位及位操作指令
我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,可以直接用数值来表在。可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了?我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进制才知道。工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处理就显示有些麻烦,所以在8051单片机中特意引入一个位处理机制。 位寻址区 在8051中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,可以直接用这个地址来
[单片机]
基于51单片机实现模拟IIC总线时序
最近用到测量光线的模块BH1750FVI时需要用到IIC总线操作, 于是就又费功夫学习了下, 基本上算是了解了, 所以呢, 就用51的IO口, 模拟出了总线时序, 并能正确操纵需要用IIC总线访问地一系列模块. 本来想写篇文章简单介绍下我对IIC总线的理解的, 但, 发现没工夫, 所以, 放在以后有时候再来弄吧. 今天我还是只给出一个范例程序, 它能在我的51单片机机系统上工作得很好. iic.h 列出了所有IIC总线的操作函数. 下面给出源代码: //iic.h - 实现相关的头文件 //女孩不哭 2013-01-18 #ifndef __IIC_H__ #define __IIC_H__ void iic_start(
[单片机]
一种51单片机虚拟实验室的建立方法
0 引 言 单片机的学习是一个实践性很强的过程,目前的单片机实验室基本采用硬件仿真设备搭建,受资金和场地的限制,单片机实验室配置的灵活性和完整性受到一定的限制。针对这些问题,在此提出一种建立基于个人PC和各种软件的单片机个人虚拟实验室方案。所谓“虚拟实验室”,就是将计算机上的各种虚拟仪器,按实验要求和设计原理,虚拟出与现实相同的实验系统,进而在这个系统上完成整个实验。与传统实验模式相比,虚拟实验具有比较明显的优势,例如,涉及的实验内容全面,硬件投入少,学生可自行实验,实验过程中损耗小,与工程实践最为接近等。一般的虚拟实验室仅包含单片机系统的调试,本文在此基础上又加入了与上位机的联合调试。 在此,以使用VB通过RS 232串
[单片机]
51单片机实验18:蜂鸣器
关于蜂鸣器的内容参考:https://blog.csdn.net/cax1165/article/details/87634433 开发板蜂鸣器模块原理图如下: #include reg52.h #define uc unsigned char sbit beep=P1^5; void delay(uc x) { uc i,j; for(i=1;i =x;i++) for(j=1;j =110;j++); } void main() { while(1) { beep=~beep; delay(5);//调节音调 } }
[单片机]
基于51单片机的可调数字时钟程序
使用51单片机内部定时器中断方式一计算时间,在LCD1602液晶显示小时、分钟、秒,并且可以使用按键调整小时和分钟,每次到整点时整点报时。 代码如下: //============================================================= //功能描述:液晶显示时钟,可调时间,准备整点时报时 //MCU:STC89C51,晶振频率:11.0592MHz //============================================================= #include reg51.h #include stdlib.h #include intr
[单片机]