【正文】
收20個數(shù)據(jù)取平均值再顯示出來 減小抖動 j = j + 1 If j = 19 Then = False For k = 0 To 19 summ = summ + e(k) Next k c = summ / 20 summ = 0 i = (c / 255) * 10 If i Then = 0 = 0 Else = i * = * i * End If = True j = 0 End IfEnd Select附錄3 元器件清單元器件清單如下表1:品名單位單價(元)數(shù)量價格(元)STC89C52個616ADC0804個10110MAX232個2 24串口母頭套21.6USB轉(zhuǎn)串口線根20120面包板塊428排線米若干壓力傳感器D3B個25125晶振個2 1合計 表1:元器件清單表由于這次的設(shè)計所用的電阻電容是在實驗室找的而且很便宜就沒有計算在成本內(nèi),總的來說這次設(shè)計的智能液位傳感器成本還在預(yù)算范圍內(nèi)。程序的核心部分:VB的串口通訊控件MSCommDim a As StringSelect Case Case EvReceive 39。串口通訊初始化:波特率為9600,沒有校驗位,八位數(shù)據(jù)傳送,一位停止位 = 1 = InputModeText 39。打開串口End SubPrivate Sub Command10_Click()EndEnd SubPrivate Sub Form_Load() 39。}上位機VB部分程序如下:Dim i As SingleDim j As IntegerDim k As IntegerDim d(1) As ByteDim b As LongDim c As DoubleDim summ As DoubleDim e(20) As DoublePrivate Sub Combo1_click() = + 1 39。} }}void ser() interrupt 4//串口中斷{ while(TI)。 TI=0。SBUF=j/2。 if(flag==1){ES=0。//串口通斷}void main(){ initial()。 EA=1。//串口始能REN=1時允許串行口接收數(shù)據(jù) SM0=0。 TR1=1。//設(shè)置定時器1為工作方式2 TH1=0xfd。 rd=1。 i=i。 rd=0。 wr=1。}void adopen()//adc0804初始化{ wr=1。y0。x0。void delay(uint z){ uint x,y。sbit wr=P3^6。在設(shè)計過程中他為我們提供了很多的幫助和指導(dǎo)。通過這次課程設(shè)計自己看到了許多工程和一些產(chǎn)品中的要求,讓自己明白了自己現(xiàn)在缺乏很多工程意識和思考問題的全面性。本次設(shè)計使我深刻認(rèn)識到自己軟件編程方面的知識薄弱,同時也使我體會到軟件編程在實際硬件電路連接中的重要作用,軟件編程的使用使硬件開銷大大減少,同時也使設(shè)計更加的簡潔易于控制,在今后的學(xué)習(xí)中我們會加強軟件編程方面知識的積累和運用,會更加注重理論與實際的結(jié)合。 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在同學(xué)們的幫助下并且查閱了很多相關(guān)的資料才得以解決。通過畫程序方框圖可以使我們對所要完成的每一步任務(wù)都有一個很清楚的思路,讓我們明白每一步的任務(wù),同時在程序測試的過程中也有利于查錯。這次智能綜合設(shè)計歷時接近一個月,在這期間可以說是苦多于甜,但是可以學(xué)到很多很多的東西,不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多書本上沒有接觸過的知識。8 總結(jié)與體會綜合上述各部分的測試結(jié)果,本設(shè)計完成了課程設(shè)計的大多數(shù)的要求。不過此設(shè)計也有很多不足之處,測量時要在容器的底部開口才能讀出壓力,還可以加入報警系統(tǒng),當(dāng)測量超出范圍時,系統(tǒng)自動報警。誤差主要就是來至壓力傳感器的輸出與ADC0804的輸入有一定的差距,這主要是由于整個系統(tǒng)連接起來過后傳感器的內(nèi)部電阻將其輸出電壓拉下來了,我們在以后對系統(tǒng)加入電壓跟隨器來改善。實現(xiàn)了將二進制的量化轉(zhuǎn)換為以厘米為單位的ASCLL標(biāo)準(zhǔn)字符串形式傳送到PC機。 調(diào)試總結(jié)通過調(diào)試我們發(fā)現(xiàn)調(diào)試時最費時間的藥考慮很多因素,調(diào)試過程要將整個系統(tǒng)組合起來看工作是否正常,能否達(dá)到基本的要求。數(shù)據(jù)處理則是求斜率的問題,每一個高度對應(yīng)一個斜率主要為后面的上位機顯示液面高度的VB程序找一個理論的依據(jù)。: 液面高度的測量數(shù)據(jù)這些數(shù)據(jù)都是在室內(nèi)測得的,在室溫30度左右測得。這說明AD的線性度還是比較高的。6 系統(tǒng)功能及指標(biāo)參數(shù)本次設(shè)計的智能液位傳感器主要能實現(xiàn)以下功能:(1) 壓力傳感器采用的測量液體的壓強的方式來實現(xiàn)測量液面高度;(2) 設(shè)計的單片機系統(tǒng)能控制ADC對壓力傳感器的輸出電壓信號進行采集并轉(zhuǎn)換;(3) 測量范圍能基本達(dá)到設(shè)計的要求在01米的范圍內(nèi)誤差較小;(4) 能在上位機上直觀的顯示出測量的液面高度; 系統(tǒng)各部分的測試參數(shù) AD部分調(diào)試參數(shù)在調(diào)通AD后我們對AD的數(shù)據(jù)采集功能進行了測試,: 圖 AD的采集數(shù)據(jù)與給定的輸入數(shù)據(jù)這幾組數(shù)據(jù)都是在室內(nèi)測得的,都是在室溫接近30度的情況測得。VB加的部分程序如下:For k = 0 To 19 summ = summ + e(k) Next k c = summ / 20 summ = 0 i = (c / 255) * 10 壓力傳感器部分傳感器部分主要我們是購買的成品回來,在調(diào)試時主要是檢驗其是否到達(dá)要求,輸出的線性度如何。后來經(jīng)過老師對數(shù)字濾波的詳細(xì)講解,我們下來也查閱了于數(shù)