無運放的權電阻網(wǎng)絡在單片機控制系統(tǒng)中的應用(下)
接上篇
本文引用地址:http://m.butianyuan.cn/article/273258.htm編程思路
對于電阻類數(shù)據(jù),常用的數(shù)表有電阻數(shù)表、AD數(shù)表。
1. 電阻數(shù)表,優(yōu)點是直觀,方便后期查驗,與電源電壓無關;缺點和AD值之間需要額外的計算,占用系統(tǒng)時間。
2. AD數(shù)表,優(yōu)點是MCU只需做比較而無需乘除,與電源電壓無關;缺點是不直觀,需要保存好原始的計算表格以備查驗。
這里使用第二種AD數(shù)表,我們推導一下AD值與地址設置值之間的關系:
因為并聯(lián)電路和串聯(lián)電路都是線性電路,電源VCC的波動會直接導致輸出電壓波動,所以直接把VCC和Vref連接能更好地去除電源波動對電壓采集的影響,即令VCC=Vref,化簡得:Ad=(2n-1)*K
之前的Excel表格已經(jīng)算出了系數(shù)K,在I4寫入=H4*(2^$I$2-1),復制粘貼即可得到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;
}
}
電阻相關文章:電阻的作用居然有這么多,你造嗎
光敏電阻相關文章:光敏電阻工作原理
評論