無(wú)運(yùn)放的權(quán)電阻網(wǎng)絡(luò)在單片機(jī)控制系統(tǒng)中的應(yīng)用(下)
接上篇
本文引用地址:http://cafeforensic.com/article/273258.htm編程思路
對(duì)于電阻類數(shù)據(jù),常用的數(shù)表有電阻數(shù)表、AD數(shù)表。
1. 電阻數(shù)表,優(yōu)點(diǎn)是直觀,方便后期查驗(yàn),與電源電壓無(wú)關(guān);缺點(diǎn)和AD值之間需要額外的計(jì)算,占用系統(tǒng)時(shí)間。
2. AD數(shù)表,優(yōu)點(diǎn)是MCU只需做比較而無(wú)需乘除,與電源電壓無(wú)關(guān);缺點(diǎn)是不直觀,需要保存好原始的計(jì)算表格以備查驗(yàn)。
這里使用第二種AD數(shù)表,我們推導(dǎo)一下AD值與地址設(shè)置值之間的關(guān)系:
因?yàn)椴⒙?lián)電路和串聯(lián)電路都是線性電路,電源VCC的波動(dòng)會(huì)直接導(dǎo)致輸出電壓波動(dòng),所以直接把VCC和Vref連接能更好地去除電源波動(dòng)對(duì)電壓采集的影響,即令VCC=Vref,化簡(jiǎn)得:Ad=(2n-1)*K
之前的Excel表格已經(jīng)算出了系數(shù)K,在I4寫入=H4*(2^$I$2-1),復(fù)制粘貼即可得到AD數(shù)表,再把它定義成數(shù)組即可。
主要程序
#define uint unsigned int
#define uchar unsigned char
#define parallel
#ifndef parallel
#define series
#endif
#ifdef parallel
//并聯(lián)電路AD數(shù)表
const uint code ad_table[]=
{
0 , 59 ,113 ,160 ,204 ,242 ,278 ,310 , //0~7
341 ,368 ,393 ,416 ,438 ,458 ,477 ,494 , //8~15
512 ,527 ,541 ,555 ,568 ,580 ,592 ,603 , //16~23
614 ,624 ,633 ,642 ,651 ,659 ,667 ,674 , //24~31
};
//并聯(lián)電路AD數(shù)表為
uint address_cal(uint value)
{
uchar i=0;
uint address=0;
uint buff=value;
for(i=0;i<31;i++)
{
if((buff>=ad_table[i]) && (buff<ad_table[i+1]))
{
address=i;
break;
}
}
電阻相關(guān)文章:電阻的作用居然有這么多,你造嗎
光敏電阻相關(guān)文章:光敏電阻工作原理
評(píng)論