Ⅰ 如何使用STM8S单片机的多通道AD转换
#include"adc.h"
u16TempADC;
voidADC_Config(void)
{
ADC_CR1|=0x01;//开始启动初始化必须启动一次
//第一次写1,ADC从低功耗唤醒,第二次写1,启动ADC转换
//ADC_CR1|=0x20;//使能转换结束中断,本例中采用的查询方式。
}
uint16_tGet_ADCCH_Value(ADC1_Channel_TypeDefADC_Channel)
{
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,ADC_Channel,ADC1_PRESSEL_FCPU_D2,
ADC1_EXTTRIG_TIM,DISABLE,ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_ALL,DISABLE);
//你也可以用操作寄存器的方式代码如下,但未验证。
#if0
ADC_CR2=0x00;//A/D结果数据左对齐
CLK_PCKENR2|=0x08;//使能fMASTER与ADC的连接
ADC_CR1=0x00;//ADC时钟=主时钟/2=8MHz,单次转换模式
ADC_CSR=0x01;//选择通道2
ADC_TDRL=0x01;//禁止施密特触发功能
ADC_TDRH=0x01;
ADC_CR1=0x03;//2分频,连续转换,启动ADC
ADC_CR2=0x31;//外部事件保留,数据右对齐,禁止扫描模式,
ADC_CSR|=0x01;//选择通道1
#endif
ADC1_ConversionConfig(ADC1_CONVERSIONMODE_CONTINUOUS,ADC_Channel,ADC1_ALIGN_RIGHT);
ADC_CR1|=0x01;//开始启动转换
袭拦while(!(ADC_CSR答饥&0x80));//等待转换结束
returnADC1_GetConversionValue();//返回ADC结果
}
//这个初始化代码很重要,不能省,每清禅返次切换通道都要初始化一次!
在main函数中直接调用即可:
TempADC=Get_ADCCH_Value(ADC1_CHANNEL_1);//获取AD转化值
WetADC=Get_ADCCH_Value(ADC1_CHANNEL_3;//获取AD转化值
Ⅱ 单片机ad数模转换口怎么用
它面积怎么转发这个,直接把它剪辑转换成一个能够最终效果所有任务,这个属相我们还分朦胧显得实用的。
Ⅲ 51单片机有外部数据存储器的时候怎么开始AD转换
movx @dptr,A,开启AD转换会与外部数据存储器发生冲突做兄,那是因为DPTR中的地址没有指向AD转换器的端口地址,或扰行者AD端口地址与外部数据存储器的地址重复了。没有具体电路,真正原因不好确缓胡哗定。
单片机可采用端口模式与AD转换器连接比较好,见下图。