2019-05-03 11:05:44 imxlw00 阅读数 451
  • AD和DA转换-第1季第16部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第16个课程,主要讲解AD转换和DA转换。目标是理解模拟量和数字量的概念,并且学会使用AD转换来采集现实世界的模拟量。

    2564 人正在学习 去看看 朱有鹏
  • 模拟量:自然界连续变化的物理量。所谓连续,包含两个方面的含义;

    一方面从时间上来说,它是随时间连续变化的;
    另一方面从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通常称为模拟量。

  • 数字量:计算机中处理的是不连续变化的量,离散性的数字量。

  • D/A 数模转换器 (Digital - Analog Convert)

  • A/D 模拟转换器(Analog - Digital Convert)

A/D转换器的主要技术指标

1、分辨率
ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/2^12。

一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/2^12=2.4mV。
2、量化误差
ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。
在这里插入图片描述
3、偏移误差
偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。
4、满刻度误差
满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
5、线性度
线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
6、绝对精度
在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。
7、转换速率
ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
A/D转换器的转速速度主要取决于转换电路的类型,不同类型的A/D转换器的转换速度相差很大。

  • 双积分A/D转换器的转换速度最慢,需几百毫秒左右;
  • 逐次逼近式A/D转换器的转换速度最快,需十几微秒;
  • 并行比较型A/D转换器的转换速度最快,仅需几十纳秒。

逐次逼近式ADC的转换原理

在这里插入图片描述
逐次逼近式AD转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn>Vi,清除最高位,若Vn<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束。

PCF8591的介绍

PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入、一个输出和一个串行I2C 总线接口。3 个地址引脚A0、A1 和A2 用于编程硬件地址,允许将最多8 个器件连接至I2C总线而不需要额外硬件。PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用。
特点:

  • 单电源供电
  • 工作电压:2.5 V ~ 6 V
  • I2C总线串行输入/输出
  • 通过3个硬件地址引脚编址
  • 采样速率取决于 I2C 总线传输速率决定
  • 4个模拟输入可编程为单端或差分输入
  • 自动增量通道选择
  • 8位逐次比较型A/D 转换
    在这里插入图片描述

管脚定义:

AIN0~AIN3:模拟量输入通道
AOUT:模拟输出通道
A0~A2:硬件设备地址
VDD:电源正极
VSS:电源负极
VREF:参考电压输入。
EXT:振荡器输入时,内部/外部的切换开关。
OSC:振荡器输入/输出。
SCL:I2C BUS时钟输入。
SDA:I2C BUS 数据输入/输出。
AGND:模拟地,模拟信号和基准电源的参考地

控制字格式

在这里插入图片描述
最高位默认为0

第6位是选择是否允许模拟电压输出,在DA转换时设置为1,AD转换时设置为0或1均可

第5/4位是选择模拟电压输出方式,一般选择00单端输入方式,其他的几种方式如下图所示
在这里插入图片描述
第3位默认为0

第2位是自动增量使能位,如果自动增量(auto-increment)标志置1,每次A/D 转换后通道号将自动增加。

第1/0为是在AD转换时选择哪一个通道输入的电压转换为数字量.

PCF8591的器件地址

每一个IIC器件都有一个器件地址,来区分不同的IIC设备,下面是PCF8591的地址
在这里插入图片描述
在这里插入图片描述
它的地址是由1001和A2A1A0组成的,在原理图中可以看出,A2A1A0均为0,所以器件地址为0x90/0x91,最后一位是读写方向位,0表示下一个字节往总线上写数据,1表示下一个字节从总线上读取数据.

2013-11-11 22:59:02 zhoukouguren 阅读数 4043
  • AD和DA转换-第1季第16部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第16个课程,主要讲解AD转换和DA转换。目标是理解模拟量和数字量的概念,并且学会使用AD转换来采集现实世界的模拟量。

    2564 人正在学习 去看看 朱有鹏
CSDA BIT P3.2
WRR BIT P3.6
WELA BIT P2.7
DULA BIT P2.6

ORG 0000H
LOOP0:
MOV P0,#0FFH ;关数码管显示
SETB WELA
CLR WELA
CLR DULA
SETB CSDA
SETB WR
MOV A,#0
LOOP1:
MOV P0,A
CLR CSDA 
CLR WRR
LCALL DELAY
SETB WRR
SETB CSDA
INC A
SJMP LOOP1
DELAY:    ;延时 
SETB RS1
MOV R2,#04H
DELAY2:
MOV R1,#10
DELAY1:
MOV R0,#250
DELAY0:
NOP
NOP 
DJNZ R0,DELAY0
DJNZ R1,DELAY1
//DJNZ R2,DELAY2
CLR RS1
RET
END

2019-02-27 20:47:38 GUA8122HOU 阅读数 497
  • AD和DA转换-第1季第16部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第16个课程,主要讲解AD转换和DA转换。目标是理解模拟量和数字量的概念,并且学会使用AD转换来采集现实世界的模拟量。

    2564 人正在学习 去看看 朱有鹏

一、D/A转换器的原理及主要技术指标
    一、D/A转换器的基本原理及分类
        T型电阻网络D/A转换器 :
        
        由图可知,运放两个输入端为“虚地”,所以电位都约为0。所以无论开关在0或者1,最后两个2R都是并联得R,和电阻R串联又为2R,以此类推,那么到最前端,相当于两个2R的电阻并联,可知电流I=Vref/R。I7=I/2,I6=1/2*I/2,由此追溯到I0=I/256,如果Rfb=R,那么V0只与Vref有关,即V0=Vref*z/256


二、D/A转换器的主要性能指标
    1、分辨率
        分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。
        分辨率与输入数字量的位数有确定的关系,可以表示成FS /(2^n)。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。
    2、线性度
        线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的±1%以内。
    3、绝对精度和相对精度
         绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝对精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。
 相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。
    4、建立时间
         建立时间是指输入的数字量发生满刻度变化时,输出模拟信号达到满刻度值的±1/2LSB所需的时间。是描述D/A转换速率的一个动态指标。
        电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定于运算放大器的响应时间。根据建立时间的长短,可以将DAC分成超高速(<1μS)、高速(10~1μS)、中速(100~10μS)、低速(≥100μS)几档。
应当注意,精度和分辨率具有一定的联系,但概念不同。DAC的位数多时,分辨率会提高,对应于影响精度的量化误差会减小。但其它误差(如温度漂移、线性不良等)的影响仍会使DAC的精度变差。

 

二、工作原理
               简介:是 Pulse Width  Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于 PWM 技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。
 

等效图形


         PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码

PWM工作原理

 

 

 

主函数部分

/**************************************************************************************
*		              DA-PWM输出实验												  *
实现现象:下载程序后DA模块上的指示灯呈呼吸灯效果,由暗变亮再由亮变暗
注意事项:要将AD/DA模块上的短接片将OUT和LED短接,板子丝印上有。
		  如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。																				  
***************************************************************************************/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

//--定义使用的IO口--//
sbit PWM=P2^1;
bit DIR;

//--定义一个全局变量--// 
u16 count,value,timer1;

/*******************************************************************************
* 函 数 名         : Timer1Init
* 函数功能		   : 定时器1初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer1Init()
{
	TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。

	TH1 = 0xFF; 
	TL1 = 0xff;   //1us
		
	ET1=1;//打开定时器1中断允许
	EA=1;//打开总中断
	TR1=1;//打开定时器			
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	Timer1Init();  //定时器1初始化
	while(1)
	{
		if(count>100)							
		{  
			count=0;
			if(DIR==1)					   //DIR控制增加或减小
			{
			  value++;
			}			
			if(DIR==0)
			{
			  value--;
			}
				
		}

		if(value==1000)
		{
		  DIR=0;
		}
		if(value==0)
		{
		  DIR=1;
		}	
				
		if(timer1>1000)  //PWM周期为1000*1us
		{
			timer1=0;
		}
		if(timer1 <value)	
		{
			PWM=1;
		}
		else
		{
			PWM=0;
		}		
	}		
}

/*******************************************************************************
* 函 数 名       : Time1
* 函数功能		 : 定时器1的中断函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
{
	TH1 = 0xFF; 
	TL1 = 0xff;   //1us
	timer1++; 
    count++;
	
}

 

 

 

2019-02-25 20:04:11 Xiaomo_haa 阅读数 955
  • AD和DA转换-第1季第16部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第16个课程,主要讲解AD转换和DA转换。目标是理解模拟量和数字量的概念,并且学会使用AD转换来采集现实世界的模拟量。

    2564 人正在学习 去看看 朱有鹏

 

A/D的主要指标

1、ADC的位数

一个n位的ADC表示这个ADC共有2的n次方个刻度。8位的ADC输出的是从0~255一共256个数字值,也就是2^{^{8}}个数据刻度。。

2、基准源

基准源也叫基准电压,是ADC的一个重要指标,要想把输入的ADC的信号测量准确,那么基准源首先要准,基准源的偏差会直接导致转换结果的偏差。

3、分辨率

分辨率是数字量变化一个最小刻度时,模拟信号的变化量,定义为满刻度量程与2^{_{n}}-1的比值。假定5.10V的电压系统,使用8位的ADC进行测量,那么相当于0~255一共256个刻度把5.10V平均分成了255份,那么分辨率就是5.10/255=0.02V。

4、INL(积分非线性度)和 DNL(差分非线性度)

ADC精度关系重大的两个指标是INL(IntegralNonLiner)和 DNL(Differencial NonLiner) 。

INL 指的是 ADC 器件在所有的数值上对应的模拟值,和真实值之间误差最大的那一个点的误差值,是 ADC 最重要的一个精度指标,单位是 LSB。

LSB(Least Significant Bit)是最低有效位的意思,那么它实际上对应的就是 ADC的分辨率。一个基准为5.10V的8位ADC,它的分辨率就是 0.02V,用它去测量一个电压信号,得到的结果是 100,就表示它测到的电压值是 100*0.02V=2V,假定它的 INL 是 1LSB,就表示这个电压信号真实的准确值是在1.98V~2.02V 之间的,按理想情况对应得到的数字应该是 99~101,测量误差是一个最低有效位,即 1LSB。

DNL 表示的是 ADC 相邻两个刻度之间最大的差异,单位也是 LSB。一把分辨率是 1 毫米的尺子,相邻的刻度之间并不都刚好是 1 毫米,而总是会存在或大或小的误差。同理,一个 ADC 的两个刻度线之间也不总是准确的等于分辨率,也是存在误差,这个误差就是 DNL。

一个基准为 5.10V 的 8 位 ADC,假定它的 DNL 是 0.5LSB,那么当它的转换结果从 100 增加到 101 时,理想情况下实际电压应该增加 0.02V,但 DNL 为 0.5LSB 的情况下实际电压的增加值是在 0.01~0.03V 之间。值得一提的是 DNL 并非一定小于 1LSB,很多时候它会等于或大于 1LSB,这就相当于是一定程度上的刻度紊乱,当实际电压保持不变时,ADC 得出的结果可能会在几个数值之间跳动,很大程度上就是由于这个原因(但并不完全是,因为还有无时无处不在的干扰的影响)。

5、转换速率 

转换速率,是指 ADC 每秒能进行采样转换的最大次数,单位是 sps (或 s/s、sa/s,即 samplesper second),它与 ADC 完成一次从模拟到数字的转换所需要的时间互为倒数关系。ADC 的种类比较多,其中积分型的 ADC 转换时间是毫秒级的,属于低速 ADC;逐次逼近型 ADC转换时间是微秒级的,属于中速 ADC;并行/串行的 ADC 的转换时间可达到纳秒级,属于高速 ADC。

PCF8591的硬件接口

PCF8591是一个单电源低功耗的 8 位 CMOS 数据采集器件,具有 4 路模拟输入,1 路模拟输出和一个串行 I 2 C 总线接口用来与单片机通信。与前面讲过的 24C02 类似,3 个地址引脚 A0、A1、A2 用于编程硬件地址,允许最多 8 个器件连接到I2C 总线而不需要额外的片选电路。器件的地址、控制以及数据都是通过 I2C 总线来传输。

其中引脚 1、2、3、4 是 4 路模拟输入,引脚 5、6、7 是 I 2 C 总线的硬件地址,8 脚是数字地 GND,9 脚和 10 脚是 I 2 C 总线的 SDA 和 SCL。12 脚是时钟选择引脚,如果接高电平表示用外部时钟输入,接低电平则用内部时钟,我们这套电路用的是内部时钟,因此 12 脚直接接 GND,同时 11 脚悬空。13 脚是模拟地 AGND,在实际开发中,如果有比较复杂的模拟电路,那么 AGND 部分在布局布线上要特别处理,而且和 GND 的连接也有多种方式,这个板子上没有复杂的模拟部分电路,所以我们把 AGND 和 GND 接到一起。14 脚是基准源,15 脚是 DAC 的模拟输出,16 脚是供电电源 VCC。

PCF8591 的 ADC 是逐次逼近型的,转换速率算是中速,但是它的速度瓶颈在 I 2 C 通信上。由于 I 2 C 通信速度较慢,所以最终的 PCF8591 的转换速度,直接取决于 I 2 C 的通信速率。由于 I 2 C 速度的限制,所以 PCF8591 得算是个低速的 AD 和 DA 的集成,主要应用在一些转换速度要求不高,希望成本较低的场合,比如电池供电设备,测量电池的供电电压,电压低于某一个值,报警提示更换电池等类似场合。

Vref 基准电压的提供有两种方法。一是采用简易的原则,直接接到 VCC 上去,但是由于 VCC 会受到整个线路的用电功耗情况影响,一来不是准确的 5V,实测大多在 4.8V 左右,二来随着整个系统负载情况的变化会产生波动,所以只能用在简易的、对精度要求不高的场合。方法二是使用专门的基准电压器件,比如 TL431,它可以提供一个精度很高的 2.5V 的电压基准。

对于AD 来说,只要输入信号超过 Vref 基准源,它得到的始终都是最大值,即 255,也就是说它实际上无法测量超过其 Vref 的电压信号的。需要注意的是,所有输入信号的电压值都不能超过 VCC,即+5V,否则可能会损坏 ADC 芯片。

在CT107D开发板上,Vref是直接接到了VCC上。

PCF8591编程

PCF8591 的通信接口是 I 2 C,那么编程肯定是要符合这个协议的。单片机对 PCF8591 进行初始化,一共发送三个字节即可。

第一个字节,和E2PROM类似,是器件地址字节,其中7位代表地址,一位代表读写方向。地址高四位固定是0b1001,低三位是A2、A1、A0,这三位在电路上都接到了GND,因此也就是0b00,如下图所示:

第二个字节,将被存储在控制寄存器里,用于控制PCF8591的功能。其中第3位和第7位是固定的0,另外66位各自有各自的作用,如下图所示:

控制字节的第 6 位是 DA 使能位,这一位置 1 表示 DA 输出引脚使能,会产生模拟电压输出功能。

第4位和第5位可以实现把PCF8591的4路模拟输入配置成单端模式和差分模式,是配置 AD输入方式的控制位。单端模式和差分模式的区别。 如下图所示:

控制字节的第 2 位是自动增量控制位,自动增量的意思就是,比如一共有 4 个通道,当全部使用的时候,读完了通道 0,下一次再读,会自动进入通道 1 进行读取,不需要我们指定下一个通道。 

注意:由于 A/D 每次读到的数据,都是上一次的转换结果,所以在使用自动增量功能的时候,要特别注意,当前读到的是上一个通道的值。 为了保持程序的通用性,代码没有使用这个功能,而是直接做了一个通用的程序。

控制字节的第 0 位和第 1 位就是通道选择位了,00、01、10、11 代表了从 0 到 3 的一共4 个通道选择。

第三个字节,D/A数据寄存器,表示D/A模拟输出的电压值。如果仅仅使用A/D功能,可不发送第三个字节!

ADC程序

/*******************************************************************************
* 函数名	:Read_AIN
* 输入值	:unsigned char chn
* 返回值	:unsigend char dat
* 作者		:小默haa
* 时间		:2019年2月25日
* 功能描述:读取PCF8591AIN采集数据
* 备注		:chn为PCF8591的通道
*******************************************************************************/
unsigned char Read_AIN(unsigned char chn)
{
	unsigned char dat;
	EA = 0;
	IIC_Start();				//IIC总线起始信号							
	IIC_SendByte(0x90); 		//PCF8591的写设备地址		
	IIC_WaitAck();  			//等待从机应答		
	IIC_SendByte(chn); 			//写入PCF8591的控制字节		
	IIC_WaitAck();  			//等待从机应答						
	IIC_Stop(); 				//IIC总线停止信号					
	
	IIC_Start();				//IIC总线起始信号									
	IIC_SendByte(0x91); 		//PCF8591的读设备地址		
	IIC_WaitAck(); 				//等待从机应答		
	dat = IIC_RecByte();		//读取PCF8591通道3的数据 			
	IIC_Ack(0); 				//产生非应答信号				
	IIC_Stop(); 				//IIC总线停止信号		
	EA = 1;
	return dat;	
}

/*******************************************************************************
* 函数名	:ValueToString
* 输入值	:unsigned char *str, unsigned char val
* 返回值	:none
* 作者		:小默haa
* 时间		:2019年2月25日
* 功能描述:将PCF8591AIN采集的数据转换为字符型
* 备注		:注意这里把电压扩大了10倍
*******************************************************************************/
void ValueToString(unsigned char *str, unsigned char val)
{
    val = (val * 50) / 255;  //电压5V,256个刻度分成255份!
    str[0] = val / 10;
    str[1] = ‘.’;
    str[2] = val % 10;
    str[3] = ‘V’;
}

注意:在程序里我设置开始读ADC值时关闭中断,避免ADC测量程序被中断打断,影响精准度。 

D/A输出

/*******************************************************************************
* 函数名	:SetDACOut
* 输入值	:unsigned char val
* 返回值	:none
* 作者		:小默haa
* 时间		:2019年2月25日
* 功能描述:输入电压值,设置DAC输出值
* 备注		:val为设定的电压值
*******************************************************************************/
void SetDACOut(unsigned char val)
{
    IIC_Start();
    if(IIC_WaitAck() == 1)
    {
			IIC_Stop();
      return;
    }
    IIC_SendByte(0x40);
    IIC_SendByte(val);
    IIC_Stop();
}

/*******************************************************************************
* 函数名	:KeyAction
* 输入值	:unsigned char keycode
* 返回值	:none
* 作者		:小默haa
* 时间		:2019年2月25日
* 功能描述:通过按键控制输出电压值
* 备注		:
*******************************************************************************/
void KeyAction(unsigned char keycode)
{
    static unsigned char volt = 0;

    if(keycode == 0x26)			//向上键,增加0.1V电压值
    {
        if(volt < 50)
        {
            volt++;
            SetDACOut((volt * 255) / 50);		//转换为AD输出值
        }
    }   
    else if(keycode == 0x28)		//向下键,减小0.1V电压值
    {
        if(volt > 0)
        {
            volt--;
            SetDACOut((volt * 255) / 50);		//转换为AD输出值
        }
    }
}

 

 

 

 

 

 

 

2010-04-01 16:51:00 yu_mi__ 阅读数 3220
  • AD和DA转换-第1季第16部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第16个课程,主要讲解AD转换和DA转换。目标是理解模拟量和数字量的概念,并且学会使用AD转换来采集现实世界的模拟量。

    2564 人正在学习 去看看 朱有鹏

怎样用单片机和DA转换产生一个正波.啊...?需要用C语言编程么..?只知道用汇编,,还有,,貌似听说C语言与汇编可以混编,,怎么编啊..???????

DA转换(IIC总线)

阅读数 407

没有更多推荐了,返回首页