找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2499|回復(fù): 6
收起左側(cè)

MCU將8位AD采集到的值轉(zhuǎn)換成實(shí)際值遇到的坑求解

[復(fù)制鏈接]
ID:886945 發(fā)表于 2021-3-31 04:19 來自手機(jī) | 顯示全部樓層 |閱讀模式
MCU AD采集到的值dat從二進(jìn)制轉(zhuǎn)換成10進(jìn)制實(shí)際電壓值輸出中遇到了一些問題
采集到電壓值dat區(qū)間在0-255之間,實(shí)際參考位5V,講采集到的值做運(yùn)算,輸出實(shí)際電壓值
1.unsigned char型的變量轉(zhuǎn)換成int型,為什么需要乘一個(gè)1.0.
2.為什么我將*1.0的位置放在變量dat后邊相乘和放在前邊相乘得到的值是不一樣的,放在前邊相乘呢值才是正確的,放后邊就一堆亂碼.
IMG_20210331_040834.jpg
回復(fù)

使用道具 舉報(bào)

ID:886945 發(fā)表于 2021-3-31 04:26 來自手機(jī) | 顯示全部樓層
我看別人的程序,這個(gè)1.0放在變量后邊都沒問題,編譯器問題?看視屏里用的keil4,我用的keil5
回復(fù)

使用道具 舉報(bào)

ID:814525 發(fā)表于 2021-3-31 09:11 | 顯示全部樓層
dat為0-255,那么500*dat最大值為127500。這里存在C語言運(yùn)算類型轉(zhuǎn)換原則,,500*1.0就轉(zhuǎn)換為float運(yùn)算,其類型是32位,500*1.0*dat其值不會(huì)溢出;而500*dat*1.0,就先以int類型運(yùn)算再以浮點(diǎn)運(yùn)算,而int運(yùn)算時(shí),有可能已經(jīng)溢出了,結(jié)果就出錯(cuò)。所以運(yùn)算的類型及前后順序很重要,這就是稍不注意就出錯(cuò)的原因

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:712560 發(fā)表于 2021-3-31 13:21 | 顯示全部樓層
如果dat值為255,則temp11為500,遠(yuǎn)遠(yuǎn)大于255,8位無法表示,所以亂碼

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:886945 發(fā)表于 2021-4-1 00:49 | 顯示全部樓層
liujunping11 發(fā)表于 2021-3-31 13:21
如果dat值為255,則temp11為500,遠(yuǎn)遠(yuǎn)大于255,8位無法表示,所以亂碼

temp是int型,而且你這里理解是錯(cuò)了,不管怎么算 temp都是要大于255的,我現(xiàn)在有問題的是這個(gè)運(yùn)算順序,1.0放在變量dat前邊還是放在dat后邊相乘,兩個(gè)結(jié)果是不一樣的
回復(fù)

使用道具 舉報(bào)

ID:886945 發(fā)表于 2021-4-1 00:51 | 顯示全部樓層
張?zhí)鞄?發(fā)表于 2021-3-31 09:11
dat為0-255,那么500*dat最大值為127500。這里存在C語言運(yùn)算類型轉(zhuǎn)換原則,,500*1.0就轉(zhuǎn)換為float運(yùn)算,其 ...

為什么uchar型的dat和500先運(yùn)算,是以int型輸出而不是以char型嗎,是因?yàn)榍斑呑兞縯emp的緣故?
回復(fù)

使用道具 舉報(bào)

ID:250416 發(fā)表于 2021-4-1 08:23 | 顯示全部樓層
sdarling 發(fā)表于 2021-4-1 00:51
為什么uchar型的dat和500先運(yùn)算,是以int型輸出而不是以char型嗎,是因?yàn)榍斑呑兞縯emp的緣故?

uchar型dat和500運(yùn)算是int型,因?yàn)?00是int型常量
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表