您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 13第11章单片机详解
第11章模拟单元11.2STC15F2K60S2片内A/D和D/A转换器11.1MCS51A/D和D/A转换器的扩展11.1MCS51A/D和D/A转换器的扩展计算机控制系统通常设有模拟量输入及输出通道,前者由A/D转换器构成,后者由D/A转换器构成。标准MCS51单片机没有片内的A/D和D/A转换器,系统中如有需求则需外部扩展。在此以8位的A/D和D/A转换器为例介绍扩展方法。11.1.1并行A/DADC0809及其接口电路1、引脚功能和典型连接电路⑴IN0~IN7:8路模拟信号输入端。⑵C、B、A:8路模拟信号转换选择端。与低8位地址中A0~A2连接。由A0~A2地址000~111选择IN0~IN7八路A/D通道。⑶CLK:外部时钟输入端。时钟频率高,A/D转换速度快。允许范围为10~1280KHz。通常由80C51ALE端直接或分频后与0809CLK端相连接。⑷D0~D7:数字量输出端。⑸OE:A/D转换结果输出允许控制端。OE=1,允许将A/D转换结果从D0~D7端输出。通常由80C51的RD端与0809片选端(例如P2.0)通过或非门与0809OE端相连接。⑹ALE:地址锁存允许信号输入端。0809ALE信号有效时将当前转换的通道地址锁存。⑺START:启动A/D转换信号输入端。当START端输入一个正脉冲时,立即启动0809进行A/D转换。START端与ALE端连在一起,由80C51WR与0809片选端(例如P2.0)通过或非门相连。⑻EOC:A/D转换结束信号输出端,高电平有效。⑼UREF(+)、UREF(-):正负基准电压输入端。⑽Vcc:正电源电压(+5V)。GND:接地端。2、ADC0809应用实例⑴中断方式用中断方式对8路模拟信号依次A/D转换一次,并把结果存入以30H为首址的内RAM中,试编制程序。ORG0000H;复位地址LJMPSTAT;转初始化程序ORG0013H;中断服务子程序入口地址LJMPPINT1;中断,转中断服务子程序;ORG0100H;初始化程序首地址STAT:MOVR1,#30H;置数据区首址MOVR7,#8;置转换通道数SETBIT1;置边沿触发方式SETBEX1;开外中断SETBEA;CPU开中断MOVDPTR,#0FEF8H;置0809通道0地址MOVX@DPTR,A;启动0通道A/DSJMP$;等待A/D中断ORG0200H;中断服务子程序首地址PINT1:PUSHACC;保护现场PUSHPSWMOVXA,@DPTR;读A/D值MOV@R1,A;存A/D值INCDPTR;修正通道地址INCR1;修正数据区地址MOVX@DPTR,A;启动下一通道A/DDJNZR7,GORET;判8路采集完否?未完继续CLREX1;8路采集已完,关中断GORET:POPPSW;恢复现场POPACCRETI;中断返回⑵查询方式工作在查询方式时,0809EOC端可直接与80C51P1口或P3口中任一端线相连。设用P1.0直接与0809EOC端相连,试用查询方式编制程序,对8路模拟信号依次A/D转换一次,并把结果存入以40H为首址的内RAM中。MAIN:MOVR1,#40H;置数据区首址MOVR7,#8;置通道数SETBP1.0;置P1.0输入态MOVDPTR,#0FEF8H;置0809通道0地址LOOP:MOVX@DPTR,A;启动A/DJNBP1.0,$;查询A/D转换结束否?未完继续查询等待MOVXA,@DPTR;A/D已结束,读A/D值MOV@R1,A;存A/D值INCDPTR;修改通道地址INCR1;修改数据区地址DJNZR7,LOOP;判8路采集完否?未完继续RET;8路采集完毕,返回⑶延时等待方式工作在延时等待方式时,0809EOC端可不必与80C51相连,是根据时钟频率计算出A/D转换时间,略微延长后直接读A/D转换值。0809EOC端开路,fosc=6MHz,试用延时等待方式编制程序,对8路模拟信号依次A/D转换一次,并把结果存入以50H为首址的内RAM中。MAIN:MOVR1,#50H;置数据区首址MOVR7,#8;置通道数MOVDPTR,#0FEF8H;置0809通道0地址LOOP:MOVX@DPTR,A;启动A/DMOVR6,#50;DJNZR6,$;延时100S:2S×50=100SMOVXA,@DPTR;读A/D值MOV@R1,A;存A/D值INCDPTR;修正通道地址INCR1;修正数据区地址DJNZR7,LOOP;判8路采集完否?未完继续RET;8路采集完毕,返回11.1.2串行A/DADC0832及其接口电路ADC0832是2通道8位串行A/D转换器,转换速度较高(250KHz时转换时间32s);单电源供电,功耗低(15mw)。1、引脚功能VDD、VSS:电源接地端,VDD同时兼任VREF;CS:片选端,低电平有效;DI:数据信号输入端;DO:数据信号输出端;CLK:时钟信号输入端,要求低于600KHz;CH0、CH1:模拟信号输入端(双通道);2、典型应用电路P1.0片选CS;TXD(P3.1)发送时钟信号输入ADC0832CLK;RXD(P3.0)与DI、DO端连接在一起。编码通道选择CH0CH100+-01-+10+11+3、串行A/D转换工作时序工作时序分为二个阶段:⑴起始和通道配置,由CPU发送,从ADC0832DI端输入;⑵A/D转换数据串行输出,由ADC0832从DO端输出,CPU接收。4、软件编程按图9-21(b)电路,试编制A/D转换子程序。入口:CY=0,采样CH0;CY=1,采样CH1;出口:ACC存放A/D转换结果。CLKBITTXDDATBITRXDCSBITP1.0AD0832:SETBCSSETBDATCLKCLKCLRCS;启动SETBCLK;第一位,固定高电平CLRCLKJCN1SETBDAT;CH01,0SETBCLKCLRCLKCLRDATSETBCLKCLRCLKSJMPN2N1:SETBDAT;CH11,1SETBCLKCLRCLKSETBDATSETBCLKCLRCLKN2:MOVR7,#8;读出8位结果SETBDATN3:SETBCLKCLRCLKMOVC,DATRLCADJNZR7,N3SETBCSRET11.1.3DAC0832及其接口电路DAC0832是8位D/A芯片,由美国国家半导体公司生产,是目前国内应用较广的8位D/A芯片(请特别注意ADC0832与DAC0832的区别)。1、结构和引脚功能①DI0~DI7:8位数据输入端。②ILE:输入数据允许锁存信号,高电平有效。③CS:片选端,低电平有效。④WR1:输入寄存器写选通信号,低电平有效。WR2:DAC寄存器写选通信号,低电平有效。⑤XFER:数据传送信号,低电平有效。⑥IOUT1、IOUT2:电流输出端。⑦RFB:反馈电流输入端。⑧UREF:基准电压输入端。⑨Vcc:正电源端;AGND:模拟地;DGND:数字地。2、DAC0832工作方式用软件指令控制这5个控制端:ILE、CS、WR1、WR2、XFER,可实现三种工作方式:⑴直通工作方式:5个控制端均有效,直接D/A;⑵单缓冲工作方式:5个控制端一次选通;⑶双缓冲工作方式:5个控制端分二次选通。3、DAC0832应用实例(1)单缓冲方式电路按图9-27,要求输出锯齿波如图9-29(a)所示,幅度为UREF/2=2.5V。程序如下:START:MOVDPTR,#7FFFH;置DAC0832地址;LOOP1:MOVR7,#80H;置锯齿波幅值;1机周LOOP2:MOVA,R7;读输出值;1机周MOVX@DPTR,A;输出;2机周DJNZR7,LOOP2;判周期结束否?2机周SJMPLOOP1;循环输出;2机周(2)双缓冲方式按图9-28(a)编程,DAC0832⑴和⑵输出端接运放后,分别接图形显示器X轴和Y轴偏转放大器输入端,实现同步输出,更新图形显示器光点位置。已知X轴信号和Y轴信号已分别存于30H、31H中。DOUT:MOVDPTR,#0DFFFH;置DAC0832(1)输入寄存器地址MOVA,30H;取X轴信号MOVX@DPTR,A;X轴信号→0832(1)输入寄存器MOVDPTR,#0BFFFH;置DAC0832(2)输入寄存器地址MOVA,31H;取Y轴信号MOVX@DPTR,A;Y轴信号→0832(2)输入寄存器MOVDPTR,#7FFFH;置0832(1)、(2)DAC寄存器地址MOVX@DPTR,A;同步D/A,输出X、Y轴信号RETSTC15F2K60S2单片机集成有8路10位高速电压输入逐次比较型模数转换器(ADC),速度可达到300KHz(30万次/秒),可做温度检测、压力检测、电池电压检测、按键扫描、频谱检测等。ADC输入通道与P1口复用,上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为ADC功能,不作为ADC使用的口可继续作为I/O口使用。11.2STC15F2K60S2片内A/D转换器11.2.1ADC组成和结构STC15F2K60S2的模拟单元包括以下部分:多路选择开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器(ADC_RES和ADC_RESL)、ADC控制寄存器ADC_CONTR等。1STC15F2K60S2的ADC转换原理STC15F2K60S2的ADC是逐次比较型模数转换器。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。STC15F2K60S2单片机ADC模块的参考电压源是输入工作电压Vcc,一般不用外接参考电压源。如果Vcc不稳定(例如电池供电的系统中,电池电压常常在5.3V-4.2V之间变化),则可以在8路A/D转换的一个通道外接一个稳定的参考电压源,计算出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压。1)P1口模拟功能控制寄存器P1ASF(地址为9DH,复位值为00H)2与ADC有关的特殊功能寄存器位号D7D6D5D4D3D2D1D0位名称P17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF如果要使用相应口的模拟功能,需将P1ASF特殊功能寄存器中的相应位置为1。如,若要使用P1.6的模拟量功能,则需要将P16ASF设置为1。注意,P1ASF寄存器不能位寻址,可以使用汇编语言指令ORLP1ASF,#40H,也可以使用C语言语句P1ASF|=0x40;ADC_POWER:ADC电源控制位。0:关闭ADC电源。1:打开ADC电源。注意:1.进入空闲模式前,将ADC电源关闭,即ADC_POWER=0。2.启动A/D转换前一定要确认ADC电源已打开,A/D转换结束后关闭ADC电源可降低功耗,也可不关闭。3.初次打开内部ADC转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。4.启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于提高A/D转换的精度。位号D7D6D5D4D3D2D1D0位名称ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS02)ADC控制寄存器ADC_CONTR(地址为BCH,复位值为00H)SPEED1、SPEED0:ADC转换速度控制位。外部晶体时钟或内部R/C振荡器所产生的系统时钟,不使用时钟分频寄存器CLK_DIV对系统时钟分频后所产生的供给CPU工作所使用的时钟。优点:不仅可以让ADC用较高的频率工作,提高A/D的转换速度;而且可以让CPU用较低的频率工作,降低系统的功耗。位号D7D6D5D4D3D2D1D0位名称ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0SPEED1SPEED0A/D转换所需时间1190个时钟周期转换一次,CPU工作频率
本文标题:13第11章单片机详解
链接地址:https://www.777doc.com/doc-3815320 .html