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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

9、def unsigned char 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 del

10、ay()/延時(shí)子函數(shù)uint16 i,K;for(i=1;i>0;i-)for(K=50;K>0;K-);/*void delayus()unsigned int i=1000;while(i>0)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;A

11、DDR1=0;ADDR2=1;ADDR3=1;j+;P0=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(); /

12、給start一個(gè)上升沿脈沖,將內(nèi)部所有寄存器清零st=1;delayus();st=0;delayus();/給start一個(gè)下降沿脈沖,開啟AD轉(zhuǎn)換while(!eoc);/轉(zhuǎn)換結(jié)束標(biāo)志 oe=1; /允許輸出轉(zhuǎn)換后的數(shù)據(jù) delayus();temp1=P1; /定義temp,用于表示從ADC來的數(shù)據(jù)的各個(gè)位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();七、設(shè)計(jì)體會(huì)

13、與收獲:課程設(shè)計(jì)已經(jīng)結(jié)束了,總的結(jié)果是我們組的結(jié)果沒有做出來。實(shí)話說,我覺得我們組盡力了,想進(jìn)各種辦法都沒有結(jié)果。我對(duì)結(jié)果是一個(gè)重視的人,當(dāng)時(shí)心情低落。在這次課程設(shè)計(jì)中,我是組長(zhǎng),結(jié)果沒有出來,我覺得不是知識(shí)的缺乏,而是合作不佳,任務(wù)倒是分配好了,但是各份工作之間的銜接不是很融洽。這可能就是結(jié)果沒有出現(xiàn)的結(jié)癥。對(duì)于老師所說的分發(fā)成果的例子,我覺得這樣(27%、25%、25%、23%)最好,最高的是思想和框架的設(shè)計(jì),其次是軟件,再次是焊接電路板的,最后是整體檢測(cè)結(jié)果的。這個(gè)分配可能不符合我們組情況,因?yàn)樽詈笠徊娇ㄗ≌_結(jié)果。所以針對(duì)這種情況,每個(gè)人在原有的基礎(chǔ)上都減少0.5%,共計(jì)2個(gè)百分點(diǎn),作

14、為自由分配項(xiàng)。當(dāng)然這個(gè)權(quán)利在我的手里,可以根據(jù)每個(gè)人的情況決定5個(gè)百分點(diǎn)的分配(可以是一個(gè)人的,也可以是兩個(gè)人的,當(dāng)然更可以是三個(gè)或者整個(gè)團(tuán)隊(duì)均分)。那么最后的分配方式就是:整體思想和框架設(shè)計(jì)26.5%;軟件設(shè)計(jì)24.5%;硬件焊接布線24.5%;檢測(cè)調(diào)試22.5%;自由分配點(diǎn)2%。:在這次課程設(shè)計(jì)中,我主要負(fù)責(zé)檢測(cè)調(diào)試的任務(wù)。對(duì)于這次課程設(shè)計(jì),總體感覺挺遺憾的,因?yàn)槲覀兘M沒有出結(jié)果,對(duì)此,我覺得我的責(zé)任很大。在硬件焊接完成并下載進(jìn)去程序后,發(fā)現(xiàn)結(jié)果出不來。在反復(fù)研究程序和仿真圖之后,發(fā)現(xiàn)兩者都沒有問題,然后又多次檢查板子,測(cè)試是否是焊接的問題,發(fā)現(xiàn)焊接也沒有問題,之后就陷入了困境。然后又經(jīng)過

15、反復(fù)檢測(cè)程序和硬件焊接,解決了數(shù)碼管顯示數(shù)字暗并且不穩(wěn)定的問題,但最后還是很遺憾的沒有出結(jié)果。但是,在這次課程設(shè)計(jì)中,我還是學(xué)到了很多東西,不僅是關(guān)于數(shù)電、模電、單片機(jī)方面的,還有關(guān)于團(tuán)隊(duì)合作方面的。相信這些一定會(huì)是我以后工作和學(xué)習(xí)中的財(cái)富?。涸谶@次課程設(shè)計(jì)中,我主要負(fù)責(zé)了程序設(shè)計(jì)和ISIS仿真模塊的任務(wù)。在最初的時(shí)候,我其實(shí)不知道如何下手,經(jīng)過全組的討論,我整體的把握了設(shè)計(jì)的方向與脈絡(luò)。在此之后我自己在網(wǎng)上搜集資料,觀看有關(guān)的教學(xué)視頻,翻查教學(xué)課本,補(bǔ)充了這次課程設(shè)計(jì)需要用到的相關(guān)知識(shí)。在ISIS中把電路搭好以后,我先從顯示入手,編寫簡(jiǎn)單程序,讓數(shù)碼管顯示預(yù)期的效果,之后再慢慢一步一步往下走

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論