版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課題實踐</b></p><p> 類 別: 項目承接與技術(shù)服務 </p><p> 題 目: 快熱式家用電熱水器的設計 </p><p> 系 名 稱: 電氣工程系 </p><p&
2、gt; 專業(yè)及班級: 電氣自動化技術(shù)電氣S2008-8班 </p><p> 完成時間 2010 年 12 月 21 日</p><p><b> 課題實踐課題及任務</b></p><p><b> 開題報告書</b></p><p> 電氣工程 系
3、 電氣自動化技術(shù) 專業(yè) </p><p> 快熱式家用電熱水器的設計</p><p><b> 摘 要</b></p><p> 熱水器已成為日常生活中不可缺少的家用電器,設計制造更實用、更方便、更安全、更節(jié)能的熱水器是產(chǎn)品設計師和生產(chǎn)廠家不斷追求的目標??鞜崾诫姛崴髋c普通電熱水
4、器最大的區(qū)別在于它取消了儲水罐,熱水隨開隨用,無須預熱,減少了電能浪費。另外,它還具有體積小,使用安全,安裝方便等優(yōu)點。本設計要求用2位數(shù)碼管顯示出水溫度和功率檔位,設置3個按鍵分別為電源開關(guān)鍵、檔位上調(diào)和下調(diào)鍵,出水溫度超過65℃時停止加熱,并蜂鳴報警,溫度降低到45℃以下時恢復加熱。內(nèi)膽溫度超過105℃時停止加熱,防止干燒。</p><p> 本文首先介紹了系統(tǒng)的總體組成,硬件中先描述了整體結(jié)構(gòu)和各模塊的相
5、互關(guān)系。對于較新的可編程芯片又進一步介紹了其內(nèi)部結(jié)構(gòu)及外部特征。</p><p> 本軟件采用模塊化設計。在主程序模塊下分成若干彼此獨立的分模塊,在各模塊適當位置設置軟件陷阱,進行冗余設計,在信號采集與處理程序中采用多種數(shù)字濾波的方法,以消除隨機的尖脈沖千擾。</p><p> 本系統(tǒng)可以實現(xiàn)對熱水器水溫的實時控制,程序的可移植性強,有很好的推廣、應用價值。性能達到目前國內(nèi)的同類設備水
6、平,且價格低廉。</p><p> 關(guān)鍵字: 51系列單片機控制,LED數(shù)碼顯示,單片機,溫度傳感器,熱敏傳感器</p><p><b> 目 錄</b></p><p> 第一章 熱水器功能介紹2</p><p> 1.1 功能要求2</p><p> 第二章 方案論證3&l
7、t;/p><p> 第三章 系統(tǒng)硬件電路的設計5</p><p> 3.1 加熱控制電路5</p><p> 3.2 溫度檢測電路6</p><p> 3.3 鍵盤與顯示電路7</p><p> 3.4 核心部件單片機8</p><p> 3.5 整流和穩(wěn)壓電路8</p
8、><p> 3.6 報警電路9</p><p> 第四章 系統(tǒng)程序的設計10</p><p> 4.1 主程序10</p><p> 4.2 顯示掃描子程序10</p><p> 4.3 按鍵掃描處理子程序13</p><p> 4.4 加熱控制程序13</p>
9、<p> 4.5溫度檢測程序16</p><p> 第五章 調(diào)試及性能分析20</p><p> 第六章 系統(tǒng)的抗干擾措施21</p><p> 6.1 系統(tǒng)干擾的來源21</p><p> 6.2 硬件方面的抗干擾措施21</p><p> 6.3 軟件方面的抗干擾措施22<
10、/p><p> 6.3.1 數(shù)字濾波消除數(shù)據(jù)采集誤差22</p><p> 6.3.2 利用“看門狗”技術(shù)來實現(xiàn)PC的快恢復22</p><p> 6.3.3 指令冗余22</p><p><b> 心得與總結(jié)24</b></p><p><b> 參考文獻25</
11、b></p><p> 附錄一 快熱式電熱水器硬件原理圖26</p><p> 附錄二 程 序27</p><p> 第一章 熱水器功能介紹</p><p><b> 1.1 功能要求</b></p><p> 當前,熱水器已成為日常生活中﹑不可缺少的家用電器,設
12、計制造更實用﹑更方便﹑更安全﹑更節(jié)能的熱水器是產(chǎn)品設計師和生產(chǎn)廠家不斷追求的目標??鞜崾诫姛崴髋c普通電熱水器最大的區(qū)別在與它取消了儲水罐,熱水隨開隨用,無需預熱,減少了電能浪費。另外,它還具有體積小,使用安全,安裝方便等優(yōu)點。</p><p><b> 其設計要求如下:</b></p><p> 溫度檢測顯示范圍為00~99℃,精確度為±1℃。<
13、/p><p> 設置3個功率檔位指示燈,1~4檔1個燈亮,5~8檔2個燈亮,9檔3個燈全亮。0檔無功率輸出,檔位燈不亮。</p><p> 設置3個輕觸按鈕,分別為電源開關(guān)鍵、“+”鍵和“-”鍵。加熱功率分0~9檔,按“+”鍵依次遞增至9檔,按“-”鍵依次遞減至0。0~9檔功率依次為0﹑1∕9P∕、2∕9P、3∕9P、4∕9P、5∕9P、6∕9P、7∕9P、8∕9P、和P。</p&g
14、t;<p> 出水溫度超過65℃時停止加熱,并蜂鳴報警,溫度降到45℃以下時恢復。</p><p> 內(nèi)膽溫度超過105℃時停止加熱,防止干燒。</p><p><b> 第二章 方案論證</b></p><p> 按快熱式電熱水器的功能要求,決定采用如圖2.1所示的模塊組成系統(tǒng),主要包括電源電路、單片機控制器、溫度檢測
15、電路、按鍵輸入電路、LED數(shù)碼管及指示燈電路、報警電路和加熱控制電路。</p><p> 圖2.1 快熱式電熱水器系統(tǒng)組成框</p><p> 快熱式電熱水器為了達到“快熱”的效果,取消了儲水罐,使冷水在進入加熱管有較大的功率。家用電熱水器一般采用方便、可靠的電熱絲加熱方法。根據(jù)熱學及流體力學原理,結(jié)合實際實驗室測試,可以得到水溫與流量、加熱功率之間的關(guān)系如表1.1所例。</p
16、><p> 表1.1中所列水溫值和流量值可以滿足大多數(shù)家庭用戶使用要求。當最大的加熱功率為7.5KW時,按220V供電計算,電流約為34A,所示要求專線供電。</p><p> 對于加熱功率的控制,最簡單的方法是由若干不同功率的電熱絲組合得到幾種加熱功率,但由于快熱式熱水器的加熱功率較普遍的大,且檔位設置較多,用電熱絲組合的方法需要幾組電熱絲和蓄電器,成本增高且工作可靠性降低,所以比較理想
17、的是采用可控硅控制功率,電路簡單又控制方便。</p><p> 溫度檢測的方法較多,最經(jīng)典的方法就是用熱敏電阻(或熱敏傳感器)組成電橋來采集信號,再經(jīng)放大、A/D轉(zhuǎn)換后送單片機。目前比較先進的方法是采用專門的集成測溫傳感器(如DS18B20),直接將溫度轉(zhuǎn)換成數(shù)字信號傳送給單片機。為了簡化電路,降低成本,本文采用了溫度/頻率轉(zhuǎn)換測溫法,直接將溫度信息轉(zhuǎn)換成頻率信號,用單片機測出頻率大小,從而間接測出溫度值,溫度
18、/頻率轉(zhuǎn)換電路簡單可靠,成本低廉。</p><p> 第三章 系統(tǒng)硬件電路的設計</p><p> 快熱式熱水器控制系統(tǒng)電路(附錄一)是由7部分電路組成:單片機系統(tǒng)及外圍電路、電源電路、按鍵輸入電路、LED數(shù)碼管及指示燈電路、報警電路、加熱控制電路和溫度檢測電路。 控制器采用成本低廉且工作可靠的AT89S52單片機和12MHZ的晶振。</p><p>
19、 AT89S52對電源要求不甚嚴格,電源電路采用普通的市電降壓整流,然后經(jīng)集成穩(wěn)壓器7805穩(wěn)壓輸出+5V電壓。按鍵采用輕觸小按鈕。顯示電路采用兩位共陽數(shù)碼管,由兩個三極9012驅(qū)動。3個LED指示燈用于指示加熱功率。報警電路采用3V的自鳴器。</p><p> 3.1 加熱控制電路</p><p> 圖3.1所示為加熱加熱控制電路原理圖,電熱絲的加熱功率由雙向可控控制,單片機遇光耦給
20、可控硅觸發(fā)信號,控制可控硅的導通角,從而控制電熱絲的有效加熱功率。為了在和超溫保護的狀態(tài)下能可靠的關(guān)斷加熱電源,電路中加入了蓄電器來控制加熱電源。其中聯(lián)在繼電器線圈回路的熔絲為105℃的熱保險絲,當溫度超過105℃時,熱保險絲會熔斷阻止加熱管干燒。于電熱絲并聯(lián)的LED發(fā)光管用來指示電熱絲的工作狀態(tài)。</p><p> 圖3.1 加熱控制電路圖</p><p> 可控硅觸發(fā)信號中需要對
21、市電進行過零檢測的,電路如圖3.2所示。</p><p> 圖3.2 過零檢測電路圖</p><p> 3.2 溫度檢測電路</p><p> 溫度檢測電路如圖3.3所示,溫度/頻率變換電路中利用反相器組成RC振蕩器,其中的R24是一個電敏電阻,當溫度變化時引起熱敏電阻的阻值變化,從而改變了振蕩器輸出的方波頻率。</p><p>
22、該頻率的估算可用如下公式:</p><p><b> f≈1.1RC</b></p><p> 圖3.3 溫度檢測電路圖</p><p> 3.3 鍵盤與顯示電路</p><p> 鍵盤接口電路(圖3.4)由按鍵SB1-SB3組成,這3個按鍵分別接到單片機的輸入引腳P1.2, P1.3 和Pl.4, 按鍵SB
23、1作為整個控制系統(tǒng)的啟/停鍵,按鍵SB2、SB3作為設定鍵,用于設置溫度的增減。當按鍵未按下時,相應的輸入引腳上只能檢測到高電平。而當按鍵按下時,相應的引腳上便會檢測到低電平。因此,通過軟件檢測輸入引腳上的電平值,便可檢測到是否有按鍵按下。</p><p> 顯示接口電路(圖3.5)由2個LED7段數(shù)碼顯示管、2個三極管和限流電阻組成。在軟件上采用動態(tài)輪流掃描方式,來控制數(shù)碼管的顯示。單片機的輸出端口P0口通過
24、限流電阻與數(shù)碼管的陰極相連,用于控制7段數(shù)碼管的字形顯示。單片機的輸出引腳P2.0和P2.1分別通過限流電阻和三極管與數(shù)碼管的陽極相連,用于向它們提供選通信號。當端口輸出低電平時,相應的三極管導通,從而使相應的7段數(shù)碼管選通。當端口輸出高電平時,相應的三極管截止,從而使相應的7段數(shù)碼管關(guān)閉。</p><p> 圖3.4 鍵盤接口電路</p><p> 圖3.5 顯示電路圖</p&
25、gt;<p> 3.4 核心部件單片機</p><p> 系統(tǒng)采用ATMEL公司生產(chǎn)的單片機AT89S52作為模糊處理的核心,該芯片是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含8k Bytes ISP(In-systemprogrammable)的可反復</p><p> 圖3.6 單片機復位與晶振電路</p><p> 擦寫1000次的F
26、lash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元。AT89S52具有如下特點:40個引腳,8k Bytes Flash片內(nèi)程序存儲器,256 bytes的隨機存取數(shù)據(jù)存儲器(RAM), 32個外部雙向輸入了輸出(v0)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口
27、,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。</p><p> 其晶振電路與復位電路如圖3.6所示</p><p> 由于需要對芯片的供電電壓VDD隨時進行檢測,一旦發(fā)現(xiàn)VDD電壓下降到一個門檻值時就使芯片復位以免系統(tǒng)失控,采樣如圖3.17所示的復位電路。</p><p><b> 其門檻值計算如下:</b></p><p
28、> 3.5 整流和穩(wěn)壓電路</p><p> 在本控制器中使用了三種電源,它們分別是系統(tǒng)電源+5V,測溫放大電路中UA741的供電電源和PWM輸出電源±12V。</p><p> 采用如圖3.7所示的穩(wěn)壓電路。</p><p> 圖3.7 整流與穩(wěn)壓電路</p><p><b> 3.6 報警電路</
29、b></p><p> 報警電路如圖3.8所示</p><p><b> 圖3.8 報警電路</b></p><p> 第四章 系統(tǒng)程序的設計</p><p> 按快熱式熱水器的功能,系統(tǒng)程序必須實現(xiàn)顯示掃描、按鍵掃描處理、加熱控制和溫度檢測(包括超溫報警)4項任務。51系列單片機實現(xiàn)多任務運行的方法就是
30、分時復用,在程序設計時更要相應地分配好各任務的CPU占用時間。對于以上幾個任務稍加分析可以看出,顯示掃描、按鍵掃描和加熱控制任務相對而言有實時要求,而溫度檢測任務則可用定時(0.5~1S)實現(xiàn)。</p><p><b> 4.1 主程序</b></p><p> 系統(tǒng)在上電復位后,先對溫度寄存器、檔位寄存器賦默認值,并進行清除超溫標志,設置定時器及中斷系統(tǒng)的工作方
31、式等初始化工作,圖4.1所示為主程序流程圖。</p><p> 由于51系列單片機沒有停機指令,所以可以利用主程序設置死循環(huán)反復運行各個任務。把有實時要求的子程序(顯示掃描、按鍵掃描、加熱控制)放在最內(nèi)層的循環(huán)中,計算其運行一次占用的CPU時間,然后根據(jù)溫度檢測定時的間隔時間,計算出該循環(huán)的循環(huán)次數(shù)。本例中每運行一次有實時要求的子程序(即顯示掃描、按鍵掃描、加熱控制)約占用5msCPU時間,運行測溫程序的時間間
32、隔為0.5s,那么循環(huán)次數(shù)應為100次。</p><p> 4.2 顯示掃描子程序</p><p> 顯示掃描子程序完成兩位共陽數(shù)碼管的掃描顯示任務。圖4.2所示為顯示掃描子程序流程圖。</p><p> 圖4.1 主程序流程圖</p><p> 圖 4.2 顯示掃描子程序流程圖</p><p> 4.
33、3 按鍵掃描處理子程序</p><p> 按鍵掃描子程序負責逐個掃描檔位“+”鍵、檔位“-”鍵和開關(guān)鍵是否被按下,若有鍵下,則作出相應處理。圖4.3 所示為按鍵掃描子程序流程圖。</p><p> 圖4.3 按鍵掃描子程序流程圖</p><p> 4.4 加熱控制程序</p><p> 加熱控制程序根據(jù)用戶設定的加熱檔位和當前的狀態(tài)
34、,決定是否加熱和控制加熱功率并點亮相應的指示燈。若有超溫標志,還應打開蜂鳴器報警。圖4.4所示為加熱控制程序流程圖。</p><p> 圖4.4 加熱控制程序流程圖</p><p> 加熱控制程序通過控制繼電器的通斷來決定是否給電熱絲通電加熱,而加熱的功率由雙向可控硅的導通角決定。系統(tǒng)程序利用外中斷INT1檢測市電的過零點,檢測到過零立即根據(jù)設定的加熱檔位給定時器T1賦一個延時參數(shù)
35、,并打開定時器T1,允許其中斷。定時器T1計滿溢出后觸發(fā)中斷,T1中斷程序就會給可控硅發(fā)一個觸發(fā)信號,使其導通。圖4.6 所示分別為過零檢測程序流程圖和可控硅觸發(fā)信號控制程序流程圖。</p><p> 圖4.5 過零檢測程序流程圖</p><p> 圖4.6 可控硅觸發(fā)信號控制程序流程圖</p><p><b> 4.5溫度檢測程序</b&g
36、t;</p><p> 溫度檢測程序的基本原理就是將溫度/頻率轉(zhuǎn)換電路測得的頻率與事先建立好的溫度/頻率表進行比較,查找出與該頻率相應的溫度值。在實驗測試后建立的溫度/頻率表式0~100℃溫度所對應的頻率值。它是一個頻率對應于溫度遞減的非線性函數(shù),在C語言中用一個一維組Tab[101]表示,下標為溫度,數(shù)組元素為頻率值。計算溫度的方法采用高效、準確的二分法查表,查表的過程如下:</p><p
37、> ?、傧冉o定查找的溫度最大值Tmax和最小值Tmin,即確定查找的范圍,根據(jù)已有的溫度表默認最大值Tmax=100,最小值Tmin=0。</p><p> ?、诩俣y得溫度Temp為最大值與最小值的中間值,即Temp=(Tmax+Tmin)/2。</p><p> ③將實際測得的頻率值T0rig與假定溫度Temp在表格中對應的頻率Tab[temp]相比較,如果相等,那么假定溫度就
38、是當前實際溫度,即完成查找。</p><p> ?、苋鬞0rig>Tab[temp],說明實際溫度應該在Tmin與Tmep之間(因為遞減函數(shù)特性),則修改查找范圍,令Tmax=Temp;同理,若T0rig<Tab[temp],說明實際溫度應該在Temp與Tmax之間,則令Tmin=Temp;</p><p> ?、輽z查查找范圍,若Tmax-Tmin≤1,則斷定T0rig更接近最
39、大值對應的頻率Tab[Tmax]還是最下值對應的頻率Tab[Tmin],實際溫度值取頻率更接近的那個值即完成查找。</p><p> ⑥若Tmax-Tmin>1,則重復第①、②、③、④、⑤步驟、直到完成查找。</p><p> 溫度檢測程序完成溫度計算后,便刷新系統(tǒng)當前溫度寄存器,并判斷有無超溫、置位或清除相應的標志位。</p><p> 圖4.7所示為
40、溫度檢測程序流程圖。</p><p> 圖 4.7溫度檢測程序流程圖</p><p> 單片機使用中斷INT0和計時器T0檢測輸入頻率的大小。為了減少測量的系統(tǒng)誤差相對值和隨機誤差對測量精度的影響,程序中取100個方波周期的和作為測量結(jié)果。程序中使用靜態(tài)變量px0count進行外中斷的計數(shù),在測量開始時,給px0count賦值2是為了讓頻率測量有準確的起點。</p>&l
41、t;p> 另外,為了區(qū)分測頻的開始和結(jié)束,還使用了測頻開始標志位T0tst和測頻完成標志位Testok.</p><p> 圖4.8 所示為頻率測試程序流程圖。</p><p> 4.8 頻率測試程序流程圖</p><p> 第五章 調(diào)試及性能分析</p><p> 快熱式熱水器硬件電路不包含任務可調(diào)節(jié)元件,因此只要器
42、件質(zhì)量可靠,引腳焊接正確,硬件電路無需調(diào)試。</p><p> 該電路中測溫部分的振蕩電路對電容C1的容量比較敏感,若此電路要批量化生產(chǎn),可在熱敏電阻R24上再串一個可變電阻,以補償C1的容量變化。</p><p> 在初次試做本電路或關(guān)鍵硬件參數(shù)有調(diào)整事,應對系統(tǒng)軟件中控制加熱功率的可控硅導通延時參數(shù)表和溫度/頻率轉(zhuǎn)換表這兩部分進行調(diào)試。</p><p>
43、可控硅導通延時參數(shù)主要由市電的頻率和過零檢測電路的脈沖寬度決定,可以先根據(jù)市電頻率,按等功率的要求計算理論值,再根據(jù)過零檢測電路的脈沖寬度加以調(diào)整。</p><p> 溫度/頻率轉(zhuǎn)換表可以用對照標準溫度計實測的辦法進行測試。</p><p> 用這個方案設計的快熱式家用電熱水器,電路簡單,成本較低,經(jīng)試驗運行證明工作穩(wěn)定可靠,在無需改變硬件的條件下,如加入PID等自動控制程序還可以升級
44、成自動控溫的電熱水器。</p><p> 第六章 系統(tǒng)的抗干擾措施</p><p> 干擾就是有用信號以外的噪聲以及造成計算機等設備不能正常工作的破壞因素??刂葡到y(tǒng)的好壞往往取決于其抗干擾能力的強弱。好的控制系統(tǒng)不僅要求其各環(huán)節(jié)的設計和配置具有完備的功能,而且要求其具有良好的抗干擾性和穩(wěn)定性,否則再完善的系統(tǒng)和功能設計,抗干擾性能不好,亦將前功盡棄。</p><p
45、> 6.1 系統(tǒng)干擾的來源</p><p> 干擾的來源一般可以來源分為內(nèi)部干擾和外部干擾。內(nèi)部干擾通常是由于系統(tǒng)自身結(jié)構(gòu)設計的不合理、制造工藝的缺陷等造成的,比如系統(tǒng)分布電容、分布電感引起的藕合感應,電磁場輻射感應,長線傳輸?shù)牟ǚ瓷?,對點接地造成電位差引起的干擾等。而外部干擾都是由外界環(huán)境因素決定的,諸如空間電或磁的影響,典型的有輸電線和電氣設備發(fā)出的電磁場,通信廣播發(fā)出的無線電波,太陽或其它天體輻
46、射出的電磁波,空中雷電,火花放電、弧光放電、輝光放電等放電現(xiàn)象,甚至氣溫、濕度等氣象條件。</p><p> 在抗干擾技術(shù)方面,根據(jù)以往的經(jīng)驗,主要有硬件抗干擾和軟件抗干擾,采取硬件措施一般可以將絕大部分干擾拒之門外,但仍然可能有少數(shù)干擾進入系統(tǒng)中,引起不良后果,所以,作為系統(tǒng)抗干擾的第二道防線,軟件措施是必不可少的。通常硬件抗干擾效率高,但需要增加系統(tǒng)的硬件投資和擴大設備的體積,而軟件抗干擾投資低,但由于軟件
47、抗干擾措施是以CPU的開銷為代價的,可能影響到系統(tǒng)的工作效率和實時性,因此,在實際應用中,多半是軟硬件抗干擾措施相結(jié)合,最終才能形成一個完整成功的抗干擾系統(tǒng)。在本文中,我們主要使用了軟硬件抗干擾技術(shù),下面主要來講述抗干擾的一些措施。</p><p> 6.2 硬件方面的抗干擾措施</p><p> 在電源設計中采用多級濾波和多級穩(wěn)壓的方法來消除瞬態(tài)干擾,減小紋波電壓,提高直流輸出電壓
48、的穩(wěn)定性,以消除電源電壓波動和浪涌沖擊產(chǎn)生的干擾。在信號的采集與信號的傳送過程中采用帶有光電耦合器的接口電路,實現(xiàn)單片機系統(tǒng)與外設之間的電隔離,以消除來自外部的各個方面的干擾。</p><p> 6.3 軟件方面的抗干擾措施</p><p> 6.3.1 數(shù)字濾波消除數(shù)據(jù)采集誤差</p><p> 生產(chǎn)現(xiàn)場由傳感器檢測到的信號不可避免地要混雜一些干擾信號,特
49、別是傳輸線較長時更是如此。在模擬控制系統(tǒng)里,都是由硬件組成的各種各樣濾波器干擾信號。在數(shù)字控制系統(tǒng)里,除一些必要的硬件濾波器很多濾波任務可以由數(shù)字濾波器承擔。數(shù)字濾波器的實質(zhì)上是一種數(shù)字處理方法,是由計算機程序?qū)崿F(xiàn)的數(shù)學運算。數(shù)字濾波也稱為軟件濾波。數(shù)字濾波在數(shù)字控制系統(tǒng)里得到成功的應用,因為與硬件濾波相比,數(shù)字濾波有很多優(yōu)點:</p><p> 1. 數(shù)字濾波器是由程序?qū)崿F(xiàn)的,不需增加硬設備,而且可以多個輸入
50、通道共用(使用時調(diào)用濾波子程序即可),因而成本低。</p><p> 2.由于數(shù)字濾波是由程序?qū)崿F(xiàn)的,不需硬設備,因而可靠性好,穩(wěn)定性高,不存在阻抗匹配問題。</p><p> 3.使用靈活,修改方便。</p><p> 4.可以實現(xiàn)硬件濾波無法實現(xiàn)或難以實現(xiàn)的濾波任務。</p><p> 6.3.2 利用“看門狗”技術(shù)來實現(xiàn)PC的快
51、恢復</p><p> 當“跑飛”的PC指向程序區(qū),且在執(zhí)行到軟件陷阱之前己經(jīng)形成了一個死循環(huán),在這種倩況下只能采用“看門狗”技術(shù)來實現(xiàn)PC的快速自恢復。具體做法是為系統(tǒng)設置一個程序運行監(jiān)視系統(tǒng),利用它使系統(tǒng)復位而重新初始化,重新執(zhí)行主控程序或進入出錯處理程序.程序運行監(jiān)控系統(tǒng)有多種,實現(xiàn)方法各不相同,本控制器是利用單片機內(nèi)置的“看門狗”來完成,程序中每各隔一段時間訪問WATCHDOG一次,利用其一級溢出和二級
52、溢出功能實現(xiàn)程序跑飛后的自動返回。</p><p> 6.3.3 指令冗余</p><p> 計算機控制系統(tǒng)在受到某種干擾后,CPU可能將部分操作數(shù)當作指令代碼來執(zhí)行,此時將引起程序混亂。在計算機指令中,有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令等,當程序彈飛在單字節(jié)指令的時候,它將自動納入正常程序軌道,當彈飛到雙字節(jié)指令時,程序可能落在其操作數(shù)上,從而繼續(xù)出錯,當程序彈飛到三字節(jié)指令時,程
53、序可能落在其兩個操作數(shù)中的任一個,出錯的機會更大。因此,在程序中應當多采用單字節(jié)指令,特別是在一些關(guān)鍵的地方,人為的插入一些單字節(jié)指令或者將有效單字節(jié)指令重復書寫,即指令冗余。指令冗余會適當?shù)脑黾覥PU的負荷,降低系統(tǒng)運行效率,但能夠很好的保證系統(tǒng)在特定環(huán)境下的具有較高的穩(wěn)定性和容錯性。</p><p><b> 心得與總結(jié)</b></p><p> 好快啊,一轉(zhuǎn)
54、眼我們就快要畢業(yè)了,還有幾個月的時間我們就要畢業(yè),走上社會這個大家庭了。在這段時間里,大家都在準備畢業(yè)實踐。這個畢業(yè)實踐既是對理論知識的檢驗,也是動手能力的表現(xiàn)。畢業(yè)實踐是為我們即將步入社會工作前的熱身鍛煉,讓我們把書本上的知識和實踐相結(jié)合。在老師的細心指導下,為期兩個月的畢業(yè)實踐即將結(jié)束,在設計的過程中學了很多東西,進一步對本專業(yè)知識的加深和了解。</p><p> 當老師把課題和要求下發(fā)后,我們就開始查閱相
55、關(guān)的資料,并寫開題報告,做好畢業(yè)實踐的前期準備工作,好的開端是成功的一半。也對后面的設計有幫助。我所做的課題是快熱式電熱水器的設計,老師給了我們比較多的參考資料,由于平時所學甚少,在此設計時我感到很吃力,還好現(xiàn)在互聯(lián)網(wǎng)技術(shù)發(fā)達、以及信息比較廣發(fā),這才使得我這個設計順利完成。其實,我的這個課題接近我們的生活,在我們身邊隨處可見,我們也經(jīng)常會碰見,只是有時候很匆忙沒有來得急去想其工作原理。</p><p> 在做此
56、畢業(yè)實踐時我得出一個結(jié)論:知識必須通過應用才能實現(xiàn)其價值。有些東西自以為學會了,但是用到它時才知道是兩回事。所以我認為,能夠熟練地運用所學的知識的時候才是真正意義上的學會了這方面的知識。</p><p> 這次畢業(yè)實踐使我在處理實際問題上,有了很好的鍛煉。在考慮問題方面,也有了一定的進步。因為一個畢業(yè)實踐是要綜合各方面知識才能完成,在學習的時候,很多課程都是相對獨立的,有的課程有聯(lián)系,但是我們想不到從何處把它們
57、聯(lián)系到一起來。而在畢業(yè)實踐中,許多問題必須綜合起來考慮,單獨的哪一門課程是解決不了問題,這就提高了我們綜合各方面知識運用的能力,將各方面問題與所學的專業(yè)知識聯(lián)系起來,這樣更容易解決所出現(xiàn)的問題。首先要從大局出發(fā),每個工程都是由幾個模塊組成,所以我們要把這些模塊確定好,每個模塊的設計都不一樣,模塊設計完成后,就是要很好的把這些模塊連接起來,組成整體。連接后,就要對其進行調(diào)試,這個調(diào)試是個很復雜的過程。就相當于把畢業(yè)實踐各個方面都要聯(lián)系起來
58、,一個一個問題的解決,使其達到最佳狀態(tài)。畢業(yè)實踐可以檢驗出我們對所學的知識掌握能力,哪些地方已經(jīng)掌握了,哪些地方還沒掌握。通過畢業(yè)實踐就可以清楚的知道自己在大學三年里是否學到了,還是在學校玩了三年。在此,我非常感謝指導本次畢業(yè)實踐的彭志剛和羅紅老師。</p><p> 同時,在做本畢業(yè)實踐的過程中,一些其他的老師和同學還給了我建議與幫助。在此,同時感謝所有在畢業(yè)實踐中給我?guī)椭睦蠋熀屯瑢W們,謝謝!</p&
59、gt;<p><b> 參考文獻</b></p><p> 單片機原理及接口技術(shù)/李朝青-杭州:北京航空航天大學出版社,1998</p><p> 單片機基礎(chǔ)【M】/李廣第—北京:北京航空航天大學出版社,1994</p><p> 數(shù)字電子技術(shù)基礎(chǔ)(第三版)/閻石一北京:高等教育出版社,1989</p>&l
60、t;p> 電子技術(shù)基礎(chǔ)(第五版)/康華光—北京:高等教育出版社,2006</p><p> 例說8051/張義禾,陳敵北—北京:人民郵電出版社,2006</p><p> 8051單片機數(shù)據(jù)傳輸接口與擴展技術(shù)及應用實例/楊金巖,鄭應強,張振仁—北京:人民郵電出版社,2005</p><p> 單片機工程實訓指導/樓蘭苗,李光飛—北京:北京航空航天大學出
61、版社,2007</p><p> 電力電子技術(shù)/ 石新春,楊京燕,王毅—北京:中國電力出版社,2006</p><p> 單片機原理及應用[M]/李建中—西安:西安電子科技大學出版社,2003</p><p> 附錄一 快熱式電熱水器硬件原理圖</p><p><b> :</b></p><
62、;p> 附錄二 程 序</p><p><b> 快熱式熱水器程序</b></p><p> MCU ATAT89S52 XAL 12MHz</p><p> Build by Gavin Hu, 2005.3.18</p><p> ------------------------------
63、--------*/</p><p> //#pragma src</p><p> #include <reg51.h></p><p> #include <intrins.h></p><p> #include <math.h></p><p> void del
64、ay(unsigned int); //延時函數(shù)</p><p> void display(void); //顯示函數(shù)</p><p> unsigned char keyscan(void); //按鍵掃描處理函數(shù)</p><p> void heatctrl(void); //加熱控制函數(shù)&
65、lt;/p><p> void temptest(void); //測溫函數(shù)</p><p> sbit swkey=P1^0; //開關(guān)鍵</p><p> sbit upkey=P1^1; //加熱檔位“+”鍵</p><p> sbit downkey
66、=P1^2; //加熱檔位“-”鍵</p><p> sbit buzz=P1^05; //蜂鳴器輸出端</p><p> sbit triac=P1^6; //可控硅觸發(fā)信號輸出端</p><p> sbit relay=P1^7; //繼電器
67、控制信號輸出端</p><p> sbit led1=P2^5; //加熱檔位指示燈1</p><p> sbit led2=P2^6; //加熱檔位指示燈2</p><p> sbit led3=P2^7; //加熱檔位指示燈3</p><p&
68、gt; signed char data ctemp; //當前測得水溫寄存器</p><p> unsigned char data dispram[2]={0x10,0x10}; //顯示區(qū)緩存</p><p> unsigned char data heatpower,px0count; //加熱檔位寄存器、外中斷0計數(shù)器</p>&l
69、t;p> bit tempov,t0tst,testok; //超溫標志、測溫開始標志、測溫完成標志</p><p> /*----------------------------------------------</p><p> 主函數(shù) void main(void)</p><p><b> 無參數(shù),無返回值</b
70、></p><p> 循環(huán)調(diào)用顯示、鍵掃描、溫度檢測、加熱控制函數(shù)</p><p> ----------------------------------------------*/</p><p> void main(void)</p><p><b> { </b></p><p&
71、gt; unsigned char i,j;</p><p> ctemp=15; //初始化水溫寄存器</p><p> heatpower=5; //初始化加熱檔位為5當</p><p> tempov=0; //清除超溫標志&l
72、t;/p><p> swkey=0; //默認開關(guān)鍵被按下,進入待機狀態(tài)</p><p> TMOD=0x11; //設定T0和T1工作方式為16位定時器</p><p> TCON=0x05; //設置外中斷0和1為下降沿觸發(fā)<
73、/p><p> IP=0x01; //設置外中斷0優(yōu)先</p><p> IE=0x80; //打開總中斷</p><p><b> while (1)</b></p><p><b> {</b><
74、;/p><p><b> i=1;</b></p><p><b> do{</b></p><p> for (j=0;j<100;j++) //循環(huán)100次約0.5s</p><p><b> {</b></p><p>
75、 if (keyscan()) i=6; //如果有鍵按下,顯示當前檔位3s</p><p> display(); //調(diào)用顯示函數(shù)一次約4ms</p><p> heatctrl(); //調(diào)用加熱控制函數(shù)</p><p> }//end for (b=0;b<100;b++)&l
76、t;/p><p> temptest(); //每0.5s進行一次測溫</p><p> } while (--i); //通過改變循環(huán)次數(shù)i的大小決定是否刷新顯示</p><p> j=abs(ctemp); //取溫度絕對值</p><p> d
77、ispram[1]=j%10; //取個位數(shù)送顯示</p><p> j/=10; //取十位數(shù)</p><p> dispram[0]=j?j:0x11; //送顯示(帶滅零)</p><p> }//end while (1)</p><p>
78、<b> } </b></p><p> /*--------------------------------------</p><p> 延時函數(shù) void delay(unsigned int dt)</p><p> 參數(shù):dt,無返回值</p><p> 延時時間=dt*500機器周期</p&g
79、t;<p> --------------------------------------*/</p><p> void delay(unsigned int dt)</p><p><b> {</b></p><p> register unsigned char bt; //定義寄存器變量</p&g
80、t;<p> for (; dt; dt--)</p><p> for (bt=250; --bt; ); //此句編譯時以“DJNZ”實現(xiàn),250*2=500機器周期</p><p><b> }</b></p><p> /*--------------------------------------
81、</p><p> 顯示函數(shù) void display(void)</p><p><b> 無參數(shù),無返回值</b></p><p> 兩位共陽數(shù)碼管掃描顯示</p><p> --------------------------------------*/</p><p> void
82、 display(void)</p><p><b> {</b></p><p> unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,\</p><p> 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xf
83、f};</p><p> unsigned char i,a;</p><p> a=0xfe; //位選賦初值</p><p> for (i=0; i<2; i++) //循環(huán)掃描兩位數(shù)碼管</p><p><b> {</b>&l
84、t;/p><p> P2|=0x1f; //清除位選</p><p> P0=table[dispram[i]]; //送顯示段碼</p><p> P2&=a; //選通一位</p><p> delay(4);
85、 //延時2ms</p><p> a=_crol_(a,1); //改變位選字</p><p> P0=0xff; //消影</p><p><b> }</b></p><p><b> }</b&
86、gt;</p><p> /*----------------------------------------------------------</p><p> 按鍵掃描處理函數(shù) unsigned char keyscan(void)</p><p> 無參數(shù),返回值:無符號字符型,無鍵按下為0,有鍵按下為其它</p><p>
87、影響全局變量:heatpower</p><p> ----------------------------------------------------------*/</p><p> unsigned char keyscan(void)</p><p><b> {</b></p><p> unsig
88、ned char i,ch;</p><p> if (upkey==0) //“+”鍵</p><p><b> {</b></p><p> buzz=0; //打開蜂鳴器(發(fā)出按鍵音)</p><p> for (i=0;i&l
89、t;5;i++) display(); //延時消抖</p><p> buzz=1; //關(guān)閉蜂鳴器</p><p> if (heatpower<9) heatpower++; //檔位加一</p><p> dispram[0]=0;</p><p> dispram[1]=h
90、eatpower; //顯示當前檔位</p><p> while (upkey==0) display(); //等待鍵釋放</p><p> return (1); //返回有鍵按下</p><p><b> }</b></p><p> else if
91、 (downkey==0) //“-”鍵</p><p><b> {</b></p><p> buzz=0; //打開蜂鳴器(發(fā)出按鍵音)</p><p> for (i=0;i<5;i++) display(); //延時消抖</p><p&g
92、t; buzz=1; //關(guān)閉蜂鳴器</p><p> if (heatpower>0) heatpower--; //檔位減一</p><p> dispram[0]=0;</p><p> dispram[1]=heatpower; //顯示當前檔位</p><p>
93、; while (downkey==0) display(); //等待鍵釋放</p><p> return (2); //返回有鍵按下</p><p><b> }</b></p><p> else if (swkey==0) //開關(guān)鍵</p><p&
94、gt;<b> {</b></p><p> buzz=0; //打開蜂鳴器(發(fā)出按鍵音)</p><p> for (i=0;i<30;i++) display(); //延時消抖</p><p> buzz=1; //關(guān)閉蜂鳴器</p
95、><p> swkey=1; //置位開關(guān)鍵</p><p> while (swkey==0) display(); //等待鍵釋放</p><p> ch=IE; //暫存中斷控制字IE</p><p> IE=0x00;
96、 //禁止中斷</p><p><b> P0=0xff;</b></p><p><b> P1=0xff;</b></p><p> P2=0xff; //清除端口輸出</p><p> dispram[0]=0x10;<
97、;/p><p> dispram[1]=0x10; //顯示“--”</p><p> display();</p><p><b> while (1)</b></p><p><b> {</b></p><p> while (swkey
98、) display(); //等待開關(guān)鍵按下</p><p> buzz=0; //打開蜂鳴器(發(fā)出按鍵音)</p><p> for (i=0;i<10;i++) display();//延時消抖</p><p> buzz=1; //關(guān)閉蜂鳴器</p&g
99、t;<p> if (swkey==0) break; //確認開關(guān)鍵被按下</p><p><b> }</b></p><p> while (swkey==0) display(); //等待鍵釋放</p><p> IE=ch; //還原中斷控制
100、字IE</p><p> return (0); //返回無鍵按下</p><p><b> }</b></p><p> else return (0); //無任何鍵按下時由此返回</p><p><b> }</b>&l
101、t;/p><p> /*--------------------------------------</p><p> 加熱控制函數(shù) void heatctrl(void)</p><p><b> 無參數(shù),無返回值</b></p><p> 判斷是否加熱、加熱功率及檔位指示燈處理</p><p&
102、gt; --------------------------------------*/</p><p> void heatctrl(void)</p><p><b> {</b></p><p> if (!tempov) //當沒有超溫標志時</p><p><
103、;b> {</b></p><p> relay=0; //接通繼電器</p><p> buzz=1; //關(guān)閉蜂鳴器</p><p> switch (heatpower) //判斷加熱檔位</p><p
104、><b> {</b></p><p> case 0: {EX1=0;ET1=0;triac=1;led1=1;led2=1;led3=1;break;}//0檔不加熱,指示燈不亮</p><p><b> case 1:</b></p><p><b> case 2:</b><
105、;/p><p><b> case 3:</b></p><p> case 4: {led1=0;led2=1;led3=1;EX1=1;break;} //1~4檔1號指示等亮</p><p><b> case 5:</b></p><p><b> case 6:</b&
106、gt;</p><p><b> case 7:</b></p><p> case 8: {led1=0;led2=0;led3=1;EX1=1;break;} //5~8檔1號、2號指示燈亮</p><p> case 9: {EX1=0;ET1=0;led1=0;led2=0;led3=0;triac=0;break;} //9檔全
107、功率,指示燈全亮</p><p><b> }</b></p><p><b> }</b></p><p> else //當有超溫標志時</p><p><b> {</b></p><p>
108、; relay=1; //斷開繼電器</p><p> EX1=0; ET1=0; triac=1; //關(guān)閉可控硅</p><p> buzz=0; //蜂鳴報警</p><p><b> }</b></p><
109、;p><b> }</b></p><p> /*--------------------------------------</p><p> 測溫函數(shù) void temptest(void)</p><p><b> 無參數(shù),無返回值,</b></p><p> 影響全局變量:c
110、temp,tempov</p><p> 測量并查表計算溫度,判斷是否超溫</p><p> --------------------------------------*/</p><p> void temptest(void)</p><p><b> {</b></p><p>
111、 signed char temp,tempmin,tempmax;</p><p> unsigned int t0rig;</p><p> unsigned int code temptab[]={0x6262,0x61eb,0x6171,0x60f7,0x6047,0x5ff7,0x5f6e,0x5eef,0x5e53,0x5dbe,0x5d4b,0x5ca5,0x5c17,\
112、</p><p> 0x5b6b,0x5ada,0x5a5c,0x599b,0x58ff,0x5869,0x57b0,0x570d,0x5663,0x55c6,0x550e,0x5444,0x5396,\</p><p> 0x52dd,0x5240,0x5189,0x50b0,0x5005,0x4f20,0x4e69,0x4db1,0x4cef,0x4c42,0x4b64,0x4aa
113、a,0x49e1,\</p><p> 0x48fc,0x4847,0x476c,0x46b1,0x4604,0x4503,0x4449,0x4356,0x4299,0x41c0,0x40ce,0x3ff0,0x3f2b,\</p><p> 0x3e33,0x3d86,0x3ca6,0x3bd2,0x3b26,0x3a39,0x3973,0x38a6,0x37ef,0x373f,0x
114、3687,0x35c3,0x3507,\</p><p> 0x3487,0x33bc,0x32ed,0x324f,0x319e,0x3106,0x3053,0x2fa6,0x2f2a,0x2e88,0x2e00,0x2d63,0x2cd6,\</p><p> 0x2c65,0x2bae,0x2b28,0x2a97,0x2a07,0x298e,0x2914,0x287a,0x280d
115、,0x278a,0x2703,0x2687,0x2626,\</p><p> 0x25e5,0x256d,0x24ee,0x2489,0x2414,0x23bc,0x2356,0x22d9,0x2278,0x2203}; //溫度頻率表</p><p> px0count=2; //測頻中斷函數(shù)參數(shù)</p><p>
116、 t0tst=1; //置測頻程序開始標志</p><p> EX0=1; //打開測頻外中斷</p><p> testok=0; //清除測頻程序完成標志</p><p> while (!testok) dis
117、play(); //等待測試完成</p><p> t0rig=(unsigned int)TH0<<8|TL0; //字節(jié)合成字</p><p> tempmin=0; //以下是二分查表法計算溫度值</p><p> tempmax=100; //
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計---快熱式家用電熱水器的設計
- 快熱式家用電熱水器的設計
- 課題實踐快熱式家用電熱水器的設計
- 家用電熱水器的設計畢業(yè)設計
- 畢業(yè)設計---基于單片機控制的快熱式家用電熱水器的設計
- 畢業(yè)設計(論文)-基于單片機控制的快熱式家用電熱水器的設計
- 智能家用電熱水器控制器設計畢業(yè)設計
- 【課程設計】-基于單片機的快熱式家用電熱水器的設計
- 家用電熱水器控制系統(tǒng)設計
- 畢業(yè)設計--基于51單片機的家用電熱水器設計
- 智能家用電熱水器控制器
- 智能家用電熱水器控制器
- 家用電熱水器控制系統(tǒng)的設計【畢業(yè)論文】
- 電氣工程及其自動化畢業(yè)設計快熱式電熱水器的設計
- 家用電熱水器控制系統(tǒng)的設計【開題報告】
- 電熱水器畢業(yè)設計開題報告
- 智能家用電熱水器控制器.pdf
- 智能家用電熱水器控制器.pdf
- 外文翻譯-----智能家用電熱水器控制器
- 畢業(yè)論文----基于51單片機的家用電熱水器設計
評論
0/150
提交評論