基于PT100的溫度測試儀_第1頁
基于PT100的溫度測試儀_第2頁
基于PT100的溫度測試儀_第3頁
基于PT100的溫度測試儀_第4頁
基于PT100的溫度測試儀_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,word格式支持編輯,如有幫助歡迎下載支持。10word10word格式支持編輯,如有幫助歡迎下載支持。部分項(xiàng)目得分設(shè)計(jì)報(bào)告設(shè)計(jì)方案與論證5分理論分析與軟件說明5分主要電路說明、測試方法6分?jǐn)?shù)據(jù)、結(jié)果分析4分合計(jì)20分基本部分完成1項(xiàng):25分完成2項(xiàng):25分完成3項(xiàng):10分合計(jì)60分發(fā)揮部分其他擴(kuò)展功能20分第一章概述第二章設(shè)計(jì)方案與論證單片機(jī)器、模擬本設(shè)計(jì)設(shè)計(jì)的溫度測量系統(tǒng)是把熱電阻信號(hào)通過傳感器檢測轉(zhuǎn)變?yōu)殡妷盒盘?hào),經(jīng)過信號(hào)采集電路轉(zhuǎn)換成A/D輸入的標(biāo)準(zhǔn)信號(hào)。之后A/D將模擬電壓信號(hào)變轉(zhuǎn)換成數(shù)字信號(hào),然后送入單片機(jī)(MCU)進(jìn)行處理和運(yùn)算,單片機(jī)將處理的數(shù)據(jù)通過LED單片機(jī)器、模擬顯示模集成傳感器以及新興的方案一:采用模擬分立元件如電容、電感或晶體管等非線形元件,該方案設(shè)計(jì)電路簡單易懂,操作簡單,且價(jià)格便宜,但采用分立元件分散性大,不便于集成數(shù)字化,而且測量誤差大。方案二:采用溫度傳感器通過溫度傳感器采集溫度信號(hào),經(jīng)信號(hào)放大器放大后,送到A/D轉(zhuǎn)換芯片,將模擬量轉(zhuǎn)化為數(shù)字量,傳送給單片機(jī)控制系統(tǒng),最后經(jīng)過LED顯示溫度。熱電阻也是最常用的一種溫度傳感器。它的主要特點(diǎn)是測量精度高,性能穩(wěn)定,使用方便,測量范圍為-200℃~850℃,完全滿足要求,考慮到鉑電阻的測量精確度是最高的,所以我們設(shè)計(jì)最終選擇箱電阻Pt100作為傳感器。該方案采用熱電阻Pt100做為溫度傳感器、OP07作為信號(hào)放大器,對(duì)于溫度信號(hào)的采集具有大范圍、高精度的特點(diǎn)。相對(duì)與方案一,在功能、性能、可操作性等方面都有較大的提升。在這里我選用方案二完成本次設(shè)計(jì)。放大器選擇Op07是一種低噪聲,非斬波穩(wěn)零的雙極性運(yùn)算放大器。由于OP07具有非常低的輸入失調(diào)電壓(對(duì)于OP07A最大為25口V),所以O(shè)P07在很多應(yīng)用場合不需要額外的調(diào)零措施。OP07同時(shí)具有輸入偏置電流低(OP07A為±2nA)和開環(huán)增益高(對(duì)于OP07A為300V/mV)的特點(diǎn),這種低失調(diào)、高開環(huán)增益的特性使得OP07特別適用于高增益的測量設(shè)備和放大傳感器的微弱信號(hào)等方面。寬的輸入電壓范圍(最少±13V)與高達(dá)110dB(OP07A)的共模抑制比和高輸入阻抗的結(jié)合,在同相電路阻態(tài)中提供了很高的精度,即使在很高的閉環(huán)增益下,也能保持極好的線性和增益精度。失調(diào)和增益對(duì)時(shí)間或溫度變化的穩(wěn)定性也是極好的。不加外調(diào)零措施的OP07的精度和穩(wěn)定性,即使在高增益下也能使OP07成為一種新的儀器用和軍用的工業(yè)標(biāo)準(zhǔn)。OP07A和OP07適用于在-55℃到+125℃的整個(gè)軍用范圍內(nèi)。熱電阻(PT100)接法熱電阻是把溫度變化轉(zhuǎn)換為電阻值變化的一次元件,通常需要把電阻信號(hào)通過引線傳遞到計(jì)算機(jī)控制裝置或者其它一次儀表上。工業(yè)用熱電阻安裝在生產(chǎn)現(xiàn)場,與控制室之間存在一定的距離,因此熱電阻的引線對(duì)測量結(jié)果會(huì)有較大的影響。目前熱電阻的引線主要有三種方式:1、二線制:在熱電阻的兩端各連接一根導(dǎo)線來引出電阻信號(hào)的方式叫二線制:這種引線方法很簡單,但由于連接導(dǎo)線必然存在引線電阻r,r大小與導(dǎo)線的材質(zhì)和長度的因素有關(guān),因此這種引線方式只適用于測量精度較低的場合。2、三線制:在熱電阻的根部的一端連接一根引線,另一端連接兩根引線的方式稱為三線制,這種方式通常與電橋配套使用,可以較好的消除引線電阻的影響,是工業(yè)過程控制中的最常用的引線電阻。3、四線制:在熱電阻的根部兩端各連接兩根導(dǎo)線的方式稱為四線制,其中兩根引線為熱電阻提供恒定電流I,把R轉(zhuǎn)換成電壓信號(hào)U,再通過另兩根引線把U引至二次儀表。可見這種引線方式可完全消除引線的電阻影響,主要用于高精度的溫度檢測。在本設(shè)計(jì)中熱電阻采用三線制接法。采用三線制是為了消除連接導(dǎo)線電阻引起的測量誤差。這是因?yàn)闇y量熱電阻的電路一般是不平衡電橋。熱電阻作為電橋的一個(gè)橋臂電阻,其連接導(dǎo)線(從熱電阻到中控室)也成為橋臂電阻的一部分,這一部分電阻是未知的且隨環(huán)境溫度變化,造成測量誤差。采用三線制,將導(dǎo)線一根接到電橋的電源端,其余兩根分別接到熱電阻所在的橋臂及與其相鄰的橋臂上,這樣消除了導(dǎo)線線路電阻帶來的測量誤差。第三章理論分析與主要電路說明電源模塊電子技術(shù)課程中所介紹的直流穩(wěn)壓電源一般是線性穩(wěn)壓電源,它的特點(diǎn)是起電壓調(diào)整功能的器件始終工作在線性放大區(qū),由50Hz工頻變壓器、整流器、濾波器和串聯(lián)調(diào)整穩(wěn)壓器組成。它的基本工作原理為:工頻交流電源經(jīng)過變壓器降壓、整流、濾波、再次濾波后成為一穩(wěn)定的直流電。圖中其余部分是起電壓調(diào)節(jié),實(shí)現(xiàn)穩(wěn)壓作用的控制部分。電源接上負(fù)載后,通過采樣電路獲得輸出電壓,將此輸出電壓與基準(zhǔn)電壓進(jìn)行比較。如果輸出電壓小于基準(zhǔn)電壓,則將誤差值經(jīng)過放大電路放大后送入調(diào)節(jié)器的輸入端,通過調(diào)節(jié)器調(diào)節(jié)使輸出電壓增加,直到與基準(zhǔn)值相等;如果輸出電壓大于基準(zhǔn)電壓,則通過調(diào)節(jié)器使輸出減小。這種穩(wěn)壓電源具有優(yōu)良的紋波及動(dòng)態(tài)響應(yīng)特性。本設(shè)計(jì)采用固定集成輸出集成穩(wěn)壓電路,它主要由變壓器(雙6V,5W)、集成整流橋、集成穩(wěn)壓器LM7805(+5V)和LM7905(-5V)、極性電容(100uF和1000uF)構(gòu)成。如圖5-1所示。圖5-1穩(wěn)壓電源1)二極管(4個(gè)):組成全波整流橋電路,正半周期時(shí)右上和左下兩個(gè)二極管導(dǎo)通,負(fù)半周期左上和右下兩個(gè)二極管導(dǎo)通,使電壓信號(hào)都位于3t軸上方;圖5-2電壓輸入波形 圖5-3整流之后波形(i和u)2)極性電容(4個(gè)):濾波作用,當(dāng)電壓信號(hào)逐漸增大時(shí)候向電容里充電,當(dāng)電容里電荷達(dá)到一定時(shí),停止充電,當(dāng)電壓信號(hào)低于電容存儲(chǔ)的電荷的電壓時(shí),電容開始放電,放到一定程度又開始充電,周而復(fù)始,形成周期;圖5-3電容濾波電路3)7805/7905:穩(wěn)壓塊,7805穩(wěn)壓輸出+5V電壓,7905穩(wěn)壓輸出-5V電壓。采集模塊熱電阻的阻值隨溫度的變化而變化,所以我們可以把熱電阻的阻值變化轉(zhuǎn)換成相應(yīng)的電壓信號(hào),然后經(jīng)過后續(xù)的放大電路將采集到的電壓放大到一定倍數(shù),被A/D采集并輸入到單片機(jī)內(nèi)部。由于在實(shí)驗(yàn)室中恒流發(fā)生電路比較簡單常用,而且電壓信號(hào)采集簡單、測量方便,所以本設(shè)計(jì)采用恒流源測電壓方法實(shí)現(xiàn)熱電阻和電壓信號(hào)的對(duì)應(yīng)關(guān)系。恒流源電路可以產(chǎn)生1mA恒定電流,把熱電阻Rt的阻值轉(zhuǎn)換為電壓信號(hào)Uo(Uo=Rt*1mA),如圖3-1所示。電壓放大電路主要是把電壓信號(hào)放大一定的倍數(shù),能被A/D比較精確地采集到。圖3-1溫度采集及信號(hào)處理電路第一部分恒流源發(fā)生電路如圖3-1(a)所示:圖3-1(a)恒流源發(fā)生電路1)LM336-2.5穩(wěn)壓管:穩(wěn)壓作用,將放大器3腳電壓鉗制到2.5V左右;2)R12(2.4K)電阻:根據(jù)“虛斷”原理,U3=U2,I=2.5V/2.4K=1mA;9012復(fù)合三極管:又叫達(dá)林頓管,將B系數(shù)放大,即P=供,使達(dá)林頓管集電極和發(fā)射極電流相等,即Ic=Plb=I,從而大大減小Ib的值;R14(10K)電阻:保護(hù)前端放大器作用,防止1b過大,進(jìn)入運(yùn)放6腳;第二部分三線制處理及輸出放大如圖3-2(b)所示;圖3-13)三線制處理及輸出放大電路1)200Q電位器代替Pt100,實(shí)驗(yàn)時(shí)將電位器調(diào)整至100Q阻值;2)R17、R20、R23:理論上代替三根傳輸導(dǎo)線,令R17后面的電壓為U1,R20后面的電壓為U2,R17=R20=R23=R';所以U1=I*(R17+Rt+R23)=I*Rt+2*R'(U2=U3=TOC\o"1-5"\h\zI*R' ……(根據(jù)方程(2*( U1-2*U=I*Rt ……(從而推出放大器輸入端信號(hào)與導(dǎo)線電阻無關(guān)(三線制最終目的)3)后端運(yùn)放:根據(jù)“虛短”原理可以得出U+=U-=U1*R13/(R16+R13)=U1/3 ……((Uo/(R19+R24)-U-)/R22=(U--U2)/R21 ……(經(jīng)(Uo=11(U1-2*U2) ……(從而實(shí)現(xiàn)信號(hào)電壓放大十倍的作用A/D模數(shù)轉(zhuǎn)換模塊ICL7135功能介紹ICL7135是一種四位半的雙積分A/D轉(zhuǎn)換器,可以轉(zhuǎn)換出±20000個(gè)數(shù)字量選通控BCD碼輸出,與單片機(jī)接口十分方便。它具有精度高(相當(dāng)于14位A/D轉(zhuǎn)換),價(jià)格低的優(yōu)點(diǎn)。其轉(zhuǎn)換速度與時(shí)鐘頻率相關(guān),每個(gè)轉(zhuǎn)換周期均有:自校準(zhǔn)(調(diào)零),正向積分(被測模擬電壓積分),反向積分(基準(zhǔn)電壓積分)和過零檢測四個(gè)階段組成,其中自校準(zhǔn)時(shí)間為10001個(gè)脈沖,正向積分時(shí)間為10001個(gè)脈沖,反向積分直至電壓到零為止(最大不超過20001個(gè)脈沖)。故設(shè)計(jì)者可以采用從正向積分開始計(jì)數(shù)脈沖個(gè)數(shù),到反向積分為零時(shí)停止計(jì)數(shù)。將計(jì)數(shù)的脈沖個(gè)數(shù)減10000,即得到對(duì)應(yīng)的模擬量。具體電路如圖2.3所示。圖2.3A/D模數(shù)轉(zhuǎn)換電路圖2.4給出了ICL7135時(shí)序,由圖可見,當(dāng)BUSY變高時(shí)開始正向積分,反向積分到零時(shí)BUSY變低,所以BUSY可以用于控制計(jì)數(shù)器的啟動(dòng)/停止。圖2.4ICL7135時(shí)序圖計(jì)數(shù)的時(shí)鐘脈沖是由單片機(jī)的ALE引腳經(jīng)過74HC393分頻后得到的。在平時(shí),單片機(jī)ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖,若外部時(shí)鐘為12MHZ,則ALE端輸出的時(shí)鐘頻率為2MHZ。由于ICL7135芯片在時(shí)鐘脈沖為125KHz時(shí)對(duì)50HZ工頻干擾有較大抑制能力,此時(shí)轉(zhuǎn)換速度為3次/s,故將ALE端的時(shí)鐘脈沖經(jīng)過74HC393芯片16分頻后得到所需的125KHZ。74HC393芯片如圖2.5所示。圖2.574HC393芯片及電路圖ICL7135引腳圖ICL7135為DIP28封裝,芯片引腳排列如圖2.6所示。圖2.6ICL7135芯片引腳圖引腳含義及功能:(1)與供電及電源相關(guān)的引腳(共7腳):負(fù)電源引入端,典型值-5V,極限值-9V;:正電源引入端,典型值+5V,極限值+6V;ND:數(shù)字地,ICL7135正負(fù)電源的低電平基準(zhǔn);F:參考電壓輸入REF的地為AGND引腳,典型值1V,輸出數(shù)字量=10000X(VIN/VREF);:模擬地,典型應(yīng)用中,與DGND(數(shù)字地)”一點(diǎn)接地”;.INHI:模擬輸入正,此設(shè)計(jì)中與恒流源連接;.INLO:模擬輸入負(fù),當(dāng)模擬信號(hào)輸入為單端對(duì)地時(shí),直接與AC相連。與控制和狀態(tài)相關(guān)的引腳(共12腳).CLKIN:時(shí)鐘信號(hào)輸入,當(dāng)T=80ms時(shí),fcp=125KHz,對(duì)50HZ工頻干擾有較大抑制能力,此時(shí)轉(zhuǎn)換速度為3次/s,極限值fcp=1MHZ時(shí),轉(zhuǎn)換速度為25次/s;.REFC+:外接參考電容正,典型值IhF;.REFC-:外接參考電容負(fù);.BUFFO:緩沖放大器輸出端,典型外接積分電阻;.INTO:積分器輸出端,典型外接積分電容;.AZIN:自校零端;.LOW: 欠量程信號(hào)輸出端,當(dāng)輸入信號(hào)小于量程范圍的10%時(shí),該端輸出高電平;.HIGH:過量程信號(hào)輸出端,當(dāng)輸入信號(hào)超過計(jì)數(shù)范圍(20001)時(shí),該端輸出高電平;.STOR:數(shù)據(jù)輸出選通信號(hào)(負(fù)脈沖),寬度為時(shí)鐘脈沖寬度的一半,每次A/D轉(zhuǎn)換結(jié)束時(shí),該端輸出5個(gè)負(fù)脈沖,分別選通由高到低的BCD碼數(shù)據(jù)(5位),該端用于將轉(zhuǎn)換結(jié)果打到并行I/O接口;.R/H:自動(dòng)轉(zhuǎn)換/停頓控制輸入,當(dāng)輸入高電平時(shí);每隔40002個(gè)時(shí)鐘脈沖自動(dòng)啟動(dòng)下一次轉(zhuǎn)換;當(dāng)輸入為低電平時(shí),轉(zhuǎn)換結(jié)束后需輸入一個(gè)大于300ns的正脈沖,才能啟動(dòng)下一次轉(zhuǎn)換;.POL:極性信號(hào)輸出,高電平表示極性為正;.BUSY:忙信號(hào)輸出,高電平有效,正向積分開始時(shí)自動(dòng)變高,反向積分結(jié)束時(shí)自動(dòng)變低。與選通和數(shù)據(jù)輸出相關(guān)的引腳(共9腳).B8?B1:BCD碼輸出,B8為高位,對(duì)應(yīng)BCD碼;.D5:萬位選通;.D4?D1:千,百,十,個(gè)位選通。SST89E51單片機(jī)簡介SST89E51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的SST89E51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖2.9所示。圖2.9SST89E51引腳及連線圖.P0口:雙向8位三態(tài)I/O口,為地址總線及數(shù)據(jù)總線分時(shí)復(fù)用口,可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。.P1口:8位準(zhǔn)雙向I/O口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。.P2口:8位準(zhǔn)雙向I/O口,與地址總線復(fù)用,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。.P3口:8位準(zhǔn)雙向I/O口,雙功能復(fù)用口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。.RST/VPP:RST是復(fù)位信號(hào)輸入端,高電平有效。VPP為本引腳的第二功能,即備用電源輸入端。.ALE/PROG:ALE輸出為地址鎖存允許信號(hào)。PROG為本引腳的第二功能。.PSEN:程序存儲(chǔ)器允許輸出控制端。.EA/VPP:EA功能為內(nèi)外程序存儲(chǔ)器選擇控制端。此設(shè)計(jì)中,采用定時(shí)計(jì)數(shù)器0(INTO)外部脈沖計(jì)數(shù)方法,通過公式(2-6)獲得:VinC二——*10000Vref(2-6)其中,Vin為輸入電壓,Vref為參考電壓,C為計(jì)數(shù)值。由上公式可求出Vin,就可以求出R,根據(jù)R和溫度T的關(guān)系就可以求出當(dāng)前溫度值。這就是編程中A/D轉(zhuǎn)換函數(shù)的算法和思想。數(shù)碼管顯示電路本設(shè)計(jì)顯示電路是由8段共陽極數(shù)碼管(4個(gè)),三極管(4個(gè)9012),電阻(4個(gè)1K,8個(gè)200Q),電源(+5V)幾部分構(gòu)成。具體電路如圖3-2所示:圖3-2數(shù)碼管顯示電路電路分析:1)1K電阻:分別接到單片機(jī)P2.3、P2.4、P2.5、P2.6口上,并對(duì)PNP三極管起到限流保護(hù)作用;2)三極管:4個(gè)三極管均為PNP型號(hào),基極接I/O口,發(fā)射極接電源,數(shù)碼管COM口接在三極管集電極上,當(dāng)I/O給一個(gè)低電平,三極管基極電壓為低,發(fā)射極電壓為高,使三極管導(dǎo)通,為數(shù)碼管提供電壓;3)200Q電阻:接到數(shù)碼管的8個(gè)段位上,起到限流保護(hù)作用;4)數(shù)碼管:當(dāng)P0.x信號(hào)為低時(shí),P2.x為低,對(duì)應(yīng)數(shù)碼管對(duì)應(yīng)的段位呈現(xiàn)亮的狀態(tài),反之則不亮。工作原理:數(shù)碼管采用動(dòng)態(tài)掃描工作方式,動(dòng)態(tài)顯示是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,h"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,本設(shè)計(jì)分別接到P2.3、P2.4、P2.5、P2.6,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1?2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。串口電路及MAX232芯片簡介MAX232是美信公司專門為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的電源電平轉(zhuǎn)換芯片,使用+5V單電源供電,功能是產(chǎn)生+12V和-12V兩個(gè)電源,提供給RS-232串口電平的需要。串口電路圖如圖2.8所示。圖2.8串口電路MAX232芯片引腳介紹:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。第四章軟件說明、測試方法本章主要介紹編程語言C語言和編程工具Keil3軟件,以及本系統(tǒng)的程序設(shè)計(jì)和在程序設(shè)計(jì)時(shí)所遇到的問題及解決辦法。編程語言介紹C語言是一種面向過程的計(jì)算機(jī)程序設(shè)計(jì)語言,它是目前眾多計(jì)算機(jī)語言中舉世公認(rèn)的優(yōu)秀的結(jié)構(gòu)程序設(shè)計(jì)語言之一。C語言主要有以下特點(diǎn):1、C是中級(jí)語言。它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C語言可以像匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。2、C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。3、C語言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。4、C語言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。基于C語言的這些特點(diǎn),我們選用C語言來作為編程語言。編程軟件Keil簡介KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。KeilC51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,

容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢。下面詳細(xì)介紹KeilC51開發(fā)系統(tǒng)各部分功能和使用。我們用開發(fā)軟件KeiluVision3來編寫、修改所需程序和下載程序到單片機(jī)運(yùn)行。其下介紹KeiluVision3的使用步驟。.雙擊也nuVision3,得到主畫面,如圖3.1所示:圖3.1KeiluVision3主畫面.新建工程界面Project--newproject,如圖3.2所示:圖3.2KeiluVision3的新建界面3.單片機(jī)的選擇,如圖3.3所示:圖3.3單片機(jī)的選擇界面如圖所示能找到本次設(shè)計(jì)所需主要芯片SST89E51。4.C文件的建立與添加,如圖3.4所示:圖3.4添加C文件在添加C文件之后,就可以在里面編寫自己的程序了,在編寫完后編譯,如果沒有錯(cuò)誤,就可以下載到芯片當(dāng)中進(jìn)行調(diào)試并得到最終可用程序。程序設(shè)計(jì)流程圖本溫度測量系統(tǒng)的程序設(shè)計(jì)流程圖如圖3.5所示。圖3.5程序流程圖始用插值法計(jì)算翻始化在科學(xué)和工程問題上可以通過租入采血實(shí)始化方法或得若干離散的數(shù)據(jù),根據(jù)這些數(shù)據(jù),我們往往希望得到一個(gè)連續(xù)的函數(shù)((也就是曲線)或者更加密集的離散方程與已知數(shù)據(jù)相吻合。這個(gè)過程叫擬合。插值是曲線必須通過已知點(diǎn)的擬合,是離散函數(shù)I擬合,是離散函數(shù)I估算出函數(shù)在其它點(diǎn)的近似值。由于PT100與溫度近似呈線性關(guān)系,故采用線性插值法。在本次程據(jù)AD值算出PT10每間隔插值法。在本次程據(jù)AD值算出PT10每間隔5Q測一個(gè)序設(shè)計(jì)中運(yùn)用了兩次據(jù)電插值算出溫度終的溫度值,第一次根0的阻值,之前先用標(biāo)準(zhǔn)電阻來標(biāo)定AD值,即自50。到220QAD值,制成表格,次根據(jù)阻值算出對(duì)應(yīng)的溫度值,在阻值與溫再由插值法顯計(jì)算出PTpOO的實(shí)際值。第二度的表示中用插值法計(jì)算出當(dāng)時(shí)的溫度值。*度值。延時(shí)6.4關(guān)鍵程序voidzhuanhuan(){Vinad=2.2*(Dat_pingjun/4096); //電壓轉(zhuǎn)換V_Pt=Vinad/11.8;R=(int)(100000*V_Pt); //轉(zhuǎn)換電阻T=T_pingjun;T_ZZ[Z_N]=T;Z_N++;if(Z_N==16){Z_N=0;zhongzhi();}}我個(gè)人認(rèn)為該程序模塊為整個(gè)測溫系統(tǒng)程序的靈魂,對(duì)電壓,電阻,溫度三者之間的轉(zhuǎn)換起到銜接作用,Dat_pingjun承接A/D采集的數(shù)據(jù),根據(jù)0V?0,2.2V?4096,所以A/D輸入電壓就是第一條語句的對(duì)應(yīng)關(guān)系,為了使數(shù)據(jù)穩(wěn)定,在這里對(duì)A/D采集的數(shù)據(jù)進(jìn)行了滑動(dòng)取平均值,由于Pt100信號(hào)電壓比較微弱,不利于采集,所以后級(jí)放大器將V_Pt差分放大約11倍多,所以就有了第二條語句的關(guān)系,根據(jù)電阻-溫度的分度表將電阻放大100倍,便于插值運(yùn)算,然后對(duì)插值計(jì)算所得結(jié)果再次進(jìn)行滑動(dòng)取平均值,使溫度數(shù)據(jù)更加穩(wěn)定,但是經(jīng)過測試之后,到了這一步溫度顯示還是不夠穩(wěn)定,所以我又采取對(duì)滑動(dòng)之后溫度平均值放在長度為16的數(shù)組之中,對(duì)這些數(shù)據(jù)進(jìn)行取中值,最后送顯示,調(diào)試結(jié)果很穩(wěn)定,誤差能保持在允許范圍之內(nèi)。測試方法用變阻箱代替PT100模擬溫度變化時(shí)阻值的變化。程序運(yùn)行時(shí),在一定范圍內(nèi)扭動(dòng)變阻箱,LED將顯示此阻值對(duì)應(yīng)的溫度值??芍獙?duì)應(yīng)值是否正確。第五章數(shù)據(jù)結(jié)果分析3.8數(shù)據(jù)測試及誤差分析AD碼-阻值分度表如表3-8所示,阻值-溫度分度值見附錄(二)。根據(jù)插值法,可以由測得數(shù)據(jù)獲得液晶顯示獲得AD碼與溫度的近似值。誤差主要是由軟件編寫不成熟和電阻箱阻值不穩(wěn)定造成的。但精度基本上可以達(dá)到±0.1℃。表3-8AD碼-阻值分度表R(Q)556065707580859095AD465851245515698063756836723076858084R(Q)100105110115120125130135140AD85168875939597701025310630111081148611967R(Q)145150155160165170175180185AD123501282313210136571405014530149251538715789R(Q)190195200205210215220225230AD1624216615170361738718857182301871519113196276.5.3軟件調(diào)試結(jié)果部分電阻-溫度分度表,由于電阻存在誤差,所以測出的溫度相對(duì)誤差不是很準(zhǔn)確。表6-1數(shù)據(jù)統(tǒng)計(jì)表分度表阻值(Q)實(shí)測阻值(Q)分度表溫度(℃)實(shí)測溫度(℃)相對(duì)誤差100.00100.00000110.12110.012625.8-26.1-0.2-+0.1120.16120.105252.1-52.4+0.1-+0.4130.13130.187877.7-78.1-0.3-+0.1140.02139.96104103.6-103.8-0.4--0.2149.82149.79130129.7-129.9-0.3--0.1159.93159.88157156.8-157.1-0.2-+0.1169.57169.45183182.5-182.8-0.5--0.2179.14179.11209208.6-208.9-0.4--0.1184.63184.6224223.7-0.3附錄(I)程序#include<c8051f410.h>#defineucharunsignedchar#defineuintunsignedintucharseg_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};//段碼ucharbit_sel[4]={0xbf,0xdf,0xef,0xf7};//位碼ucharLEDn=0;ucharbuffer[4];ucharbtpoint=0X7F;bitT0_flag=0,AD_flag=0;doubleaver,get_ad[15],huadong[16],T_huadong[16],T_ZZ[16];doubleVinad,V_Pt,Dat_pingjun,T_pingjun,T_last;intflag=0,NUM,Z_N=0;/**************************pt1OO有關(guān)參數(shù)定義*L**L**L**L**L**L**L**L**L**L**L**L*//uintR;//電阻doubleT;//溫度intcodept[36][2]{ {6430,-90},{6833,-80},{7233,-70},{7633,-60},{8031,-50},{8427,-40},{8822,-30},{9216,-20},{9609,-10},{10000,0},{10390,10},{10779,20},{11167,30},{11554,40},{11940,50},{12324,60},{12708,70},{13090,80},{13471,90},{13851,100},{14229,110},{14607,120},{14983,130},{15358,140},{15733,150},{16105,160},{16477,170},{16848,180},{17217,190},{17586,200},{17953,210},{18319,220},{18684,230},{19047,240},{19410,250},{19771,260}};/************************配置cpuio口*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voidIO_Init(){pCA0MD=0x00;//禁止看門狗P0MDOUT=0x00;//P0口為輸出方式,設(shè)置為弱上拉(0為弱上拉,1為推挽)P2MDIN=0xfb;//P2.2為模擬輸入方式P2MDOUT=0x78;//P2口為輸出方式,設(shè)置為弱上拉P1SKIP=0xff;〃交叉開關(guān)跳過P1.1XBR0 =0x00; //不連任何端口引腳XBR1 =0x40; //輸出方式為弱上拉,交叉開關(guān)被使能}/***************************A/D初始化voidAD_Init(){ADC0MX=0x12; //A/D轉(zhuǎn)化選擇輸入為p1.1口*A/DC0通道選擇寄存器ADC0CF=0xf8;ADC0CN=0x80;ADC0TK=0xff;/******************************系統(tǒng)時(shí)鐘初始化*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voidSYSCLK(){OSCICN=0乂87;//內(nèi)部振蕩器不分頻}/*****************************電壓基準(zhǔn)選擇*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voidMUX(){REF0CN=0乂13;//內(nèi)部基準(zhǔn)電壓為2.2丫,內(nèi)部基準(zhǔn)緩沖器被使能,內(nèi)部電壓基準(zhǔn)被驅(qū)動(dòng)到VREF引腳,內(nèi)部偏壓發(fā)生器總是被使能。/**********************************顯示函數(shù)*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voiddisplay(){if(T0_flag==1){T0_flag=0;P2=0xff;if(LEDn==2){P0=seg_code[buffer[LEDn]]&0x7f;}else{P0=seg_code[buffer[LEDn]];}P2=bit_sel[LEDn];LEDn++;if(LEDn==4){LEDn=0;/************************************定時(shí)器/~\*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*/I* /voidT0_Init(){TMOD=0x01;TCON=0x10;TH0=255;TL0=255;ET0=1;}/********************************定時(shí)器0中斷用來顯示*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voidTimer0()interrupt1TH0=0xe0;TL0=0;T0_flag=1;/ *L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*/*L**L**L**L**L**L**L**L**L*//uintADC0(){ucharx;uinty;ADC0MX=0x09;ADC0CN|=0x10;x=ADC0CN&0x20;while(x==0){x=ADC0CN&0x20;}ADC0CN=ADC0CN&0xdf;y=256*ADC0H+ADC0L-30;returny;/***********************************求平均值*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//voidhuadongpingjun(){huadong[15]=huadong[14];huadong[14]=huadong[13];huadong[13]=huadong[12];huadong[12]=huadong[11];huadong[11]=huadong[10];huadong[10]=huadong[9];huadong[9]=huadong[8];huadong[8]=huadong[7];huadong[7]=huadong[6];huadong[6]=huadong[5];huadong[5]=huadong[4];huadong[4]=huadong[3];huadong[3]=huadong[2];huadong[2]=huadong[1];huadong[1]=huadong[0];huadong[0]=aver;Dat_pingjun=(huadong[15]+huadong[14]+huadong[13]+huadong[12]+huadong[11]+huadong[10]+huadong[9]+huadong[8]+huadong[7]+huadong[6]+huadong[5]+huadong[4]+huadong[3]+huadong[2]+huadong[1]+huadong[0])/16;}voidAverage(){uintsum=0;inti;for(i=0;i<=15;i++){get_ad[i]=ADC0();sum=sum+get_ad[i];}aver=sum/16;/*********************************插值計(jì)算*L**L**L**L**L**L**L**L**L**L**L**L**L**L**L**L*//doublejisuan(doublex,doublex1,doublex2,doublex3,doubley1,doubley2,doubley3){doubleY;Y=((x-x2)*(x-x3)/((x1-x2)*(x1-x3)))*y1+((x-x1)*(x-x3)/((x2-x1)*(x2-x3)))*y2+((x-x1)*(x-x2)/((x3-x1)*(x3-x2)))*y3;returnY;}doublechazhi(intR){doubleT1;inti=0;while(R>Pt[i][0])i++;T1=jisuan(R,Pt[i-1][0],Pt[i][0],Pt[i+1][0],Pt[i-1][1],Pt[i][1],Pt[i+1][1]);returnT1;/********************

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論