模拟量输入与输出精选PPT.ppt
关于模拟量输入与输出第1页,讲稿共37张,创作于星期二单片机应用系统中的模拟量输入单片机应用系统中的模拟量输入与输出与输出AD转换转换1DA转换转换2直流电机控制直流电机控制3AD转换转换1第2页,讲稿共37张,创作于星期二 需要把外界连续变化的物理量(如温度、压力、流量、速度),通过传需要把外界连续变化的物理量(如温度、压力、流量、速度),通过传感器变成电信号,再将其变成数字量送入单片机内进行加工处理。感器变成电信号,再将其变成数字量送入单片机内进行加工处理。也需要将单片机输出的数字量转为连续变化的模拟量,用以控也需要将单片机输出的数字量转为连续变化的模拟量,用以控制调节一些执行机构,实现对被控对象的控制。制调节一些执行机构,实现对被控对象的控制。这种将模拟量转换为数字量的过程叫做模拟这种将模拟量转换为数字量的过程叫做模拟/数字(数字(A/D)转换,将)转换,将数字量转换为模拟量的过程叫做数字数字量转换为模拟量的过程叫做数字/模拟(模拟(D/A)转换。实现这种转换的)转换。实现这种转换的器件,叫做模器件,叫做模/数(数(A/D)转换器或数)转换器或数/模(模(D/A)转换器。)转换器。图图8-1是典型的具有模是典型的具有模/数转换器和数数转换器和数/模转换器的单片机应用系统模转换器的单片机应用系统。概概 述述第3页,讲稿共37张,创作于星期二被测被测控的控的对象对象单片微机应用系统传感器采样保持A/D开关控制部件模拟执行部件D/A图图81 单片机应用系统单片机应用系统第4页,讲稿共37张,创作于星期二一一、A/D转换原理与接口转换原理与接口1 A/D转换器常用芯片简介转换器常用芯片简介 A/D转换器是将模拟信号转换为数字信号的器件,种类繁多,性转换器是将模拟信号转换为数字信号的器件,种类繁多,性能各异。与单片机的接口形式也不尽相同,但大致分为并行接口和能各异。与单片机的接口形式也不尽相同,但大致分为并行接口和串行接口两种。串行接口两种。1)ADC0809 ADC0809具有具有8路模拟量输入,路模拟量输入,可在程序控制下对任意通道进行可在程序控制下对任意通道进行A/D转转换,输出换,输出8位二进制数字量。与单片机位二进制数字量。与单片机之间是并行通信。其内部逻辑结构和引之间是并行通信。其内部逻辑结构和引脚如图脚如图8-2所示。所示。第5页,讲稿共37张,创作于星期二 ADC0809的的引脚功能引脚功能 IN0IN0IN7IN7:8 8路模拟信号输入端路模拟信号输入端。C C、B B、A A:8 8路模拟信号转换选择端路模拟信号转换选择端。低低8 8位地址中位地址中A0A0A2A2连接。由连接。由A0A0A2A2地址地址000000111111选择选择IN0IN0IN7IN7八路八路A/DA/D通道。通道。CLKCLK:外部时钟输入端外部时钟输入端。时钟频率高,时钟频率高,A/DA/D转换速度快。允许范围为转换速度快。允许范围为10101280KHz 1280KHz。通常由通常由80C51 ALE80C51 ALE端直接或分频后与端直接或分频后与0809 CLK0809 CLK端相连接。端相连接。D0D0D7D7:数字量输出端数字量输出端。OEOE:A/DA/D转换结果输出允许控制端转换结果输出允许控制端。OE=1OE=1,允允许许将将A/DA/D转转换换结结果果从从D0D0D7D7端端输输出出。通通常常由由80C5180C51的的端端与与08090809片片选选端端(例例如如P2.0P2.0)通通过过或或非非门与门与0809 OE0809 OE端相连接。端相连接。ALEALE:地址锁存允许信号输入端地址锁存允许信号输入端。0809 ALE0809 ALE信号有效时将当前转换的通道地址锁存。信号有效时将当前转换的通道地址锁存。STARTSTART:启动启动A/DA/D转换信号输入端转换信号输入端。当当STARTSTART端端输输入入一一个个正正脉脉冲冲时时,立立即即启启动动08090809进进行行A/DA/D转转换换。STARTSTART端端与与ALEALE端端连连在在一一起起,由由80C51WR80C51WR与与08090809片选端(例如片选端(例如P2.0P2.0)通过或非门相连。)通过或非门相连。EOCEOC:A/DA/D转换结束信号输出端,高电平有效。转换结束信号输出端,高电平有效。UREFUREF(+)、UREFUREF(-):正负基准电压输入端正负基准电压输入端。VccVcc:正电源电压正电源电压(+5V+5V)。)。GNDGND:接地端接地端。第6页,讲稿共37张,创作于星期二表表9-8 ADC0809通道地址选择表通道地址选择表C B A选通的通道选通的通道0 0 0IN00 0 1 IN10 1 0IN20 1 1IN31 0 0IN41 0 1IN51 1 0IN61 1 1IN7第7页,讲稿共37张,创作于星期二2)ADC0809与单片机的接口与单片机的接口 图图8-5是是ADC0809与与80C51单片机的接口连接图。单片机的接口连接图。ADC0809的转换时钟由单片机的的转换时钟由单片机的ALE提供。提供。ADC0809的典型转换频率为的典型转换频率为640KHz,ALE信号频率与晶振频率有关,如果晶振频率取信号频率与晶振频率有关,如果晶振频率取12MHZ,则,则ALE的频率为的频率为2MHZ,所以,所以ADC0809的时钟端的时钟端CLK与单片机的与单片机的ALE端相接时,要考虑分频。端相接时,要考虑分频。8051单片机通过地址线单片机通过地址线P2.0和读写控制线、来控制模拟输入通道地址锁存和读写控制线、来控制模拟输入通道地址锁存 、启动和输出允许。启动和输出允许。图图8-5 ADC0809与与80C51接口接口模拟输入通道地址的译码输入模拟输入通道地址的译码输入A、B、C由由P0.0P0.2提供,因提供,因ADC0809具有通道地址锁存功能,具有通道地址锁存功能,P0.0P0.2不需锁存。根据不需锁存。根据P2.0和和P0.0P0.2的连接方法,的连接方法,8个模拟输个模拟输入通道入通道IN0IN7的地址依次为的地址依次为FEF8HFEFFH。第8页,讲稿共37张,创作于星期二ADC0809 A/D转换应用举例转换应用举例 例例1设图设图8-5接口电路用于一个接口电路用于一个8路模拟量输入的巡回检测系统,路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按顺序依次存于片内使用中断方式采样数据,把采样转换所得的数字量按顺序依次存于片内RAM的的30H37H单元中。采样完一遍后停止。其数据采集的初始单元中。采样完一遍后停止。其数据采集的初始化程序和中断服务程序如下:化程序和中断服务程序如下:第9页,讲稿共37张,创作于星期二C语言参考程序:语言参考程序:#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /包含定义绝对地址访问库包含定义绝对地址访问库#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型#define IN0 XBYTE0 x0000 /定义定义IN0为通道为通道0的地址的地址static uchar data x8;/定义定义8个单元的数组,存放结果个单元的数组,存放结果uchar xdata *ad_adr;/定义指向通道的指针定义指向通道的指针uchar i=0;/定义变量定义变量i,初值为初值为0void main(void)/主函数,完成初始化主函数,完成初始化 IT1=1;/外中断外中断INT1为边沿触发为边沿触发 EX1=1;/开开INT1中断中断 EA=1;/开开CPU中断中断 ad_adr=&IN0;/指针指向通道指针指向通道0 *ad_adr=i;/启动通道启动通道0转换转换 for (;);/等待中断等待中断第10页,讲稿共37张,创作于星期二void int_adc(void)interrupt 0 /中断函数中断函数 xi=*ad_adr;/接收当前通道转换结果接收当前通道转换结果 i+;/指向下一个单元指向下一个单元 ad_adr+;/指向下一个通道指向下一个通道 if(i8)/判循环判循环8次否次否 *ad_adr=i;/8个通道未转换完,启动下一个通道返回个通道未转换完,启动下一个通道返回 else EA=0;/8个通道转换完,关中断返回个通道转换完,关中断返回 EX0=0;第11页,讲稿共37张,创作于星期二2、ADC0832图图8-3 ADC0832引脚引脚 ADC0832是一种具有串行接口的是一种具有串行接口的8位分辨率、双通道位分辨率、双通道A/D转换芯片。转换芯片。具有体积小、兼容性强、性价比高等优点,应用非常广泛。具有体积小、兼容性强、性价比高等优点,应用非常广泛。图图8-3 ADC08328-3 ADC0832引脚引脚 ADC0832是是8引脚双列直插式双通引脚双列直插式双通道道A/D转换器。转换器。5V电源供电,输入电压电源供电,输入电压在在05V之间,工作频率为之间,工作频率为250KHZ,转,转换时间为换时间为32S,一般功耗仅为,一般功耗仅为15mW。引。引脚排列如图脚排列如图8-3所示。它能分别对两路模所示。它能分别对两路模拟信号实现模拟信号实现模/数转换,可以在单端输入方数转换,可以在单端输入方式和差分输入方式下工作。式和差分输入方式下工作。第12页,讲稿共37张,创作于星期二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转换时,须转换时,须先将先将 置于低电平并且保持低电平直到转换完全结束。置于低电平并且保持低电平直到转换完全结束。第13页,讲稿共37张,创作于星期二 此时芯片开始转换工作,同时由单片机向芯片时钟输入端此时芯片开始转换工作,同时由单片机向芯片时钟输入端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的范围是的范围是05V。当输入电。当输入电压压Vi=0时,转换后的值时,转换后的值VAL=0 x00;而当;而当Vi=5V时,转换后的值时,转换后的值VAL=0Xff,即十进制数的即十进制数的255。所以转换后的输出值(数字量。所以转换后的输出值(数字量D)为)为:V 式中,式中,D为转换后的数字量;为转换后的数字量;V为输入的模拟电压。为输入的模拟电压。第14页,讲稿共37张,创作于星期二2)ADC0832与单片机的接口与单片机的接口 图图8-6是是ADC0832与与AT89C51单片机的接口连接图。正常情况下单片机的接口连接图。正常情况下ADC0832与单片机的接口应与单片机的接口应有有4条线,分别是条线,分别是 、CLK、DO、DI。但由于。但由于DO端(数据信号输入,选择通道控制)与端(数据信号输入,选择通道控制)与DI端端(数据信号输出,转换数据输出)在通信时并未同时有效,并与单片机的接口是双向的,(数据信号输出,转换数据输出)在通信时并未同时有效,并与单片机的接口是双向的,所以电路设计时可以将所以电路设计时可以将DO和和DI并联在一根线上使用。并联在一根线上使用。ADC0832有有2个模拟输入通道,个模拟输入通道,CH0为模为模拟输入通道拟输入通道0,CH1为模拟输入通道为模拟输入通道1,由,由DI端选择输入通道。当要进行端选择输入通道。当要进行A/D转换时,片选信号转换时,片选信号 必须必须置为低电平,并且保持低电平直到转换完全结束。同时由单片机向芯片时钟输入端置为低电平,并且保持低电平直到转换完全结束。同时由单片机向芯片时钟输入端CLK输输入时钟脉冲。入时钟脉冲。图图8-6 ADC0832与单片机接口与单片机接口 第15页,讲稿共37张,创作于星期二例例2 设图设图8-6接口电路用于一个模拟量输入的检测系统。接口电路用于一个模拟量输入的检测系统。Ui为待转换的模拟输入电为待转换的模拟输入电压,要求对压,要求对Ui连续采样连续采样10次,每次采样值经串行次,每次采样值经串行A/D转换电路(转换电路(ADC0832)转换)转换成数字量,并按顺序依次存于片内成数字量,并按顺序依次存于片内RAM的的30H39H单元中。采样完单元中。采样完10次后次后停止。停止。第16页,讲稿共37张,创作于星期二C语言数据采集串行语言数据采集串行A/D转换参考程序:转换参考程序:#include /包含单片机特殊功能寄存器的头文件包含单片机特殊功能寄存器的头文件#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型static uchar data x10;/定义定义10个单元的数组,存放结果个单元的数组,存放结果sbit CS=P34;/将将CS位定义为位定义为P3.4引脚引脚sbit CLK=P10;/将将CLK位定义为位定义为P1.0引脚引脚sbit DIO=P11;/将将DIO位定义为位定义为P1.1引脚引脚unsigned char A_D()/A_D转换函数。功能:将模拟信号转换成数字信号转换函数。功能:将模拟信号转换成数字信号 unsigned char i,dat;/设设i和和det为无符号字符变量为无符号字符变量 CS=1;/一个转换周期开始一个转换周期开始 CLK=0;/为第一个脉冲作准备为第一个脉冲作准备 CS=0;/CS置置0,片选有效,片选有效 DIO=1;/DIO置置1,规定的起始信号,规定的起始信号 CLK=1;/第一个脉冲第一个脉冲 CLK=0;/第一个脉冲的下降沿,此前第一个脉冲的下降沿,此前DIO必须是高电平必须是高电平 DIO=1;/DIO置置1,通道选择信号通道选择信号 第17页,讲稿共37张,创作于星期二CLK=1;/第二个脉冲,第第二个脉冲,第2、3个脉冲下降之前,个脉冲下降之前,DI必须分别输入两位数据用于选必须分别输入两位数据用于选择择/通道,这里选通道通道,这里选通道CH0 CLK=0;/第二个脉冲下降沿第二个脉冲下降沿 DIO=0;/DI置置0,选择通道,选择通道0 CLK=1;/第三个脉冲第三个脉冲 CLK=0;/第三个脉冲下降沿第三个脉冲下降沿 DIO=1;/第三个脉冲下降沿之后,输入端第三个脉冲下降沿之后,输入端DIO失去作用,应置失去作用,应置1 CLK=1;/第四个脉冲第四个脉冲 for(i=0;i8;i+)/高位在前高位在前 CLK=1;/第四个脉冲第四个脉冲 CLK=0;/第四个脉冲下降沿第四个脉冲下降沿 dat=1;/将下面储存的低位数据向右移将下面储存的低位数据向右移dat|=(unsigned char)DIO;/将输出数据将输出数据DIO通过或运算储存在通过或运算储存在dat最低位最低位 CS=1;/片选无效片选无效 return dat;/将读出的数据返回将读出的数据返回 第18页,讲稿共37张,创作于星期二ADC0832时序图时序图第19页,讲稿共37张,创作于星期二main(void)/主函数主函数 unsigned char j,g=0;/设设j,g为无符号字符变量为无符号字符变量,j用于及循环次数用于及循环次数,g用于用于数组。数组。unsigned int AD_val;/储存储存A/D转换后的值转换后的值for(j=0,j10,j+)/AD_val=A_D();/xg=AD_val/g+;第20页,讲稿共37张,创作于星期二8.2 D/A转换器接口转换器接口1、DAC转换芯片介绍转换芯片介绍 D/A转换器是将数字量转换为对应的模拟量的器件,也有很多种类。转换器是将数字量转换为对应的模拟量的器件,也有很多种类。以以DAC0832为例介绍为例介绍D/A转换器的结构和使用方法。转换器的结构和使用方法。DAC0832的引脚及功能的引脚及功能 DAC0832是一个是一个8位位D/A转换器。单电源供电,从转换器。单电源供电,从+5V+15V均均可正常工作。基准电压的范围为可正常工作。基准电压的范围为10V;电流建立时间为;电流建立时间为1s;CMOS工艺,低功耗工艺,低功耗20 mW。DAC0832为为20引脚,双列直插式封装,其引脚排列如图引脚,双列直插式封装,其引脚排列如图8-7所示。所示。第21页,讲稿共37张,创作于星期二DI0DI7:8位数据输入端。位数据输入端。ILE:输入数据允许锁存信号,高电平有效。:输入数据允许锁存信号,高电平有效。:片选端,低电平有效。:片选端,低电平有效。:输入寄存器写选通信号,低电平:输入寄存器写选通信号,低电平有效。有效。:DAC寄存器写选通信号,低电平有效。寄存器写选通信号,低电平有效。:数据传送信号,低电平有效。:数据传送信号,低电平有效。IOUT1、IOUT2:电流输出端。:电流输出端。RFB:反馈电流输入端。:反馈电流输入端。UREF:基准电压输入端。:基准电压输入端。Vcc:正电源端;:正电源端;AGND:模拟地;:模拟地;DGND:数字地。:数字地。图图8-7 DAC0832引脚引脚第22页,讲稿共37张,创作于星期二2、DAC0832工作方式工作方式用软件指令控制这用软件指令控制这5个控制端:个控制端:ILE、,可实现三,可实现三种工作方式:种工作方式:直通工作方式:直通工作方式:5个控制端均有效,直接个控制端均有效,直接D/A转换;转换;单缓冲工作方式:单缓冲工作方式:两个输入寄存器中任意一个处于直通方式,另一两个输入寄存器中任意一个处于直通方式,另一个工作于受控方式。个工作于受控方式。双缓冲工作方式:双缓冲工作方式:两个锁两个锁存器都处于受控状态。存器都处于受控状态。第23页,讲稿共37张,创作于星期二1)DAC0832单缓冲方式单缓冲方式 在实际应用中,如果只有一路模拟量输出,或虽在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出时,可采用单缓冲有几路模拟量但并不要求同步输出时,可采用单缓冲方式。单缓冲方式的两种连接方法如图方式。单缓冲方式的两种连接方法如图8-9和图和图8-10所所示。示。第24页,讲稿共37张,创作于星期二图8-9 DAC 0832单缓冲方式图8-10 用DAC产生锯齿波 第25页,讲稿共37张,创作于星期二 图图8-9中,两级寄存器作一级寄存器使用。图中,两级寄存器作一级寄存器使用。图8-10中中,=0和和=0,因此因此DAC寄存器处于接通方式。而输入寄存器处于受控锁存方寄存器处于接通方式。而输入寄存器处于受控锁存方式,接式,接8051的,的,ILE接高电平,此外还应把接高位地址或译码输接高电平,此外还应把接高位地址或译码输出,以便为输入寄存器确定地址。出,以便为输入寄存器确定地址。单缓冲方式应用十分广泛,如需要有一个线性增长的电压来控单缓冲方式应用十分广泛,如需要有一个线性增长的电压来控制移动记录笔或移动电子束等。此时可通过在制移动记录笔或移动电子束等。此时可通过在DAC0832的输出端的输出端接运算放大器,由运算放大器产生锯齿波来实现,电路连接如接运算放大器,由运算放大器产生锯齿波来实现,电路连接如图图8-10所示。图中若所示。图中若DAC0832的输出端只接一级反向输入的运算的输出端只接一级反向输入的运算放大器,则输出的锯齿波为负向增长得倒锯齿波,图放大器,则输出的锯齿波为负向增长得倒锯齿波,图8-10中接中接2级运算放大器是为了输出正向的锯齿波。级运算放大器是为了输出正向的锯齿波。第26页,讲稿共37张,创作于星期二 对锯齿波的产生作如下几点说明:对锯齿波的产生作如下几点说明:程序每循环一次,程序每循环一次,A加加1,因此实际上锯齿波的上升沿是由,因此实际上锯齿波的上升沿是由256个小阶梯构成的,但由于阶梯很小,所以从宏观上看就是线性增长的个小阶梯构成的,但由于阶梯很小,所以从宏观上看就是线性增长的锯齿波。锯齿波。可通过循环程序段的机器周期数计算出锯齿波的周期,并可根据可通过循环程序段的机器周期数计算出锯齿波的周期,并可根据需要,通过延时的办法来改变波形周期。当延迟时间较短时,可用需要,通过延时的办法来改变波形周期。当延迟时间较短时,可用NOP指令来实现;当需要延迟的时间较长时,可以使用一个延时子程序。指令来实现;当需要延迟的时间较长时,可以使用一个延时子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。延迟时间不同,波形周期不同,锯齿波的斜率就不同。通过通过A加加1,可得到正向的锯齿波;如要得到负向的锯齿波,改为减,可得到正向的锯齿波;如要得到负向的锯齿波,改为减1指令即可实现。指令即可实现。程序中程序中A的变化范围是的变化范围是0255,因此得到的锯齿波是满幅度,因此得到的锯齿波是满幅度的。如要求得到非满幅度锯齿波,可通过计算求得数字量的初值的。如要求得到非满幅度锯齿波,可通过计算求得数字量的初值和终值,然后在程序中通过置初值判终值的办法实现。和终值,然后在程序中通过置初值判终值的办法实现。第27页,讲稿共37张,创作于星期二锯齿波锯齿波C语言参考程序:语言参考程序:#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /该文件用于定义存储器空间的绝对地址该文件用于定义存储器空间的绝对地址#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型#define DAC0832 XBYTE0 x7FFF /定义定义DAC0832表示片外地址表示片外地址0 x7FFFvoid main()/主函数主函数uchar i;/变量变量i为无符号字符数据类型为无符号字符数据类型while(1)/无限循环体无限循环体for(i=0;i0 xff;i+)/循环循环256次次DAC0832=i;/将每次加将每次加1变化后的变化后的i值送值送D/A转换转换第28页,讲稿共37张,创作于星期二矩形波矩形波C语言参考程序如下:语言参考程序如下:#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /该文件用于定义存储器空间的绝对地址该文件用于定义存储器空间的绝对地址#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型#define DAC0832 XBYTE0 x7FFF /定义定义DAC0832表示片外地址表示片外地址0 x7FFFvoid delay()/延时函数延时函数uchar i;/变量变量i为无符号字符数据类型为无符号字符数据类型for(i=0;i0 xff;i+);/循环延时循环延时void main()/主函数主函数uchar i;/变量变量i为无符号字符数据类型为无符号字符数据类型while(1)/无限循环体无限循环体DAC0832=0;/输出低电平输出低电平delay();/延时延时DAC0832=0 xff;/输出高电平输出高电平delay();/延时延时用用D/A转换还可以产生多种波形。产生矩形波的汇编语言参考程序如下:转换还可以产生多种波形。产生矩形波的汇编语言参考程序如下:第29页,讲稿共37张,创作于星期二2DAC0832双缓冲方式双缓冲方式 图图8-12是一个两路同步输出的是一个两路同步输出的D/A转换器的接口电路及逻辑框图。转换器的接口电路及逻辑框图。P2.5和和P2.6分别选择两路分别选择两路D/A转换器的输入寄存器,控制输入锁存;转换器的输入寄存器,控制输入锁存;P2.7连到两路连到两路D/A转换器的转换器的 端控制同步转换输出;端控制同步转换输出;端与所有的端与所有的 、端相连,在执行端相连,在执行MOVX输出指令时,输出指令时,单片机自动输出单片机自动输出 控制信号。控制信号。图图8-12 DAC0832双缓冲方式双缓冲方式 如果将如果将DAC0832和和的输出端接运放后,分别接图形显示器的的输出端接运放后,分别接图形显示器的X轴和轴和Y轴偏转轴偏转放大器输入端,实现同步输出,则可更新图形显示器的光点位置,从而实现绘图功能。放大器输入端,实现同步输出,则可更新图形显示器的光点位置,从而实现绘图功能。第30页,讲稿共37张,创作于星期二同步输出同步输出C语言参考程序如下语言参考程序如下(设设X轴信号和轴信号和Y轴信号已分别存于变量轴信号已分别存于变量i和和j中中):#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /该文件用于定义存储器空间的绝对地址该文件用于定义存储器空间的绝对地址#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型#define DAC0832_1 XBYTE0 xDFFF /定义定义DAC0832_1输入寄存器地址输入寄存器地址#define DAC0832_2 XBYTE0 xBFFF /定义定义DAC0832_2输入寄存器地址输入寄存器地址#define DAC XBYTE0 x7FFF /定义定义0832(1)、(2)DAC寄存器地址寄存器地址void main()/主函数主函数 uchar i,j;DAC0832_1=i;/X轴信号送轴信号送0832(1)输入寄存器输入寄存器 DAC0832_2=j;/Y轴信号送轴信号送0832(2)输入寄存器输入寄存器DAC=j;/同步同步D/A,输出输出X、Y轴信号轴信号 第31页,讲稿共37张,创作于星期二3、直流电机控制、直流电机控制 图图8-14是一个单片机控制直流电动机的简单接口电路示意图。图是一个单片机控制直流电动机的简单接口电路示意图。图中设单片机的中设单片机的P3.2口、口、P3.7口分别接到电动机控制电路的口分别接到电动机控制电路的D端和端和PWM端,通过单片机控制电动机的正转、反转。端,通过单片机控制电动机的正转、反转。P1口输入的是经口输入的是经A/D转转换器换器0809转换的数字量转换的数字量TMP。首先,单片机的。首先,单片机的PWM端(端(P3.7)输出)输出转动电平,延时一段时间,延时的常数定为转动电平,延时一段时间,延时的常数定为TMP;接着再输出停转电平,;接着再输出停转电平,延时的常数为延时的常数为255-TMP。这样,就可通过改变模拟输入电压的大小(即。这样,就可通过改变模拟输入电压的大小(即转换得到的数字量转换得到的数字量TMP的大小)来改变单片机的大小)来改变单片机PWM输出的占空比,从输出的占空比,从而达到调节电动机转速的目的。而达到调节电动机转速的目的。第32页,讲稿共37张,创作于星期二图图8-15为直流电动机控制程序流程图。为直流电动机控制程序流程图。图图8-14 单片机控制直流电机接口电路示意图单片机控制直流电机接口电路示意图 图图8-15 直流电动机控制程序流程图直流电动机控制程序流程图 第33页,讲稿共37张,创作于星期二直流电动机控制直流电动机控制C语言参考程序语言参考程序#include /包含特殊功能寄存器库包含特殊功能寄存器库#define uchar unsigned char /定义定义uchar为无符号字符数据类型为无符号字符数据类型sbit PWM=P37;/将将PWM定义为定义为P3.7引脚引脚sbit d=P32;/将将d定义为定义为P3.2引脚,转向选择位引脚,转向选择位uchar a,tmp;/定义变量定义变量a,和和tmp,用于放时间常数,用于放时间常数void delay(uchar i)/延时函数延时函数uchar j,k;/变量变量i、k为无符号字符数据类型为无符号字符数据类型for(j=i;j0;j-)/循环延时循环延时for(k=125;k0;k-);/循环延时循环延时void main()/主函数主函数while(1)/无限循环体无限循环体 if(d=1)/如如d=1,则正转,则正转 PWM=1;/正转,正转,PWM=1第34页,讲稿共37张,创作于星期二a=tmp;/时间常数为时间常数为tmp delay(uchar a);/调延时函数调延时函数PWM=0;/PWM=0 a=255-tmp;/时间常数为时间常数为255-tmpdelay(uchar a);/调延时函数调延时函数 else /否则,否则,d=0,反转,反转 PWM=0;/PWM=0 a=tmp;/时间常数为时间常数为tmpdelay(uchar a);/调延时函数调延时函数PWM=1;/PWM=1 a=255-tnp;/时间常数为时间常数为255-tmpdelay(uchar a);/调延时函数调延时函数 第35页,讲稿共37张,创作于星期二8.5 全自动洗衣机水量控制原理及全自动洗衣机水量控制原理及PROTUES仿真仿真 图图8-16电路只模拟进水控制的一小段。当按键电路只模拟进水控制的一小段。当按键S按下,启动洗衣机工作,开按下,启动洗衣机工作,开始进水,始进水,D2亮。调节电位器的中间抽头,可改变模亮。调节电位器的中间抽头,可改变模/数转换器数转换器ADC0832输入电压的输入电压的大小,以此来表示进水量的多少。变化的电压经大小,以此来表示进水量的多少。变化的电压经ADC0832转换成相应的二进制数转换成相应的二进制数送给单片机,单片机对数据进行比较后,判断是否要停止进水。如转换的数据(或变化的电送给单片机,单片机对数据进行比较后,判断是否要停止进水。如转换的数据(或变化的电压)超过了预设进水量的标准,则在单片机控制下停止进水(压)超过了预设进水量的标准,则在单片机控制下停止进水(D2灯灭),并启动电机工灯灭),并启动电机工作(作(D1灯亮),电机的速度调整,参考上一节内容,其它工序此处不再讨论。读者自灯亮),电机的速度调整,参考上一节内容,其它工序此处不再讨论。读者自己思考。己思考。第36页,讲稿共37张,创作于星期二2022/9/16感感谢谢大大家家观观看看第37页,讲稿共37张,创作于星期二