《第07章-8098单片机的AD和PWM转换器原理及应用优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第07章-8098单片机的AD和PWM转换器原理及应用优秀PPT.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章 A/D转换和PWM(D/A)转换器原理MCS-96系列单片机可以很简洁的实现A/D转换功能和供应PWM输出信号。芯片内部包含有8选1的模拟多路转换开关(48引脚芯片仅为4选1,即只有4路输入),采样保持电路(8096子系列无此电路)和10位的逐次靠近型A/D转换器,完成一次A/D转换须要88个状态周期,即22s。(8096子系列需168个状态周期,即42s)。芯片内部尚配置有脉宽调制输出器,可供应周期固定、占空比可调,辨别率为1/256(8位)的PWM波。另外也可通过HSO供应周期和占空比可调、辨别率为165536(16位)的PWM波。将PWM波经平滑滤波后即可获得模拟信号输出。7.1
2、 A/D转换器工作原理图7.1所示为A/D转换器的基本结构和工作原理示意图。其工作原理分述如下:1、8选1模拟多路转换开关:芯片有8个A/D转换输入引脚ACH.0ACH.7(48脚芯片仅有ACH.4ACH.7四个引脚)。但芯片内只有一个采样保持器和一个10位的ADC。因此在某一此刻只能对8路中的一路模拟信号进行转换。8选1模拟多路开关就是用来完成这一选择功能的。选择过程受AD_COMMAND寄存器的限制。当IOC1.1置1时ACH.7被用做外部中断输入引脚。2、采样保持器:模拟信号随时都在变更着,为了将某一点上的模拟量精确地转换成数字量,需将这一点的值采样后保持起来,以供ADC来得及将其转换成
3、数字量。采样保持器就是用来完成采集保持工作的。每次采样时间需4个状态周期。8096BH和8098单片机内的采样保持器为零阶保持器,其传递函数为:3、10位A/D转换器:接受逐次靠近的方法完成模拟数字信号的转换。转换器硬件由256个电阻构成的梯级电阻网络,一个比较器,耦合电容及10位逐次靠近寄存器(SAR)组成。梯级电阻网络供应256级20mv的梯级电压(取VREF=5.12V)。耦合电容再将20mv的梯级电压分成四级,每级5mv。因此,共有1024个内部基准电压与模拟输入信号进行比较,其结果是产生10位的数字信号输出。为了提高转换精度,A/D转换器的工作电压VREF应与芯片工作电压Vcc分设,
4、VREF的稳定精度要求高些,标称值为+5V。设采样模拟信号为VIN且VANGND与Vss相连。那么10位ADC的转换结果(数字量以十进制表示)可用下述公式计算:4、AD_COMMAND寄存器:是一个8位只写专用寄存器,地址为02H,用来确定欲转换哪一通道的模拟输入量,以及何时起先转换。各数据位的定义如下:XXXXGO通 道 号 D2D0:低3位用于选择通道,编码关系为000111对应ACH.0ACH.7。D3:用于确定启动转换的方式。若GO置1,马上启动,即在执行完写AD_COMMAND吩咐寄存器指令后的3个状态周期内起先转换。若GO置0,由HSO的15#事务定时启动。即在时间被触发后定时器1
5、记时值增1时起先转换。向AD_COMMAND寄存器写入一次吩咐仅能进行一次转换,每次只能选择一个通道进行A/D转换。当某次转换正在进行中,若又启动了另一次新的转换,将会使正在进行的转换被撤消。AD_COMMAND寄存器为双缓冲结构,当第一次启动的A/D转换正在进行时,其次次吩咐仍可写入到该寄存器中。但此吩咐必需是由HSO延时启动,以保证待第一次转换结束后再起先新的转换过程。5、AD_RESULT寄存器:是一个16位只能按字节分两次读取的专用寄存器。地址分别为高8位03H,低8位02H。该寄存器用来存放A/D转换结果。各数据位的定义如下:D15 D14 D13 D12D11D10D9D8D7D6
6、XXS通道号D2-D0:用于指示转换器结果的通道号。D3:用于标记A/D转换器的工作状况。S置1,表示A/D转换器正在转换。S置0,表示A/D转换器空闲。D5、D4:该两位不用。D15-D6:用于存放10位转换结果,D15放高位,D6 放低位。高8位03H低8位02H每启动一次A/D转换,A/D结果寄存器便被首先清零。因此转换好的数据应刚好取走,以免下一次转换起先时将其破坏。A/D转换是否已经结束,A/D转换器中的结果是否有效,可通过查询方式和中断方式来了解。查询方式:即在启动转换吩咐发出后,不断的查询02H单元的S位状态。当S置1时,表明A/D转换器正忙;S置0,表明转换已经结束,可以取走数
7、据。但应当留意的是转换起先后的8个状态周期内,S位可能尚未置1,因此查询需在8状态周期后才能进行。在CPU工作任务较紧的状况下,可在接近88状态周期时才起先测试S位状态。中断方式:每次A/D转换结束时,便提出中断恳求,通知CPU来取数据,这便是A/D转换结束中断类型,中断向量为2002H,优先级为1。顺便指出,输入的模拟信号最高频率可由下式求出:式中:ts采样保持器稳定时间(1s)tA/DA/D转换时间(8096BH为22s,8096为42s)N信号周期内的采样次数,按采样定理取N 2即可。一般取68次。对于8096BH和8098芯片:对于8096芯片:7.2 A/D转换器的好用接线7.2.1
8、 参考电压参考电压(VREF)是否稳定对转换的确定精度影响很大。一般VREF只给A/D转换器供电不再接其他负载。VREF与ANGND间要加旁路电容,且ANGND和Vss两引脚尽量在靠近芯片的旁边连接起来。VREF电压值可在4.55.5之间选择。但必需能供应5mA的电流。假如不用A/D转换器,则VREF必需接到Vcc上,ANGND与Vss相接近,以保证P0口作为数字输入口运用。7.2.2 A/D转换器的接口对于转换精度要求不高的场合,建议可接受图7.3所示的的简洁模拟接口电路。即在输入端并联一电容以减轻噪音的影响。同时在电容前串接一个小电阻,以在过电压时起限流作用。接入的电阻、电容在A/D输入引
9、脚前构成一低通滤波器。当转换精度要求较高,模拟量变更范围较宽时,应考虑增设输入缓冲电路。常用的输入缓冲电路如图7.4所示,它可针对模拟输入进行增益整定和偏移调整。其中RB1、RB2的分压比设定了偏移范围,RB3可调整偏移细调。RG1、RG2的比值设定了增益范围,RG3可调整增益细调。7.3 A/D转换器的应用实例运用A/D转换器时应留意以下几点:1、启动A/D转换后,须待8个状态周期后才能查询S标记位。2、转换结果应分字节两次读出。3、每次只能对一个通道进行转换,转换过程中不能再写入另一马上启动的转换吩咐,但可预写入由HSO延时启动的转换吩咐。例例1:用马上启动方式启动:用马上启动方式启动A/
10、D转换,用查询法取走转换,用查询法取走A/D转换结果,实现四路转换结果,实现四路A/D转换。转换结果存转换。转换结果存3000H3007H,输入通道选,输入通道选ACH.4ACH.7。四通道采。四通道采样间隔相同,采样时刻可异步,采样周期为样间隔相同,采样时刻可异步,采样周期为1/(50Hz*8)=1/400=2.5ms,T1计计数值为数值为4E2H,用软件定时器,用软件定时器0定时。定时。IOS1_IMAGE:EQU 3AH ;IOS1的映像的映像 ORG 2080H DI LD SP,#100H ANDB IOC1,#FDH ;IOC1.1=0,防,防ACH.7误设为外误设为外部部 ;中断
11、脚;中断脚 LDB INT_MASK,#20H ;允许软件定时器;允许软件定时器0中断,中断,5级级 CLRB INT_PENDING EI LCALL ADSTART(或(或ORB INT_PENDING,#20H)HERE:SJMP HERE ;做其它事,等待中断恳求;做其它事,等待中断恳求 ORG 200AH ;HSO内部事务中断向量内部事务中断向量INT_ ADDRESS:DW 2880H ;HSO内部事务中断服务子程序入口地址内部事务中断服务子程序入口地址 ORG 2880H ;采样子程序的程序入口地址 PUSHF ORB IOS1_IMAGE,IOS1 ;更新IOS1映像 JBS
12、IOS1_IMAGE,0,ADSTART ;IOS1.0=1,软件 ;定时器0时间到 POPF RETADSTART:AND IOS1_IMAGE,#FEH ;IOS1_IMAGE.0清零 LD DX,#3000H LDB HSO_COMMAND,#18H ;选T1作为时间基 ;值,允许HSO中断,启动软件定时器0(8号事务)。ADD HSO_TIME,TIMER1,#04E2H;支配好下一 ;次的采样时间 LDB BL,#0CH ;选马上启动通道4 NEXT:LDB AD_COMMAND,BL ;启动A/D转换 NOP ;至少等待8状态周期方可查询,88状态周期后 ;才可取转换结果。NOP
13、;这期间可执行88状态周期的其他指令,但应 ;留意关中断。CHECK:JBS AD_RESULT_LO,3,CHECK;查询是否转换 ;结束 LDB AL,AD_RESULT_LO ;读结果低字节 LDB AH,AD_RESULT_HI ;读结果高字节 SHR AX,#06H ST AX,DX+;存结果数据 INCB BL JBS BL,4,ADEND SJMP NEXTADEND:POPF RET END 例2:用马上启动方式启动A/D转换,用中断法取走A/D转换结果,实现一路A/D转换。转换结果存3000H,输入通道选ACH.7。采样周期为1/(50Hz*8)=1/400=2.5ms,T1
14、计数值为4E2H,用软件定时器0定时。IOS1_IMAGE:EQU 3AH ;IOS1的映像 ORG 2080H DI LD SP,#100H ANDB IOC1,#FDH ;IOC1.1=0,防ACH.7误设为外部 ;中断脚 CLRB INT_PENDING LDB INT_MASK,#22H ;允许软件定时器0中断,;5 级 ;允许A/D转换结束中断,;1 级 EI LCALL ADSTART(或ORB INT_PENDING,#20H)HERE:SJMP HERE ;做其它事,等待中断恳求 ORG 2002H ;A/D转换结束中断向量INT_ ADDRESS1:DW 2500H ;A/D
15、转换结束,取数中断服务 ;子程序入口地址 ORG 200AH ;HSO内部事务中断向量INT_ ADDRESS2:DW 2400H ;HSO内部事务中断服务子程;序入口地址 ORG 2400H ;启动A/D转换子程序ADSTART:DI LDB HSO_COM,#18H ;选T1作为时间基值,;允许HSO中断,启动软件定时器0(8号事务)。ADD HSO_TIME,TIMER1,#04E2H;支配好下一 ;次的采样时间 LDB AD_COM,#0FH ;选马上启动通道7 EI RET ORG 2500H ;A/D转换结束,取数子程序ADGET:PUSHF PUSH AX LDB AL,AD_R
16、ESULT_LO ;LDB AH,AD_RESULT_HI SHR AX,#06H ST AX,3000H0 POP AX POPF RET END例例3:用:用HSO启动方式启动启动方式启动A/D转换(事务转换(事务#F),用查询法取走),用查询法取走A/D转换结转换结果,实现一路果,实现一路A/D转换。转换结果存转换。转换结果存3000H,输入通道选,输入通道选ACH.7。采样周。采样周期为期为1/(50Hz*8)=1/400=2.5ms,T1计数值为计数值为4E2H,用,用HSO的事务的事务#F定时采定时采样周期。样周期。IOS1_IMAGE:EQU 3AH ;IOS1的映像的映像 OR
17、G 2080H DI LD SP,#100H ANDB IOC1,#FDH ;IOC1.1=0,防,防ACH.7误设误设 ;为外部中断脚;为外部中断脚 CLRB INT_PENDING LDB INT_MASK,#20H;允许启动;允许启动A/D转换中断,转换中断,5级级 LDB HSO_COMMAND,#1FH;选;选T1作为时间基值,作为时间基值,;允许;允许HSO中断,启动中断,启动A/D转换(转换(F号事务)。号事务)。ADD HSO_TIME,TIMER1,#0006H ;马上启动;马上启动 LDB AD_COMMAND,#07H ;由;由HSO启动启动ACH.7 EI HERE:S
18、JMP HERE ;做其它事,等待中断恳求;做其它事,等待中断恳求 ORG 200AH ;HSO内部事务中断向量内部事务中断向量INT_ ADDRESS:DW 2880H ;HSO内部事务中断服务子程序入口地内部事务中断服务子程序入口地址址 ORG 2880H ;采样子程序的程序入口地址ADSTART:PUSHF PUSH AX LDB HSO_COMMAND,#1FH ;选T1作为时间基 ;值,允许HSO中断,启动A/D转换(F号事务)。ADD HSO_TIME,TIMER1,#04E2H ;支配好下一 ;次的采样时间 LDB AD_COMMAND,#07H ;由HSO启动ACH.7CHEC
19、K:JBS AD_RESULT_LO,3,CHECK;查询是否转换结束 LDB AL,AD_RESULT_LO LDB AH,AD_RESULT_HI SHR AX,#6H ST AX,3000H0 POP AX POPF RET END7.5 脉宽调制输出(PWM)的工作原理图7.7所示为脉宽调制输出器的基本结构和工作原理示意图。其工作原理如下:1、8位循环计数器:只要芯片上电即起先工作。每状态周期其计数值增加1。当计数值达到0FFH再加1时,溢出并复位为零值。同时R-S触发器S端被置1。使Q端即PWM引脚输出高电平。8位循环计数器的循环计数周期为256个状态周期,相当于64s(15.625
20、kHz)。2、比较器:每状态周期将8位循环计数器的计数值与脉宽调制限制寄存器的值比较一次。一旦两值相等,则输出一高电平,触发R-S触发器的R端。使Q端即PWM引脚输出低电平,直至8位循环计数器复位。可见脉宽调制限制寄存器中的值确定了PWM引脚输出高电平的状态周期数。即PWM波高电平宽度,而PWM波周期宽度则由8位循环计数器的计数周期固定为256状态周期。PWM波高电平宽度的辨别率为1/256。3、PWM_CONTROL寄存器:是一个8位只写专用寄存器。地址是17H,用于存放PWM波高电平持续的状态周期数。只有当8位循环计数器溢出时,PWM_CONTROL寄存器才接受来自暂存锁存器的新值。因此向
21、PWM_CONTROL寄存器写入数据的密度不能快于256状态周期(64s),否则先写入的数据尚在暂存锁存器中就被后写入的数据覆盖掉。4、PWM波高电平宽度与周期宽度之比称PWM波高的占空比。典型的PWM波如图表7.1所示。5、IOC1.0确定了引脚PWM/P2.5的功能,当IOC1.0=1时,该引脚可以输出PWM波。当IOC1.0=0时,该引脚只能作为P2.5引脚输出开关信号。6、利用HSO可供应周期和占空比可调、辨别率为1/65536的PWM波。7.6 运用PWM构成D/A转换器PWM波经滤波后即可获得模拟信号,由于PWM引脚输出的是TTL电平,为了获得较高精度的8位D/A输出,在滤波电路前
22、应加入缓冲器。以保证其输出波形在标准的05V范围内变更。依据所带负载的状况,滤波电路后还应匹配上高输入阻抗的功率放大器。运用PWM构成D/A转换器的电路如图7.8。7.7 PWM输出器的运用举例例1:用PWM输出器产生周期为64s,脉冲宽度为32s的脉冲波。该波形占空比为50%。PWM_CONTROL内容取80H。ORG 2080H LD SP,#0060H LDB IOC1,#01H ;选择PWM功能 LDB PWM_CONTROL,#80H;占空比 ;50%HERE:SJMP HERE END例例2:用PWM输出器产生周期为64s,脉冲宽度每周期增宽2状态量周期(0.5s)的由窄到宽的脉冲波,该脉冲波经滤波后可获得锯齿波,周期为64s128=8.192ms。ORG 2080H LD SP,#0060H LDB IOC1,#01H ;选用PWM功能 DI ORB INT_MASK,#20H CLRB INT_PENDING LDB AL,#00H ;置初值 LCALL SETPWM ;EI HERE:SJMP HERE ORG 2200HSETPWM:LDB PWM_CONTROL,AL LDB HSO_COMMAND,#18H ADD HSO_TIME,TIMER1,#001AH ADDB AL,#02H RET END