《第六章MCS-51系列单片机的数-模(DA)转换的汇编编程ppt课件.ppt》由会员分享,可在线阅读,更多相关《第六章MCS-51系列单片机的数-模(DA)转换的汇编编程ppt课件.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程6.1项目引入:简易数控电源项目引入:简易数控电源项目说明项目说明 第5章中介绍了由独立键盘、矩阵键盘、数码管显示、LCD1602显示组成的数字系统的汇编编程。事实上,很多电子产品除了有数字电路部分外还有模拟电路部分,需要将单片机系统产生的数字信号转换成各种模拟信号以满足不同模拟器件驱动的要求。本项目使用前面介绍的独立键盘、矩阵
2、键盘、LCD1602显示构成的单片机应用系统加上D/A转换器组成一个简易数控电源。实现功能如下: 输出电压:范围09.9 V,步进0.1 V。 输出电压值由液晶显示。 由+、-两键分别控制输出电压步进增减。 输出电压可预置在09.9 V之间的任意一个值。 用自动扫描替代人工按键,实现输出电压变化(步进0.1 V不变)。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 本项目给出参考电路原理图,其中下图为简易数控电源的主体部分,电路由单片机芯片、独立键盘、十键矩阵键盘、LCD1602和DAC08
3、32及一些运算放大电路和与非门芯片组成,这部分电路除了要完成100步均匀线性输出外,还要将将电压输出稳定在09.9 V上,以及在LCD1602上做对应的显示。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 下图所示为简易数控电源的功率放大电路,这部分电路除了保证简易数控电源在9.9 V输出时能获得500 mA以下的输出工作电流,还能在输出电流大于700 mA时进行过电流保护和发出报警声音。本项目源程序可参考课本中相应程序。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS
4、-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程6.2 D/A转换的相关知识转换的相关知识 由于单片机为数字系统,当执行机构为模拟系统时,以单片机为核心的数字系统必须经过D/A转换电路才能控制执行机构。目前D/A转换器芯片的种类较多,在实际应用中,只需要掌握D/A转换器集成电路性能及其与单片机之间接口的基本要求,就可以根据应用系统的要求合理选用D/A转换器芯片,配置适当的接口电路。1.D/A转换器的主要技术指标 (1)分辨率 分辨率是指D/A转换器所能分辨的输入数字量最小变化的能力,由输入数字的位数来决定,故分辨率可表示为1/2n,有时,分辨率直接用输入数字量的
5、位数表示,即n位。 例如:8位D/A转换器的分辨率为1LSB1/28100%0.390 625%(LSB为单位数字量)。当转换位数相同,而输入的基准电压VREF不同时,可分辨的最小电压值不同。如,假设上例的基准电压VREF =5 V时,可分辨的最小电压是19.53 mV;而VREF=10 V,可分辨的最小电压是39.06 mV。显然在D/A转换器输入的基准电压相同的情况下,位数越多,分辨率就越高。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程(2 2)转换精度转换精度 转换精度反映D/A转换
6、器的精确程度,一般用误差大小表示。通常以满刻度电压的百分数形式给出,即数字量输入为满刻度(全1时),实际输出模拟量与理论值的偏差。 上述的8位D/A转换器的基准输入电压为5 V,其在20LSB时的理论输出值为0.390 625V,如其实际测量值为0.41 V,则其转换精度=(0.410.390 625)/5100%=1.875%。 分辨率与转换精度并不相同,分辨率是指输入数字量最低位的变化对输出影响的大小,而转换精度是指转换后的实际输出与理论值之间的接近程度,反映误差的大小。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)
7、转换的汇编编程)转换的汇编编程(3)建立时间)建立时间 建立时间是指完成一次D/A转换所需时间,是描述D/A转换速度的一个参数。从D/A转换器数字输入端有满刻度值开始,到输出达到与稳定值相差1/2LSB(最低有效位)范围内所需的时间称为建立时间。不同类型的D/A转换器建立时间多数是不同的,但一般均在几十纳秒到几百微秒的范围内。 由于计算机的运行速度高于D/A建立时间,所以无论是什么类型的D/A转换器,都必须在接口中安置锁存器,锁存短暂的输出信号,为D/A转换器提供足够时间的数字信号。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模
8、(DA)转换的汇编编程)转换的汇编编程2 典型的典型的D/A转换器及接口转换器及接口 8位D/A转换器具有和MCS-51系列单片机同等的数据宽度,接口简单,且8位D/A转换器与大于8位D/A转换器的控制引脚具有共同的特性,掌握8位D/A转换器,对学习其他的大于8位D/A转换器大有益处。因此,本书对比较典型的DAC0832进行介绍。DAC0832是使用较多的一种D/A转换器,其转换时间为1s,工作电压为515 V,基准电压为10 V。下面介绍DAC0832的引脚功能、接口特点和编程要点。1 DAC08321 DAC0832的外部引脚及功能的外部引脚及功能DAC0832系列均为DIP20封装,且引
9、脚完全兼容,其芯片引脚如图6-4所示。DAC0832的外部引脚功能如下:(1)与电源相关的引脚(共4个引脚):数字电源输入(515 V),典型值为5 V。VREF:基准电压输入(-10+10 V),典型值为-5 V。AGND:模拟地。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 DGND:数字地,通常AGND、DGND一点接地。 图(2)与控制和输出相关的引脚(共8个引脚) :片选输入,低电平选中。ILE:数据锁存允许输入高电平有效。:输入寄存器写选通输入端,低电平有效。当 =0,ILE=
10、1, =0时,数据写入DAC0832的输入寄存器进行第一级锁存。:数据传输信号输入。:DAC寄存器写选通输入端,低电平有效。当 为0且 =0时,输入寄存器的状态被传送到DAC寄存器中进行第二级锁存。:电流输出1端,当输入全是“1”时,电流最大。:电流输出2端,其值与 端的电流之和为一常数。RFB:反馈信号输入。当需要电压输出时, 接运算放大器“-”端, 接运算放大器“+”端,RFB接运算放大输出端。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程(3)与数据相关的引脚(共8个引脚) DI7DI
11、0:并行数据输入,其中DI7为高位,DI0为低位。 DAC0832是电流型输出,应用时需外接运算放大器使之成为电压型输出。DAC0832需要电压输出时,可以简单地使用一个运算放大器连接成单极性输出形式如图6-5所示。 输出电压 VOUT-BVREF/256(V) 其中B为输入数字量,其范围为0255,当参考电压VREF-5 V时,则VOUT输出范围为05 V; 采用二级运算放大器可以连接成双极性输出(见图6-6),当 VREF-5 V时, VOUT510B/256(V)因B=0时,VOUT5 V;B=256时,VOUT-5 V,所以VOUT输出范围为-5+5 V。MCS-51系列单片机及汇编编
12、程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程2DAC0832与单片机的连接与单片机的连接 选择DAC0832的最重要理由有2点:第一,其内部具有锁存器;第二,其内部具有二级锁存。如何充分地利用其二级锁存,使DAC0832的特点得以充分的利用是选用该芯片的重点。DAC0832利用 控制信号可以构成3种不同的工作方式。 直通方式 时,数据可以从输入端经过内部的2个寄存器直接进入D/A转换器。 单缓冲方式:2个寄存器之一始终处于直通,即 ,另一个寄存器处于受控状态,如图6-5所示。图6-5 DAC0832单缓冲发方式MCS-
13、51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 双缓冲方式:2个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合,如图6-6所示。图6-6 DAC0832双缓冲方式MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程DAC0832与单片机单缓冲方式接口电路如图67所示,采用这种方式时,将二级寄存器的控制信号并接,如 和 并在一起,ILE接+5 V,片选信号 和数据传送控制信号 都接至
14、P2.7,这样数据在控制信号作用下,直接送入DAC寄存器中,完成D/A转换。图6-7 DAC0832与单片机单缓冲方式接口电路MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 DAC0832单缓冲方式的编程较为简单,按图6-7的接法, 接在一起由P2.7控制, 接在一起由WR控制,只要在P0口准备好转换的数据,控制P2.7=0、WR=0,则DAC0832完成转换。在第2章中MCS-51系列单片机的时序和工作方式一节中讲述过MOVX DPTR,A为2周期指令,知道在指令第1个机器周期,P0端口输
15、出低8位地址,P2端口输出高8位地址,在指令第2个机器周期,写信号WR有效时,便将单片机A中数据写入外部RAM,因此常常使用指令MOVX DPTR,A来控制DAC0832完成转换。3 3DAC0832DAC0832单缓冲方式的编程要点单缓冲方式的编程要点常用的“开通”DAC0832的程序如下:MOV DPTR,#1FFFH MOVX DPTR, A 常用“关闭”DAC0832的程序如下:MOV DPTR,#9FFFHMOVX DPTR,A MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 简易
16、数控电源项目编程简易数控电源项目编程 根据项目功能要求,发现与第5章的矩阵键盘加独立键盘与液晶显示项目的功能要求非常相近,显示都由液晶来显示,都有+、-两键,都是步进100步,都能实现预置。因此,该项目程序可利用第5章的矩阵键盘加独立键盘与液晶显示程序按照汇编程序的移植法则进行构造。由于DAC0832的程序非常简单,只要将其程序构造成一个简单的子程序插入第5章的矩阵键盘加独立键盘与液晶显示程序即可。另外,为了实现输出电流大于700 mA时进行过电流保护和发出报警声音,用外部中断实现过电流保护,用P3.6实现报警。具体步骤说明如下: DAC0832开通的地址数为0300H,关闭的地址数为8300
17、H,这两个数都不是唯一的,构造的DAC0832子程序如下:DAC0832 :MOVDPTR,# 0300H MOVXDPTR,A;开通DAC0832MOVDPTR,# 8300HMOVXDPTR,A;关闭DAC0832RET MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 程序定义部分整合。在第5章的矩阵键盘加独立键盘与液晶显示定义部分加入对开通地址数0300H和关闭地址数8300H的定义,将8300H定义为DA0832ADDR1,将0300H定义为DA0832ADDR2。 程序开始及主程序
18、跳转整合。采用第5章的矩阵键盘加独立键盘与液晶显示程序的程序开始及主程序跳转指令即可。 中断INT0入口及跳转。用外部中断INT0来进行过电流保护,中断入口为0003H。 程序初始化部分整合。采用第5章的矩阵键盘加独立键盘与液晶显示程序的初始化部分即可。 主程序循环体部分整合。在第5章的矩阵键盘加独立键盘与液晶显示程序的主程序循环体部分加入调用DAC0832子程序即可。 中断INT0服务程序。程序中包含了使DAC0832输出为0,通过P3.6置1报警,让液晶1602显示Warnning警告字样等程序。 子程序及表格部分整合。将DAC0832子程序插入第5章的矩阵键盘加独立键盘与液晶显示程序的子
19、程序及表格部分即可。MCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程6.2.4 DAC08326.2.4 DAC0832应用举例应用举例 (1) 用图6-7所示电路输出矩形波。单片机连续200次输出数字量FFH。如此重复,DAC0832即可输出连续矩形波。;程序开始;- ORG 0000H; 程序初始化部分;- MOV A,#0 MOV R2,#200 ;- ; 主程序循环体部分 DD0:LCALL DAC0832 LJMP DD0;重复上述过程,形成多个矩形波 ;- ; 子程序 DAC083
20、2: MOV DPTR,#1FFFH;指向DAC0832 MOVX DPTR,A;向D/A送0 DD1: DJNZ R2,DD1;循环255次,形成矩形波的低电平 MOV A,#255;将FFH送到A MOV R2,#255 DD2: MOVX DPTR,A;向DAC0832送255,DAC0832输出为高 DJNZ R2,DD2;循环255次,形成矩形波的高电平 MOV A,#0 MOV R2,#200 RET ENDMCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 (2)用图6-7所示电路
21、输出梯形波。单片机从输出数字量0开始,逐次加1直到255,保持255一段时间,然后从输出255逐次减1直至为0。如此重复,DAC0832即可输出连续梯形波。;- ;程序开始 ORG 0000H ;CPU起始地址 ;- ; 程序初始化部分 MOV A,#00H ;- ; 主程序循环体部分 DD0: LCALL DAC0832 LJMP DD0;重复上述过程,形成多个梯形波 ;- ; 子程DAC0832: MOV DPTR,#1FFFH DD1: MOVX DPTR,A;DAC0832输出 INC A CJNE A,#255,DD1;循环255次,形成三角波的上升沿 MOV A,#0FFH;将FF
22、H送A MOV R2,#0FFH DD2: MOVX DPTR,A;向DAC0832送255,DAC0832输出为高 DJNZ R2,DD2;循环255次,保持梯形的高度 DD3: MOVX DPTR,A;DAC0832输出 DEC A CJNE A,#0,DD3;循环255次,形成三角波的下降沿 MOV A,#00H;重复上述过程,形成多个梯形波 RET ENDMCS-51系列单片机及汇编编程系列单片机及汇编编程第六章第六章MCS-51系列单片机的数系列单片机的数-模(模(DA)转换的汇编编程)转换的汇编编程 (1)用图6-7所示电路输出三角波。单片机从输出数字量0开始,逐次加1直到225,
23、然后从输出255逐次减1直至为0。如此重复,DAC0832即可输出连续三角波。 ;- ;程序开始 ORG 0000H ;- ; 程序初始化部分 MOV A,#00H ;- ; 主程序循环体部分 DD0: LCALL DAC0832 LJMP DD0;重复上述过程,形成多个梯形波 ;- ; 子程序DAC0832: MOV DPTR,#1FFFH DD1: MOVX DPTR,A ;D/A输出 INC A CJNE A,#255,DD1;循环256次,形成三角波的上升沿DD2: MOVX DPTR,A;D/A输出 DEC A CJNE A,#0,DD2;循环256次,形成三角波的下降沿 RET END