教学PPT AT89S51汇编语言程序设计.ppt
《教学PPT AT89S51汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《教学PPT AT89S51汇编语言程序设计.ppt(100页珍藏版)》请在三一办公上搜索。
1、第11章 AT89S51单片机与D/A、A/D 转换器接口,11.1 AT89S51单片机与DAC接口11.1.1 D/A转换器简介1概述购买和使用D/A转换器要注意几个问题。(1)D/A转换器输出形式 有两种输出形式。一种是电压输出,即给D/A转换器输入是数字量,而输出为电压。另一种是电流输出。对电流输出D/A转换器,如需要模拟电压输出,可在其输出端加一个由运算放大器构成I-V转换电路,将电流输出转换为电压输出。(2)D/A转换器与单片机接口形式单片机与D/A转换器连接,早期多采用8位数字量并行传输并行接口,现在除并行接口外,带有串行口D/A转换器品种也不断增多。除了通用UART串行口外,目
2、前较为流行还有I2C串行口和SPI串行口等。所以在选择单片D/A转换器时,要考虑单片机与D/A转换器接口形式。,2主要技术指标(1)分辨率指单片机输入给D/A转换器单位数字量变化,所引起模拟量输出变化,通常定义为输出满刻度值与2n之比(n为D/A转换器二进制位数)。习惯上用输入数字量二进制位数表示。位数越多,分辨率越高,即D/A转换器对输入量变化敏感程度越高。例如,8位D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为:10V/256=39.1mV,即输入二进制数最低位变化可引起输出模拟电压变化39.1mV,该值占满量程0.391%,常用符号1LSB表示。同理
3、:10位D/A转换1 LSB=9.77mV=0.1%满量程12位D/A转换1 LSB=2.44mV=0.024%满量程16位D/A转换1 LSB=0.076mV=0.00076%满量程使用时,应根据对D/A转换器分辨率需要来选定D/A转换器位数。,(2)建立时间 描述D/A转换器转换快慢一个参数,用于表明转换时间或转换速度。其值为从输入数字量到输出达到终值误差(1/2)LSB时所需时间。电流输出转换时间较短,而电压输出转换器,由于要加上完成I-V转换运算放大器延迟时间,因此转换时间要长一些。快速D/A转换器转换时间可控制在1s以下。(3)转换精度理想情况下,转换精度与分辨率基本一致,位数越多精
4、度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在着误差。严格讲,转换精度与分辨率并不完全一致。只要位数相同,分辨率则相同,但相同位数不同转换器转换精度会有所不同。例如,某种型号8位DAC精度为0.19%,而另一种型号8位DAC精度为0.05%。,11.1.2 AT89S51与8位D/A转换器0832接口设计1DAC0832芯片介绍(1)DAC0832特性美国国家半导体公司DAC0832芯片是具有两个输入数据寄存器8位DAC,它能直接与AT89S51单片机连接,主要特性如下。分辨率为8位。电流输出,建立时间为1s。可双缓冲输入、单缓冲输入或直接数字输入。单一电源供电(+5V+15V
5、)。低功耗,20mW。(2)DAC0832引脚及逻辑结构引脚如图11-1所示,DAC0832逻辑结构如图11-2所示。,图11-1 DAC0832引脚图,图11-2 DAC0832逻辑结构,引脚功能:DI0DI7:8位数字信号输入端,与单片机数据总线P0口相连,用于接收单片机送来待转换为模拟量数字量,DI7为最高位。:片选端,当 为低电平时,本芯片被选中。ILE:数据锁存允许控制端,高电平有效。:第一级输入寄存器写选通控制,低电平有效。当=0,ILE=1,=0时,待转换数据信号被锁存到第一级8位输入寄存器中。:数据传送控制,低电平有效。:DAC寄存器写选通控制端,低电平有效。当=0,=0时,输
6、入寄存器中待转换数据传入8位DAC寄存器中。IOUT1:D/A转换器电流输出1端,输入数字量全为“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。,IOUT2:D/A转换器电流输出2端,IOUT2+IOUT1=常数。Rfb:外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。VCC:电源输入端,在+5V+15V范围内。DGND:数字信号地。AGND:模拟信号地,最好与基准电压共地。“8位输入寄存器”用于存放单片机送来数字量,使输入数字量得到缓冲和锁存,由 加以控制;“8位DAC寄存器”用于存放待转换数字量,由 控制;“8位D/A转换电路”受“8位DAC寄存器”
7、输出数字量控制,输出和数字量成正比模拟电流。因此,需外接I-V转换运算放大器电路,才能得到模拟输出电压。,2AT89S51单片机与DAC0832接口电路设计设计接口电路时,常用单缓冲方式或双缓冲方式单极性输出。(1)单缓冲方式 指DAC0832内部两个数据缓冲器有一个处于直通方式,另一个处于受AT89S51单片机控制锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步情况下,可采用单缓冲方式。图11-3所示是单极性模拟电压输出电路,由于DAC0832是8位(28=256)D/A转换器,由基尔霍夫定律列出方程组可解得0832输出电压vo与输入数字量B关系为,
8、图11-3 单缓冲方式下单片机与DAC0832接口电路,输出模拟电压vo和输入数字量B以及基准电压VREF成正比,且B为0时,vo也为0,输入数字量为255时,vo为最大绝对值输出,且不会大于VREF。图11-3中,和 接地,故DAC0832“8位DAC寄存器”工作于直通方式。“8位输入寄存器”受 和 端控制,而且 由译码器输出端FEH送来。单片机执行如下两条指令就可在 和 上产生低电平信号,使DAC0832接收AT89S51送来数字量。MOVR0,#0FEH;DAC端口地址FEHR0MOVXR0,A;单片机的 WR和译码器FEH输出端有效,【例11-1】DAC0832用作波形发生器。根据图1
9、1-3,分别写出产生锯齿波、三角波和矩形波程序。在图11-3中,运算放大器A输出端Vout直接反馈到Rfb,故这种接线产生模拟输出电压是单极性的。锯齿波产生 ORG2000HSTART:MOVR0,#0FEH;DAC地址FEH R0MOVA,#00H;数字量ALOOP:MOVXR0,A;数字量D/A转换器 INCA;数字量逐次加1SJMP LOOP,当输入数字量从0开始,逐次加1进行D/A转换,模拟量与其成正比输出。当A=FFH时,再加1则溢出清0,模拟输出又为0,然后又重新重复上述过程,如此循环,输出波形就是锯齿波。实际上,每一上升斜边要分成256个小台阶,每个小台阶暂留时间为执行后三条指令
10、所需要时间。因此“INC A”指令后插入NOP指令或延时程序,则可改变锯齿波频率。,图11-4 DAC0832产生锯齿波输出,三角波产生 ORG 2000HSTART:MOV R0,#0FEH MOV A,#00HUP:MOVX R0,A;产生三角波上升边 INCA JNZUPDOWN:DECA;A=0时减1为FFH,产生三角波下降边 MOVX R0,A JNZ DOWN SJMP UP输出三角波如图11-5所示。图11-5 DAC0832产生三角波输出,矩形波产生 ORG2000HSTART:MOV R0,#0FEHLOOP:MOV A,#data1;#data1为上限电平对应的数字量MOV
11、X R0,A;置矩形波上限电平LCALL DELAY1;调用高电平延时程序MOV A,#data2;#data2为下限电平对应的数字量MOVX R0,A;置矩形波下限电平LCALL DELAY2;调用低电平延时程序SJMP LOOP;重复进行下一个周期 输出矩形波如图11-6所示。DELAY1、DELAY2为两个延时程序,分别决定输出矩形波高、低电平时持续宽度。矩形波频率也可用延时方法改变。,图11-6 DAC0832产生矩形波输出(2)双缓冲方式多路D/A转换要求同步输出时,必须采用双缓冲同步方式。此方式工作时,数字量输入锁存和D/A转换输出是分两步完成。单片机必须通过 来锁存待转换数字量,
12、通过 来启动D/A转换(见图11-2)。因此,双缓冲方式下,DAC0832应该为单片机提供两个I/O端口。,AT89S51单片机和DAC0832在双缓冲方式下连接如图11-7所示。1#DAC0832因 和译码器FDH相连而占有FDH和FFH两个I/O端口地址,而2#DAC0832的两个端口地址为FEH和FFH。其中,FDH和FEH分别为1#和2#DAC0832数字量输入控制端口地址,而FFH为动D/A转换端口地址。若把图11-7中DAC输出模拟电压Vx和Vy来控制X-Y绘图仪,则应把Vx和Vy分别加到X-Y绘图仪X通道和Y通道,而X-Y绘图仪由X、Y两个方向步进电机驱动,其中一个电机控制绘笔沿
13、X方向运动;另一个电机控制绘笔沿Y方向运动。因此对X-Y绘图仪控制有一基本要求:就是两路模拟信号要同步输出,使绘制曲线光滑。如果不同步输出,例如先输出X通道模拟电压,再输出Y通道模拟电压,则绘图笔先向X方向移动,再向Y方向移动,此时绘制曲线就是阶梯状的。通过本例,也就不难理解DAC设置双缓冲方式目的所在。,19,图11-7 单片机和两片DAC0832双缓冲方式接口电路,【例11-2】设AT89S51内部RAM中有两个长度为20数据块,其起始地址为分别为addr1和addr2,根据图11-7,编写能把addr1和addrr2中数据从1#和2#DAC0832同步输出程序。程序中addr1和addr
14、2中数据,即为绘图仪所绘制曲线x、y坐标点。由图11-7可知,DAC0832各端口地址为:FDH:1#DAC0832数字量输入控制端口FEH:2#DAC0832数字量输入控制端口FFH:1#和2#DAC0832启动D/A转换端口 首先使工作寄存器0区R1指向addr1;1区R1指向addr2;0区工作寄存器R2存放数据块长度;0区和1区工作寄存器区R0指向DAC端口地址。程序如下:,ORG2000Haddr1DATA 20H;定义存储单元addr2 DATA 40H;定义存储单元 DTOUT:MOVR1,#addr1;0区R1指向addr1MOVR2,#20;数据块长度送0区R2SETBRS0
15、;切换到工作寄存器1区MOVR1,#addr2;1区R1指向addr2CLRRS0;返回工作寄存器0区 NEXT:MOVR0,#0FDH;0区R0指向1#DAC数字量控制端口MOVA,R1;addr1中数据送A MOVX R0,A;addr1中数据送1#DAC INCR1;修改addr1指针0区R1 SETBRS0;转入1区 MOVR0,#0FEH;1区R0指向2#DAC0832数字量控制端口 MOVA,R1;addr2中数据送A,MOVX R0,A;addr2中数据送2#DAC0832 INCR1;修改addr2指针1区R1 INCR0;1区R0指向DAC启动D/A转换端口 MOVX R0,
16、A;启动DAC进行转换 CLRRS0;返回0区 DJNZR2,NEXT;若未完,则跳转NEXT LJMPDTOUT;若送完,则循环3DAC0832双极性电压输出在双极性电压输出场合下,可以按照图11-8所示接线。图中,DAC0832数字量由单片机送来,A1和A2均为运算放大器,vo通过2R电阻反馈到运算放大器A2输入端,G点为虚拟地,其他电路如图11-8所示。由基尔霍夫定律列出的方程组可解得,由上式知,当单片机输出给DAC0832数字量B128时,即数字量最高位b7为1,输出模拟电压vo为正;当单片机输出给DAC0832数字量B128时,即数字量最高位为0,则vo输出电压为负。图11-8 双极
17、性DAC接法,11.1.3 AT89S51与12位D/A转换器AD667接口设计8位分辨率不够时,可以采用高于8位分辨率DAC,例如,10位、12位、14位、16位(例如AD669)DAC。AD667是一种分辨率为12位并行输入、电压输出型D/A转换器,建立时间3s。输入方式为双缓冲输入;输出方式为电压输出,通过硬件编程可输出+5V、+10V、2.5V、5V和10V;内含高稳定基准电压源,可方便地与4位、8位或16位微处理器接口;双电源工作电压为12V15V。1引脚介绍 图11-9 AD667引脚图,AD667为28脚双列直插式封装,图11-9所示为双列直插式封装引脚图,表11-1为其引脚说明
18、。,(1)内部功能结构图11-10所示为AD667内部功能结构框图。,图11-10 AD667内部功能结构框图,(2)应用特性 模拟电压输出范围配置AD667通过片外引脚不同电路连接,可获得不同输出电压量程范围。单极性工作时,可以获得05V和010V电压。双极性工作时,可获得2.5V、5.0V和10V电压。具体量程配置可由引脚1、2、3、9不同连接实现,见表11-2。由于AD667内置量程电阻与其他元器件具有热跟踪性能,所以AD667增益和偏置漂移非常小。在电路运行之前,为保证转换精度,首先要进行电路调零和增益调节。,电路调零 数字输入量全为“0”时,调节50k电位器RP1,使其模拟电压输出端
19、(VOUT)电压为0.000V。在大多数情况下,并不需要调零,只要把脚4与脚5相连(接地)即可。增益调节 数字输入量全为“1”时,调节100电位器RP2,使其模拟电压输出为9.9976V,即满量程10.000V减去1LSB(约为2.44mV)所对应模拟输出量。,单极性电压输出图11-11为010V单极性电压输出电路原理图。,图11-11 010V单极性电压输出电路原理图,双极性电压输出图11-12为-5V+5V双极性电压输出电路。在电路运行之前,为保证转换精度,首先要进行偏置调节和增益调节。偏置调节 数字输入量全为“0”时,调节100电位器RP1,使其模拟电压输出端电压为5.000V。增益调节
20、 数字输入量全为“1”,调节电位器RP2,使其模拟输出电压值为4.9976V,即正满量程电压输出5.000V减去1LSB(约为2.44mV)所对应模拟输出量。内部/外部基准电压源使用AD667有内置低噪声基准电源,其绝对精度和温度系数都是通过激光修正,具有长期稳定性。片内基准电源可提供片内D/A转换器所需基准电流,还可通过缓冲电路驱动外部电路,一般可向外部负载提供0.1mA驱动电流。,图11-12 5V双极性电压输出电路原理图,接地与动态电容接法AD667把模拟地AGND与电源地PGND分开,可以减少器件低频噪声和增强高速性能。把地回路分开目的是为了尽量减少低电平信号路径中电流。AGND是输出
21、放大器地端,应与系统中模拟输出电压基准地直接相连,任何由输出放大器驱动负载都应该接在模拟地引脚上。电源地PGND可以与模拟电源接地点就近连接。最后AGND与PGND在一点上进行连接,一般连接到电源地PGND上。另外,AD667电源引脚到模拟地引脚间应加上适当去耦电容。在输出放大器反馈电阻两端加一个20pF小电容,可以明显改善输出放大器动态性能。,数字输入控制与数据代码AD667总线接口逻辑由4个独立可寻址锁存器组成,其中有3个4位输入数据锁存器(第一级锁存器)和1个12位DAC锁存器(第二级锁存器)。利用3个4位锁存器可以直接从4位、8位或16位微处理器总线分次或一次加载12位数字量;一旦数字
22、量被装入12位输入数据锁存器,就可以把12位数据传入第二级DAC锁存器,这种双缓冲结构可以避免产生错误模拟输出。4个锁存器由4个地址输入A0A3和 控制,所有控制都是低电平有效,对应关系见表11-3。所有锁存器都是电平触发,也就是说,当对应控制信号都有效时,锁存器输出跟踪输入数据;当任何一个控制信号无效时,数据就被锁存。它允许一个以上锁存器被同时锁存。,建议任何未使用数据和控制引脚最好与电源地相连,以改善抗噪声干扰特性。AD667使用正逻辑二进制输入编码,大于2.0V输入电压表示逻辑“1”,而小于0.8V输入电压表示逻辑“0”。单极性输出时,输入编码采用直接二进制编码,全“0”数据输入000H
23、产生零模拟输出;全“1”数据输入FFFH产生比满量程少1LSB模拟输出。双极性输出时,输入编码采用偏移二进制编码,数据输入为000H时,产生负满量程输出;数据输入为FFFH时,产生比满量程少1LSB的模拟输出;数据输入为800H时,模拟输出为0。其中1LSB为最低位对应模拟电压。双极性输出时输入与输出关系如图11-13所示,输入数字量N与输出模拟电压VOUT关系为:,式中,VR为输出电压量程。与单片机接口数据格式AD667与单片机接口数据格式为左对齐或右对齐数据格式。左对齐数据格式为:右对齐数据格式为:,图11-13 双极性输出与输入关系,2AD667与AT89S51单片机接口,图11-14
24、AD667与AT89S51单片机接口电路,单片机把AD667所占3个端口地址视为外部数据存储器3个单元,对其进行选通,完成对AD667数据传送锁存及转换功能。假定低8位数据存20H单元,高4位数据存21H低4位,D/A转换程序如下:MOVA,20HMOVDPTR,#7FFEHMOVXDPTR,A;低8位进第一级锁存器MOVA,21HMOVDPTR,#7FFDHMOVXDPTR,A;高4位进第一级锁存器MOVDPTR,#7FFBHMOVXDPTR,A;启动第二级锁存器RET,11.1.4 AT89S51与串行输入12位D/A转换器AD7543接口设计1.AD7543简介美国AD公司为异步串行口设
25、计12位价廉D/A转换器。直接与AT89S51串行口相连,结构如图11-15所示。AD7543片内由12位串行输入并行输出移位寄存器(寄存器A)和12位DAC输入寄存器(寄存器B)组成。在选通信号前沿或后沿(可选择)定时把SRI引脚上串行数据装入寄存器A,一旦寄存器A装满,在加载脉冲控制下,寄存器A数据便装入寄存器B中。AD7543引脚如图11-16所示,功能如下:OUT1:AD7543电流输出引脚1。OUT2:AD7543电流输出引脚2。AGND:模拟地。,图11-15 AD7543片内结构,STB1:寄存器A选通控制信号。:寄存器B加载1输入。当 和 为低电平时,寄存器A内容送到寄存器B。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学PPT AT89S51汇编语言程序设计 教学 PPT AT89S51 汇编语言 程序设计

链接地址:https://www.31ppt.com/p-2866610.html