久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
賽元微單片機ADC初始化問題
[打印本頁]
作者:
1314love
時間:
2024-8-29 16:17
標題:
賽元微單片機ADC初始化問題
在NTC那里我接了4.7K的電阻,也就是下圖CN3的位置,理應ADC得返回2048左右的ADC值,但是返回出來只有200多,我的單片機芯片SC92F7411,用過他們賽元微里面的例程代碼,返回出來的值也是一樣,請問我應該怎么改,請大伙指點迷津,謝謝!!!!
void ADC_Init(uint Channel);
unsigned int ADC_GetAverageValue(void);
//unsigned int ADCValue = 0x0000;
uint8_t tmpValue;
bit AdcFlag = 0;
float ADC_Voltage; //ADC電壓
float NTC_Temperature; //NTC溫度值
uint32_t xdata ADC_Value; //ADC值
/***********ADC采樣頻率選擇*************/
enum ADCFreq {F32=0,F24,F16,F12,F8,F6,F4,F3};
/*****************************************************
*函數名稱:void ADC_Init(uint Channel,uchar ADCFreq)
*函數功能:ADC初始化
*入口參數:void
*出口參數:void
*****************************************************/
void ADC_Init(uint Channel)
{
ADCCON = 0X80|Channel; //開啟ADC,ADC采樣頻率為3M ,選擇Channel位ADC采樣口
if(Channel<8)
{
ADCCFG0 = 1<<Channel; //設置Channel作為采樣口
}
else
{
ADCCFG1 = 1<<(Channel-8); //設置Channel作為采樣口
}
//ADCCFG2 = F8;
IE |= 0X40; //開啟ADC中斷
}
/*****************************************************
*函數名稱:uint ADC_GetAverageValue(uint Channel,ADC_SamplesNum_TypeDef ADC_SamplesNum)
*函數功能:ADC采樣取平均值
*入口參數:
ADC_SamplesNum_TypeDef ADC_SamplesNum:采樣次數
*出口參數:
uint:多次采樣平均值
*****************************************************/
uint32_t ADC_GetAverageValue(void)
{
ADCCON |= 0X40; //開始一次ADC轉換
while(!AdcFlag); //等待ADC轉換完成
AdcFlag = 0;
tmpValue=(ADCVH<<4)+(ADCVL>>4); //獲取單次轉換值
return tmpValue; //返回平均值
}
void ADC_Interrupt(void) interrupt 6
{
ADCCON&=~(0X20); //清中斷標志位
AdcFlag = 1;
}
//NTC電阻值
uint32_t code ntc_r[100]=
{
//180°~ 189°
1548,1514,1480,1447,1414,1383,1353,1323,1294,1266,
//190°~199°
1239,1212,1186,1160,1136,1112,1088,1065,1043,1021,
//200°~209°
1000,978,957,937,917,897,878,860,841,824,
//210~219°
807,790,773,758,742,727,712,698,683,670,
//220°~229°
656,643,630,618,606,594,582,571,560,549,
};
// 定義常量
#define R_FIXED 4700.0 // 固定電阻值4.7kΩ
#define B_CONST 4537.0 // NTC的B常數
#define T0 473.15 // 200℃轉換為開爾文
#define R0 1000.0 // NTC在200℃時的電阻值1kΩ
/*
函數功能:計算溫度的值
參數:無
返回值:無
備注:無
*/
float calculate_temperature(float voltage)
{
float R_ntc;
float V_supply = 5.0; // 電源電壓5.0V
float tmp1 = 0.0;
float tmp2 = 0.0;
// 計算NTC電阻值
R_ntc = R_FIXED * (V_supply / voltage - 1); //voltage是ADC值換算過來的電壓
// 計算溫度(開爾文)
tmp1 = R_ntc/R0;
tmp2 = log(tmp1);
tmp1 = tmp2/B_CONST;
tmp2 = 1/T0;
tmp1 = (tmp1+tmp2);
tmp2 = 1.0/tmp1;
if(tmp2 <= 274)tmp2 = 274;
// 轉換為攝氏度
tmp2 -= 273.15;
//tmp1 = tmp2+0.05; //溫度補償
//返回溫度
return tmp2;
}
捕獲.PNG
(65.28 KB, 下載次數: 11)
下載附件
2024-8-29 16:16 上傳
作者:
飛云居士
時間:
2024-9-2 14:13
試試這段程序,如果還是一樣,可能是硬件問題
#include "sc92f7411.h"
// 假設ADC模塊的基地址為0x50000000
#define ADC_BASE 0x50000000
// ADC控制寄存器定義
#define ADC_CR1 *(volatile unsigned int *)(ADC_BASE)
#define ADC_CR2 *(volatile unsigned int *)(ADC_BASE + 4)
#define ADC_DR *(volatile unsigned short *)(ADC_BASE + 8)
// ADC時鐘使能(請根據實際情況修改)
void ADC_ClockInit() {
// ...
}
// ADC初始化
void ADC_Init() {
ADC_ClockInit();
// 配置ADC控制寄存器
ADC_CR1 = 0x00; // 清除控制寄存器
ADC_CR2 = 0x00; // 清除控制寄存器
// 設置采樣時間、通道等(根據數據手冊配置)
ADC_CR1 |= (1 << 12); // 設置采樣時間
ADC_CR2 |= (3 << 0); // 選擇通道3
// 使能ADC
ADC_CR2 |= (1 << 0);
}
// 啟動ADC轉換
void ADC_StartConvert() {
// 啟動ADC轉換
ADC_CR2 |= (1 << 3);
}
// 讀取ADC轉換結果
uint16_t ADC_ReadValue() {
// 等待轉換完成(可通過中斷方式)
// ...
return ADC_DR;
}
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本a v在线播放
|
亚洲福利在线观看
|
免费一级黄色
|
av免费观看网址
|
国产精久久
|
色综合天天综合网国产成人网
|
亚洲国产一区在线观看
|
久草视频网站
|
日韩成人在线观看
|
国产福利视频在线
|
国产免费网址
|
日韩精品观看
|
97在线免费观看
|
成人小视频在线
|
日韩a视频
|
亚洲 欧美 激情 另类 校园
|
免费在线观看av网站
|
国产对白videos麻豆高潮
|
日韩精品中文字幕在线观看
|
在线免费看a
|
精品国产一区二区三区久久久蜜月
|
深夜免费福利
|
欧美精品999
|
日韩视频一区二区三区
|
欧美日韩国产一区
|
一级黄色录相
|
四虎欧美
|
在线免费看黄网站
|
九九热在线观看
|
欧美 日韩 国产 成人 在线
|
日本在线天堂
|
99黄色
|
午夜www
|
欧洲精品一区二区
|
欧美xxxx网站
|
亚洲精品不卡
|
欧美精品乱码99久久蜜桃
|
一区二区三区久久久
|
黄色精品网站
|
天天干影院
|
欧美成人极品
|