授课教师:左敬龙电话:13828680660短号:68012邮箱:oklong@gmail.com单片机原理及应用单片机应用系统中的模拟量输入与输出AD转换1DA转换2直流电机控制3AD转换1需要把外界连续变化的物理量(如温度、压力、流量、速度),通过传感器变成电信号,再将其变成数字量送入单片机内进行加工处理。也需要将单片机输出的数字量转为连续变化的模拟量,用以控制调节一些执行机构,实现对被控对象的控制。这种将模拟量转换为数字量的过程叫做模拟/数字(A/D)转换,将数字量转换为模拟量的过程叫做数字/模拟(D/A)转换。实现这种转换的器件,叫做模/数(A/D)转换器或数/模(D/A)转换器。图8-1是典型的具有模/数转换器和数/模转换器的单片机应用系统。概述被测控的对象单片微机应用系统传感器采样保持A/D开关控制部件模拟执行部件D/A图8-1单片机应用系统一、A/D转换原理与接口1A/D转换器常用芯片简介A/D转换器是将模拟信号转换为数字信号的器件,种类繁多,性能各异。与单片机的接口形式也不尽相同,但大致分为并行接口和串行接口两种。1)ADC0809ADC0809具有8路模拟量输入,可在程序控制下对任意通道进行A/D转换,输出8位二进制数字量。与单片机之间是并行通信。其内部逻辑结构和引脚如图8-2所示。ADC0809的引脚功能⑴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的端与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:接地端。表9-8ADC0809通道地址选择表CBA选通的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN72)ADC0809与单片机的接口图8-5是ADC0809与80C51单片机的接口连接图。ADC0809的转换时钟由单片机的ALE提供。ADC0809的典型转换频率为640KHz,ALE信号频率与晶振频率有关,如果晶振频率取12MHZ,则ALE的频率为2MHZ,所以ADC0809的时钟端CLK与单片机的ALE端相接时,要考虑分频。8051单片机通过地址线P2.0和读写控制线、来控制模拟输入通道地址锁存、启动和输出允许。WRRD图8-5ADC0809与80C51接口模拟输入通道地址的译码输入A、B、C由P0.0~P0.2提供,因ADC0809具有通道地址锁存功能,P0.0~P0.2不需锁存。根据P2.0和P0.0~P0.2的连接方法,8个模拟输入通道IN0~IN7的地址依次为FEF8H~FEFFH。ADC0809A/D转换应用举例[例1]设图8-5接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按顺序依次存于片内RAM的30H~37H单元中。采样完一遍后停止。其数据采集的初始化程序和中断服务程序如下:C语言参考程序:#includereg51.h//包含特殊功能寄存器库#includeabsacc.h//包含定义绝对地址访问库#defineucharunsignedchar//定义uchar为无符号字符数据类型#defineIN0XBYTE[0x0000]//定义IN0为通道0的地址staticuchardatax[8];//定义8个单元的数组,存放结果ucharxdata*ad_adr;//定义指向通道的指针uchari=0;//定义变量i,初值为0voidmain(void)//主函数,完成初始化{IT1=1;//外中断INT1为边沿触发EX1=1;//开INT1中断EA=1;//开CPU中断ad_adr=&IN0;//指针指向通道0*ad_adr=i;//启动通道0转换for(;;){;}//等待中断}voidint_adc(void)interrupt0//中断函数{x[i]=*ad_adr;//接收当前通道转换结果i++;//指向下一个单元ad_adr++;//指向下一个通道if(i8)//判循环8次否{*ad_adr=i;//8个通道未转换完,启动下一个通道返回}else{EA=0;//8个通道转换完,关中断返回EX0=0;}}2、ADC0832图8-3ADC0832引脚ADC0832是一种具有串行接口的8位分辨率、双通道A/D转换芯片。具有体积小、兼容性强、性价比高等优点,应用非常广泛。图8-3ADC0832引脚ADC0832是8引脚双列直插式双通道A/D转换器。5V电源供电,输入电压在0~5V之间,工作频率为250KHZ,转换时间为32μS,一般功耗仅为15mW。引脚排列如图8-3所示。它能分别对两路模拟信号实现模/数转换,可以在单端输入方式和差分输入方式下工作。ADC0832引脚功能如下:片选使能,低电平芯片使能。CH0模拟输入通道0,或作为IN+/-使用。CH1模拟输入通道1,或作为IN+/-使用。GND芯片参考0电位(地)。DI数据信号输入,选择通道控制。DO数据信号输出,转换数据输出。CLK芯片时钟输入。Vcc/REF电源输入及参考电压输入(复用)。正常情况下ADC0832与单片机的接口应有4条线,分别是、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效,并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根线上使用。当ADC0832不工作时,其输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将置于低电平并且保持低电平直到转换完全结束。CSCSCSCS此时芯片开始转换工作,同时由单片机向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端选择的输入通道。在第1个时钟脉冲的下降沿之前DI端必须是高电平,表示启动信号。在第2、3个脉冲的下降沿之前DI端应输入2位数据用于选择通道功能。当DI依次输入为1、0时,只对CH0进行单通道转换。当DI依次输入为1、1时,只对CH1进行单通道转换。当DI依次输入为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当DI依次输入为0、1时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。作为单通道模拟信号输入时,ADC0832的输入电压Vi的范围是0~5V。当输入电压Vi=0时,转换后的值VAL=0x00;而当Vi=5V时,转换后的值VAL=0Xff,即十进制数的255。所以转换后的输出值(数字量D)为:×V式中,D为转换后的数字量;V为输入的模拟电压。5255D2)ADC0832与单片机的接口图8-6是ADC0832与AT89C51单片机的接口连接图。正常情况下ADC0832与单片机的接口应有4条线,分别是、CLK、DO、DI。但由于DO端(数据信号输入,选择通道控制)与DI端(数据信号输出,转换数据输出)在通信时并未同时有效,并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根线上使用。ADC0832有2个模拟输入通道,CH0为模拟输入通道0,CH1为模拟输入通道1,由DI端选择输入通道。当要进行A/D转换时,片选信号必须置为低电平,并且保持低电平直到转换完全结束。同时由单片机向芯片时钟输入端CLK输入时钟脉冲。CSCS图8-6ADC0832与单片机接口[例2]设图8-6接口电路用于一个模拟量输入的检测系统。Ui为待转换的模拟输入电压,要求对Ui连续采样10次,每次采样值经串行A/D转换电路(ADC0832)转换成数字量,并按顺序依次存于片内RAM的30H~39H单元中。采样完10次后停止。C语言数据采集串行A/D转换参考程序:#includereg51.h//包含单片机特殊功能寄存器的头文件#defineucharunsignedchar//定义uchar为无符号字符数据类型staticuchardatax[10];//定义10个单元的数组,存放结果sbitCS=P3^4;//将CS位定义为P3.4引脚sbitCLK=P1^0;//将CLK位定义为P1.0引脚sbitDIO=P1^1;//将DIO位定义为P1.1引脚unsignedcharA_D()//A_D转换函数。功能:将模拟信号转换成数字信号{unsignedchari,dat;//设i和det为无符号字符变量CS=1;//一个转换周期开始CLK=0;//为第一个脉冲作准备CS=0;//CS置0,片选有效DIO=1;//DIO置1,规定的起始信号CLK=1;//第一个脉冲CLK=0;//第一个脉冲的下降沿,此前DIO必须是高电平DIO=1;//DIO置1,通道选择信号CLK=1;//第二个脉冲,第2、3个脉冲下降之前,DI必须分别输入两位数据用于选择//通道,这里选通道CH0CLK=0;//第二个脉冲下降沿DIO=0;//DI置0,选择通道0CLK=1;//第三个脉冲CLK=0;//第三个脉冲下降沿DIO=1;//第三个脉冲下降沿之后,输入端DIO失去作用,应置1CLK=1;//第四个脉冲for(i=0;i8;i++)//高位在前{CLK=1;//第四个脉冲CLK=0;//第四个脉冲下降沿dat=1;//将下面储存的低位数据向右移dat|=(unsignedchar)DIO;//将输出数据DIO通过或运算储存在dat最低位}CS=1;//片选无效returndat;//将读出的数据返回}ADC0832时序图main(void)//主函数{unsignedcharj,g=0;//设j,g为无符号字符变量,j用于及循环次数,g用于数组。unsignedintAD_val;//储存A/D转换后的值for(j=0,j10,j++)//{AD_val=A_D();//x[g]=AD_val//g++;}}8.2D/A转换器接口1、DAC转换芯片介绍D/A转换器是将数字量转换为对应的模拟量的器件,也有很多种类。以DAC0832为例介绍D/A转换器的结构和使用方法。DAC0832的引脚及功能DAC0832是一个8位D/A转换器。单电源供电,从+5V~+15V均可正常工作。基准电压的范围为±10V;电流建立时间为1μs;CMOS工艺,低功耗20mW。DAC0832为20引脚,双列直插式封装,其引脚排列如图8-7所示。DI0~DI7:8位数据输入端。ILE:输入数据允许锁存信号,高电平有效。:片选端,低电平有效。:输入寄存器写选通信号,低电平有效。:DAC寄存器写选通信号,低电平有效。:数据传送信号,低电平有效。IOUT1、IOUT2:电流输出端。RFB:反馈电流输入端。UREF:基准电压输入端。Vcc:正电源端;AGND:模拟地;DGND:数字地。图8-7DAC0832引脚CS1WR2WRXFER2、DAC0832工作方式用软件指令控制这5个控制端:ILE、、、、,可实现三种工作方式:直通工作方式:5个控制端均有效,直接D/A转换;单缓冲工作方式:两个输入寄存器中任意一个处于直通方式,另一个工作于受控方式。双缓冲工作方式:两个锁存器都处于受控状态。CS1WR2WRXFER1)DAC0832单缓冲方式在实际应用中,如果只有一路模