《A/D和PWMD/A的工作原理及应用》由会员分享,可在线阅读,更多相关《A/D和PWMD/A的工作原理及应用(30页珍藏版)》请在金锄头文库上搜索。
1、第第5章章AD和和PWM(DA)的工作原理及应用的工作原理及应用内内容容提提要要本章介绍8096单片机A/D转换器和PWM发生器的基本原理和应用。在A/D转换器中,首先说明原理、结构以及控制,然后介绍软件设计及应用实例。在PWM发生器中,分别介绍结构原理和实际应用。此外本章还介绍几种滤波方法。5.1A/D模数转换模数转换5.1.1AD转换器的基本原理转换器的基本原理图5-1逐次逼近法原理10位逐次逼近寄存器SAR初始值为全0。8096芯片ADC的输入模拟电压范围为0至VREF。VREF是模拟基准电压。正常工作时,VREF必须保持在5.00.5V范围内,并要求能提供5mA电流。AD结果用以下公式
2、计算:1023(Vin-ANGND)/(VREF-ANGND)当AD转换器被启动后,需要88个状态周期才能得到转换结果。在这期间内,可以让CPU进行其它工作,也可以用软件延时等待。注意:必须在88个状态周期后读取的结果才是正确的。如选12MHz时钟,AD转换时间为88312=22s,如选6MHZ时钟,AD转换时间为8836=44s。5.1.2AD转换器的硬件结构及转换器的硬件结构及功能特点功能特点图5-28096芯片的ACH7P0.7ACH0P0.0引脚5.1.3AD使用方法使用方法1)模拟参考电压源VREF的稳定程度直接影响AD的转换精度。如不使用AD转换器,则必须将VREF和VCC相连,A
3、NGND和Vss相连。此时P0口可作普通的数字口。2)A/D转换控制AD命令寄存器 AD_COMMAND格式如图5-5所示。D3(GO)=1,立即启动;D3(GO)=0,表示由HSO在某设定时刻定时启动。D2,D1,D0决定输入通道号,如表5-1所示。图5-5A/D命令寄存器格式表5-1D2,D1,D0决定的输入通道号AD结果寄存器AD_RESULT的数据格式如图5-6所示。地址03H单元中存放高8位,02H单元中D7、D6存放低2位。02H单元中的D5、D4不用。S(D3)位可供查询,S=0表明转换结束或正处于空闲状态,S=1表明正在进行转换。D2、D1、D0定义与AD命令寄存器相同。图5-
4、6AD结果寄存器格式3)AD转换器的应用A/D转换子程序:ADRQ:ANDB20H,#07H;启动AD通道号放入20HADDB02H,20H,#08H;立即启动ADNOPNOPADBUSY:JBSADRL,3,ADBUSY;AD转换是否结束?结束往下LDB21H,ADRH;将AD转换高位放入21HLDB20H,ADRL;将AD转换低位放入20HSHR20H,#6;右移6位RET;结束返回硬件方面的一些问题:硬件方面的一些问题:(1)接地。在整个系统中数字地与模拟地不可形成回路,以免对模拟信号造成干扰。数字地和模拟地正确的接法是:在系统中,先将数字地、模拟地分别相连,然后在系统中选一点(一般选在
5、AD转换器处)相连接。另外,VREF与ANGND以及VCC与VSS之间都需加滤波电容,以消除高频干扰。如下图所示。(2)参考电压VREF。VREF的稳定程度直接影响AD的转换精度。图5-8所示是实际应用中的一个例子。其中电位器采用多圈式电位器,它定位精度高且可自锁。如不使用AD转换器,则必须将VREF和VCC相连,ANGND和Vss相连。此时P0口可作普通的数字口。图5-8参考电压VREF(3)模拟信号输入电路。图5-9所示为一通用的模拟信号输入电路。它对模拟输入信号进行偏移和增益处理,使输入到模拟引脚(CH0CH7)的电压为05V。偏移细调通过R2实现。增益范围由调整R5完成。图5-9偏移和
6、增益整定电路5.2脉冲宽度调制输出脉冲宽度调制输出PWM(D/A)功能特点及功能程序功能特点及功能程序5.2.1脉冲宽度调制输出脉冲宽度调制输出PWM的结构的结构和工作原理和工作原理PWM波发生器主要由脉宽调制控制寄存器PWM_CONTROL、8位循环计数器、比较器和RS触发器等组成,结构如图5-10所示。图5-10PWM波发生器结构将某个要转换的数字量(例80H)写入到PWM_CONTROL中,其值不断与8位循环记数器的内容比较。二者相等时,比较输出正脉冲,RS触发器复位,使PWM/P2.5端变为低电位。PWM_CONTROL中数据为80H时,PWM/P2.5端输出波形如图5-11所示。从上
7、述可知,输出波形的周期固定为256T(状态周期),当 晶 振 为 12MHz时 256T=2563/12=64s。 占 空 比=PWM_CONTROL中数据/256,如上例占空比=80H/256=50%。图5-11数据80H时的输出波形复位时PWM_CONTROL清0,占空比=00H256=0%,即PWMP2.5端始终为低电平。图5-12给出了几种典型的PWM输出波形图,若将这些波形积分,则可得到8位分辨率的模拟信号。图5-12PWM输出波形5.2.2PWM控制控制1.输入输出控制寄存器IOC1(8位,地址16H)。IOC1是只写寄存器,IOC1.01时,PWMP2.5引脚可以输出PWM波(引
8、脚作PWM端使用)。而当IOC1.0=0时,它只能输出开关信号(引脚作P2.5使用)。2.脉冲宽度调制寄存器PWM_CONTROL(8位,地址17H)。PWM_CONTROL也是一种只写寄存器,写入数据后,PWM波的宽度随之而定。有两种方法提供PWM输出:一种是通过HSO提供;另一种是由8096的脉冲宽度调制器提供。前一种方法可提供周期和占空比可改变、分辨率为165536(16位)的PWM信号;后一种方法则提供周期固定、占空比可变、分辨率为1256(8位)的PWM信号。5.2.3PWM基本功能程序举例基本功能程序举例P2.5口经设置后可以输出编程的脉宽调制(PWM)输出。下面的程序先将P2.5
9、口设置为PWM输出口,再由P0口送入对应于脉宽的数字量。在P2.5处可以得到对应于占空比的定周期脉冲。P0 EQU0EHP1 EQU0FHIOC1EQU16HPWMEQU17HORG2210HLDBIOC1,#01HTHERE:LDBPWM,P0SJMPTHERE用PWM口产生锯齿波的程序。SPEQU18HPWMEQU17HIOC1EQU16HREG1EQU40HTREGEQU90HORG2220HLDSP,#00C0HLDBIOC1,#01HLDBREG1,#00RELOAD:LDBPWM,REG1CALLTIMEINCBREG1SJMPRELOADTIMEDELAYROUTINEORG22
10、40HTIME:LDBTREG,5000H0TMORE:DJNZTREG,TMORERET5.2.4PWM的应用的应用例例5-1产生PWM波形,占空比为25%。解:占空比=数据256,即数据=256占空比=25625%=64=40H。相应程序清单如下:ORG2800HSTART:LDBIOC1,01H;选择PWM功能HERE:LDBPWMCONTROL,40H;将要转换数据送入SJMPHEREPWM引脚输出的脉冲信号经滤波后可变为模拟信号。为了获得较高精度的8位DA输出,在滤波前先通过缓冲器将PWM脉冲信号摆幅变为05V,再经滤波、放大输出。DA缓冲器电路如图5-13所示。图5-13D/A缓冲
11、器电路53数字滤波方法数字滤波方法1算术平均值滤波设测量值为,则每采集了N个数据后,进行一次算术平均。其计算方法如式(5.3.1)所示:根据数理统计的理论,上式的算术平均值实际上是这样一个值,它与各采样值间的误差的平方和最小。得到后即可计算出偏差值:从上面可以看出,每计算一次控制器输出值,就必须采样N次。因此,N的取值不能太大。算术平均值法主要对压力,流量等含有周期性脉动的信号有效。而对突发性的脉冲干扰,这种滤波方法的效果则不理想。2中值滤波所谓中值滤波法是连续采样n次(n为奇数),然后将n次的采样值从小到大排列,或者从大到小排列,再取中间的值作为采样值。首先要做的工作是先采集N个参数并按大小
12、排序,即有X1X2Xn-1Xn,如果当N为偶数时,;如果当N为奇数时,。中值滤波的关键所在是形成按大小顺序排列的一组数。假设采样N次,如果使用高级语言,首先将N个采样值按从大到小(或从小到大)排列,然后将其放在一个数组X(N)里,此时X(N+1)/2)则为采样值。3表决滤波首先要做的工作是先采集N个参数并按大小排序,即有X1X2Xn-10则Xn=Xn1若XnXn-1=0则Xn=Xn若XnXn-10则Xn=Xn+1这种滤波方式非常简单,运算也很节省时间,可以很有效地使采样到的参数处理得很平滑,但只能用于惯性较大的系统。限幅滤波程序:步长为1AD03:LDB20H,#3;选择通道3LCALLadr
13、q;调AD转换子程序LD22H,TTTA0;原先的数值放入到22HCMP20H,22H;新采集到的数值与原先的数值比较JHADA51;高于就到ADA51CMP20H,22H;再进行比较JNHADA52;低于就到ADA52LJMPADA53;相等到ADA53ADA51:INC22H;原先的值就加1LJMPADA53ADA52:DEC22H;原先的值减1ADA53:ST22H,TTTA0;将原先值又放回TTTALD20H,22HMULU20H,#4CMP20H,#100JHAD5BHST20H,TTTB0LJMPAD5ENDAD5BH:LD20H,#100ST20H,TTTB0AD5END:RET
14、5去最老值滤波先将采样到的参数按时间次序排序,X1、X2Xn,其中X1最老,Xn最新,当再采集一个参数后作如下变化:X1=X2,X2=X3,Xn-1=Xn,Xn=Xn+1然后进行一次算术平均。其计算方法:6程序判断滤波如果我们事先就知道,所采样的信号,其在两个采样点之间不可能有很大的变化,则可以根据现场的经验确定一个最大偏差m。每次采样后都将其与前一个采样值进行比较,一旦两个值的差超出了m,则表明采集的信号中包含有较大的干扰,应该去掉;如果未超出m,可将该数据作为本次采样值。这种方法对于一些突发性的干扰,如大功率用电设备的启停或其他冲击性负载带来的电流尖峰干扰比较有效。 程序判断滤波法程序流程图如图5-14所示。图5-14程序判断滤波法程序流程图小小结结1.读取AD转换结果可用查询、中断和延时三种方式。2.如果通过HSO来定时启动AD转换,还需要HSO_COMMAND寄存器(06H,只写)和HSO_TIME寄存器(04H,只写)。3使用AD转换时,要用到AD_COMMANU寄存器(02H,只写),用以选择输入通道CH0CH7和自动方式。4使用PWM(DA)功能时,首先要使IOC1.0=1,选择PWM输出功能。然后再将数据送入PWM_CONTROL寄存器(17H,只写),用来设定输出脉冲的占空比。5滤波的几种方式。