第1章 引言
隨著科學(xué)技術(shù)的發(fā)展,城鎮(zhèn)居民家庭多數(shù)以更加安全方便的電熱水器代替了燃?xì)鉄崴鳎粡那帮L(fēng)光無限的燃?xì)鉄崴饕蛭廴驹蚝桶踩珕栴}逐漸退出了我們的視線;新興的太陽能熱水器雖然受到安裝條件和天氣原因的限制,但其安全、節(jié)約、環(huán)保的特性廣受消費(fèi)者青睞,發(fā)展態(tài)勢(shì)迅猛。電熱水器相較于燃?xì)鉄崴骱吞柲軣崴鞯膬?yōu)點(diǎn):便于安裝,不受外部天氣的影響,不受樓層和供水管道的限制,加熱速度快也更加有安全保障,正是因?yàn)檫@些優(yōu)點(diǎn)大部分家庭選擇電熱水器。由于技術(shù)在不斷的發(fā)展,對(duì)各種嵌入式設(shè)備的要求也越來越高了,與此同時(shí)熱水器的智能化發(fā)展也非常迅速。人們已經(jīng)不能滿足傳統(tǒng)熱水器非智能的操作方式,再這樣的背景下,本次設(shè)計(jì)將要設(shè)計(jì)一款智能化的熱水器設(shè)備。通過熱水器智能的調(diào)控可以完成自動(dòng)斷電的安全功能,同時(shí)設(shè)置的有紅外遙控的功能,可以滿足用戶的遙感的要求?旖莘奖,使人們洗浴時(shí)能放心享受,安全便捷,其性能滿足人們對(duì)現(xiàn)代生活快節(jié)奏的需求。
STC89C51的內(nèi)部資源非常豐富,而且功能強(qiáng)大。STC89C51集成以下功能STC89C52最后一個(gè)字符“1”代表了該存儲(chǔ)芯片的Flash容量大小為4k字節(jié)。同時(shí)它內(nèi)部集成256字節(jié)片內(nèi)RAM,RAM主要用于程序變量的存儲(chǔ),256字節(jié)可以適用于小型的程序運(yùn)行。32個(gè)數(shù)據(jù)I/O 接口,這些接口在用于普通功能時(shí)用來完成數(shù)據(jù)通信。這些I/O口有的還有復(fù)用功能,這在后面會(huì)介紹到。1個(gè)看門狗定時(shí)器,起到監(jiān)測(cè)程序運(yùn)行狀況的作用。2 個(gè)數(shù)據(jù)指針,一個(gè)堆棧指針,一個(gè)程序PC指針。三個(gè)16位定時(shí)器,大部分要配合中斷來實(shí)現(xiàn)定時(shí)功能,主要作用是計(jì)時(shí)的。三個(gè)16位計(jì)數(shù)器,用于監(jiān)測(cè)脈沖跳變次數(shù)或者其他計(jì)數(shù)。6個(gè)中斷源,中斷在單片機(jī)的內(nèi)部資源中占有很重要的部分,有了中斷程序可以高效率的執(zhí)行。全雙工串行口,通過串口來和其他主機(jī)通信,起到通訊作用。[1]借助于STC89C51單片機(jī)的強(qiáng)大功能,來控制真?zhèn)系統(tǒng)的協(xié)調(diào)運(yùn)行,STC89C51單片機(jī)作為此次系統(tǒng)的控制芯片,通過圍連接顯示模塊以、數(shù)據(jù)輸入模塊,紅外線傳輸模塊以及報(bào)警電路完成此次的系統(tǒng)設(shè)計(jì)。
本設(shè)計(jì)第一章主要描述了加熱電熱水器控制系統(tǒng)的應(yīng)用背景、目的和意義;第二章是控制系統(tǒng)的需求分析和設(shè)計(jì)方案的選擇,主要包括控制器方面的選擇;第三章介紹了控制系統(tǒng)硬件電路的設(shè)計(jì);第四章主介紹了控制系統(tǒng)軟件方面的設(shè)計(jì);第五章進(jìn)行了控制系統(tǒng)的仿真和測(cè)試;第六章主要是對(duì)該系統(tǒng)存在的問題以及解決的方案進(jìn)行總結(jié)。
第2章 系統(tǒng)功能需求分析與控制方案選擇
根據(jù)預(yù)想所要達(dá)到的控制要求有:(1)用LCD1602液晶顯示水溫、設(shè)置上下限和定時(shí)時(shí)間。(2)水溫檢測(cè)顯示范圍為00~99℃,精度為±1℃。(3)溫度設(shè)置區(qū)間為0度到99度,系統(tǒng)不斷檢測(cè)當(dāng)前水溫,如果水溫高于用戶設(shè)定的數(shù)值,則系統(tǒng)自動(dòng)斷電,不在加熱。如果水溫低于用戶設(shè)定的數(shù)值,則系統(tǒng)不會(huì)斷電,繼續(xù)加熱。(4)設(shè)置4個(gè)程序按鍵。分別為設(shè)置按鍵、加鍵、減鍵、確定鍵。(5)可以紅外遙控,通過紅外一體接收探頭接收遙控器信號(hào),執(zhí)行與主板按鍵同等功能。由此可以確定兩種方案進(jìn)行比較選擇。
2.1 系統(tǒng)功能需求分析在此次的系統(tǒng)設(shè)計(jì)中主要是通過溫度傳感器測(cè)得的數(shù)據(jù),通過和單片機(jī)的連接引腳完成數(shù)據(jù)的傳輸。單片機(jī)通過采集到數(shù)據(jù)進(jìn)行溫度值的判斷,來控制加熱器的運(yùn)行狀態(tài)。系統(tǒng)中的數(shù)據(jù)顯示使用的是LCD1602液晶顯示屏,來顯示實(shí)時(shí)溫度的數(shù)值。報(bào)警指示燈(黃):當(dāng)熱水器出現(xiàn)異常情況時(shí),該指示燈被點(diǎn)亮。
系統(tǒng)在通電之后,單片機(jī)內(nèi)部的PC指針指向程序運(yùn)行的區(qū)域,首先開始的是溫度傳感器的初始化,在完成溫度初始化任務(wù)之后,系統(tǒng)就處于檢測(cè)判斷狀態(tài)。檢測(cè)按鍵的發(fā)生以及溫度是否超出設(shè)定區(qū)域。首先進(jìn)行溫度數(shù)值的判斷,接著繼續(xù)檢測(cè)溫度按鍵,若無按鍵,則接著上一步的執(zhí)行(以新的設(shè)定值開始工作)。若有按鍵,則重新設(shè)定溫度范圍,如此循環(huán)。
2.2 方案選擇方案一:以STC89C51單片機(jī)為控制中心的智能電熱水器。
主控模塊在整個(gè)系統(tǒng)中是最中心的部分,承擔(dān)著統(tǒng)籌的作用,需要檢測(cè)鍵盤等各種參數(shù),以及驅(qū)動(dòng)數(shù)碼管的顯示。[2]在本次設(shè)計(jì)中我選用了51系列單片機(jī)中的STC89C51單片機(jī)作為系統(tǒng)的主控芯片。因?yàn)閱纹瑱C(jī)功能強(qiáng)大,應(yīng)用廣,從小的電子產(chǎn)品到大的工業(yè)控制都有很廣泛的應(yīng)用。
STC89C系列單片機(jī)兼容性很好。除了單片機(jī)內(nèi)部擴(kuò)展資源不同之外,其余資源都相同。比如說52類型的單片機(jī)比51類型的單片機(jī)E2PROM擴(kuò)大了2倍,以及內(nèi)部隨機(jī)數(shù)存儲(chǔ)器RAM增大些之外,其余功能全部一樣。也就是說STC89S系列單片機(jī)基礎(chǔ)功能都具備,并且引腳位置,中斷地址,以及定時(shí)器方式都是一樣的,唯一不同的是擴(kuò)展的功能。由于單片機(jī)在不同場(chǎng)合控制的復(fù)雜度不一樣,所以對(duì)單片機(jī)內(nèi)部資源配置也不同。以便于適應(yīng)于多種場(chǎng)合使用,而且選擇合適的單片機(jī)型號(hào),可以節(jié)約成本。當(dāng)然,資源豐富的單片機(jī)價(jià)格也要稍貴一些。
此類單片機(jī)以EEPROM電可檫除和Flash技術(shù)為主導(dǎo)的存儲(chǔ)器單片機(jī)以FLASH作為存儲(chǔ)器的好處很明顯,F(xiàn)lash可擦出次數(shù)多,一般很少因?yàn)椴脸绦虺霾脸鼺lash次數(shù)而損害單片機(jī)的。單片機(jī)的存儲(chǔ)器除了可以存儲(chǔ)程序,還可以運(yùn)行程序,但是不能存儲(chǔ)程序中的某些變量。這樣可以加快程序的執(zhí)行速度,提高單片機(jī)的效率。STC89系列的單片機(jī)具有以下特性:
(1)單片機(jī)引出的多個(gè)I/O口,使數(shù)據(jù)交換更加方便。
(2)采用靜態(tài)時(shí)鐘模式。單片機(jī)外部連接晶振電路,通過晶振里面的震蕩電路給單片機(jī)提供時(shí)鐘脈沖。時(shí)鐘脈沖為單片機(jī)的程序執(zhí)行提供了時(shí)鐘節(jié)拍,在一個(gè)時(shí)鐘節(jié)拍下,單片機(jī)的PC指針取一個(gè)指令執(zhí)行,從而完成程序的順序執(zhí)行。
(3)可以應(yīng)用于較小系統(tǒng)設(shè)計(jì),或者定制用于專用的系統(tǒng)控制器,對(duì)需要控制的系統(tǒng)提供一種便捷的處理方法。
(4)通過定時(shí)器和計(jì)數(shù)器,可以設(shè)置時(shí)間間隔和記錄電壓變化次數(shù)。
(5)可以使用匯編語言設(shè)計(jì)的程序,其執(zhí)行的效率更加高效。以達(dá)到節(jié)約單片機(jī)內(nèi)部寶貴的資源為目的。
(6)單片機(jī)的品種多,可以選用不同內(nèi)部資源部處理器,達(dá)到節(jié)約成本的目的。
下面具體介紹STC89C51芯片的參數(shù):
STC89C51是一個(gè)8位微控制器,芯片內(nèi)部已經(jīng)集成4K字節(jié)存儲(chǔ)區(qū)域的Flash,可以直接運(yùn)行程序。STC89S51采用的是51系列的內(nèi)核它與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。單片機(jī)的P0口。如果要改變P0口的輸出電平值時(shí),要在在單片機(jī)的相應(yīng)寄存器里寫入數(shù)據(jù)1時(shí),單片機(jī)就會(huì)把相對(duì)應(yīng)的端口輸出高電平。如果在相應(yīng)的寄存器里面寫入0,單片機(jī)就會(huì)在相對(duì)應(yīng)的端口輸出定電平。比如在P0的寄存器地址上寫入P0=0x01,則P0.1口位置就會(huì)輸出高電平;如果P0=0x00,則P0口位置就會(huì)輸出低電平。同理,外部線路提供低電壓則可以通過該引腳讀出低電壓,單片機(jī)內(nèi)部對(duì)該位的寄存器就會(huì)被寫入0。由于P0口輸出電流較小,所以需要上拉電阻來提供驅(qū)動(dòng)電流。
單片機(jī)的P1口。P1口外部不用設(shè)置上拉電阻,P1口的能夠提供20MA的驅(qū)動(dòng)電流,所以可以直接對(duì)P1口的寄存器寫值。P1口一般沒有復(fù)用接口,在STC其他的單片機(jī)中有P1口的復(fù)用引腳,用來設(shè)置定時(shí)器PWM波的輸出,或者單片機(jī)內(nèi)部AD電壓值的采集端口。在本次心率計(jì)的設(shè)計(jì)中,并沒有用到PWM的功能,所以選擇的芯片為傳統(tǒng)的51內(nèi)核單片機(jī)。在沒有復(fù)用功能的單片機(jī)引腳,只有引腳的高電平和低電平輸入輸出功能,以及對(duì)單片機(jī)引腳的電壓值讀取功能。功能類似于P0口,如果要控制P1口的電平輸出值,就要對(duì)P1口的地址寄存器寫入數(shù)據(jù)。
P2口可以作為普通I/O功能也可以用作第二功能。當(dāng)P2口作為普通I/O口輸入輸出時(shí),同P0、P1口一樣,只是對(duì)該位的引腳輸出高電平和低電平的操作。當(dāng)P2口作為第二功能使用時(shí),P2口作為外部存儲(chǔ)區(qū)域的高八位地址線。當(dāng)單片機(jī)的內(nèi)部存儲(chǔ)區(qū)的容量不夠時(shí),就要采取外部連接存儲(chǔ)芯片的辦法來擴(kuò)充單片機(jī)的存儲(chǔ)容量。[3]由于單片機(jī)的程序存儲(chǔ)區(qū)域可以直接運(yùn)行程序,單片機(jī)的內(nèi)部可以直接尋址找到程序所在的地址,在連接單片機(jī)外部外部存儲(chǔ)芯片時(shí),要和芯片的讀取地址相對(duì)應(yīng),所以外部存儲(chǔ)的連接位置是不可改變的,從而確定P2作為復(fù)用引腳的地址位置。通過對(duì)P2口地址的訪問,可以讀取外部存儲(chǔ)芯片中的數(shù)據(jù),也可以對(duì)相應(yīng)的地址為寫入數(shù)據(jù)。外部連接的存儲(chǔ)芯片的大小可以選擇,通常選用的標(biāo)準(zhǔn)是根據(jù)程序的大小來決定的。
P3口是一個(gè)可復(fù)用的端口。P3口的第一功能是作為數(shù)據(jù)的輸入輸出,通過對(duì)P3口的地址寫入數(shù)據(jù),從而控制高低電平的變化。當(dāng)單片機(jī)設(shè)置了第二功能是,單片機(jī)的第一功能就不再工作,兩種模式只能選用其中的一種。
另外P3口還可以設(shè)置第二功能。STC89C51單片機(jī)內(nèi)部集成了6個(gè)中斷。中斷的作用是使程序更高效的執(zhí)行,其中兩個(gè)外部中斷通過外部引腳進(jìn)行觸發(fā),提供感知外部的電壓變化進(jìn)入中斷。定時(shí)器一共有3個(gè)中斷,這些中斷是單片機(jī)的內(nèi)部中斷,根據(jù)設(shè)置相關(guān)的寄存器來觸發(fā)定時(shí)器中斷。[4]中斷的相應(yīng)與設(shè)置的相應(yīng)中斷標(biāo)志位有關(guān),一旦中斷響應(yīng),就立即進(jìn)入用戶寫的中斷程序中。另外一個(gè)是串口中斷,來檢測(cè)串口接收或者發(fā)送數(shù)據(jù)的。串口對(duì)于單片機(jī)來說是一個(gè)與外界通訊的接口。有了串口,可以完成單片機(jī)對(duì)PC的通訊,或者單片機(jī)對(duì)單片機(jī)的通訊。通過串口傳輸數(shù)據(jù),完成對(duì)單片機(jī)的控制任務(wù)。
通過上面所述,可以知道STC89C51單片機(jī)具有結(jié)構(gòu)簡(jiǎn)單、控制能力強(qiáng)、可靠性高、體積小、價(jià)格低等優(yōu)點(diǎn)。下圖為以STC89C51單片機(jī)為控制芯片的系統(tǒng)連接圖:
方案二:PIC16C72單片機(jī)為控制器件的智能電熱水器。
PIC16C72是一款8位芯片。它的片內(nèi)資源要比51單片機(jī)豐富,它的片機(jī)集成A/D轉(zhuǎn)換器,片內(nèi)有大容量的程序存儲(chǔ)器以及數(shù)據(jù)存儲(chǔ)區(qū)。但是它的成本比較貴。通過上面的綜合考慮,這次設(shè)計(jì)硬件電路時(shí),并不需要處理器片內(nèi)豐富的資源,這次寫入的程序較小,普通的51單片機(jī)就足以應(yīng)付這次的系統(tǒng)設(shè)計(jì),但考慮到成本控制和軟硬件實(shí)現(xiàn)難度,采用方案一的控制系統(tǒng)設(shè)計(jì)比較方便快捷,可以進(jìn)一步提高電熱水器的智能作用,能夠保證持續(xù)的熱水供應(yīng),并可以滿足人們?nèi)粘I畹男枰岣吡巳藗兩畹馁|(zhì)量。
2.3 本章小結(jié)本章主要對(duì)此次設(shè)計(jì)的家用電熱水器控制系統(tǒng)的控制器方案選擇上做了決定,最終決定使用結(jié)構(gòu)簡(jiǎn)單、控制能力強(qiáng)、可靠性高、體積小、價(jià)格低的STC89C51單片機(jī)作為控制器。
第3章 硬件系統(tǒng)設(shè)計(jì)
本章節(jié)的硬件設(shè)計(jì)主要是系統(tǒng)電源的設(shè)計(jì)以及為控制芯片的外圍電路設(shè)計(jì)。下面首先介紹系統(tǒng)電源電路的設(shè)計(jì):
3.1 電源電路下圖為系統(tǒng)電源的設(shè)計(jì)流程圖:
系統(tǒng)供電電壓各部分簡(jiǎn)介:
(1)對(duì)電壓降壓
由于市電的電壓值較高,單片機(jī)不能直接使用,所以在進(jìn)行電壓處理之前應(yīng)先進(jìn)行電壓的降壓操作。
(2)整流濾波電路
電壓進(jìn)過變壓器的電壓轉(zhuǎn)化之后電壓值雖然穩(wěn)定在5V左右,但是輸出的是交流電。需要把交流電轉(zhuǎn)變?yōu)橹绷麟,這一步就需要設(shè)計(jì)整流濾波電路。
(3)穩(wěn)壓電路
當(dāng)電流經(jīng)過整流濾波之后電壓并不穩(wěn)定,單片機(jī)需要一個(gè)穩(wěn)定的電源這是的電源對(duì)單片機(jī)的系統(tǒng)穩(wěn)定性不利。所以需要通過一個(gè)穩(wěn)壓芯片把電壓穩(wěn)定下拉。[5]本次設(shè)計(jì)采用的芯片是7805。通過這個(gè)芯片可以控制電壓的穩(wěn)定輸出。下圖為穩(wěn)壓芯片的電路連接圖:

圖3.2 可調(diào)穩(wěn)壓電路原理圖

圖3.3 7805三端穩(wěn)壓電源電路
需要特別注意的是,單片機(jī)需要輸入較為穩(wěn)定的電壓波形,雖然穩(wěn)壓器7805輸出電壓波形比較穩(wěn)定,但是為了保證系統(tǒng)的穩(wěn)定性,防止突發(fā)事件的產(chǎn)生,需要在其輸入端與輸出端加濾波電容,濾除不需要波形,防止燒壞系統(tǒng)器件,保證系統(tǒng)穩(wěn)定運(yùn)行。
3.2 單片機(jī)最小系統(tǒng)說明下面主要介紹單片機(jī)最小系統(tǒng)的兩個(gè)外圍電路:
時(shí)鐘電路:晶振電路是單片機(jī)程序運(yùn)行的基礎(chǔ),晶振振動(dòng)頻率決定單片機(jī)的程序執(zhí)行速率。晶振作為單片機(jī)的時(shí)鐘節(jié)拍。有兩種時(shí)鐘產(chǎn)生方式,一種成為內(nèi)部時(shí)鐘,另一種稱為外部時(shí)鐘。為了使單片機(jī)的功耗消耗較小,本系統(tǒng)使用的是外部時(shí)鐘電路。片機(jī)內(nèi)部集成了一個(gè)震蕩電路,在X1和X2引腳連接晶振,并且在晶振的兩端加上電容,給單片機(jī)上電,就可以完成單片機(jī)晶振起振,本系統(tǒng)選擇的晶振是12MHZ。
復(fù)位電路:復(fù)位電路,負(fù)責(zé)單片機(jī)的程序復(fù)位。當(dāng)程序運(yùn)行到某個(gè)內(nèi)存區(qū)域時(shí),使用者不愿意程序繼續(xù)執(zhí)行下去,選擇復(fù)位引腳,使程序恢復(fù)到0地址存儲(chǔ)區(qū)域執(zhí)行。當(dāng)復(fù)位電路中的按鍵按下時(shí),會(huì)給兩個(gè)電容充電,使RST引腳的電壓升高時(shí)間長(zhǎng)達(dá)單片機(jī)的一個(gè)時(shí)鐘周期,就可以完成單片機(jī)程序的復(fù)位。

圖3.4 單片機(jī)最小系統(tǒng)
3.3 溫度檢測(cè)電路溫度傳感器DS18B20體積特別小,硬件開銷相對(duì)較低,測(cè)量精度比較高,而且抗干擾能力特別強(qiáng)。DS18B20是全數(shù)字溫度轉(zhuǎn)換及輸出,單總線數(shù)據(jù)通信,最高能達(dá)到12位分辨率,檢測(cè)的溫度范圍大,是開發(fā)有關(guān)溫度產(chǎn)品的極佳選擇。[6]其主要功能特性如下:
(1)獨(dú)特的1-Wire總線接口僅需要一個(gè)管腳來通信。
(2)具有多路采集的能力使得對(duì)于分布式溫度的采集和應(yīng)用更加簡(jiǎn)便。
(3)無需其他外部器件。
(4)能夠通過數(shù)據(jù)線進(jìn)行供電,供電范圍為3.0V至5.5V。
(5)待機(jī)時(shí)無損耗。
(6)可測(cè)量溫度的范圍為:-55℃至+125℃(-67℉至+257℉)。
(7)溫度以9 位數(shù)字量讀出
(8)如果測(cè)量溫度的范圍超過-10℃至85℃之外時(shí),具有+-0.5℃的精度。
(9)使用者用于對(duì)溫度報(bào)警功能的設(shè)置。
(10)使用者設(shè)置警報(bào)溫度的溫度值,用于報(bào)警功能。
DS18B20芯片內(nèi)部有一個(gè)測(cè)量溫度的傳感器,它是溫度傳輸?shù)幕A(chǔ);一個(gè)存儲(chǔ)芯片的固有信息的ROM區(qū);用于存儲(chǔ)芯片的ID等信息;一個(gè)RAM存儲(chǔ)區(qū),用于芯片的溫度數(shù)據(jù)以及一些寄存器數(shù)值的存放;還有一個(gè)警報(bào)電路。其工作原理為:低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。
溫度傳感器接單片機(jī)時(shí)只需要用到一個(gè)I/O口,連接單片機(jī)的I/O口時(shí)沒有特殊的要求,當(dāng)芯片連接單片機(jī)時(shí),單片機(jī)通過單總線協(xié)議,從這一個(gè)I/O口里讀取或者寫入數(shù)據(jù)。但是不管是哪種方法,I/O口都要接上4.7kΩ左右的上拉電阻。下圖為溫度傳感器的電路連接圖:

圖3.5 測(cè)溫模塊
3.4 人機(jī)交互電路3.4.1 鍵盤接口電路按鍵的設(shè)計(jì)常用的有兩種,一個(gè)按鍵連接一個(gè)I/O,這是獨(dú)立按鍵,另一種是矩陣排布。各有優(yōu)點(diǎn),首先,獨(dú)立按鍵可以直接連接到中斷引腳。這樣設(shè)置好單片機(jī)的相應(yīng)中斷位,就可以用按鍵來觸發(fā)中斷。這樣做的好處是:程序可以很快的去執(zhí)行所需要的功能,對(duì)按鍵的相應(yīng)速度很快?梢赃_(dá)到按下按鍵就可以觸發(fā)相應(yīng)的事件。另外獨(dú)立按鍵可以減少程序負(fù)擔(dān),不用掃描相應(yīng)的位置,這樣可以加快程序的執(zhí)行,相對(duì)來說,對(duì)程序的編寫難度也會(huì)有所下降。如果使用矩陣連接鍵盤的方法,它的好處是節(jié)約微控制器的I/O資源。比如說25個(gè)按鍵可以連接5個(gè)接口就可以。用程序的掃描辦法,是可以實(shí)現(xiàn)的。比如說用到的按鍵數(shù)量較少,當(dāng)然選用獨(dú)立按鍵的辦法,這樣可以減少程序復(fù)雜度,也不會(huì)浪費(fèi)單片機(jī)的I/O資源。[7]當(dāng)然如果按鍵較多,那就必須使用矩陣按鍵要不然,單片機(jī)只能連接幾個(gè)按鍵,而其他外設(shè)就連接不上。
按鍵的使用也需要注意。因?yàn)楝F(xiàn)在用的大多數(shù)按鍵用的是輕觸按鍵。當(dāng)按下之后按鍵兩端的電路接通。當(dāng)松開之后,按鍵的兩端電路斷開。這樣就會(huì)產(chǎn)生一個(gè)抖動(dòng)現(xiàn)象。因?yàn)閱纹瑱C(jī)采集速度較快,當(dāng)按下按鍵到按鍵彈起這段時(shí)間內(nèi)可能會(huì)產(chǎn)生多次跳動(dòng)。對(duì)數(shù)據(jù)采集產(chǎn)生不可預(yù)估的變動(dòng)。這要通過程序做相應(yīng)的延時(shí)來消除機(jī)械抖動(dòng)。在本次設(shè)計(jì)中所使用的是四個(gè)獨(dú)立的按鍵,接口電路如下圖所示:

圖3.6 鍵盤電路
3.4.2 顯示電路本次設(shè)計(jì)的顯示模塊使用的是LCD1602,下面介紹這款液晶顯示器以及接口電路。
(1)顯示原理介紹
1602顯示屏可以顯示16×2個(gè)單元,每個(gè)單元有8×8=64的點(diǎn)組成。其中8為Y坐標(biāo)的點(diǎn)數(shù),8為X坐標(biāo)的點(diǎn)數(shù),根據(jù)點(diǎn)數(shù)的亮滅組成相應(yīng)的圖形。把需要點(diǎn)亮的點(diǎn)數(shù)寫入顯示屏內(nèi)部寄存器中,顯示器自動(dòng)在屏幕上打印出預(yù)想的圖像。
(2)字符的顯示
用LCD顯示一個(gè)字符時(shí),字符顯示對(duì)應(yīng)一個(gè)顯示單元,因?yàn)橐粋(gè)字符由8×8點(diǎn)陣組成的圖形,所以可以顯示相應(yīng)簡(jiǎn)單的字符。如果想要在顯示屏上顯示一個(gè)字符就要在相應(yīng)的點(diǎn)上寫1,這樣對(duì)應(yīng)的點(diǎn)就點(diǎn)亮,根據(jù)點(diǎn)的排列,就顯示出了字符。比較方便的是控制器里面自帶有字符存儲(chǔ)器,寫字符時(shí),可以直接讀取這些字符的存儲(chǔ)位置,就可以得到相應(yīng)的字符顯示。字符存儲(chǔ)器里面存儲(chǔ)了160個(gè)字符,字符種類豐富,可以顯示一些簡(jiǎn)單的界面。
(3)漢字的顯示
漢字的顯示要用到電腦上面的取模軟件,先對(duì)漢字取模(就是對(duì)各個(gè)點(diǎn)的顯示,形成一些編碼,復(fù)制到程序的存儲(chǔ)數(shù)據(jù)區(qū)),之后把用取模軟件得到的數(shù)據(jù)寫到LCD的CGRAM中,讀取相應(yīng)的位置,就可以在屏幕上打印出所需要的漢字。LCD1602顯示屏內(nèi)部集成了地址命令,這些地址命令控制顯示字符圖像的位置。通過寫命令寫入地址,就可以在顯示屏的地址的位置寫入數(shù)據(jù),[8]把數(shù)據(jù)寫入CGRAM,就可以在液晶顯示字符圖像。
在對(duì)液晶顯示屏寫數(shù)據(jù)和寫命令之前,要先對(duì)液晶顯示屏進(jìn)行初始化,初始化是通過命令表查得想要初始化的功能來設(shè)置的。初始化操作包括液晶的顯示位置、光標(biāo)是否打、屏幕是否左右移動(dòng)、是否指針每讀一位自動(dòng)加一、是否清屏等等命令。

圖3.7 單片機(jī)與LCD1602的應(yīng)用電路
LCD1602液晶顯示器廠家已經(jīng)在CGRAM存儲(chǔ)器里面固化好160個(gè)字符的圖形。如圖2-13所示,看以看出存儲(chǔ)的字符有0~9的數(shù)字、26個(gè)大小寫英文字母、以及一些特殊字符。觀察下圖不難發(fā)現(xiàn),字符的位置都有一個(gè)相對(duì)的編碼,這個(gè)編碼就是寫入液晶顯示屏的數(shù)據(jù)數(shù)值。比如大寫的英文字母“O”的代碼是01001111(二進(jìn)制),液晶顯示屏就會(huì)把對(duì)應(yīng)地址中的字符打印到屏幕上,就可以看到字母“O”。下表為L(zhǎng)CD1602的引腳功能圖以及和單片機(jī)的接口電路圖:
表3-1 引腳接口說明表
編號(hào) | 符號(hào) | 引腳說明 | 編號(hào) | 符號(hào) | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) |
2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) |
3 | VL | 液晶顯示偏壓 | 11 | D4 | 數(shù)據(jù) |
4 | RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | 數(shù)據(jù) |
5 | R/W | 讀/寫選擇 | 13 | D6 | 數(shù)據(jù) |
6 | E | 使能信號(hào) | 14 | D7 | 數(shù)據(jù) |
7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 |
8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負(fù)極 |
1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表所示:
表3-2 指令說明
序號(hào) | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 光標(biāo)返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
4 | 顯示開/關(guān)控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
5 | 光標(biāo)或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
7 | 置字符發(fā)生存貯器地址 | 0 | 0 | 0 | 1 | 字符發(fā)生存貯器地址 |
8 | 置數(shù)據(jù)存貯器地址 | 0 | 0 | 1 | 顯示數(shù)據(jù)存貯器地址 |
9 | 讀忙標(biāo)志或地址 | 0 | 1 | BF | 計(jì)數(shù)器地址 |
10 | 寫數(shù)到CGRAM或DDRAM) | 1 | 0 | 要寫的數(shù)據(jù)內(nèi)容 |
11 | 從顯示模塊寄存器讀值 | 1 | 1 | 得到讀出的數(shù)值 |
3.5 紅外一體接收模塊發(fā)送的遠(yuǎn)程控制功能指令代碼通常使用多一些二進(jìn)制串行代碼及其編碼規(guī)則:脈沖頭,代碼系統(tǒng),數(shù)據(jù)代碼、數(shù)據(jù)補(bǔ)充和結(jié)束。第一個(gè)脈沖作為一幀命令的起始位置,系統(tǒng)代碼是用來區(qū)分不同類型的電氣設(shè)備,數(shù)據(jù)代碼是用來完成命令的功能。一個(gè)是數(shù)據(jù)根據(jù)數(shù)據(jù)代碼逆向代碼。[9]
紅外線的一束光的長(zhǎng)度是固定的。而一束紅外光里面有包含著豐富的信息,通過對(duì)這些信息的判斷,可以分析出發(fā)送方要發(fā)送的信號(hào)。紅外通訊的0和1通過不同的編碼來表示。紅外采集電路如圖:

圖3.8 遙控接收模塊
3.6 報(bào)警電路當(dāng)單片機(jī)檢測(cè)到溫度傳感器輸入的溫度值大于當(dāng)前系統(tǒng)設(shè)置的溫度值時(shí),在蜂鳴器的連接引腳輸出一個(gè)高電平,這是蜂鳴器發(fā)聲,反之,蜂鳴器不發(fā)聲。

圖3.9 蜂鳴器驅(qū)動(dòng)電路
3.7本章小結(jié)本章主要對(duì)系統(tǒng)的應(yīng)用電路進(jìn)行介紹,主要說明了系統(tǒng)電源電路,處理器的外圍電路,加熱電路,以及聲音提示電路和溫度采集電路等部分,電源電路為系統(tǒng)提供+12V和+5V的電源,人機(jī)交互電路負(fù)責(zé)單片機(jī)和外界的信息交流;溫度控制電路實(shí)現(xiàn)控制水溫;聲音提示電路負(fù)責(zé)熱水器在非安全狀態(tài)下工作時(shí)發(fā)出聲響提示用戶。硬件設(shè)計(jì)部分主要是完成以上電路的設(shè)計(jì),包括各個(gè)電路的理論分析以及各個(gè)電路與單片機(jī)的連接等等。
第4章 軟件系統(tǒng)設(shè)計(jì)
單片機(jī)資源分配如表所示,列出了本系統(tǒng)使用STC89C51單片機(jī)的所有I/O口資源,包括了人機(jī)交互模塊,溫度檢測(cè)模塊以及聲音提示模塊等。
表4-1 I/O口資源分配表
4.1 主程序流程圖本系統(tǒng)采用STC89C51單片機(jī)為核心控制器對(duì)整個(gè)系統(tǒng)進(jìn)行控制,其控制過程如下:首先通過人機(jī)交互模塊設(shè)定系統(tǒng)的控制策略,然后通過溫度檢測(cè)模塊檢測(cè)水箱中的溫度,同時(shí)通過溫度控制?刂葡到y(tǒng)的加熱模塊工作。并將熱水器中的溫度值實(shí)時(shí)的顯示到顯示屏上。[10]系統(tǒng)的主程序主要完成的是對(duì)各全局變量進(jìn)行定義,對(duì)時(shí)鐘與時(shí)間的初始化,調(diào)用子函數(shù)的功能,流程圖如圖4.1所示。
4.2 液晶顯示程序設(shè)計(jì)通過閱讀LCD1602的芯片手冊(cè)可以得知,液晶屏:LCD1602的顯示模式一般設(shè)置為16×2顯示,8位數(shù)據(jù)接口顯示狀態(tài);光標(biāo)顯示可按實(shí)際需求和個(gè)人偏好設(shè)定。
4.2.1寫操作時(shí)序圖圖4.2是LCD1602寫操作時(shí)序圖,分析可知LCD1602液晶的流程如下:LCD1602顯示屏內(nèi)部集成了地址命令,這些地址命令控制顯示字符圖像的位置。通過寫命令寫入地址,就可以在顯示屏的地址的位置寫入數(shù)據(jù),把數(shù)據(jù)寫入CGRAM,就可以在液晶顯示字符圖像。

圖4.1 xxx主程序流程圖

圖4.2 寫操作時(shí)序圖
4.2.2 初始化程序LCD1602初始化包括初始化以下寄存器:顯示模式寄存器、光標(biāo)設(shè)置寄存器和移屏寄存器。顯示模式寄存器通常設(shè)置16×2顯示;光標(biāo)設(shè)置可以設(shè)置是光標(biāo)顯示或者是光標(biāo)不顯示方式;整屏移動(dòng)可以設(shè)置整屏移動(dòng)或者不移動(dòng)。LCD1602初始化程序流程圖如圖所示:

圖4.3 LCD1602初始化程序流程圖
4.2.3 向LCD1602發(fā)送數(shù)據(jù)程序設(shè)計(jì)通過上面的子程序調(diào)用,可以向LCD1602內(nèi)部輸入一個(gè)8位的地址,之后在調(diào)用一個(gè)寫入數(shù)據(jù)的子函數(shù),就可以完成在對(duì)應(yīng)地址上寫入一個(gè)字符。
4.3按鍵掃描程序設(shè)計(jì)考慮到用戶在進(jìn)行按鍵操作時(shí),按下及松開的瞬間都容易產(chǎn)生抖動(dòng)現(xiàn)象,造成單次按鍵操作時(shí)按鍵端口電平多次跳變。采取按下按鍵延時(shí)判斷或者中斷法都可以克服按鍵的抖動(dòng)與窄脈沖的干擾影響,采取硬件措施加以克服需要增加額外的元件,本設(shè)計(jì)采用軟件措施完成去抖動(dòng)和防干擾處理。[11]本設(shè)計(jì)采用定時(shí)中斷掃描的方式進(jìn)行按鍵檢測(cè),通過單片機(jī)的定時(shí)中斷,每隔10ms掃描一次按鍵端口狀態(tài),按鍵檢測(cè)過程中無需一直監(jiān)視按鍵端口或執(zhí)行額外的延時(shí)程序,節(jié)省了單片機(jī)的CPU資源和中斷資源。按鍵掃描程序流程圖如圖所示。

圖4.4 按鍵掃描程序流程圖
4.4溫度控制程序設(shè)計(jì)溫度傳感器的信號(hào)傳輸,使用的是單總線的產(chǎn)生方法,通過芯片手冊(cè)介紹的時(shí)序以及延時(shí)間隔,可以完成溫度數(shù)據(jù)的采集。
4.4.1初始化DS18B20首先要進(jìn)行DS18B20芯片的初始化,通過芯片的初始化,可以設(shè)置本次需要傳輸溫度的精度,以及溫度值的轉(zhuǎn)換的速度。下圖為芯片的初始化時(shí)序圖:

圖4.5 DS18B20初始化時(shí)序圖

圖4.6 DS18B20初始化流程圖
4.4.2讀取DS18B20當(dāng)前溫度硬件電路連接好以后,只需要按照下面過程操作即可讀出溫度數(shù)據(jù)。本設(shè)計(jì)中只對(duì)一個(gè)DS18B20進(jìn)行控制。[12]本次選取的溫度精度為11位,由于該芯片內(nèi)部的存儲(chǔ)器是八位的,所以需要分兩次讀取溫度的數(shù)據(jù)。通過溫度的一位運(yùn)算,最終輸出準(zhǔn)確的溫度值。溫度轉(zhuǎn)換流程圖如圖4.7所示。
4.5控制程序策略設(shè)計(jì)整個(gè)熱水氣的控制系統(tǒng)主要分為三步來執(zhí)行單片機(jī)內(nèi)部的程序,首先利用溫度傳感器來采集外界的溫度數(shù)值,接著通過單片機(jī)的程序判斷是否達(dá)到溫度的臨界值,通過判斷的結(jié)果來執(zhí)行對(duì)熱水器的加熱裝置的控制。這個(gè)三個(gè)步驟不斷重復(fù),使整個(gè)系統(tǒng)實(shí)現(xiàn)所需的控制目標(biāo)。
圖4.7 讀取DS18B20溫度流程圖
下面介紹各個(gè)按鍵的功能:
“功能鍵”用于切換數(shù)值項(xiàng)的可調(diào)狀態(tài)。第一次按下定時(shí)器變?yōu)榭烧{(diào),再次按下溫度上限變?yōu)榭烧{(diào),再次按下溫度下限變?yōu)榭烧{(diào)。此為一個(gè)循環(huán),直至“確認(rèn)鍵”按下,保存當(dāng)前設(shè)置,跳出菜單。
“加鍵”和“減鍵”用來調(diào)整設(shè)定的時(shí)間和溫度。當(dāng)前狀態(tài)為可調(diào)狀態(tài)時(shí)每按一次“加鍵”和“減鍵”,被設(shè)置的數(shù)據(jù)值遞增或遞減。調(diào)整溫度值時(shí)以1℃為調(diào)整單位,調(diào)整時(shí)間時(shí)以1分鐘為調(diào)整單位。
“確定鍵”用于推出當(dāng)前的可調(diào)狀態(tài),保存當(dāng)前設(shè)定數(shù)值并運(yùn)行程序。
4.6本章小結(jié)本章根據(jù)電路原理圖進(jìn)行軟件設(shè)計(jì),對(duì)各個(gè)子程序進(jìn)行了相關(guān)的原理分析。其中,詳細(xì)的介紹了控制策略程序、液晶顯示屏LCD1602操作程序和讀取DS18B20溫度值程序。這樣整個(gè)系統(tǒng)的設(shè)計(jì)部分就完成了。
第5章 仿真與調(diào)試
Proteus產(chǎn)品系列包含了革命性的VSM技術(shù),用戶可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真,用戶甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤、RS232終端等動(dòng)態(tài)外設(shè)模型來對(duì)設(shè)計(jì)進(jìn)行交互仿真。ISIS提供給用戶圖形外觀包括線寬、填充類型、字符等的全部控制,使用戶能夠生成如雜志上看到一樣精美的原理圖,遠(yuǎn)勝過CAD軟件繪制出的稀薄的線條。畫完圖可以以圖形文件輸出,或者拷貝到剪切板以便其他文件使用。[13]這就使得ISIS成為制作技術(shù)文件,學(xué)術(shù)論文,項(xiàng)目報(bào)告的理想工具,也是PCB設(shè)計(jì)的一個(gè)出色的前端,其畫圖的外形由風(fēng)格模板定義。根據(jù)硬件設(shè)計(jì)和軟件編程,可以在Proteus軟件上進(jìn)行仿真,模擬實(shí)際運(yùn)行結(jié)果,下圖為仿真電路圖:

圖5.1 仿真電路
調(diào)試流程如下:按鍵→上電復(fù)位→水溫檢測(cè)→數(shù)碼管顯示→下載程序運(yùn)行。程序調(diào)試分為三個(gè)部分:按鍵調(diào)試,指示燈顯示調(diào)試,及數(shù)碼管顯示調(diào)試。在具體仿真的過程中,按鍵調(diào)試時(shí),應(yīng)注意按鍵的次序,首先是溫度+鍵,然后測(cè)試溫度-鍵,否則有時(shí)會(huì)出現(xiàn)數(shù)碼管顯示延時(shí)現(xiàn)象,這種情況主要跟程序設(shè)計(jì)有關(guān)。基于編程方面有些薄弱的情況,應(yīng)該嚴(yán)格按照按鍵次序進(jìn)行調(diào)試。指示燈調(diào)試時(shí),有時(shí)會(huì)出現(xiàn)指示燈無顯示或者不明顯、亮度不夠的情況,這是由于指示燈電壓過低造成的,應(yīng)盡量避免。數(shù)碼管顯示時(shí),只要前兩個(gè)步驟進(jìn)行順利,數(shù)碼管就可以正常顯示。由于本設(shè)計(jì)采用獨(dú)立式按鍵,主程序調(diào)試結(jié)束后,各部分運(yùn)行正常,能夠顯示水溫結(jié)果。另外,本次設(shè)計(jì)采用的溫度檢測(cè)模塊,檢測(cè)精度不高,有時(shí)會(huì)出現(xiàn)溫度跳躍式顯示,比如:有時(shí)此時(shí)刻溫度顯示為39攝氏度,下一時(shí)刻會(huì)顯示46攝氏度。此種情況出現(xiàn)的原因是由于溫度檢測(cè)模塊的內(nèi)阻過熱,導(dǎo)致檢測(cè)結(jié)果不夠準(zhǔn)時(shí)和準(zhǔn)確。這是硬件方面的問題,暫時(shí)還沒有找到可替換的模塊,所以無法解決,但不影響整體的效果。按此流程對(duì)系統(tǒng)在不同的溫度條件下工作情況進(jìn)行測(cè)試。
本設(shè)計(jì)的控制要求使熱水器內(nèi)部水溫保持在用戶所需要的溫度范圍內(nèi),仿真設(shè)置溫度范圍為29攝氏度到35攝氏度,當(dāng)前溫度低于29攝氏度時(shí),加熱電路工作,水溫升高直至35攝氏度,此時(shí)加熱電路停止工作;當(dāng)環(huán)境溫度再次低于29攝氏度時(shí)再次加熱直至35攝氏度,循環(huán)往復(fù)使溫度保持在29攝氏度到35攝氏度之間。設(shè)置當(dāng)前溫度設(shè)置為20攝氏度,低于溫度下限29攝氏度,此時(shí)報(bào)警電路工作,發(fā)出報(bào)警聲音,繼電器閉合,工作指示燈亮起,加熱電路工作。

圖5.2 低于下限溫度運(yùn)行狀況
設(shè)置當(dāng)前溫度為32攝氏度,在29攝氏度到35攝氏度范圍之間,此時(shí)報(bào)警電路不工作,加熱電路不工作。

圖5.3 上下限溫度間運(yùn)行狀況
設(shè)置當(dāng)前溫度為40攝氏度,高于溫度上限35攝氏度,此時(shí)報(bào)警電路工作,發(fā)出報(bào)警聲音,加熱電路不工作。

圖5.4 高于上限溫度運(yùn)行狀況
仿真結(jié)果顯示,熱水器在溫度低于溫度下限時(shí)報(bào)警加熱;溫度高于溫度上限時(shí)報(bào)警不加熱;溫度在溫度上下限之間時(shí)不報(bào)警不加熱;熱水器在各種溫度條件下工作正常,達(dá)到設(shè)計(jì)要求。
第6章 總結(jié)
踉踉蹌蹌地忙碌了兩個(gè)月,畢業(yè)設(shè)計(jì)課題也終將告一段落。電熱水器也基本達(dá)到預(yù)期的功能。但由于能力和時(shí)間的關(guān)系,總是覺得有很多不盡如人意的地方,譬如功能不全、外觀粗糙、做工簡(jiǎn)陋、安全性能較低等問題。但做一件事情,不必過于在乎最終的結(jié)果,可貴的是過程中的收獲。在進(jìn)行此次畢業(yè)設(shè)計(jì)中,通過多次去圖書館進(jìn)行查閱對(duì)各方面的知識(shí)有了一定的了解,比如單片機(jī)之間紅外通信傳輸、溫度采集和處理;在制作過程中,通過對(duì)元件放置位置選擇、連線選擇和萬用板焊接,動(dòng)手制作的能力大大提升。通過對(duì)單片機(jī)的學(xué)習(xí)和使用,知道了以后發(fā)展的方向和道路,只有真正的去動(dòng)手操作才能把課堂學(xué)習(xí)到的理論知識(shí)去熟練的運(yùn)用和提高,為以后的工作和學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ),才能更進(jìn)一步。也希望以后的學(xué)習(xí)工作中可以做的更好,能夠彌補(bǔ)這次畢業(yè)設(shè)計(jì)中所發(fā)現(xiàn)的,不能熟練運(yùn)用學(xué)習(xí)到的理論知識(shí),思考問題過于片面,動(dòng)手制作能力有待提高等問題,這也是畢業(yè)設(shè)計(jì)的初衷,發(fā)現(xiàn)自己的不足并提高自己的能力,成為一個(gè)各方面全面發(fā)展,對(duì)社會(huì)有貢獻(xiàn)的人。
致謝
感謝老師從選題到最終完成對(duì)我進(jìn)行的幫助,老師細(xì)致嚴(yán)謹(jǐn)、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的榜樣;循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。這篇論文的每個(gè)細(xì)節(jié)和每個(gè)數(shù)據(jù),都離不開老師細(xì)心指導(dǎo)。同時(shí)也要感謝室友們對(duì)我的幫助,正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文順利的完成
在論文即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可敬的老師、同學(xué)、朋友給了我?guī)椭椭С,在這里接受我誠(chéng)摯的謝意。