单片机里ADC是个怎么个数模转换呢 求解释下 ADC0 ADC1是什么子个情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机里ADC是个怎么个数模转换呢 求解释下 ADC0 ADC1是什么子个情况相关的知识,希望对你有一定的参考价值。

参考技术A 嘿嘿 俺来帮你解答
1 单片机里ADC是数模转换器:
功能就是将模拟信号(电压0~5V)转换成数字信号 可以转换成8位数字量(即00H~FFH)
也可以转换成10位、12位、16位的数字量。
转换后的数字量与模拟量在数值上成正比。
这样就可以把模拟信号的大小采集到计算机中了,经过处理后,可以送显示器显示采集的电压大小。
2 你使用的单片机内部有ADC0 和ADC1:
说明该单片机内部有2个数模转换器。
呵呵 对俺解释的 如果满意 就选满意回答喽本回答被提问者采纳

AD-DA转换(PCF8591)


AD转换目录


一、AD转换(PCF8591)


思路:(6+6,两个地址0x90写,0x91读)

①初始化函数

(1)启动IIC函数
(2)发送地址激活PCF8591:地址为0x90(A2A1A0已经接地了,最后一位为0表示写)
(3)等待应答函数
(4)发送通道函数(前面6个都是0,最后两位选择通道->0x01光敏电阻;0x03滑动变阻器)
(5)再等待应答
(6)关闭IIC函数

②读取ADC值的函数

(1)启动IIC函数
(2)发送地址激活PCF8591:地址为0x91(A2A1A0已经接地了,最后一位为1表示读)
(3)等待应答
(4)IIC读取函数
(5)等待应答
(6)关闭IIC

unsigned char AD_Read(unsigned char add)

    unsigned char temp;
	
    IIC_Start();
    IIC_SendByte(0x90);
    IIC_WaitAck();
    IIC_SendByte(add);
    IIC_WaitAck();
    IIC_Stop();
	
    IIC_Start();
    IIC_SendByte(0x91);
    IIC_WaitAck();
    temp = IIC_RecByte();
    IIC_WaitAck();
    IIC_Stop();
	
    return temp;

*同时用滑动变阻器和光敏电阻时,会出现位置窜位 直接两个数据对调就可以了,解决方法(① 读两次 ② 反过来)

二、DA转换(PCF8591)

void AD_Write(unsigned char add,unsigned char dat)

    IIC_Start();
    IIC_SendByte(0x90);
    IIC_WaitAck();
    IIC_SendByte(add);
    IIC_WaitAck();
    IIC_SendByte(dat);
    IIC_WaitAck();
    IIC_Stop();

调用说明:

    AD_Write(0x40,0xFF);//0x40-模拟输出,0xFF-5V电压
    Delay5ms();

PCF8591的AD采集和DA输出功能不能同时使用

三、STC15系列单片机用户手册.pdf—第10章

———10.6.2 AD转换的测试程序(ADC查询方式)

#define宏名注释
#defineADC_POWER0x80//ADC电源控制位
#defineADC_FLAG0x10//ADC完成标志
#defineADC_START0x08//ADC起始控制位
#defineADC_SPEEDLL0x00//540个时钟
BYTE GetADCResult(BYTE ch) /*----------------------------读取ADC结果----------------------------*/

    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();	//等待4个NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));	//等待ADC转换完成
    ADC_CONTR &= ~ADC_FLAG;	//Close ADC
    return ADC_RES;	//返回ADC结果

void InitADC()/*----------------------------初始化ADC----------------------------*/

    P1ASF = 0xff;	//设置P1口为AD口
    ADC_RES = 0;	//清除结果寄存器ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay(2);	//ADC上电并延时


//添加头文件#include "intrins.h"
//(把BYTE改成uchar)
//Delay(2);用STC-ISP软件改成 Delay2ms();
调用说明:
ad = GetADCResult(1);   //ch可取0、1、2、3、4、5、6、7(分别代表P1对应引脚)

以上是关于单片机里ADC是个怎么个数模转换呢 求解释下 ADC0 ADC1是什么子个情况的主要内容,如果未能解决你的问题,请参考以下文章

如何使用STM8S单片机的多通道AD转换

温故《单片机基础》之——AD转换

单片机adc是啥意思 单片机adc的意思介绍

12c5a60s2单片机ADC采样程序详解(每一句话都是啥意思)

单片机 热敏电阻怎么检测他的温度的

请问一下,我用PIC单片机的AD转换来测直流电压(0~5V),然后用数码管来显示(三位)