|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何用C語言實(shí)現(xiàn)查表程序! |
| 作者:byk2005 欄目:單片機(jī) |
如何用C語言實(shí)現(xiàn)查表程序!主要針對(duì)的是溫度采集,如何將采集到的電壓值通過表對(duì)應(yīng)為溫度值! |
| 2樓: | >>參與討論 |
| 作者: rockos 于 2006/7/28 10:10:00 發(fā)布:
聽說過排序和查找嗎 電壓和溫度的映射關(guān)系可以手工排好序, 也可以在初始化時(shí)讓程序排序. 查找的話, 二分算法就不錯(cuò). 看不懂什么意思就找一本數(shù)據(jù)結(jié)構(gòu)與算法的書好好讀一讀. |
|
| 3樓: | >>參與討論 |
| 作者: computer00 于 2006/7/28 10:34:00 發(fā)布:
建立一個(gè)數(shù)組 例如,如果采樣回來的電壓值在0到99之間,保存在名為VALUE的變量中,那么 code int table[100]={.........}; //....為對(duì)應(yīng)的溫度值 table[VALUE]就是溫度值了。 |
|
| 4樓: | >>參與討論 |
| 作者: jacksnon 于 2006/7/28 10:35:00 發(fā)布:
對(duì) 找到電壓與溫度的關(guān)系,或函數(shù)關(guān)系,建立電壓表后,直接查詢就ok了噻。 |
|
| 5樓: | >>參與討論 |
| 作者: woodhot 于 2006/7/28 10:37:00 發(fā)布:
可以用SWITCH語句 可以用SWITCH()加上case和break的語句組合。 但是swutch()的參數(shù)必須是整數(shù),1.2.3.4.5這樣的,所以溫度值需要做一個(gè)轉(zhuǎn)化就可以了。 |
|
| 6樓: | >>參與討論 |
| 作者: rockos 于 2006/7/28 10:49:00 發(fā)布:
re to OO & jacksnon, 這個(gè)方法要求電壓必須均勻,太苛刻了, 而且通常不滿足工程需求. 打個(gè)比方, 要求測試范圍是1~100攝氏度, 但是精度分布不同, 15~40度之間要求精確到0.1度, 其它溫度區(qū)域只要精確到1度或更低的分辨率, 這個(gè)算法就不成立了. to woodhot, switch/case語法是線性查找過程, 除了查找效率低下外, 維護(hù)起來也沒有列表方便. 另外, 如果電壓值不是整數(shù), 這種算法就完全不適用了. |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2006/7/28 11:17:00 發(fā)布:
暈……ADC采樣進(jìn)來的結(jié)果還不是整數(shù)了? 一個(gè)ADC結(jié)果,就是一個(gè)溫度值。非線性又如何?如果這樣的查表都不能實(shí)現(xiàn),那其它任何方法都不能實(shí)現(xiàn)了! 因?yàn)槊恳粋(gè)ADC結(jié)果只能對(duì)應(yīng)一個(gè)溫度值,這樣一一對(duì)應(yīng)的一個(gè)表,豈有出錯(cuò)之理? |
|
| 8樓: | >>參與討論 |
| 作者: rockos 于 2006/7/28 11:34:00 發(fā)布:
re 比如說, AD的輸出范圍是整數(shù)0~1000, 分別代表0~100攝氏度, 他可能只需要對(duì)15~40度之間的數(shù)據(jù)精確表達(dá), 其它部分意思意思就行了, 表示當(dāng)前溫度已經(jīng)超過或低于XXX度. 那么程序中就只需要保存15~40度之間的詳細(xì)數(shù)據(jù), 其它部分大致表達(dá)一下就OK了. 和使用ADC輸出的電壓值做下標(biāo)相比, 大大地節(jié)省了內(nèi)存空間, 但是要使用查找算法. 如果溫度-電壓完全是線性關(guān)系, 就不必查表了, 一個(gè)表達(dá)式可能最合適: 溫度 = 電壓 * 一個(gè)常數(shù) |
|
| 9樓: | >>參與討論 |
| 作者: computer00 于 2006/7/28 14:03:00 發(fā)布:
省不省空間我不管,樓主問的是如何查表法. 在不清楚樓主詳細(xì)要求的情況下,只能給出這樣的方案,其它方法不能保證一定能夠?qū)崿F(xiàn). 你是如何得知樓主只要在某一段詳細(xì),其它地方粗略了?又如何得知他的ADC有幾位?或許只有8位也難說. 你所描述的那種方法是半查表法,或者是叫線性插值法. |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |