|
發布時間: 2021-8-5 23:10
正文摘要:各位大佬,請教個問題,這邊使用STC15W408as主控芯片,測量通道內部第9的內部基準源電壓數值,為什么總是算不對呢?我放上源碼,請大神幫忙看下。使用的是ssop20的芯片,我看也沒有Vref這個管腳,默認不是電壓供電多 ... |
| ad值需要用公式換算會電壓值,而且檢測的電壓值要做降壓處理,不能超過參考電壓,再根據降壓比推算會原來的電壓值。 |
baocong2019 發表于 2021-8-6 20:25 哦哦,匯編用習慣了,就覺得高位會變成低位了... 你這樣也是對的 但,如果你有看過PCON2的說明,你就會知道,你最初的公式是PCON2的ADRJ位為1時的公式,網上大多是用這個公式的,但ADRJ默認是0的,別人的程序是要設定PCON2的 這就是我提醒你修改PCON2試一下原因 |
Y_G_G 發表于 2021-8-6 18:08 不是PCON2寄存器的問題,是移位出現了問題 |
| 學習了,雖然我不用STC單片機! |
|
ADC_RESL&3 你看一下數據手冊,你這個公式對嗎? 所以我叫你PCON2改一下試一下 |
1093562897 發表于 2021-8-6 15:27 adc_value_temp = (ADC_RES<<2)|(ADC_RESL&3); 最終問題解決了,是偏移位數的問題,高8位在RES寄存器,低2位在bit1-bit0,所以應該是左移2位,而不是左移8位。 ![]() |
楊天想 發表于 2021-8-6 11:03 標定的供電電壓是5v = 5000 然后來測外部通道 |
baocong2019 發表于 2021-8-6 10:58 你是用內部vcc做參考電壓的嗎 |
munuc_w 發表于 2021-8-6 10:23 adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024; 我就是用這句話來根據這個公式算的 |
csmyldl 發表于 2021-8-6 01:30 adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024; 這句話不就是算電壓值的嗎? |