![]() |
發布時間: 2020-11-5 22:44
正文摘要:弄了好久都解決不了,AD值都正常,但是轉換成電壓值就不正常了,會不會是軟件的原因(使用KEIL3)? #include<reg52.h> #include<intrins.h> #define uint unsigned int #define ... |
標定不對。 |
分立元件 發表于 2020-11-10 15:53 應該怎么設置呢? |
問題已解決,是數據類型設置不對造成的! |
FJ2018 發表于 2020-11-6 16:46 改成unsigned long 改成 g=l*50/1023*100; 輸出0——50,只有2位,不知道什么原因,正常應該有四位吧? |
梁廷明 發表于 2020-11-6 15:34 改成 g=l*50/1023*100; 輸出0——50,只有2位,不知道什么原因? |
gjkl你定義為浮點型,計算電壓公式 g=l*5.00/1024*1000; 然后看看 |
轉換成浮點型看看,除的數沒有小數點的 |
分立元件 發表于 2020-11-6 10:09 +5/10是為了4舍5入 |
wulin 發表于 2020-11-6 07:44 為什么要加5呢? |
TTQ001 發表于 2020-11-6 09:22 這個方法不行的,出現錯誤 |
aking991 發表于 2020-11-6 09:27 就是按照這個方法,計算出結果不正常! |
首先要根據你的分壓電阻比例關系,其次是要知道你單片機工作電源電壓,即為基準源,這兩個參數很關鍵,接下來就是:基準源乘以采集到的ADC值,再除以10位AD即1024,這樣計算結果就是你的ADC實際電壓值了 |
模數轉換的參考電壓為VREF,在任何電壓V下,ADC結果為n,滿量程ADC結果為1023,則V = VREF x(n / 1023),將V轉換為mV:VmV = V |
是樓主計算方法不當 #define VCC_V 5//宏定義電源電壓5V unsigned int ADC_RESX;//10位ADC轉換結果 unsigned int ADC_V; //ADC mV //強制轉換數據類型(32位)運算,得到(4舍5入)mV ADC_V=(VCC_V*(long)ADC_RESX*10000/1024+5)/10; |