嵌入式作業6.2 ADC 程式設計

一只心耳發表於2024-06-13

在ADC實驗中,結合熱敏電阻,分別透過觸控晶片表面和熱敏電阻,引起A/D值變化,顯示晶片內部溫度和當前溫度。

程式程式碼

//主函式
int main(void)
{
    uint16_t num_AD1;	
    uint16_t num_AD2;
    uint16_t num_AD3;
    uint32_t mMainLoopCount;  //主迴圈次數變數
    
    //關總中斷
    DISABLE_INTERRUPTS;
    
    mMainLoopCount=0;    //主迴圈次數變數

    adc_init(ADC_CHANNEL_1,AD_DIFF);			    //初始化ADC通道1,
    adc_init(ADC_CHANNEL_15,AD_DIFF);			    //初始化ADC通道15
    adc_init(ADC_CHANNEL_TEMPSENSOR,AD_SINGLE);	//初始化ADC通道:內部溫度
    
    ENABLE_INTERRUPTS;
    
    printf("------------------------------------------------------\n"); 
    printf("金葫蘆提示:                                           \n"); 
    printf("(1)目的:ADC單端輸入與差分輸入測試                    \n"); 
    printf("(2)單端:內部溫度感測器,通道號17,無需引腳對應        \n");
    printf("     差分:GEC引腳47、46(通道1、2)                  \n");
    printf("           GEC引腳12、11(通道15、16)                  \n");
    printf("(3)測試方法:單端:手摸晶片表面,A/D值增大,不要摸    \n");
    printf("                    到引腳,靜電可能損壞晶片           \n");
    printf("              差分:將引腳47接地、46接3.3V,觀察通道1情況\n");
    printf("                    將引腳46接地、47接3.3V,觀察通道1情況\n");
    printf("             類似方法,觀察通道15                      \n");
    printf("------------------------------------------------------\n"); 
    
    for(;;)
    {
    	//主迴圈次數變數+1
        mMainLoopCount++;
        //未達到主迴圈次數設定值,繼續迴圈
        //延時1秒
        if (mMainLoopCount<=30000000)  continue;
        //達到主迴圈次數設定值,執行下列語句,進行燈的亮暗處理
        //清除迴圈次數變數
        mMainLoopCount=0;
        
        num_AD1 = adc_ave(ADC_CHANNEL_1,8);
        num_AD2 = adc_ave(ADC_CHANNEL_15,8);
        num_AD3 = adc_ave(ADC_CHANNEL_TEMPSENSOR,8);
        printf("通道1(GEC47、46)的A/D值: %d\r\n",num_AD1);
        printf("通道1(GEC47、46)的溫度值: %f\r\n",Regression_Ext_Temp(num_AD1));
        printf("通道15(GEC12、11)的A/D值:%d\r\n",num_AD2);
        printf("通道15(GEC12、11)的溫度值:%f\r\n",Regression_Ext_Temp(num_AD2));
        printf("內部溫度感測器的A/D值:%d\r\n",num_AD3);
        printf("內部溫度感測器的溫度值:%f\r\n\n",Regression_MCU_Temp(num_AD3));
    }
}

執行效果

使熱敏電阻升溫:

嵌入式作業6.2 ADC 程式設計

使 mcu 升溫:

嵌入式作業6.2 ADC 程式設計

相關文章