ADC0809電壓表 數(shù)據(jù)采集與處理方法
float temp;//浮點保留小數(shù)點后面六位,最后一位四舍五入
uchar val_int;//用于存儲整數(shù)位
uint val_decimal;//存小數(shù)位
temp = ad_dat * (5/255);//主要是這個地方的原理比較重要:首先輸出數(shù)據(jù)的8個口,能夠表示的無符號整數(shù)范圍是0~255。而測量電壓的范圍是0~5V(以參考電壓連接決定),所以接收到的整數(shù)與想要得到的電壓值存在 5/255 的數(shù)量關(guān)系。為了保持精度,所以temp用的是float類型。
val_int = (uchar) temp;//強制轉(zhuǎn)換,保留temp的整數(shù)部分,注意,這里并不會改變temp的數(shù)據(jù)
val_decimal = (uint) ((temp - val_int) * 100);//把整數(shù)部分減去為0之后。把想要保留的小數(shù)提上來,這樣數(shù)碼管顯示的時候當(dāng)做整數(shù)來處理。
更正錯誤:temp = ad_dat * (5/255);這條語句中,(5/255)必須用算出值0.0196078。原句改為:temp = ad_dat * 0.0196078; 否則轉(zhuǎn)換值全是0。原因還未探明,相信與數(shù)據(jù)類型有關(guān)系。
評論