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

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

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

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

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

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

圖3.7 單片機與LCD1602的應(yīng)用電路
LCD1602液晶顯示器廠家已經(jīng)在CGRAM存儲器里面固化好160個字符的圖形。如圖2-13所示,看以看出存儲的字符有0~9的數(shù)字、26個大小寫英文字母、以及一些特殊字符。觀察下圖不難發(fā)現(xiàn),字符的位置都有一個相對的編碼,這個編碼就是寫入液晶顯示屏的數(shù)據(jù)數(shù)值。比如大寫的英文字母“O”的代碼是01001111(二進(jìn)制),液晶顯示屏就會把對應(yīng)地址中的字符打印到屏幕上,就可以看到字母“O”。下表為LCD1602的引腳功能圖以及和單片機的接口電路圖:
表3-1 引腳接口說明表
編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 |
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 | 使能信號 | 14 | D7 | 數(shù)據(jù) |
7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 |
8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負(fù)極 |
1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表所示:
表3-2 指令說明
序號 | 指令 | 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 | 計數(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ù)補充和結(jié)束。第一個脈沖作為一幀命令的起始位置,系統(tǒng)代碼是用來區(qū)分不同類型的電氣設(shè)備,數(shù)據(jù)代碼是用來完成命令的功能。一個是數(shù)據(jù)根據(jù)數(shù)據(jù)代碼逆向代碼。[9]
紅外線的一束光的長度是固定的。而一束紅外光里面有包含著豐富的信息,通過對這些信息的判斷,可以分析出發(fā)送方要發(fā)送的信號。紅外通訊的0和1通過不同的編碼來表示。紅外采集電路如圖:

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

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

圖4.1 xxx主程序流程圖

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

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

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

圖4.5 DS18B20初始化時序圖

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

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

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

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

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