Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (36.17 KB, 下載次數: 67)
下載附件
2020-6-29 22:11 上傳
無標題.png (282.26 KB, 下載次數: 75)
下載附件
2020-6-29 19:14 上傳
51hei.png (10.26 KB, 下載次數: 57)
下載附件
2020-6-29 22:12 上傳
單片機源程序如下:
- #define _ADC_C
- #include "Incfile.h"
- /***********************************************************************************
- 函數名稱: u16 GetIVRefCode(void)
- 功能描述:獲取IVREF的精確電壓值
- 輸入參數:
- 返回參數:
- *************************************************************************************/
- void GetIVRefCode(void)
- {
- DWordTypeDef dwTemp;
- WordTypeDef wIVRAdjAdc;
-
- wIVRAdjAdc.W=GetIVRef();
- // 檢測IVRef校準值是否在范圍內(1.3~1.5)
- if((wIVRAdjAdc.W <1614)||(wIVRAdjAdc.W>=1862))
- { // 存儲的IVRef值右問題,設為默認值 1.4V@3.3V
- wIVRAdjAdc.W=1738L;
- }
- else
- {
- }
- // 計算IVR的電壓值
- dwTemp.DW=wIVRAdjAdc.W;
- wIVRefValue.W=dwTemp.DW*3300L/4096L;
- }
- /***********************************************************************************
- 函數名稱: u16 GetNtcAvgCode(void)
- 功能描述:環境溫度采樣值獲取(采樣16次取平均)
- 輸入參數:
- 返回參數:0:Error
- *************************************************************************************/
- u32 GetNtcAvgCode(void)
- {
- u8 i;
- DWordTypeDef dwTemp0,dwTemp1;
- dwTemp0.DW=0;
- dwTemp1.DW=0;
- for(i=0;i<16;i++)
- {
- ADC_SetChannel_AIN6(); // 設置ADC通道為AIN6 T0
- DelayXus(100);
- dwTemp0.DW=dwTemp0.DW+GetAdcValue();
- ADC_SetChannel_AIN7(); // 設置ADC通道為AIN7 T1
- DelayXus(100);
- dwTemp1.DW=dwTemp1.DW+GetAdcValue();
- }
- dwTemp0.DW=dwTemp0.DW>>4;
- dwTemp1.DW=dwTemp1.DW>>4;
- if(dwTemp1.DW<dwTemp0.DW) return 0;
- dwTemp1.DW=(dwTemp1.DW-dwTemp0.DW)*NTC_REF_VALUE;
- dwTemp1.DW=dwTemp1.DW/dwTemp0.DW;
- return dwTemp1.DW;
- }
- /***********************************************************************************
- 函數名稱: u16 GetVirAvgCode(void)
- 功能描述:紅外溫度采樣值獲取(采樣16次取平均)
- 輸入參數:
- 返回參數:
- *************************************************************************************/
- u32 GetVirAvgCode(void)
- {
- u8 i;
- DWordTypeDef dwTemp;
- DWordTypeDef dwVinAdc,dwIVRAdc;
- dwVinAdc.DW=0;
- dwIVRAdc.DW=0;
- for(i=0;i<16;i++)
- {
- ADC_SetChannel_AIN5(); // 設置ADC通道為AIN5 Vir
- DelayXus(100);
- dwVinAdc.DW=dwVinAdc.DW+GetAdcValue();
- ADC_SetChannel_IVR14(); // 設置ADC通道為IVR14
- DelayXus(100);
- dwIVRAdc.DW=dwIVRAdc.DW+GetAdcValue();
- }
- dwVinAdc.DW=dwVinAdc.DW>>4;
- dwIVRAdc.DW=dwIVRAdc.DW>>4;
- // 計算Vir的輸入電壓值
- dwTemp.DW=wIVRefValue.W;
- dwTemp.DW=dwTemp.DW*dwVinAdc.DW*1000L/dwIVRAdc.DW;
- return dwTemp.DW;
- }
復制代碼
所有資料51hei提供下載:
InfraredThermometer_6D17_V01_20200406.rar
(2.6 MB, 下載次數: 157)
2020-6-29 19:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|