2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  電熱水器水溫水位控制系統(tǒng)設(shè)計</p><p><b>  摘 要</b></p><p>  本系統(tǒng)是為電熱水器水溫水位控制系統(tǒng)而設(shè)計的。在電熱水器溫控系統(tǒng)中,水溫和水位傳感器起著舉足輕重的作用。系統(tǒng)的分析了耐高溫電容式液位傳感器分別檢測水溫和水位的原理,以 AT89S51單片機為核心,實現(xiàn)對水溫和水位、上水測量、顯示、報警等功能,并以電磁閥、繼

2、電器為閥門開關(guān)全自動加熱、上水。整個系統(tǒng)精度高,耐高溫性強,易于調(diào)整,測試方便。測試結(jié)果表明,誤差小于2%,達(dá)到設(shè)計要求。</p><p>  關(guān)鍵詞:AT89S51單片機,水溫水位,傳感器,檢測與控制</p><p>  The System For control The Temperature And Level Of The Electric Water Heater</p&

3、gt;<p><b>  ABSTRACT</b></p><p>  This system is design to measure and control the water lever and temperature for the water-heaer.It’s composed of two sensor (a digital chip DS18B20 and a

4、 lever sensor),display,buzzer and so on,all these component are control of the core chip AT89S51. This system can display the lever and the temperature in the water_case .In addition,it will be heaet or add water automa

5、tic through electromagnetism vave or relay which are controled by AT89S51. The whole system is easy to adjust.It is proved to </p><p>  Key Words: AT89S51,control, seasor,temperature and level</p><

6、;p><b>  目錄</b></p><p><b>  第1章緒論1</b></p><p>  第2章設(shè)計思路及要求2</p><p>  2.1本設(shè)計的目的和意義2</p><p>  2.2控制系統(tǒng)的設(shè)計要求2</p><p>  2.3本設(shè)

7、計實現(xiàn)思路及方法2</p><p>  第3章硬件設(shè)計4</p><p>  3.1控制系統(tǒng)組成及工作原理4</p><p>  3.1.1 系統(tǒng)結(jié)構(gòu)4</p><p>  3.1.2 控制系統(tǒng)組成5</p><p>  3.2單片機概述6</p><p>  3.3器件介紹

8、7</p><p>  3.3.1 AT89C51單片機7</p><p>  3.3.2 數(shù)碼管顯示8</p><p>  3.4 AT89C51單片機的最小系統(tǒng)9</p><p>  3.5AT89C51單片機時鐘電路10</p><p>  3.6AT89S51單片機復(fù)位電路10</p&g

9、t;<p>  第4章單元模塊設(shè)計12</p><p>  4.1水位檢測模塊12</p><p>  4.2溫度檢測模塊12</p><p>  4.3鍵盤模塊13</p><p>  4.4顯示模塊14</p><p>  第5章軟件設(shè)計15</p><p&

10、gt;  5.1軟件設(shè)計原理及設(shè)計所用工具15</p><p>  5.2顯示子程序16</p><p>  5.2.1 系統(tǒng)正常工作子程序16</p><p>  5.2.2 設(shè)定預(yù)置溫度子程序17</p><p>  5.2.3 設(shè)定預(yù)置水位子程序18</p><p>  第6章系統(tǒng)調(diào)試與原理圖1

11、9</p><p>  第7章總結(jié)與體會20</p><p><b>  參考文獻(xiàn)21</b></p><p><b>  附錄122</b></p><p><b>  附錄223</b></p><p><b>  附錄334&

12、lt;/b></p><p><b>  致謝35</b></p><p>  作品(軟件)使用說明書36</p><p><b>  緒論</b></p><p>  近年來,隨著用電的普及和燃?xì)馊加蛢r格上漲的影響,電熱水器的市場上升趨勢更加明顯,新生力量快速電熱水器以其加熱快速、體積小

13、巧、安全節(jié)能的明顯優(yōu)勢在市場中一枝獨秀倍受矚目。 </p><p>  據(jù)了解,近年來我國熱水器的銷量每年以25%的速度上升,而整個熱水器市場上,燃?xì)鉄崴?、太陽能熱水器頹勢未改,繼續(xù)出現(xiàn)負(fù)增長,電熱水器陣營已經(jīng)占到了約60%的市場比例,其中快速電熱水器幾何式的發(fā)展勢態(tài)拉動整體熱水器市場持續(xù)走高,。</p><p>  數(shù)據(jù)顯示,目前快速電熱水器行業(yè)的年增長率高達(dá)200%多,是家電行業(yè)增長

14、最快的品類,2008年國內(nèi)快速電熱水器的市場容量增長到66萬臺。預(yù)計未來3至5年內(nèi),快速電熱水器將全面迎來爆炸式的增長,超過所有傳統(tǒng)熱水器成為市場的主導(dǎo)產(chǎn)品。業(yè)內(nèi)專家分析,國家住宅用電標(biāo)準(zhǔn)的提高和全國電網(wǎng)的大規(guī)模建設(shè)改造,將為快速電熱水器的普及使用帶來良好的發(fā)展契機.</p><p>  據(jù)國內(nèi)著名家電品牌營銷企劃公司及專家分析預(yù)測,2011年,即熱式電熱水器成為最具投資價值的新品類商機之一,理由是:從市場需求量

15、上來講,目前國內(nèi)即熱式電熱水器年需求量在35萬臺~40萬臺,中國即熱式電熱水器市場銷售比率只占5%,而國際市場達(dá)50%以上。這一現(xiàn)象與燃?xì)馐綗崴骱蛢λ诫姛崴魇袌龈咚俪砷L前的征兆一致,意味著快速電熱水器市場將迎來空前暴漲的良機。據(jù)預(yù)測,未來5年,中國市場即熱式電熱水器的銷售比率將達(dá)到40%。</p><p><b>  設(shè)計思路及要求</b></p><p>&l

16、t;b>  本設(shè)計的目的和意義</b></p><p>  本設(shè)計具有很強的實用性,用成本低廉的電阻式傳感器以及電極配以單片機技術(shù)對生產(chǎn)實際中的電熱水器的水溫的控制以及水位的顯示。本裝置電路簡單、實用性強、性價比高、水溫控制靈活,水位顯示直觀醒目??蓮V泛應(yīng)用于家庭生活對電熱水器的水位顯示與水溫控制。具有良好的市場前景。</p><p><b>  控制系統(tǒng)的設(shè)計

17、要求</b></p><p>  1、能夠根據(jù)水位和水溫兩個條件控制是否需要進水,每次只進整個水箱的四分之一水量,也可以在手動狀態(tài)下自由進水(上滿時自由停止)或停止進水。</p><p>  2、控制系統(tǒng)具有手動和自動切換功能;</p><p>  3、具有水溫和水位顯示功能;</p><p>  4、具有進水超水位和超水溫報警指

18、示;</p><p>  5、用水時若水溫達(dá)不到設(shè)置值時,可手動起動加熱裝置,這樣可在很大程度上節(jié)約電能;</p><p>  6、用水時可自由調(diào)節(jié)水溫;</p><p>  7、控制系統(tǒng)具體管道排空功能,這樣防止冬天時因水管內(nèi)有積水而在夜間凍裂水管。</p><p>  本設(shè)計實現(xiàn)思路及方法</p><p>  水位

19、由潛入儲水容器不同深度的水位電極和潛入容器底部的公共電極(導(dǎo)線)檢測;并由四個綠色LED發(fā)光二極管顯示:若無水則綠燈不亮;若有四分之一儲水箱的水亮一盞綠燈;通過觀察綠燈點亮的數(shù)量可識別水位的高低,這里取4段顯示,也可根據(jù)需要進行增減。水溫由四個LED數(shù)碼管顯示,前三個數(shù)碼管顯示的為溫度最后一個數(shù)碼管我們只用到了四段碼顯示為溫度的符號C,水溫有效值最多可顯示為99.9℃。(+)單片機控制。</p><p><

20、b>  硬件設(shè)計</b></p><p>  控制系統(tǒng)組成及工作原理</p><p><b>  系統(tǒng)結(jié)構(gòu)</b></p><p>  系統(tǒng)組成 : 如圖3.1.1所示,本系統(tǒng)主要由控制器、自動控制閥、手動控制閥、水位檢測電極、水溫檢測傳感器、電阻加熱絲、儲水箱等組成</p><p>  控制器:主要通

21、過里面的電磁閥控制YV1和YV2的通斷,控制水溫檢測傳感器檢測水溫、控制水位檢測傳感器檢測水在水箱中的位置以及控制電阻加熱絲加熱。自動控制閥:主要通過控制器控制,當(dāng)水箱中的水的實際溫度大于所設(shè)置的溫度時,自動閥就自動打開往水箱中上水,直到上到上一個目標(biāo)水位為止。 </p><p>  手動控制閥:當(dāng)自動閥損壞時,可以通過手動閥進行上下水。</p><p>  水位檢測電極:主要用來

22、檢測水箱中水的位置,主要把水箱分成四等分,一共有五個電極,接地的電極放在最水箱的最底下,其余分別放在四等分點上,比如當(dāng)水箱中的水在第一等分和第二等分之間,則顯示水箱中有四分之一的水,當(dāng)超過第二等分,則顯示二分之一的水。</p><p>  水溫檢測傳感器:主要用來檢測水箱中水的實際溫度。</p><p>  電阻加熱絲:主要用來加熱水箱中水,使其達(dá)到用戶所需要的溫度。 </p>

23、<p>  太陽能熱水器利用微機控制主要有以下幾種控制功能:晨水加熱控制、溫水循環(huán)控制、冷水集熱控制、水箱加熱控制。</p><p><b>  控制系統(tǒng)組成</b></p><p>  電熱水器控制系統(tǒng)的組成如圖3.1.2所示。整個系統(tǒng)以AT89C51單片機為核心,對水溫、水位等參數(shù)進行智能檢測和顯示,讀取水流開關(guān)、排空閥門的狀態(tài),經(jīng)鍵盤操作和單片機內(nèi)

24、部運算比較,控制相應(yīng)得執(zhí)行機構(gòu)進行通、斷電;進行防漏電、防干燒等保護,并進行相應(yīng)得聲光報警。</p><p>  對水箱水溫信號的檢測采用DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器DS18B20,它具有3引腳TO-92小體積封裝形式,CPU只需一根端口線就能與DS18B20通信控制讀取溫度值。水流開關(guān)信號的檢測采用開關(guān)式傳感器,其內(nèi)部是一個霍爾開關(guān),排空閥是一個帶行程開關(guān)的球型閥,由5W交流伺服電機帶動,每旋轉(zhuǎn)9

25、0度輸出一個開關(guān)信號,排空閥的開閉狀態(tài)對應(yīng)于該開關(guān)信號。上水電磁閥采用12V直流單項電磁閥;輔助電加熱體的通斷電采用繼電器控制;排空閥由36V(5W)交流伺服電機帶動,由排空閥的開閉狀態(tài)信號確定并通過繼電器控制交流伺服電機電源通斷電。</p><p>  圖3.1.2控制系統(tǒng)組成</p><p><b>  單片機概述</b></p><p>

26、  圖3.2時鐘電路與復(fù)位電路</p><p>  圖3中,晶體振蕩器的頻率選6MHZ,復(fù)位電路采用上電復(fù)位,電路參數(shù)如圖中所示,以滿足系統(tǒng)復(fù)位時兩個機器周期的高電平的要求。由于CPU的內(nèi)部已含有程序存儲器,所以EA引腳接高電平。</p><p>  該水位自動顯示控制器采用AT89C51單片機,機內(nèi)有一高增益反相放大器,構(gòu)成自激振蕩電路,振蕩頻率取6MHz,外接6MHz晶振,兩個電容C1

27、、C2取20pF,以便于起振蕩的作用。右圖中XTAL1為內(nèi)部時鐘工作電路的輸入,XTAL2為來自反向振蕩器的輸出</p><p>  該水位自動顯示控制器采用上電復(fù)位電路,由R14、C3構(gòu)成復(fù)位電路,在上電瞬間,產(chǎn)生一個脈沖,AT89C51將復(fù)位。為保證可靠復(fù)位,脈沖寬度應(yīng)大于兩個機器周期,這取決于R、C時間長數(shù)。取電容C=10uF,電阻R=10K。</p><p><b>  

28、器件介紹</b></p><p>  AT89C51單片機</p><p>  AT89C51是一個低功耗高性能CMOS 8位單片機,4k Bytes Flash只讀程序存儲器(ROM),512 Bytes 內(nèi)部數(shù)據(jù)存儲器(RAM),該微處理器采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),引腳兼容80C51和80C52芯片,片內(nèi)的Flash存儲

29、器可以像常規(guī)程序存儲器一樣進行燒寫,AT89S51片內(nèi)總共有256字節(jié)的用戶數(shù)據(jù)區(qū),而128字節(jié)的內(nèi)部擴展數(shù)據(jù)區(qū)需通過清SFR(8EH)的位1并用MOVX指令訪問,片內(nèi)置通用8位中央處理器和Flash存儲單元,另一個256BytesRAM區(qū)與ATMEL之AT89系列8052兼容的單片機是一致的,AT89C51結(jié)合通用的8位微處理器和Flash存儲技術(shù)構(gòu)成功能強大單片微處理器,可提供許多高性能低價位的系統(tǒng)控制應(yīng)用場合。</p>

30、<p>  AT89C51主要特點: 40個引腳,32kBytes的程序存儲器,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,內(nèi)置時鐘振蕩器,其Flash存儲器,可反復(fù)擦寫1000次的Flash存儲器可有效地降低開發(fā)成本。軟件設(shè)置電 源省電模式,睡眠其間,定時/計數(shù)器,串行口和中斷口均停止工作,RAM中的數(shù)據(jù)被“凍結(jié)”,直到下次被中斷激活或硬件復(fù)位方可恢復(fù)工

31、作。</p><p>  圖3.7.1 AT89C51單片機</p><p><b>  數(shù)碼管顯示</b></p><p>  由單片機的定時器To做16位計數(shù)器(為便于數(shù)據(jù)處理,這里只用低8位計數(shù)值,即寄存器TL0中的值)。一邊記錄脈沖數(shù)量,一邊以厘米為單位由四位數(shù)碼管顯示出來。四位數(shù)碼管采用動態(tài)掃描方式顯示。</p><

32、;p>  長度計量儀采用0.5英寸共陽極連接的LED數(shù)碼管。LED數(shù)碼管由發(fā)光二極管作為顯示字段的數(shù)碼型顯示器件。下圖為LED圖數(shù)碼管外形和引腳圖,其中7只發(fā)光二極管分別對應(yīng)a-g筆段,構(gòu)成“日”字形,另一只發(fā)光二極管DP作為小數(shù)點,因此這種LED顯示器稱為八段數(shù)碼管。共陽極型LED數(shù)碼管,是將各段發(fā)光二極管的陽極連在一起,作為公共端com,應(yīng)接高電平。a——g、Dp各筆段中,某筆段接低電平時發(fā)光,高電平時不發(fā)光。為了節(jié)省單片機I

33、/O口的數(shù)量,將各位數(shù)碼管的a——g對應(yīng)筆畫并聯(lián)起來分別與單片機的P2.0——P2.7引腳連接。顯示時,由P2口依次輸出各位數(shù)字的筆段碼,并依次由P1.0、P1.1、P1.2、P1.3輸出低電平位選信號接通數(shù)碼管的公共端,輪流進行,循環(huán)不止,由于循環(huán)的頻率較高(約50Hz),加上人眼的視覺暫留,既保障了各位數(shù)字的對應(yīng)顯示,又不會出現(xiàn)閃爍現(xiàn)象,實現(xiàn)動態(tài)掃描顯示。 </p><p>  圖3.7.2 LED數(shù)碼管

34、</p><p>  AT89C51單片機的最小系統(tǒng) </p><p>  所謂最小系統(tǒng),即指使單片機能正常工作的所需的最少的電路,即應(yīng)包含CPU及輔助電路、ROM、RAM及I/O端口等電路。由于AT89C51內(nèi)部已經(jīng)包含4KB的Flash Memory程序存儲器,所以無需再擴展片外程序存儲器。在AT89C51的基礎(chǔ)上,加復(fù)位電路、時鐘電路、EA引腳信號及電源即可。結(jié)合資料及所學(xué)過的內(nèi)容

35、,得到如圖3.4所示的單片機最小系統(tǒng)。</p><p>  圖3-6中,晶體振蕩器的頻率選6MHZ,復(fù)位電路采用上電復(fù)位,電路參數(shù)如圖中所示,以滿足系統(tǒng)復(fù)位時兩個機器周期的高電平的要求。由于CPU的內(nèi)部已含有程序存儲器,所以EA引腳接高電平。</p><p>  AT89C51單片機時鐘電路</p><p>  該水位自動顯示控制器采用AT89C51單片機,機內(nèi)有一

36、高增益反相放大器,構(gòu)成自激振蕩電路,振蕩頻率取6MHz,外接6MHz晶振,兩個電容C1、C2取20pF,以便于起振蕩的作用。</p><p>  右圖中XTAL1為內(nèi)部時鐘工作電路的輸入,XTAL2為來自反向振蕩器的輸出。</p><p>  AT89S51單片機復(fù)位電路</p><p>  該水位自動顯示控制器采用上電復(fù)位電路,由R14、C3構(gòu)成復(fù)位電路,在上電瞬

37、間,產(chǎn)生一個脈沖,AT89S51將復(fù)位。為保證可靠復(fù)位,脈沖寬度應(yīng)大于兩個機器周期,這取決于R、C時間長數(shù)。取電容C=10uF,電阻R=10K。</p><p><b>  單元模塊設(shè)計</b></p><p><b>  水位檢測模塊</b></p><p>  把儲水箱大致分為四個等份,水位由潛入太陽能熱水器的儲水箱不

38、同深度的水位電極和潛入儲水箱底部的公共電極(導(dǎo)線)進行檢測;由單片機依次使各水位電極呈現(xiàn)高電平,由公共電極所接的三極管進行電 位轉(zhuǎn)換,水位到達(dá)的電極,轉(zhuǎn)換電位為低(0);水位沒有到達(dá)的電極,轉(zhuǎn)換電位為高(1);每檢測一位便得到一位數(shù)據(jù),5個電極檢測一遍以后便得到了5個串行數(shù)據(jù),然后把這5個數(shù)據(jù)轉(zhuǎn)化為字節(jié)一路送發(fā)光二極管;在這里我們可以用發(fā)光二極管亮的盞數(shù)來顯示水位的高低。(若沒有發(fā)光二極管亮則表示箱內(nèi)沒有水或者只有少量的水,若有一個發(fā)光

39、二極管燈亮則表示箱內(nèi)有四分之一箱的水,以此類推,若有四個發(fā)光二極管亮,則表示水箱水是滿的。)</p><p>  圖3.3水位檢測電路</p><p><b>  溫度檢測模塊</b></p><p>  本設(shè)計溫度傳感器選用AD590。AD590屬于半導(dǎo)體集成電路溫度傳感器,測溫范圍-55℃- +150℃,在其二端加上一定的工作電壓,其輸出電

40、流與溫度變化成線性關(guān)系,1uA/°K,誤差有幾種等級:±1、±0.5、±0.3℃,本設(shè)計中選取±0.5℃品種。OP07為高精度運算放大器,AD590電流流經(jīng)R1、RP1轉(zhuǎn)換為電壓信號,R2、RP2為運算負(fù)反饋電阻,成反相比例放大器,將溫度信號轉(zhuǎn)換成0-5V的電壓信號,ADC0832再將其轉(zhuǎn)換為數(shù)字信號,輸入CPU。圖3.5為溫度檢測和A/D轉(zhuǎn)換電路圖。</p><p&

41、gt;  圖3.4溫度檢測電路</p><p><b>  鍵盤模塊</b></p><p>  P1.0- P1.7口作為按鍵的信號輸入端,鍵按下,就執(zhí)行該鍵的功能。其電路如圖3.5所示。(為了編程簡單、方便,采用獨立式鍵盤電路)。</p><p><b>  圖3.5鍵盤電路</b></p><p&

42、gt;<b>  顯示模塊</b></p><p>  本設(shè)計采用共陽型數(shù)碼管,8個LED燈如圖3.6中接法,燈的負(fù)極依次接到數(shù)碼管的a-f段,采用動態(tài)掃描電路,并把顯示程序作為主程序。數(shù)碼管的段用P0口控制,P2.0口、P2.3口作為數(shù)碼管的位控制,P2.4作為指示燈的控制。</p><p><b>  圖3.6顯示電路</b></p&g

43、t;<p><b>  軟件設(shè)計</b></p><p>  軟件設(shè)計原理及設(shè)計所用工具</p><p>  本次設(shè)計主要利用C語言編寫程序,根據(jù)功能的需要進行編程,其中軟件設(shè)計所用的軟件主要是Keil uVision3軟件,PROTEUS ISIS軟件。</p><p>  電熱水器在任何時間都能夠在設(shè)定的時間向用戶提供設(shè)定溫度

44、的熱水,從而給用戶帶來便利。當(dāng)控制器在設(shè)定的時間使水溫達(dá)到設(shè)定溫度時,將通過聲光報警提醒用戶。</p><p>  根據(jù)這一要求,控制器軟件設(shè)計采用模塊化結(jié)構(gòu),包括主程序、鍵盤中斷子程序、DS12887更新周期結(jié)束中斷子程序、LED顯示子程序和提前加熱時間計算子程序等。系統(tǒng)主程序主要完成溫度和水位的檢測以及進行輔助加熱時間預(yù)算和一些初始化功能。在主程序中采用了查表方法進行輔助加熱提前量預(yù)算。系統(tǒng)主程序流程圖如圖4

45、.1所示。</p><p>  圖4.1系統(tǒng)程序流程圖</p><p><b>  顯示子程序</b></p><p><b>  系統(tǒng)正常工作子程序</b></p><p>  當(dāng)K2處于第一狀態(tài)時,單片機執(zhí)行正常工作子程序,正常工作時K3,K4無效。系統(tǒng)正常工作子程序主要功能是交替顯示實際的熱水

46、器水位,判斷是否超過設(shè)定和水溫水位,其子程序流程圖如圖4.2.1所示。</p><p>  若熱水器未加滿水,水溫又偏高時,單片機控制進水閥加水,至合適水溫50℃左右,單片機響應(yīng)中斷,停止加水;當(dāng)水位低于預(yù)置水位時,調(diào)用延遲子程序,15分鐘自動上水至預(yù)置水位;當(dāng)實際水溫低于設(shè)定溫度時,系統(tǒng)響應(yīng)中斷,控制啟動加熱器,直至水溫升到所設(shè)定溫度;當(dāng)缺水時(位于缺水檔)系統(tǒng)響應(yīng)中斷,蜂鳴器報警,延遲15分鐘自動進入自動上水

47、。水溫水位在正常時由8位LED數(shù)碼管同時顯示。如果接觸不良,頻率為零,在LED上顯示--℃。</p><p>  圖4.2.1正常狀態(tài)子程序流程圖</p><p><b>  設(shè)定預(yù)置溫度子程序</b></p><p>  當(dāng)K1處于第二個狀態(tài)時,單片機執(zhí)行設(shè)定水溫子程序。其程序流程圖圖4.2.2所示。設(shè)定預(yù)設(shè)溫度由K3和K4完成,K3加1攝氏

48、度K4減1攝氏度;此時控制端口均為低。</p><p>  圖4.2.2設(shè)定預(yù)置溫度子程序流程圖</p><p><b>  設(shè)定預(yù)置水位子程序</b></p><p>  當(dāng)K2處于第三個狀態(tài)時,單片機執(zhí)行設(shè)定預(yù)置水位子程序其程序流程圖如圖4.2.3所示。設(shè)定預(yù)置水位,此時按下K3,系統(tǒng)檢測到K3為低電平,水位預(yù)置值KEY2加20%,加到10

49、0%時KEY2賦20%,KEY3無效。此時控制端口均為低。</p><p>  圖4.2.3設(shè)定預(yù)置水位子程序流程圖</p><p><b>  系統(tǒng)調(diào)試與原理圖</b></p><p>  本次設(shè)計主要在系統(tǒng)軟件調(diào)試方面。困難主要出現(xiàn)在軟件的編寫。雖然沒有錯誤,但是進行仿真時,不能達(dá)到預(yù)期的效果。經(jīng)過多次調(diào)試,程序也修改過好幾次,仍然走不通。

50、而問題也主要集中在掃描顯示這一模塊。</p><p>  最后經(jīng)過與同題目的其他的同學(xué)交流,結(jié)合設(shè)計思想,以及對以前的一個單片機編程作業(yè)的代碼,進行了修改、調(diào)試,也終于達(dá)到了方案的總體要求。對軟件方面逐步進行分析之后,重新進行系統(tǒng)的軟件上的仿真。</p><p>  圖5.1控制系統(tǒng)原理圖</p><p><b>  總結(jié)與體會</b><

51、/p><p>  本系統(tǒng)使用了性價比較高的AT89C51單片機實現(xiàn)了對電熱水器水位水溫的預(yù)置、檢測、控制、顯示和缺水報警等功能。利用數(shù)字技術(shù)和頻率技術(shù)分別檢測水溫和水位,大大提高了系統(tǒng)的抗干擾能力。利用電梯繼電器控制加熱器和進水閥的通斷,可以遠(yuǎn)距離控制但由于實際的制作的過程中,其制作電容用的板子沒有很好的絕緣材料的密封,使得其容值不斷的變化,因而其震蕩的頻率(在看似相同的情況下)也不斷的改變,并且改變的數(shù)值的范圍與理

52、論值相差很大,在此很抱歉,沒有做成功。</p><p>  但是,通過對這次基于單片機的太陽能溫控進水及水溫水位顯示控制裝置的設(shè)計,我將在大學(xué)里所學(xué)的專業(yè)知識在這次畢業(yè)設(shè)計中的到了廣泛的運用,加深了理論與實際的聯(lián)系。提高了思維與動手能力,增長了才干;培養(yǎng)了自己的創(chuàng)新意識,使自己在單片機應(yīng)用方面得到了全面提高,為今后的工程實際應(yīng)用,新產(chǎn)品開發(fā)奠定了基礎(chǔ)。</p><p>  通過這次課程設(shè)計

53、,自己進一步熟悉和掌握了ISIS仿真軟件PROTEL軟件,體會到ISIS、PROTEL等功能強大的設(shè)計軟件,在現(xiàn)代電子系統(tǒng)設(shè)計中發(fā)揮的強大的作用??傊舜握n程設(shè)計經(jīng)過自己獨立思考、查找資料,自己受益匪淺。而且,通過這次設(shè)計,更深切地感覺到團隊合作的重要性。是全體組員的共同努力,才完成了此次智能儀器課程設(shè)計任務(wù)!</p><p>  總之,以往的課程設(shè)計都是停留在理論層面上,而這次課程設(shè)計的實際意義非常明顯。經(jīng)過

54、這次課程設(shè)計,自己從心理上就成長了不少,這將是自己以后人生路上一筆寶貴的財富。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 劉剛、秦永左. 單片機原理及應(yīng)用[M]. 北京:北京大學(xué)出版社,20061.</p><p>  [2] 胡漢才. 單片機原理及其接口技術(shù)[M]. 北京:清華大學(xué)出版社,2004.</p

55、><p>  [3] 蔡美琴、張為民.MCS-51 系列單片機系統(tǒng)及其應(yīng)用(第二版)[M]. 高等教育出版社,2004.</p><p>  [4] 楊振江、杜鐵軍.流行單片機實用子程序及應(yīng)用實例. 西安:西安電子科技大學(xué)出版社,2002.</p><p>  [5] 劉迎春、葉湘濱.現(xiàn)代新型傳感器原理與應(yīng)用 國防工業(yè)出版社,1998.</p><p

56、>  [6] 張毅剛、彭喜元.單片機原理及應(yīng)用. 高等教育出版社,2007.</p><p>  [7] 何立民. 單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng).北京:北京航空航天大學(xué)出版社,2001</p><p>  [8] 王幸之.單片機應(yīng)用系統(tǒng)抗干擾技術(shù).北京:北京航空航天大學(xué)出版社,2001</p><p>  [9] 徐煜明.單片機原理及接口技術(shù) 電子工業(yè)出版社.20

57、08</p><p>  [10]張迎新.單片微型計算機原理應(yīng)用及接口技術(shù)(第2版) 國防工業(yè)出版社,2008</p><p>  [11]曹巧媛.單片機原理及應(yīng)用[M].北京電子工業(yè)出版社,1997</p><p>  [12]劉大茂.單片機應(yīng)用系統(tǒng)監(jiān)控主程序的設(shè)計方法[J].上海人民出版社,2000</p><p>  [13] Jan

58、not Y, Coulibaly Y. The “evaporative capacity as a performance” index for solar-drier air heater.J. Solar Energy 1998;63(6):387–91.</p><p>  [14] Jansen TJ. Solar engineering technology, chap. 7. New Jersey:

59、 Prentice-Hall, Inc, 1985.</p><p>  [15] Jinap S, Thien J, Yap TN. Effect of drying on acidity and cocoa beans. J. Food Agricult.1994;65:67–75.</p><p>  [16] Kolb A, Winter ERF, Viskanta R. Expe

60、rimental studies on a solar air collector with metal matrixabsorber. J. Solar Energy 1999;65(2):91–8</p><p><b>  附錄1</b></p><p><b>  附錄2</b></p><p><b>

61、  2.1 主程序清單</b></p><p><b>  主程序:</b></p><p>  #include<absacc.h></p><p>  #include<reg51.h></p><p>  #include<intrins.h></p>

62、<p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit buzzer=P1^0;//蜂鳴器</p><p>  sbit heater=P1^6;//加熱器</p><p>  sbit c=P3^6;//水閥門<

63、;/p><p>  sbit P0_0=P3^7;//溫度DS18B20數(shù)據(jù)線</p><p>  sbit adc=P1^5;//</p><p>  sbit ccl=P1^4;</p><p>  sbit led8=P0^0;</p><p>  sbit led7=P0^1;</p><p&g

64、t;  sbit led6=P0^2;</p><p>  sbit led5=P0^3;</p><p>  sbit led4=P0^4;</p><p>  sbit led3=P0^5;</p><p>  sbit led2=P0^6;</p><p>  sbit led1=P0^7;//8位數(shù)碼管顯示位選

65、端</p><p>  uchar temp111;</p><p>  uchar a,b;</p><p>  uchar bitselect;</p><p>  bit key1,key2,key3,keyon,keyoff,buzzer1;</p><p>  uchar key1_state,temp,k

66、ey2_state;</p><p><b>  uint pl;</b></p><p>  uint LED1_data,LED2_data,LED3_data,LED4_data,led_data;</p><p>  int ytm=40,yp=60,tm=0,p=0;</p><p>  long t0cou

67、nt,x,o;</p><p>  uchar code led_segment[13]={0xC0,0xCF,0xA4,0x86,0x8B,0x92,0x90,0xC7,0x80,0x82,0x70,0xFF,0xBF};</p><p>  uchar disbuffer[]={0,0,0,0,0,0,0,0};</p><p>  // 溫度值的變量;<

68、/p><p>  // 結(jié)果為負(fù)和正的標(biāo)志位。</p><p>  /********************************延時程序***********************/</p><p>  void delay(uint v)</p><p><b>  {</b></p><p

69、>  while(v!=0) v--;</p><p><b>  }</b></p><p>  /********************************顯示模塊**********************/</p><p>  //*********************************************&l

70、t;/p><p>  void display1(void) </p><p><b>  {</b></p><p>  for(bitselect=0;bitselect<8;bitselect++)</p><p>  {if(bitselect==0){led1=0;led2=1;led3=1;led4=1;l

71、ed1=1;led2=1;led3=1;led4=1;}</p><p>  else if(bitselect==1){led1=1;led2=0;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1;}</p><p>  else if(bitselect==2){led1=1;led2=1;led3=0;led4=1;led5=1;led6=1;led

72、7=1;led8=1;}</p><p>  else if(bitselect==3){led1=1;led2=1;led3=1;led4=0;led5=1;led6=1;led7=1;led8=1;}</p><p>  else if(bitselect==4){led1=1;led2=1;led3=1;led4=1;led5=0;led6=1;led7=1;led8=1;}<

73、/p><p>  else if(bitselect==5){led1=1;led2=1;led3=1;led4=1;led5=1;led6=0;led7=1;led8=1;}</p><p>  else if(bitselect==6){led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=0;led8=1;}</p><p>

74、;  else if(bitselect==7){led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;led8=0;}</p><p>  P2=led_segment[disbuffer[bitselect]];</p><p>  delay(200);</p><p><b>  }</b>&

75、lt;/p><p>  P2=0xff; //及時關(guān)閉P2口,以免造成最后一燈較亮</p><p><b>  }</b></p><p>  /*****************************************************/</p><p>  void alarm()</p>

76、<p><b>  {uint i;</b></p><p>  for(i=0;i<100;i++)</p><p><b>  {</b></p><p>  delay(50);</p><p><b>  buzzer=1;</b></p>

77、<p>  delay(50);</p><p><b>  buzzer=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /******************************讀鍵程序**

78、****************/</p><p>  void read_key()</p><p><b>  {</b></p><p><b>  keyon=0;</b></p><p>  if(INT1==0) {key1=1;keyon=1;keyoff=1;}</p>

79、<p>  if(INT0==0){key2=1;keyon=1;keyoff=1;}</p><p>  if(T1==0){key3=1;keyon=1;keyoff=1;}</p><p>  display1();</p><p><b>  }</b></p><p>  /************

80、**********防連擊*****************************/</p><p>  KeyProcess()</p><p><b>  {</b></p><p>  while(keyoff) </p><p>  {read_key();</p><p>  i

81、f(keyon==0)</p><p>  {keyoff=0;</p><p>  if(key1==1)</p><p>  {key1_state++;key2_state=0;</p><p>  if(key1_state==3)key1_state=0;</p><p><b>  key1=0;

82、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  SetProcess()/**

83、******************設(shè)定和顯示模式選定**********/</p><p>  {if(key1_state==1)</p><p>  {if(keyon==0)</p><p>  {keyoff=0;</p><p>  if(key2==1)</p><p><b>  {ytm++

84、;</b></p><p>  if(ytm==100){ytm=0;}</p><p><b>  key2=0;</b></p><p><b>  }</b></p><p>  if(key3==1)</p><p><b>  {ytm--;&

85、lt;/b></p><p>  if(ytm==-1){ytm=99;}</p><p><b>  key3=0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  disbuffe

86、r[7]=11;disbuffer[6]=11;disbuffer[5]=11;disbuffer[4]=11;disbuffer[3]=11;disbuffer[2]=ytm/10;disbuffer[1]=ytm%10;disbuffer[0]=10;display1();</p><p><b>  }</b></p><p>  if(key1_state==

87、2)</p><p>  {if(keyon==0)</p><p>  {keyoff=0;</p><p>  if(key2==1)</p><p>  {yp=yp+20;</p><p>  if(yp==100){yp=20;}</p><p><b>  key2=0;&

88、lt;/b></p><p><b>  }</b></p><p>  } disbuffer[7]=12;disbuffer[6]=yp/10;disbuffer[5]=0;disbuffer[4]=12;disbuffer[3]=11;disbuffer[2]=11;disbuffer[1]=11;disbuffer[0]=11;display1();&l

89、t;/p><p><b>  }</b></p><p>  if(key1_state==0)</p><p><b>  {ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  if(o==1)&l

90、t;/b></p><p><b>  {</b></p><p><b>  ET0=0;</b></p><p><b>  TR0=0;</b></p><p>  tm_read();</p><p><b>  o=0;<

91、/b></p><p><b>  }</b></p><p>  {//level_read();</p><p>  disbuffer[7]=pl/1000%10;</p><p>  disbuffer[6]=pl/100%10;</p><p>  disbuffer[5]=pl/

92、10%10;</p><p>  disbuffer[4]=pl%10;</p><p>  /* disbuffer[7]=12;disbuffer[6]=p/10;disbuffer[5]=p%10;disbuffer[4]=12;*/</p><p>  display1();</p><p><b>  }</b>

93、;</p><p>  if(temp111<ytm-5){heater=1;}</p><p>  if(temp111>ytm+3&&temp111<ytm+8){heater=0;}</p><p>  if(temp111>ytm+8){alarm();heater=0;}</p><p>  

94、if(p>yp+5&&p<yp+10){c=0;}</p><p>  if(p>yp+10){alarm();c=0;}</p><p>  if(p<yp-5){c=1;}</p><p><b>  }</b></p><p><b>  }</b>&l

95、t;/p><p>  /*********************溫度數(shù)據(jù)讀取比較控制程序*****************/</p><p>  /**************DS18B20****************/</p><p>  bit tmreset (void) // 發(fā)送復(fù)位和初始化</p><p>  {

96、 static bit presence; </p><p>  unsigned int i;</p><p>  P0_0 = 0;</p><p><b>  i = 103;</b></p><p>  while (i>0) i--; // 延時</p>

97、<p>  P0_0 = 1;</p><p><b>  i = 4;</b></p><p>  while (i>0) i--;</p><p>  presence= P0_0;</p><p>  delay(20);</p><p>  return (presen

98、ce);</p><p><b>  }</b></p><p>  bit tmpread (void)// 讀取數(shù)據(jù)的一位</p><p><b>  { </b></p><p>  unsigned int i;</p><p><b>  

99、bit dat;</b></p><p>  P0_0 = 0; </p><p>  P0_0 = 1; i++; i++; //延時</p><p>  dat = P0_0;</p><p>  i = 8; while (i>0) i--;// 延時</

100、p><p>  return (dat);</p><p><b>  }</b></p><p>  unsigned char tmpread2 (void) //讀一個字節(jié)</p><p><b>  {</b></p><p>  unsigned cha

101、r i,j,dat;</p><p><b>  dat = 0;</b></p><p>  for (i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j = tmpread ();</p><p>  dat = (j

102、<< 7) | (dat >> 1);</p><p><b>  }</b></p><p>  return (dat);</p><p><b>  }</b></p><p>  void tmpwrite (unsigned char dat)//寫一

103、個字節(jié)</p><p><b>  { </b></p><p>  unsigned int i;</p><p>  unsigned char j;</p><p>  bit testb;</p><p>  for (j=1;j<=8;j++)</p><

104、p><b>  {</b></p><p>  testb = dat & 0x01;</p><p>  dat = dat >> 1;</p><p>  if (testb)</p><p><b>  {</b></p><p>  P

105、0_0 = 0; // 寫0 </p><p>  i++; i++; </p><p>  P0_0 = 1;</p><p>  i = 8; while (i>0) i--; </p><p><b>  }</b></p><p><b>  else&l

106、t;/b></p><p><b>  {</b></p><p>  P0_0 = 0; // 寫0 </p><p>  i = 8; while (i>0) i--; </p><p><b>  P0_0 = 1;</b></p><p>  

107、i++; i++; </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tmpchange(void)// ds1820 開始轉(zhuǎn)換</p><

108、p><b>  { </b></p><p>  tmreset ();// 復(fù)位</p><p>  delay (200);// 延時</p><p>  tmpwrite (0xcc);// 跳過序列號命令</p><p>  tmpwrite (0x44);

109、// 發(fā)轉(zhuǎn)換命令 44H,</p><p><b>  }</b></p><p>  //*********************************************</p><p>  //*********************************************</p><p

110、>  void tmp (void)// 讀取溫度</p><p><b>  { </b></p><p>  tmreset ();// 復(fù)位</p><p>  delay (200);// 延時</p><p>  tmpwrite (0xcc);

111、// 跳過序列號命令</p><p>  tmpwrite (0xbe); // 發(fā)送讀取命令</p><p>  a = tmpread2 (); // 讀取低位溫度</p><p><b>  P0_0 = 0;</b></p><p>  b = tmpread2 ();

112、//讀取高位溫度</p><p>  P0_0 = 0; </p><p><b>  }</b></p><p><b>  tm_read()</b></p><p><b>  {</b></p><p>  tmpchange();

113、// 開始溫度轉(zhuǎn)換</p><p>  delay(200);// 讀取延時</p><p><b>  tmp();</b></p><p>  P0_0=0;//讀取溫度</p><p>  temp111=(b<<4)|(a>>4);</p><p>

114、;  if(tmreset ()==0)</p><p><b>  {</b></p><p>  disbuffer[3]=11;</p><p>  disbuffer[2]=(temp111/10)%10; //--------------------------------------------------</p>

115、<p>  disbuffer[1]=temp111%10;</p><p>  disbuffer[0]=10;</p><p><b>  }</b></p><p>  else if (tmreset ()==1)</p><p>  {disbuffer[3]=11;</p><

116、;p>  disbuffer[2]=12;</p><p>  disbuffer[1]=12;</p><p>  disbuffer[0]=10;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /********

117、*************液位數(shù)據(jù)讀取比較控制程序*****************/</p><p>  uchar tlc549_read()</p><p><b>  {</b></p><p>  uchar i,adcdata;</p><p>  adcdata=0;</p><p>

118、;  for(i=0;i<8;i++)</p><p>  {delay(100);</p><p>  adcdata=adcdata<<1;</p><p>  if(adc) adcdata++;</p><p><b>  ccl=1;</b></p><p>  del

119、ay(100);</p><p><b>  ccl=0;</b></p><p><b>  }</b></p><p>  return adcdata;</p><p><b>  }</b></p><p>  level_read()</

120、p><p>  {temp=tlc549_read();</p><p>  if(temp<0xFB&&temp>0xB8){p=50;}</p><p>  if(temp<0xB8&&temp>0x86){p=85;}</p><p><b>  /*</b>&l

121、t;/p><p>  disbuffer[3]=pl/1000%10;</p><p>  disbuffer[2]=pl/100%10;</p><p>  disbuffer[1]=pl/10%10;</p><p>  disbuffer[0]=pl%10;</p><p>  display();

122、 //*測頻率*/</p><p><b>  }</b></p><p>  /*********************主程序*******************************/</p><p><b>  main()</b></p><p><b&

123、gt;  {uint i;</b></p><p>  delay(100);</p><p>  TMOD=0x51;</p><p><b>  TH0=0xfc;</b></p><p><b>  TL0=0x66;</b></p><p><b&g

124、t;  TH1=0x0;</b></p><p><b>  TL1=0x0;</b></p><p>  t0count=0;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p>

125、;  TR0=1; //打開定時器T0</p><p><b>  ET1=1;</b></p><p><b>  TR1=1;</b></p><p>  LED1_data=1;</p><p>  LED2_data=2;</p><

溫馨提示

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

評論

0/150

提交評論