水深測量系統(tǒng)[共12頁]_第1頁
水深測量系統(tǒng)[共12頁]_第2頁
水深測量系統(tǒng)[共12頁]_第3頁
水深測量系統(tǒng)[共12頁]_第4頁
水深測量系統(tǒng)[共12頁]_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 西安郵電大學單片機課程設計報告書液位監(jiān)測系統(tǒng)專業(yè):班級:姓名(學號): 液位監(jiān)測系統(tǒng)一、設計目的1. 采用單片機、ADC0809、壓力傳感器為主要器件,設計水深檢測系統(tǒng);2. 通過本次課程設計加深對單片機課程的全面認識和掌握,對單片機課程的應用進一步的了解;3. 掌握定時器、外部中斷的設置和編程原理;4. 通過此次課程設計能夠將單片機軟硬件結合起來,對程序進行編輯,校驗。二、設計要求1.壓力傳感器輸出為4-20mA電流信號,通過轉換電路把其轉換為電壓信號;2.處理模擬信號并顯示其實際水的深度數(shù)值。三、設計器材器件個數(shù)器件個數(shù)STC89C521晶振(12M)1ADC0809133PF電容1RE

2、SPACK-811K電阻19012型三極管410K電阻1開關1液位傳感器14位數(shù)碼管1底座1四、設計方案及分析1. 單片機最小系統(tǒng)電路單片機最小系統(tǒng)電路如圖1所示,由主控器STC89C52、時鐘電路和復位電路三部分組成。單片機STC89C52作為核心控制器控制著整個系統(tǒng)的工作,而時鐘電路負責產(chǎn)生單片機工作所必需的時鐘信號,復位電路使得單片機能夠正常、有序、穩(wěn)定地工作。圖1 單片機最小系統(tǒng)2. 時鐘電路STC89C52 單片機芯片內(nèi)部設有一個由反向放大器所構成的振蕩器。19腳(XTAL1)為振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端,18腳(XTAL2)為振蕩器反相放大器的輸出端。在XTAL1和

3、XTAL2引腳上外接定時元器件,內(nèi)部振蕩電路就會產(chǎn)生自激振蕩。本系統(tǒng)采用的定時元器件為石英晶體(晶振)和電容組成的并聯(lián)諧振回路。晶振頻率為12MHz,電容大小為33pF,時鐘電路如圖所示。圖2 時鐘電路(晶振)3. 復位電路STC89C52的復位是由外部的復位電路來實現(xiàn)的,復位電路通常采用上電復位和按鈕復位兩種方式,本設計采用的是最按鈕復位電路,其電路圖如圖所示。圖3 復位電路4數(shù)碼管顯示電路LED又稱為數(shù)碼管,它主要由8段發(fā)光二極管組成的不同組合,可以顯示ag為數(shù)字和字符顯示段,h段為小數(shù)點顯示,通過ag為7個發(fā)光段的不同組合,可以顯示09和AF共16個數(shù)字和字母。LED可以分為共陰極和共陽

4、極兩種結構。共陽極結構即把8個發(fā)光二極管陽極連在一起。這種裝入數(shù)碼管中顯示字形的數(shù)據(jù)稱字形碼,又稱段選碼。本設計用到的是LED顯示器靜態(tài)顯示方式,其電路如圖所示是發(fā)光二極管顯示器(LED)的結構、工作原理及接口電路。圖4 數(shù)碼管電路五、問題分析與解決方法問題1數(shù)碼管開始顯示暗并且數(shù)字總是在跳動。 這個問題的結癥嚴格意義上說沒有得出答案。當時數(shù)碼管(共陽)位控,我們用的是9014號PNP型三極管,現(xiàn)象時顯示結果暗淡并且跳動。我們沒有懷疑三極的問題而是把目標一致對準焊接電路,反復檢查沒有問題(檢查方法:該通的地方通,不該通的地方不通),即使這樣也沒有解決問題,最后根據(jù)數(shù)碼管顯示暗淡一個現(xiàn)象,就猜想

5、通過字樣各段的電流小。試著調整三極管的放大倍數(shù),將一個9014型三極管替換成9012型,結果成功了。最后,我試著測試了一下9012和9014的方法倍數(shù),結果顯示9012的放大倍數(shù)比9014的大100左右。問題2 即使更換了三極管,數(shù)碼管顯示數(shù)字仍然在不停地閃動。這個問題在硬件上已經(jīng)改變了,相信硬件在顯示方面不會出現(xiàn)問題,只能把目標哦對準軟件的方面。最初的主程序沒有防止電壓微小跳動而導致顯示轉換結果不穩(wěn)定的,最懂顯示結果微小跳動。程序每走一遍,數(shù)碼管就顯示結果就刷新一遍。那么我們就想,在電壓輸入電相同的情況下,那么記錄上次的轉換結果,如果本次轉換結果與上次的相同,就不需要刷新顯示數(shù)據(jù),反之,則刷

6、新。這樣的想法,促使我們使用了如下關鍵語,這樣顯示數(shù)組a不需要每次刷新,只是在數(shù)據(jù)變化的情況下刷新。Temp1=P1;/P1端口讀的是AD0809的轉換結果if(temp!=temp1)temp=temp1;a3=temp/1000;a2=(temp/100)%10;a1=(temp/10)%10;a0=temp%10;問題3.正確顯示范圍是0255,但是一直顯示的是85165。這個問題沒有找到確定的答案。最初懷疑軟件,因為硬件電路在開始時已經(jīng)仔細檢出過,而且是不同的人獨立檢查的(這樣利于發(fā)現(xiàn)問題,防止可能已犯誤人把其他人引入定勢思維),但是最終沒有發(fā)現(xiàn)問題,只能把目光投向軟件。軟件中AD08

7、09工作需要整脈沖,上升沿是各個寄存器復位,下降沿AD0809開始工作。我們給模擬正脈沖的程序加入了延時程序(st=0;delayus();st=1;delayus();st=0;delayus();),但是這樣也沒有改變結果。問題4. 檢查硬件發(fā)現(xiàn)可能是AD0809沒有工作,但是一直找不出來問題。這個問題從始至終都沒有找到確切的答案,只是有基于上個問題的一些想法。上個問題中,模擬輸入電壓在接入5V,數(shù)碼管顯示165,在接入0V顯示65,顯示結果不是很穩(wěn)定,但是顯示如上結果的概率在95%。最初我們猜想是其他問題,因為輸入5V和0V數(shù)轉換的結果在變化,說明數(shù)碼管工作了。在過少次檢查機想象中,都沒

8、能找到問題。我們就試著改變了輸入模擬電壓,用兩個相同的電阻分壓,得到了2.5V模擬輸入電壓,但令我們驚訝的是現(xiàn)實結果沒有變,而是接近5V的顯示結果,甚至一樣。那么,AD0809一定沒有工作,顯示的只是初始化得亂碼。我們再次仔細檢查了電路,沒有發(fā)現(xiàn)問題。經(jīng)過我們小組幾次討論,得出如下結論:AD0809本身可能就是壞的!六、設計結果1.方案圖電壓前置放大電路 模數(shù)轉換數(shù)碼管顯示單片機處理液位傳感器2.總體電路原理圖3.軟件流程圖數(shù)碼管顯示開始數(shù)碼管的初始化定時器中斷、0809初始化讀取0809轉換結果N繼續(xù)等待0809轉換結果結束4.軟件設計#include typedef unsigned ch

9、ar uint8;typedef unsigned int uint16;typedef unsigned long uint32;uint8 a5;uint8 j=0;sbit eoc=P26;sbit oe=P25;sbit st=P27;sbit ADDR0=P20;sbit ADDR1=P21;sbit ADDR2=P22;sbit ADDR3=P23;sbit clock=P24;bit flag=0;code uint8 table=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90;void delay()/延時子函數(shù)uint1

10、6 i,K;for(i=1;i0;i-)for(K=50;K0;K-);/*void delayus()unsigned int i=1000;while(i0)i-;*/void diplay()switch(j)case 0:ADDR0=1;ADDR1=1;ADDR2=1;ADDR3=0;j+;P0=tablea0;delay();/顯示第一位數(shù)碼管break;case 1:ADDR0=1;ADDR1=1;ADDR2=0;ADDR3=1;j+;/顯示第二位P0=tablea1;delay();break;case 2:ADDR0=1;ADDR1=0;ADDR2=1;ADDR3=1;j+;P

11、0=tablea2;delay();/顯示第三位break;case 3:ADDR0=0;ADDR1=1;ADDR2=1;ADDR3=1;j=0;P0=tablea3;delay();/顯示第四位break;default:break;void timer0() interrupt 1 flag=flag;clock=flag; main() uint16 temp1=P1,temp=P1; TMOD=0x02; TH0=0xff;TL0=0xff; TR0=1; EA=1; ET0=1; while(1)st=0;delayus(); /給start一個上升沿脈沖,將內(nèi)部所有寄存器清零st=

12、1;delayus();st=0;delayus();/給start一個下降沿脈沖,開啟AD轉換while(!eoc);/轉換結束標志 oe=1; /允許輸出轉換后的數(shù)據(jù) delayus();temp1=P1; /定義temp,用于表示從ADC來的數(shù)據(jù)的各個位oe=0; delayus();if(temp!=temp1)temp=temp1; a0=temp%10; a1=(temp/10)%10;a2=(temp/100)%10;a3=temp/1000;diplay();diplay();diplay();diplay();七、設計體會與收獲:課程設計已經(jīng)結束了,總的結果是我們組的結果沒有

13、做出來。實話說,我覺得我們組盡力了,想進各種辦法都沒有結果。我對結果是一個重視的人,當時心情低落。在這次課程設計中,我是組長,結果沒有出來,我覺得不是知識的缺乏,而是合作不佳,任務倒是分配好了,但是各份工作之間的銜接不是很融洽。這可能就是結果沒有出現(xiàn)的結癥。對于老師所說的分發(fā)成果的例子,我覺得這樣(27%、25%、25%、23%)最好,最高的是思想和框架的設計,其次是軟件,再次是焊接電路板的,最后是整體檢測結果的。這個分配可能不符合我們組情況,因為最后一步卡住正確結果。所以針對這種情況,每個人在原有的基礎上都減少0.5%,共計2個百分點,作為自由分配項。當然這個權利在我的手里,可以根據(jù)每個人的

14、情況決定5個百分點的分配(可以是一個人的,也可以是兩個人的,當然更可以是三個或者整個團隊均分)。那么最后的分配方式就是:整體思想和框架設計26.5%;軟件設計24.5%;硬件焊接布線24.5%;檢測調試22.5%;自由分配點2%。:在這次課程設計中,我主要負責檢測調試的任務。對于這次課程設計,總體感覺挺遺憾的,因為我們組沒有出結果,對此,我覺得我的責任很大。在硬件焊接完成并下載進去程序后,發(fā)現(xiàn)結果出不來。在反復研究程序和仿真圖之后,發(fā)現(xiàn)兩者都沒有問題,然后又多次檢查板子,測試是否是焊接的問題,發(fā)現(xiàn)焊接也沒有問題,之后就陷入了困境。然后又經(jīng)過反復檢測程序和硬件焊接,解決了數(shù)碼管顯示數(shù)字暗并且不穩(wěn)

15、定的問題,但最后還是很遺憾的沒有出結果。但是,在這次課程設計中,我還是學到了很多東西,不僅是關于數(shù)電、模電、單片機方面的,還有關于團隊合作方面的。相信這些一定會是我以后工作和學習中的財富?。涸谶@次課程設計中,我主要負責了程序設計和ISIS仿真模塊的任務。在最初的時候,我其實不知道如何下手,經(jīng)過全組的討論,我整體的把握了設計的方向與脈絡。在此之后我自己在網(wǎng)上搜集資料,觀看有關的教學視頻,翻查教學課本,補充了這次課程設計需要用到的相關知識。在ISIS中把電路搭好以后,我先從顯示入手,編寫簡單程序,讓數(shù)碼管顯示預期的效果,之后再慢慢一步一步往下走。在此期間,我也遇到了一些問題,比如四個數(shù)碼管只有三個

16、顯示,我在不斷調試后添加了一條switch語句,就解決了這一問題。再比如ADC0809的時鐘脈沖我不知道如何在硬件中給出,請教了老師以后,知道了可以用上課時老師講過的定時和中斷來實現(xiàn)。在最后仿真順利完成,隊友們開始搭建硬件電路。電路完成,又出現(xiàn)了一些問題,排除線路等硬件的問題,我開始修改程序,后來發(fā)現(xiàn),由于最后顯示模塊刷新的太慢造成了顯示的不穩(wěn)定,于是我又加入了三個display(),形成四個刷新模塊一起順序執(zhí)行,就順利的一次性將四個數(shù)碼管的顯示刷新完畢,從而解決了這一問題。雖然在最后我們沒有得到想要的最終結果,但是我在這次課程設計中,學到很多,我知道了如何在調試中發(fā)現(xiàn)錯誤,解決問題,學會了如何團隊合作,如何在仿真與實際不一致的情況下用實際電路反觀程序,調整問題。這次課程設計的收獲,將成為我以后學習與工作的寶貴財富。:通過這次課程設計,我們學習了一些關于單片機和傳感器方面的

溫馨提示

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

評論

0/150

提交評論