单片机声音ad转换_stm32单片机的ad单次转换和扫描转换时什么意思呢 - CSDN
  • 一、 转载于:https://www.cnblogs.com/wangsure/p/10734720.html

    一、

    转载于:https://www.cnblogs.com/wangsure/p/10734720.html

    展开全文
  • 当计算机用于数据采集和过程控制时,采集的对象往往是连续变化的物理量(模拟信号量)如温度、压力、摄像头采集图像、光照度等,但计算机处理的是离散的数字量,因此需要对连续变化的物理量进行A/D转换为不连续的...

    模拟量
    自然界连续变化的物理量。
    1、从时间上来说,它是随时间连续变化的
    2、从数值上来说,它的数值也是连续变化的。
    数字量
    计算机中处理的是不连续变化的量,离散性的数字量。

    当计算机用于数据采集和过程控制时,采集的对象往往是连续变化的物理量(模拟信号量)如温度、压力、摄像头采集图像、光照度等,但计算机处理的是离散的数字量,因此需要对连续变化的物理量进行A/D转换为不连续的数字量交给计算机处理,保存等。计算机输出的数字量有时需要通过D/A转换模拟量去控制某些执行元件。A/D转换器完成模拟量至数字量的转换,D/A转换器完成数字量至模拟量的转换。

    AD转换器的主要技术指标

    分辨率
    数字量变化一个最小量时模拟信号的变化量(定义为满刻度和2^n的比值,n为AD器件的位数)
    当采用12位的AD时,分辨率为 5V/4096 ≈ 0.00122V
    位数越多分辨率越高
    转换速率
    完成一次从模拟转换到数字的AD转换所需的时间的倒数

    积分型AD 毫秒级 低速AD
    逐次比较型AD 微秒级 中速AD
    全并行/串并行型AD 纳秒级 高速AD

    采样时间
    两次转换的间隔,为了保证转换的正确完成,采样速率必须不大于转换速率
    量化误差
    由于AD的有限分辨率而引起的误差,(有限分辨率AD的阶梯状转换特性曲线与理想AD的转换特性曲线之间的最大偏差)
    通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。
    绝对精度
    在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值。

    AD的单端输入和差分输入

    单端输入
    输入信号均以共同的地线为基准
    适用于输入信号电压较高(高于1V),信号源到模拟输入硬件的导线较短,且所有的输入信号共用一个基准地线
    当单端输入的一线变化时,GND不变,电压差变化较大(抗干扰性差)
    差分输入
    每一个输入信号都有自有的基准地线
    信号受干扰时,差分的两线会同时受到影响,但电压差变化不大(抗干扰性强)

    有源蜂鸣器

    在这里插入图片描述
    FMQ端给高电平,T4那里无法通到地,蜂鸣器不会响起。
    FMQ端给低电平,+5可以直接通到地,蜂鸣器会响起。

    光敏电阻采集代码示例:

    #include<reg52.h>
    #include<intrins.h>
    
    #define MAIN_Fosc   11059200UL //宏定义主时钟HZ
    #define PCF8591_ADDR  0x90      //PCF8591地址
    #define DACOUT_EN    0x40      //DAC输出使能
    
    typedef unsigned char uchar;
    typedef unsigned char INT8U;
    
    typedef unsigned int uint;
    typedef unsigned int IINT16U;
    
    uchar AD_Value;//储存AD转换回的数字量
    
    /*硬件接口*/ 
    sbit SDA = P2^0; //I2C串行数据
    sbit SCL = P2^1; //I2C串行时钟 
    sbit DU = P2^6;  //数码管段选
    sbit WE = P2^7;  //数码管位选
    sbit LED1 = P1^0; //读取AD的值是否成功(亮成功,灭失败)
    sbit LED2 = P1^1; //DAC是否成功输出(亮成功,灭失败)
    sbit BEEP = P2^3;  //蜂鸣器引脚定义
    
    /*公阴级数码管段选码*/
    uchar code table[] ={
    //0   1    2    3    4    5    6     7   8
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
    //9   A     B    C    D    E    F   -     .   关显示
    0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x80,0x00
    };
    
    /*数码管位选码*/     //第1    2    3    4    5    6    7    8位
    uchar code T_COM[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    
    /*毫秒延时函数*/
    void Delay_Ms(uint ms)
    {
    	uint i;
    	do{
    		i = MAIN_Fosc / 9600;
    		while(-- i);    //96T  per  loop
    	}
    	while( -- ms);
    }
    
    /*5毫秒延时函数(自适应时钟11.0592M,12M,22.1184M)*/
    void Delay5us()
    {
    	#if MAIN_Fosc == 11059200
    		_nop_();
    	#elif MAIN_Fosc == 12000000
    		_nop_();
    	#elif MAIN_Fosc == 22118400
    		_nop_();_nop_();_nop_();
    	#endif
    }
    
    /*共阴数码管显示一个字节的数*/
    void Display(uchar Value)
    {
    	DU = 1;
    	P0 = table[Value / 100]; //数码管显示百位 
    	DU = 0;
    
    	P0 = 0xff;      //清除断码
    
    	WE = 1;
    	P0 = T_COM[0];   //第一位数码管
    	WE = 0Delay_Ms(5);
    	DU = 1;
    	P0 = table[Value%100/10];   //显示十位
    	DU = 0;
    
    	P0 = 0xff;
    
    	WE = 1;
    	P0 = T_COM[1];  //第二位数码管
    	WE = 0Delay_Ms(5);
    
    	DU = 1;
    	P0 = table[Value%10]; //显示个位
    	DU = 0;
    	P0 = 0xff;
    	
    	WE = 1;
    	P0 = T_COM[2]; //第三位数码管
    	WE = 0;
    	Delay_Ms(5);
    }
    
    /*I2C初始化函数*/
    void I2C_init()
    {
    	SDA = 1;
    	_nop_();
    	SCL = 1;
    	_nop_();
    }
    
    /*I2C起始信号*/
    void I2C_Start()
    {
    	SCL = 1;
    	_nop_();
    	SDA = 1;
    	Delay5us();
    	SDA = 0;
    	Delay5us();
    }
    
    /*I2C终止信号*/
    void I2C_Stop()
    {
    	SDA = 0;
    	_nop_();
    	SCL = 1;
    	Delay5us();
    	SDA = 1;
    	Delay5us();
    }
    
    /*I2C主机发送应答*/ 
    void Master_ACK(bit i)
    {
    	SCL = 0; //拉低时钟总线允许SDA数据总线上的数据变化
    	_nop_();
    	if(i)   //如果i = 1 那么拉低数据总线 表示主机应答
    	{
    		SDA = 0;
    	}
    	else
    	{
    		SDA = 1;//发送非应答	  
    	}
    	_nop_();    //让总线稳定
    	SCL = 1;   //拉高时钟总线  让从机从SDA线上读走  主机应答信号
    	_nop_();   
    	SCL = 0;  //拉低时钟总线,占用总线继续通信
    	_nop_();   
    	SDA = 1;//释放SDA数据总线
    	_nop_();   
    }
    
    /*I2C检测从机应答      返回为0不应答,1应答*/
    bit Test_ACK()
    {
    	SCL = 1;//时钟总线为高电平期间可以读取从机应答信号
    	Delay5us();
    	if(SDA)
    	{
    		SCL = 0;
    		I2C_Stop();
    		return 0;
    	}
    	else
    	{
    		SCL = 0;
    		return 1;
    	}
    }
    
    /*I2C发送一个字节  byte要发送的字节*/
    void I2C_send_byte(uchar byte)
    {
    	uchar i;
    	for(i = 0; i < 8; i ++)
    	{
    		SCL = 0;
    		_nop_();
    		if(byte & 0x80)
    		{
    			SDA = 1;
    			_nop_();
    		}
    		else
    		{
    			SDA = 0;
    			_nop_();	
    		}
    		SCL = 1;
    		_nop_();
    		byte << = 1;
    	}
    	SCL = 0;
    	_nop_();
    	SDA = 1_nop_();
    }
    
    /*I2C读取一个字节  返回读取的字节*/
    uchar I2C_read_byte()
    {
    	uchar i,dat;
    	SCL = 0;
    	_nop_();
    	SDA = 0;
    	_nop_();
    	for(i = 0; i < 8; i++)
    	{
    		SCL = 1;
    		_nop_();
    		dat << = 1;
    		if(SDA)
    		{
    			dat |= 0x01;
    		}
    		_nop_();
    		SCL = 0;
    		_nop_();
    	}
    	return  dat;
    }
    
    /*DAC输出*/
    bit DAC_OUT(uchar DAT)
    {
    	I2C_Start();
    	I2C_send_byte(PCF8591_ADDR + 0);
    	if(!Test_ACK())
    	{
    		return 0;
    	}
    	I2C_send_byte(DACOUT_EN);//DA输出使能
    	if(!Test_ACK())
    	{
    		return 0;
    	}
    	I2C_send_byte(DAT);
    	if(!Test_ACK())
    	{
    		return 0;
    	}
    	I2C_Stop();
    	return 1;
    }
    
    /*读AD数据*/
    bit ADC_Read(uchar CON)
    {
    	I2C_Start();
    	I2C_send_byte(PCF8591_ADDR + 0);
    	if(!Test_ACK())
    	{
    		return 0;
    	}
    	I2C_send_byte(CON);
    	Master_ACK(0);
    	I2C_Start();
    	I2C_send_byte(PCF8591_ADDR + 1);
    	if(!Test_ACK())
    	{
    		return 0;
    	}
    	AD_Value = I2C_read_byte();
    	Master_ACK();
    	I2C_Stop();
    	return 1;
    }
    
    void mian()
    {
    	I2C_init();
    	while(1)
    	{
    		 if(ADC_Read(0x02))//单端输入,读出通道2的值
    		 {
    			LED1 = 0;//点亮
    		}
    		else
    		{
     			LED = 1; //熄灭
    		}
    		 if(DAC_OUT(AD_Value))
    		 {
    		 	LED2 = 0; //点亮	
    		 }
    		 else
    		 {
    		 	LED2 = 1; //熄灭
    		 }
    		 Display(AD_Value);
    		 if(AD_Value > 150)
    		 {
    			BEEP = 0;//给低电平,蜂鸣器响起
    		}
    		else
    		{
    			BEEP = 1;
    		}
    		 Delay_Ms(5);
    	}
    }
    
    展开全文
  • AD转换中【参考电压】的作用

    千次阅读 2019-08-21 11:18:03
    AD转换  AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。  A/D转换器是用来通过一定的电路将...

    AD转换

      AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。

      A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号

    原理

      A/D转换后,输出的数字信号可以有8位、10位、12位、14位和16位等。A/D转换器的工作原理主要介绍以下三种方法:逐次逼近法双积分法电压频率转换法 A/D转换四步骤:采样、保持、量化、编码。

     AD转换分类

      1)积分型(如TLC7135)

      积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率, 但缺点是由于转换精度依赖于积分时间,因此转换速率极低。初期的单片AD转换器大多采用积分型,现在逐次比较型已逐步成为主流。

      2)逐次比较型(如TLC0831)

      逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出 数字值。其电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(《12位)时价格便宜,但高精度(》12位)时价格很高。

      3)并行比较型/串并行比较型(如TLC5510)

      并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称FLash(快速)型。由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。

      串并行比较型AD结构上介于并行型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为 Half flash(半快速)型。还有分成三步或多步实现AD转换的叫做分级(MulTIstep/Subrangling)型AD,而从转换时序角度 又可称为流水线(Pipelined)型AD,现代的分级型AD中还加入了对多次转换结果作数字运算而修正特性等功能。这类AD速度比逐次比较型高,电路 规模比并行型小。

      4)Σ-Δ(Sigma—delta)调制型(如AD7705)

      Σ-Δ型AD由积分器、比较器、1位DA转换器和数字滤波器等组成。原理上近似于积分型,将输入电压转换成时间(脉冲宽度)信号,用数字滤波器处理后得到数字值。电路的数字部分基本上容易单片化,因此容易做到高分辨率。主要用于音频和测量。

      5)电容阵列逐次比较型

      电容阵列逐次比较型AD在内置DA转换器中采用电容矩阵方式,也可称为电荷再分配型。一般的电阻阵列DA转换器中多数电阻的值必须一致,在单芯片上生成高 精度的电阻并不容易。如果用电容阵列取代电阻阵列,可以用低廉成本制成高精度单片AD转换器。最近的逐次比较型AD转换器大多为电容阵列式的。

      6)压频变换型(如AD650)

      压频变换型(Voltage-Frequency Converter)是通过间接转换方式实现模数转换的。其原理是首先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。从理论上讲这种AD的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度。其优点是分辩率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。

      

    AD转换中【参考电压】的作用

      参考电压是这个样子的,假如你选择的参考电压是5v,你的ad是12位的,那么当你的输入电压是5v的时候你的单片机的显示应该是4096(2^12=4096),如果是0v的输入那单片机里面的值就是0 ,中间点的值成线性关系,就是说假如你的输入是m,那单片机单片机的值就是4096*m/5,这样反过来你知道了单片机的值就可以算出你的输入是多少了!

      【注1】还有在信号地和模拟地之间加上一个电感是为了去干扰,就像在vcc和GND之间用电容一样。

      【注2】ad转换时的参考电压是内部T行网络的标准电压,参考电压可以认为是你的最高上限电压(不超过电源电压),当信号电压较低时,可以降低参考电压来提高分辨率。改变参考电压后,同样二进制表示的电压值就会不一样,最大的二进制(全1)表示的就是你的参考电压,在计算实际电压时,就需要将参考电压考虑进去。参考电压的稳定性对你的系统性能有很大的影响。

     

    展开全文
  • 这是一个关于ad转换器的芯片,通过它可以完成数模之间的转换,对于学习单片机或arm的学者很是有用!A/D转换器是用来通过一定的电路将模拟量转变为数字量。 模拟量可以是电压、电流等电信号,也可以是压力、温度、...
  • 1 、著名的Nyquist采样定理 尽管大家都知道,但还是提一提。大牛奥本海姆的《信号与系统》中是这样描述的: Let x(t) be a band-limited signal with X(jw) = 0 for |w|> wM. Then x(t) is uniquely ...

    1 、著名的Nyquist采样定理

     

    尽管大家都知道,但还是提一提。大牛奥本海姆的《信号与系统》中是这样描述的:

     

    Let x(t) be a band-limited signal with X(jw) = 0 for |w|> wM. Then x(t) is uniquely determined by its samples x(nT),n=1,±1,±2,...,ifws> 2wMwhere ws= 2 pi/T.

     

    Given these samples, we can reconstruct x(t) by generating a periodic impluse train in which successive impluse have amplitudes that are successive sample values. This impluse train is then processed through an ideal lowpass filter with gain T and cutoff frequency greater than wMand less than ws-wM. The resulting output signal will exactly equal x(t).

     

    来捋一捋,几个点:

     

    带宽有限(band-limited) 采样频率大于2倍信号最高频率后可以无失真的恢复出原始信号。

     

    实际中,信号往往是无线带宽的,如何保证带宽有限?所以,我们在模拟信号输入端要加一个低通滤波器,使信号变成带宽有限,再使用2.5~3倍的最高信号频率进行采样。关于此我们下面将模拟数字转换过程将会看到。

     

    虽说是不能小于等于2倍,但选2倍是不是很好呢,理论上,选择的采样频率越高,越能无失真的恢复原信号,但采样频率越高,对后端数字系统的处理速度和存储要求也就越高,因此要选择一个折中的值。

     

    如果后端数字信号处理中的窗口选择过窄,采样率太高,在一个窗口内很难容纳甚至信号的一个周期,这从某方面使得信号无法辨识。

     

    比如,数字信号处 理的窗口大小为1024个点,采样率为50KHz,则窗口最多容纳1024*(1/50KHz)=20.48ms的信号长度,若信号的一个周期为 30ms>20.48ms,这就使得数字信号的处理窗口没法容纳一个周期信号,解决的办法就是在满足要求的前提下使用减小采样率或增加窗口长度。

     

    2、 模数转换

     

    记得有一次参加中科院计算所的实习笔试,里面就有这么一道题:模拟信号转换到数字信号要经历哪两个步骤?还好,早有准备,立刻填上了采样和量化。我们下面就来详细分析下这两个过程,但在分析之前,我们先给出一张整个过程的流图,您可以先想想为什么需要各模块。

     

      

    程控放大器

     

    我们实际中的模拟信号都是通过传感器采集进来的,做过单片机的人应该熟知DS18B20温度传感器,不好意思,那是数字传感器,也就是说人家做传感器的时候把AD转换也放到传感器里面了。

     

    但这并不是普遍的情况,因为温度量是模拟信号中最容易测量的量了,而大多数的传感器并没有集成AD转换过 程,如大多数的加速度传感器、震动传感器、声音传感器、电子罗盘,甚至有的GPS(别懵了,GPS也算是一种传感器哦)等,都是模拟输出的。

     

    而且由于物理 制作的原因,传感器返回的电信号非常微小,一般在几mV(如果是电流,也一般在几mA),这么微弱的信号,如果经过导线或电缆传输很容易就湮灭在噪声中。因此,我们常常见到模拟传感器的输出线都会使用套上一层塑胶的线,叫屏蔽线(如图)。

     

     

    屏蔽线只能保证在信号传输到系统之前受到的干扰最小,但信号仍要经过处理才能为数字系统使用。在模拟信号(尤其是高频信号)的输入端首先要使用 低噪声放大器对信号进行放大,这个放大器有特殊的要求,一定是低噪声,我们已经知道,模拟信号信号已经非常微弱。

     

    如果放大器还存在一定的噪声,在噪声叠加 之后放大出来的信号可能已经不再是原信号了。既然说到低噪声,那么低噪声是如何衡量的呢?这可以通过放大器噪声系数(NF)来定。

     

     

    噪声系数定义为放大器输入信号与输出信号的信噪比。其物理含义是:信号通过放大器之后,由于放大器产生噪声,使信噪比变坏;信噪比下降的倍数就是噪声系数。噪声系数通常用dB表示。

     

     

    实际中除了考虑低噪声系数外,还要考虑放大器的带宽和频率范围以及最重要的放大增益。由于输入信号的强度可能时变,采用程序可控(程控)的放大增益保证信号能达到满度而又不会出现饱和(实际中要做到这一点还是很难的)。

     

    低通滤波器

     

    在Nyquist采样定理中已经提过,要满足采样定理必须要求信号带宽有限,使用大于2倍的最高信号频率采样才能保证信号的不混叠。低通滤波器的一个考虑就是使信号带宽有限,以便于后期的信号采样,这个低通滤波器是硬件实现的。

     

    另一方面,实际情况中我们也只会对某个频频段的信号感兴趣,低通滤波器的另一个考虑就是滤波得到感兴趣的信号。比如,测量汽车声音信号,其频率大部分在5KHz以下,我们则可以设置低通滤波器的截止频率在7KHz左右。

     

    程控的实现方法就是使用模拟通道选择芯片(如74VHC4051等)。

     

    NOTES:

     

    在采样之前的所有电路实现方案叫信号调理电路。这样,我们就可以根据这个词到处Google/Baidu文献了。

     

     

    采样及采样保持

     

    采样貌似有一套完整的理论,就是《数字信号处理》书中的一堆公式推导,我们这里当然不会那么去说。其实采样最核心的问题就是采样率选择的问题。

     

    根据实际,选择频率分辨率df 选择做DFT得点数N,因为DFT时域点数和变换后频域点数相同,则采样率可确定,Fs=N*df Fs是否满足Nyquist的采样定理?是,OK,否则增加点数N,重新计算2。

     

    我们希望df越小越好,但实际上,df越小,N越大,计算量和存储量随之增大。一般取N为为2的整数次幂,不足则在尾端补0。

     

    这里给出我的一个选择Fs的方案流程图,仅供参考。

     

     

    采样后还有一个重要的操作是采样保持(S/H)操作,采样脉冲采样后无法立刻量化,这个过程要等待很短的一个时间,硬件上一般0.几个us,等待量化器的量化。

     

    注意,在量化之前,所有的信号都是模拟信号,模拟信号就有很多干扰的问题需要考虑,这里只是从总体上给出我对整个过程的理解。更多细化的方案还需要根据实际信号进行研究。

     

    量化

     

     

    我们可以先直观的看一下量化的过程:

     

     

    量化有个关键的参数,叫量化位数,在所有的AD转换芯片(如AD7606)上都能看到这个关键的参数,常见的有8bit,10bit,12bits,16bit和24bit。

     

     

    如上图,以AD7606为例,AD7606是16bit的AD芯片,量化位数指用16bit来表示连续信号的幅值。因此,考虑AD的测量范围(AD7606有两种:±5V和±10V),则AD分辨率是

     

    ±5V: (5V-(-5V)) / (2^16) = 152 uV

    ±10V: (10V-(-10V)) / (2^16) = 305 uV

     

    量化位数越高,AD分辨率越高,习惯上,AD分辨率用常用LSB标示。

     

    因此,AD7606中对于某个输入模拟电压值,因为存在正负电压,若以0V为中间电压值,范围为±5V时AD转换电压可计算为

     

     

    AD7606若使用内部参考电压,Vref=2.5V。哦对了,这又出现个参考电压。参考电压与AD量化的实现方式有关,从速度上分串行和并行,串行包括逐次逼近型,并行方式包括并行比较式,如下图(左:串行,右:并行)。AD7606是使用逐次逼近型的方式。

     

     

     

    AD转换芯片另外两个重要参数是转换时间(转换速率)。并行AD的转换速率比串行的要高。但并行比较的方式中电阻的精度对量化有影响。

     

    接着,我们还将介绍一个重要的概念:量化噪声。量化噪声对应量化信噪比。

     

    SNRq= (6.02N + 4.77) dB其中N为量化位数,且不去管这个公式是怎么得到的(详细推导可参考文献[2]),对于

     

    N=12, SNRq≈ 70dB

    N=16, SNRq≈ 94dB

     

    从中可以看出:每增加1bit量化位数,SNRq将提高6.02dB,在设计过程中,如果对方有信噪比的要求,则在ADC选型时就要选择合适位数的ADC芯片。

     

    明显的,并不是量化位数越高越好,量化位数的提高将对成本、转换速度、存储空间与数据吞吐量等众多方面提出更高的要求。同时,我们尽量提高量化噪声的前提是信号的SNR已经比较低了,如果信号的SNR比量化噪声还高,努力提高量化噪声将是舍本求末的做法。

     

     

    内容整理自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

    展开全文
  • 模拟信号采样与AD转换

    万次阅读 2016-05-06 13:10:56
    用自然的语言描述了模拟信号采样过程要注意的问题,结合了工程实践
  • 基于CPLD的高分辨率AD转换电路设计 来源:维库 <br />随着科技的飞速发展、高分辨率的数模混合电路的应用不断深 入,电路设计日趋复杂,精度越来越高,所以高精度AD转换电路的设计就成了仪器仪表及各种...
  • AD和DA转换

    2019-07-07 09:28:01
    AD和DA转换 1.转换类别 ...(1)比较器,所有的AD转换芯片内部都是用比较器来实现的。 (2)和10进制转2进制有点像。 3.积分类型 逐次逼近类型 并行比较类型 sigma类型 ​ 过采样(over sampling),...
  • 单片机数字电压表设计

    万次阅读 多人点赞 2018-07-11 17:22:56
    摘要:本设计中利用STC89C52单片机制作...硬件电路主要包括单片机最小系统、显示模块、按键模块、报警模块和AD转换模块、数据存储模块六个部分。软件采用了模块化的设计方法,主要分为主程序、A/D转换子程序、按键检...
  • 不过使用的是声音传感器,基本原理一样。 1.首先打开ADC1的两个通道IN11,IN12。使能两个通道。 2.ADC1配置:使能扫描转换模式(Scan Conversion Mode),使能连续转换模式(Continuous Conversion Mode),使能DMA连续...
  • 手机的背光亮度自动调节,拿到太阳光下,亮度会增亮,拿到暗的地方光线会减暗,是因为,手机上有一个感光头,采集环境光的亮度,采集到的的是模拟量,经过内部的AD转换器,把模拟量转换成数字量给CPU,CPU通过亮度值...
  • 单片机_IO口知识点介绍

    千次阅读 2019-02-23 22:42:00
    单片机_IO口知识点介绍 IO/GPIO General Purpose Input Output (通用输入/输出)简称为GPIO,GPIO口作为单片机与外界通信控制最主要的手段,开始GPIO的学习也是最重要的部分,这里内部的电路原理就不详细深究了,...
  • 目由增强型STC12LE5A60S2单片机为主控制器,通过单片机内部AD转换,对 音频信号进行采样,把连续信号离散化,然后通过 FFT 快速傅里叶变换运算, 在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,...
  • Proteus仿真—40个单片机初学程序.

    热门讨论 2020-07-29 14:21:23
    单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合...
  • 单片机实时通过ADC0832转换芯片采集GP2Y1010AU粉尘传感器的粉尘的浓度,通过单片机的数据转换处理后在液晶屏上显示空气中的质量,当测量空间中的粉尘浓度大于设置粉尘浓度时,蜂鸣器和发光二极管发出声光报警。...
  • 上节课的AD和DA不属于单片机自身的知识,属于单片机的外围器件,不光单片机,DSPU、FPGA、嵌入式系统,AD和DA都是外围设备。掌握的不是很好也没事,用的时候在搞明白原理,要使用的AD、DA说明搞清楚,每一种AD和DA...
1 2 3 4 5 ... 13
收藏数 252
精华内容 100
关键字:

单片机声音ad转换