Ⅰ 如何使用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轉換器連接比較好,見下圖。