1.1引言
我國作為熱水器生產(chǎn)的大國,近年來熱水器的發(fā)展十分迅速,而熱水器主要有三個研究方向:太陽能,燃?xì)馐脚c電熱式。近年來因為單片機(jī)技術(shù)的發(fā)展,傳感器技術(shù)的漸漸成熟,電熱水器的數(shù)字化與精確控制已經(jīng)變成可能。
作為一種需要在浴室,洗手間與廚房中使用的電器,這種電熱水器采用水電分離的控制方式,即采用小電流低電壓的控制電路來控制高電壓大電流的加熱電路,一般情況下,使用十分安全。并且在安全可靠的基礎(chǔ)上,這種熱水器還提供清楚的溫度顯示與方便的溫度調(diào)節(jié)裝置,所以在目前的市場上十分受到歡迎。
1.2選題背景與意義
本文對電熱水器的控制系統(tǒng)進(jìn)行可研究,具體研究的意義如下:
1) 隨著傳感器測量技術(shù)的漸漸成熟,這種技術(shù)被廣泛的運(yùn)用在了在傳統(tǒng)測溫方式不便于溫度測量的場合,而且傳感器作為測量元件其相較于傳統(tǒng)測溫系統(tǒng),測量精度與可靠性得到了進(jìn)一步的提升,這一技術(shù)在當(dāng)時與以后的時間里得到了發(fā)展與完善,迅速的顯示出來其對于傳統(tǒng)的物理式的溫度測量系統(tǒng)的優(yōu)越性。[1]
2) 在這一系統(tǒng)中(溫度采集與控制),我們要求對溫度進(jìn)行實時控制,單片機(jī)具有極強(qiáng)的處理能力,將其運(yùn)用在溫度控制系統(tǒng)中就具備了傳統(tǒng)的控制電路所不具有的實時控制能力,隨著單片機(jī)技術(shù)的發(fā)展成熟以及周邊元件的開發(fā),其控制方式變得越來越簡單,并且其相較于傳統(tǒng)控制電路,可以大幅度的提高溫度控制的精度,從而達(dá)到更高的技術(shù)要求。
3)單片機(jī)由于體積小重量輕、價格便宜、功耗低,控制能力強(qiáng)及運(yùn)算速度快等特點(diǎn),因而采用其作為主控芯片,使整個系統(tǒng)設(shè)計簡單易行,成本低廉,使用方便。
4)就目前來看,隨著天然氣價格上漲以及高層住房的普及,燃?xì)馐綗崴髋c太陽能式熱水器因為其自身的缺陷而失去市場占有率,而電熱水器由于其自身不會受到這種限制,并且電熱水器由于其小巧的外形、快速的加熱速度、節(jié)能的設(shè)計、可靠地安全性等特點(diǎn)所以在今后的熱水器市場上必將作為一種主流熱水器出現(xiàn)。
所以選取電熱水器的控制系統(tǒng)作為此次的研究課題是具有十分重要的意義的。
1.3研究現(xiàn)狀
電熱水器在中國的歷史已經(jīng)有10多年了,期間也經(jīng)歷了數(shù)次起落的過程,在上個世紀(jì)的最后幾年,隨著國外品牌的進(jìn)入和國內(nèi)一些大家電廠的目光轉(zhuǎn)向電熱水器,儲水式電熱水器能適應(yīng)任何天氣變化,普通家庭可直接安裝使用,長時間通電可以大流量供熱水。使用時不產(chǎn)生廢氣,既安全又衛(wèi)生。目前市場上銷售的電熱水器多數(shù)還帶有防觸電裝置。干凈衛(wèi)生,不必分室安裝,調(diào)溫方便。隨著技術(shù)的成熟,今后將朝著保溫層整體發(fā)泡技術(shù)、溫控器置入內(nèi)膽、加熱管下潛式設(shè)計、節(jié)能免更換幾個方面發(fā)展。
熱水器是一種可供浴室,洗手間及廚房使用的家用電器。據(jù)國務(wù)院發(fā)展研究中心市場經(jīng)濟(jì)研究所統(tǒng)計數(shù)據(jù)表明:近年來我國熱水器的銷量每年以 25%的速度上升,在未來五年內(nèi),銷售額每年可達(dá)近500億以上。眾所周知,燃?xì)鉄崴饕蚱浒踩[患及越來越高的使用成本正漸漸淡出熱水器市場,而太陽能熱水器也因其嚴(yán)格受天氣氣候及安裝條件影響而很難占據(jù)更大的市場份額,所以電熱水器迅速崛起而不斷壯大。為了滿足人們對現(xiàn)代電器的智能化的要求,利用目前電子技術(shù)的最新成果改善電熱水器的性能已經(jīng)完全可能和必要。本課題將以單片機(jī)為控制核心,實現(xiàn)對熱水器的自動控制,設(shè)計出一款具有自動化、智能化、易于操作、控制精度高、性價比高的電熱水器控制系統(tǒng)。
1.4本文研究內(nèi)容
1)本文所研究的電熱水器控制系統(tǒng)由7個部分組成:單片機(jī)以及外部電路、電源電路、按鍵輸入電路、LED數(shù)碼管及指示燈電路、報警電路、加熱控制電路和溫度采集電路。
2)作為最重要的主控芯片,我們選用51系列單片機(jī)作為核心來進(jìn)行此次的設(shè)計。單片機(jī)作為微型計算機(jī)的一種,是嵌入式微機(jī)系統(tǒng),是作為其他系統(tǒng)的組成部分使用的,在物理結(jié)構(gòu)上嵌于其它系統(tǒng)之中,英文為Embedded Systems。嵌入式系統(tǒng)將計算機(jī)硬件和軟件結(jié)合起來,構(gòu)成一個專門的計算裝置,實現(xiàn)特定的功能。它是一個大系統(tǒng)或大的電子設(shè)備中的一部分,工作在一個與外界發(fā)生交互并受時間約束的環(huán)境中,在沒有人工干預(yù)的情況下進(jìn)行實時控制。自從20世紀(jì)70年代以來,單片機(jī)經(jīng)歷了初級、發(fā)展、高速發(fā)展三個階段。單片機(jī)性能不斷地完善,性能價格比顯著提高,種類和型號快速增加。從性能和用途上看,單片機(jī)正朝著面向多層次用戶的多品種多規(guī)格方向發(fā)展,哪一個應(yīng)用領(lǐng)域前景廣闊,就有這個領(lǐng)域的特殊單片機(jī)出現(xiàn)。近幾年來,單片機(jī)以其集成度和性價比高、體積小等優(yōu)點(diǎn),在工業(yè)自動化、過程控制、數(shù)字儀器儀表、通信系統(tǒng)以及家用電器產(chǎn)品中有著不可替代的作用。
3)220V交流電加熱裝置的通斷由繼電器控制,其中繼電器中的保險絲會在溫度過高的情況下會熔斷,防止加熱管干燒,并且在單片機(jī)上還加上發(fā)光二極管顯示加熱電路的工作情況。
1.5本文結(jié)構(gòu)
本文以對單片機(jī)的研究作為基礎(chǔ),對DS18B20及單片機(jī)控制顯示,輸入輸出等方面進(jìn)行了研究,全文分為6章,各章內(nèi)容如下:
第一章主要介紹了電熱水器控制系統(tǒng)的基本概念、特點(diǎn)研究現(xiàn)狀,闡述了電熱水器的研究背景以及研究意義,概括的闡述了本次設(shè)計的主要內(nèi)容。
第二章表明了本次設(shè)計的技術(shù)指標(biāo)要求,主要介紹了采用的幾個設(shè)計方案與各自的優(yōu)缺點(diǎn),并在最后表明了本次設(shè)計最終所采用的方案。
第三章闡述所選擇的幾個重要元件的特點(diǎn)與性能第四章主要介紹了電熱水器控制系統(tǒng)的硬件電路的設(shè)計,主要介紹了各模塊的設(shè)計方案。
第四章對系統(tǒng)的硬件模塊的設(shè)計進(jìn)行闡述,對各硬件的原理及主要參數(shù)進(jìn)行了描述。
第五章對系統(tǒng)的軟件設(shè)計進(jìn)行闡述,以流程圖為線索對各個模塊的軟件程序的設(shè)計方案進(jìn)行了介紹。
第六章總結(jié)了全文的研究工作,給出了存在的問題與進(jìn)一步的研究方向。
第二章 電熱水器控制系統(tǒng)設(shè)計方案
2.1系統(tǒng)功能說明
本設(shè)計采用AT89S52單片機(jī)作為主控芯片,利用數(shù)字式溫度傳感器DS18B20作為溫度采集裝置采集溫度,將溫度信號傳送給單片機(jī)后通過一片液晶顯示屏顯示出來。
系統(tǒng)工作的溫度可以通過電路板上的按鍵自主進(jìn)行設(shè)定。
系統(tǒng)采用了一個繼電器,用單片機(jī)為主的控制系統(tǒng)控制繼電器觸電的吸合,來控制交流電加熱電路,達(dá)到以弱電控制強(qiáng)電的目的。
系統(tǒng)必須設(shè)置溫度報警系統(tǒng),即達(dá)到設(shè)定溫度的上限時揚(yáng)聲器報警,系統(tǒng)自動斷電,當(dāng)溫度恢復(fù)時,系統(tǒng)重新恢復(fù)工作。
2.2系統(tǒng)主要實現(xiàn)功能
系統(tǒng)主要功能如下:
1)測量熱水器內(nèi)的溫度,并通過顯示屏實時顯示溫度值,顯示范圍為0℃~70℃。
2)正常狀態(tài)下顯示系統(tǒng)時鐘。
3)可手動設(shè)定時鐘時間即對時鐘進(jìn)行校準(zhǔn)。
4)可以人工設(shè)定熱水器內(nèi)的燒水溫度,范圍在20℃~70℃之間,也可以無需設(shè)定,打開后自動燒水,溫度上限為70℃。
5)具備定時功能,限定燒水時間。
6)可以立即開機(jī)或在24小時內(nèi)任意設(shè)定開機(jī)時間。
7)當(dāng)熱水器內(nèi)沒有水時,有報警提示,并開關(guān)自動關(guān)閉,即有防止干燒功能。
8)要求熱水器有一定的抗干擾的功能。
2.3系統(tǒng)整體設(shè)計方案
電熱水器控制系統(tǒng)的整體設(shè)計方案包括硬件設(shè)計與軟件設(shè)計方案,硬件方案主要是指以單片機(jī)為核心,包括外接的溫度采集電路,實時時鐘電路,鍵盤,熱水器加熱開關(guān),液晶顯示電路,報警電路以及復(fù)位電路。具體硬件框圖如圖2.1所示
1.002.jpg (21.47 KB, 下載次數(shù): 228)
下載附件
2017-6-9 22:07 上傳
1.003.jpg (2.15 KB, 下載次數(shù): 211)
下載附件
2017-6-9 22:07 上傳
2.4方案論證
按照前面的課題要求,我們首先確定運(yùn)用單片機(jī)AT89S52作為本次設(shè)計的核心部件。
在溫度采集方面有多種選擇,常見的溫度傳感器分為以下幾種:熱敏電阻式溫度傳感器、熱電阻式溫度傳感器、熱電偶式溫度傳感器、模擬集成溫度傳感器、智能溫度傳感器。本次設(shè)計原本選擇的是pt1000鉑電阻溫度傳感器,其作為高精度的溫度敏感元件,具有測溫范圍大,測溫精度高,穩(wěn)定性好,示值復(fù)現(xiàn)性高與耐氧化等特點(diǎn),常被用作0℃~926℃溫度區(qū)間內(nèi)的標(biāo)準(zhǔn)溫度計,其特性曲線為:-200°C~0°C時,Rt=R0[1+At+Bt2+c(t-100)t3];0°C~650°C時,Rt=R0[1+At+Bt2]。(Rt為溫度為t°C時熱電阻的阻值,R0為0°C時的阻值,A、B、C為實驗測定的常數(shù),A=3.90802×10-2,B=5.802×10-7,C=-4.22×10-7)本系統(tǒng)使用的R0為1000Ω。而要將pt1000作為本次設(shè)計的元件,還需要語氣配套的傳感器測量電路與放大電路兩部分,具體電路如圖2.2所示。[12]
但是在實際購買時發(fā)現(xiàn)pt1000電阻由于價格過高,所以在最終設(shè)計中并沒有采用pt1000作為測溫元件來使用,同時,在同組同學(xué)推薦下采用了另一種集成式溫度傳感器DS18B20作為測溫元件,DS18B20雖然測溫范圍比pt1000小,但是在滿足本設(shè)計要求的基礎(chǔ)上,其價格不到pt1000的一半,并且其硬件電路由于舍去了普通傳感器所需附帶的A/D電路的設(shè)計,所以其硬件電路的設(shè)計更加簡單,所以采用了DS18B20作為最終設(shè)計中的測溫元件。[11]
1.004.jpg (2.37 KB, 下載次數(shù): 196)
下載附件
2017-6-9 22:07 上傳
1.005.jpg (26.4 KB, 下載次數(shù): 167)
下載附件
2017-6-9 22:07 上傳
本次設(shè)計的要求是選擇51單片機(jī)作為核心的處理器,但是市場上做51單片機(jī)的廠商有很多家,其中比較著名的有STC公司、MICROCHIP公司、德州儀器公司、Intel公司、ATMEL公司、Philips公司、Siemens公司。[9]
其中STC公司的STC單片機(jī)主要是基于8051內(nèi)核,是新一代增強(qiáng)型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強(qiáng)。
還有MICROCHIP公司的PIC單片機(jī),其突出的特點(diǎn)是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲器的芯片.
PHILIPS公司的PHLIPIS 51LPC系列單片機(jī)是基于80C51內(nèi)核的單片機(jī),嵌入了掉電檢測、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計中可以滿足多方面的性能要求。
ATMEl公司的8位單片機(jī)有AT89、AT90兩個系列,AT89系列是8位Flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時鐘模式;AT90系列單片機(jī)是增強(qiáng)RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機(jī),也叫AVR單片機(jī)。
而作為第一次使用單片機(jī)做獨(dú)立設(shè)計,我選用的是ATMEL公司的AT89S52單片機(jī),AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 儲存器。使用Atmel 公司高密度非易失性儲存器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序編程器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。
眾所周知,單片機(jī)的程序?qū)懭脒^程不是一帆風(fēng)順的,其常常需要多次的寫入與調(diào)試的過程,這里采用AT89S52的優(yōu)點(diǎn)就是AT89S52額外添加了8k在系統(tǒng)可編程(即ISP)Flash存儲器,特意設(shè)計為方便在線編程,使得其下載線電路簡單,且可實現(xiàn)并行和或者串行模式的在線編程,使得每一次的程序下載與調(diào)試不必將單片機(jī)從PCB板上拔下,這樣不僅使程序調(diào)試變得更加方便,其次還會大大延長單片機(jī)與PCB板的壽命。
由于本次設(shè)計需要有定時開關(guān)機(jī)的功能,而單片機(jī)其內(nèi)部時鐘只能作為其內(nèi)部程序運(yùn)行的基準(zhǔn)而不能滿足設(shè)計的要求,所以外接了一個時鐘芯片來滿足本次設(shè)計的要求。[10]
市面上的主流的時鐘芯片有DS1302、 DS1307、PCF8485、SB2068等等。這些芯片結(jié)構(gòu)簡單,價格低廉,而實時時鐘電路DS1302是DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。
在顯示方面采用一個液晶顯示屏來顯示主要的參數(shù),液晶顯示屏相對于LED數(shù)碼管雖然編程方面更加繁瑣,但是相對的其還具有更多的優(yōu)點(diǎn),其除了可以順利的顯示數(shù)字之外,還可以對顯示的數(shù)字進(jìn)行簡單的注釋,使得人機(jī)操作界面變得更加友好,其次在有關(guān)網(wǎng)站上也可以順利的查找到有關(guān)DS1302的信號顯示程序,本次顯示界面除了有溫度的顯示還需要有時間的顯示,定時操作信號的顯示,采用LCD顯示屏使操作顯得更加方便。[6]
在鍵盤的選擇上,有兩種選擇:一是采用獨(dú)立式按鍵鍵盤,第二種是采用矩陣式鍵盤。矩陣式一般鍵盤采用4*4式鍵盤,而本次設(shè)計中并不需要如此多的功能按鍵,所以本次設(shè)計,選擇了獨(dú)立式按鍵,本次總共使用了6個按鍵。其中按鍵1的功能是系統(tǒng)的復(fù)位,按鍵2的功能是實現(xiàn)實時時鐘的時間校準(zhǔn)功能,按鍵3實現(xiàn)的功能是實現(xiàn)燒水溫度的設(shè)置功能,按鍵4實現(xiàn)的功能是燒水定時功能的設(shè)置,按鍵5與按鍵6分別是“+”“—”功能鍵。
然后本次設(shè)計中還加入了一個發(fā)光二極管與蜂鳴器。
發(fā)光二極管用來顯示繼電器的閉合狀況,使得加熱電路的通斷能夠被更直接的觀察。
而加入蜂鳴器的作用是在進(jìn)行某項操作時進(jìn)行指示作用,還有在達(dá)到燒水溫度或者定時時間到的時候起到報警作用。
第三章 主要元件介紹3.1單片機(jī)系統(tǒng)模塊介紹
AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K在線可編程Flash 存儲器,使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在線可編程,亦適于常規(guī)編程器。在一個芯片上,擁有靈巧的8 位CPU 和在線可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。[1]
AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)的Flash,256字節(jié)的RAM,32 位I/O 口,看門狗定時器,2個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件,可選擇節(jié)電模式?臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作;掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。
3.1.1 AT89S52單片機(jī)的主要性能
與MCS-51單片機(jī)產(chǎn)品兼容
8K字節(jié)在系統(tǒng)可編程Flash存儲器
1000次擦寫周期
全靜態(tài)操作:0Hz~33Hz
三級加密程序存儲器
32個可編程I/O口線
三個16位定時器/計數(shù)器
八個中斷源
全雙工UART串行通道
低功耗空閑和掉電模式
掉電后中斷可喚醒
看門狗定時器
雙數(shù)據(jù)指針
掉電標(biāo)識符
3.1.2 AT89S52管腳功能說明
1.006.jpg (20.77 KB, 下載次數(shù): 193)
下載附件
2017-6-9 22:07 上傳
AT89S52引腳如圖3.1所示。
圖3.1 AT89S52引腳結(jié)構(gòu)圖
VCC :電源
GND : 接地
P0口: P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用,在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié),在程序校驗時,輸出指令字節(jié)。程序校驗時,P0口需要外部上拉電阻。
1.007.jpg (20.9 KB, 下載次數(shù): 162)
下載附件
2017-6-9 22:07 上傳
表3.1 P1口第二功能
P1口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如表3.1所示。在flash編程和校驗時,P1口接收低8位地址字節(jié)。
P2口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。
P3口:P3 口是一個有內(nèi)部上拉電阻的8 位雙向I/O 口,P3 輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如表3.2所示。在flash編程和校驗時,P3口也接收一些控制信號。
表3.2 P3口第二功能
1.008.jpg (26.18 KB, 下載次數(shù): 187)
下載附件
2017-6-9 22:07 上傳
RST:復(fù)位輸入。晶振工作時,RST腳持續(xù)2個機(jī)器周期高電平將使單片機(jī)復(fù)位?撮T狗計時完成后,RST 腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。
1.009.jpg (639 Bytes, 下載次數(shù): 173)
下載附件
2017-6-9 22:07 上傳
1.010.jpg (639 Bytes, 下載次數(shù): 186)
下載附件
2017-6-9 22:07 上傳
ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置 “1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。
1.011.jpg (639 Bytes, 下載次數(shù): 171)
下載附件
2017-6-9 22:07 上傳
1.012.jpg (639 Bytes, 下載次數(shù): 184)
下載附件
2017-6-9 22:07 上傳
PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。
1.013.jpg (635 Bytes, 下載次數(shù): 163)
下載附件
2017-6-9 22:07 上傳
1.014.jpg (635 Bytes, 下載次數(shù): 164)
下載附件
2017-6-9 22:07 上傳
1.015.jpg (635 Bytes, 下載次數(shù): 162)
下載附件
2017-6-9 22:07 上傳
1.016.jpg (635 Bytes, 下載次數(shù): 161)
下載附件
2017-6-9 22:07 上傳
EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,EA必須接GND.為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12V的VPP電壓。
XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。
XTAL2:振蕩器反相放大器的輸出端。[7]
3.1.3單片機(jī)的最小系統(tǒng)
單片機(jī)的最小系統(tǒng)是指運(yùn)用最少的元件使單片機(jī)運(yùn)行的系統(tǒng),一般包括一下的幾個部分:晶振電路、復(fù)位電路、電源電路和串口電路。
晶振是電路中常用用的時鐘元件,全稱是叫晶體震蕩器,在單片機(jī)系統(tǒng)里晶振的作用非常大,他結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時鐘頻率,單片機(jī)的一切指令的執(zhí)行都是建立在這個基礎(chǔ)上的,晶振的提供的時鐘頻率越高,那單片機(jī)的運(yùn)行速度也就越快。[2]
晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。
而晶振由于會與單片機(jī)的XTAL1與XTAL2腳構(gòu)成的振蕩電路中會產(chǎn)生諧波,從而降低電路時鐘振蕩器的穩(wěn)定性,所以一般會匹配兩個30pf的電容來消減諧波對于電路穩(wěn)定性的影響。
晶振電路如圖3.2所示:,XTAL1 和XTAL2 分別是放大器的輸入、輸出端
1.017.jpg (9.33 KB, 下載次數(shù): 166)
下載附件
2017-6-9 22:07 上傳
圖3.2 晶振電路
系統(tǒng)復(fù)位有兩種方式:上電復(fù)位與手動復(fù)位。[3]
上電復(fù)位:上電瞬間,電容充電電流最大,電容相當(dāng)于短路,RST端為高電平,自動復(fù)位;電容兩端的電壓達(dá)到電源電壓時,電容充電電流為零,電容相當(dāng)于開路,RST端為低電平,程序正常運(yùn)行。
1.018.jpg (14.47 KB, 下載次數(shù): 202)
下載附件
2017-6-9 22:07 上傳
手動復(fù)位:首先經(jīng)過上電復(fù)位,當(dāng)按下按鍵時,RST直接與VCC相連,為
圖3.3復(fù)位電路
高電平形成復(fù)位,同時電解電容被短路放電;按鍵松開時,VCC對電容充電,充電電流在電阻上,RST依然為高電平,仍然是復(fù)位,充電完成后,電容相當(dāng)于開路,RST為低電平,正常工作。[5]
一般采用手動復(fù)位,其對于上電復(fù)位方式更加方便,不需要切斷電源便可對系統(tǒng)進(jìn)行復(fù)位,復(fù)位電路如圖3.3所示
3.2溫度檢測模塊
3.2.1 DS18B20的主要功能及特點(diǎn)
DS18B20溫度傳感器是美國達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲器等做在一個很小的集成電路芯片上。它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號供處理器處理。[8]
DS18B20具有以下特性:
獨(dú)特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線。
每個設(shè)備都有一個唯一的64位序列碼,存儲在ROM中。
簡單的多點(diǎn)分布式測溫應(yīng)用。
在使用中不需要任何外圍元件。
可以從數(shù)據(jù)線供電。電源范圍為3.0V~ 5.5V。
測溫范圍 -55℃~+125℃。
在—10℃~+85℃間,測溫分辨率為0.5℃。
溫度計分辨率可由用戶選擇,9至12位之間。
在750毫秒內(nèi)將溫度轉(zhuǎn)換為12位字。
用戶可自定義非易失性報警的設(shè)置。
報警搜索命令定義和存儲的設(shè)備,其溫度不收程序限制(溫度報警狀態(tài))。
采用8引腳SOP和3引腳TO- 92封裝。
軟件與DS1822兼容。
其引腳如圖3.4所示:
1.019.jpg (12.16 KB, 下載次數(shù): 148)
下載附件
2017-6-9 22:07 上傳
圖3.4 DS18B20引腳圖
引腳說明:
GND - 接地
DQ - 輸入/輸出數(shù)據(jù)
VDD - 電源電壓
NC - 無連接
DS18B20的極限使用條件
各引腳對地電壓: -0.5V~+0.6V
工作溫度: -55℃~125℃
儲存溫度: -55℃~+125℃
焊接溫度參見J-STD-020A的規(guī)格
*以上指出的器件在進(jìn)行正常焊接操作時所需要的環(huán)境條件,可能還有部分為能說明但是在操作規(guī)格中已經(jīng)暗示器件可正常運(yùn)行的環(huán)境。長期工作在極限條件下可能會影響器件的可靠性。
3.2.2DS18B20的內(nèi)部結(jié)構(gòu)
DS18B20的內(nèi)部存儲資源分為8個字節(jié)的ROM,9個字節(jié)的高速暫存器RAM,3個字節(jié)的EEPROM。如圖3.5所示。
1.020.jpg (18.04 KB, 下載次數(shù): 602)
下載附件
2017-6-9 22:07 上傳
圖3.5 DS18B20內(nèi)部結(jié)構(gòu)圖
每只DS18B20都有一個唯一存儲在ROM中的64位編碼。最前面8位是單線系列編碼,接著的49位是唯一的序列號,最后8位是以上56位的CRC編碼。當(dāng)一條總線上皆有多個DS18B20時,就通過序列號對其加以區(qū)分。
主機(jī)操作ROM的指令有5種:
33H——讀ROM。讀DS18B20溫度傳感器ROM中的編碼。
55H——匹配ROM。發(fā)出此命令后,接著發(fā)出64位ROM編碼,訪問單總線上與該編碼相對應(yīng)的DS18B20并使之做出響應(yīng),為下一步對該DS18B20的讀寫做準(zhǔn)備。
F0H——搜索ROM。用于確定掛接在同一總線上DS18B20的個數(shù),識別64位ROM地址,位操作各期間做好準(zhǔn)備。
CCH——跳過ROM。忽略64位ROM地址,直接向18B20發(fā)溫度變換命令。
ECH——告警搜索命令。執(zhí)行后只有溫度超過設(shè)定值上限或下限的芯片才做出響應(yīng)。
高速暫存器RAM由9個字節(jié)組成。其組成如圖3.8所示。包括兩個溫度顯示位,兩個復(fù)制的TH和TL,一個配置寄存器和三個保留位,一個CRC校驗值?呻姴罞2PROM又包括溫度觸發(fā)器TH和TL,以及一個配置寄存器。
表3.3 高速暫存器RAM組成
操作RAM的指令主要有:
44H——溫度轉(zhuǎn)換。啟動DS18B20進(jìn)行溫度轉(zhuǎn)換,結(jié)果存入RAM。
BEH——讀暫存器。讀內(nèi)部RAM中的溫度數(shù)據(jù)。
4EH——寫暫存器。發(fā)出像內(nèi)部RAM寫上、下限溫度數(shù)據(jù)指令,緊跟該命令之后傳送2字節(jié)的數(shù)據(jù)。
48H——復(fù)制暫存器。將RAM中的TH、TL復(fù)制到E2PROM中。
B8H——重調(diào)E2PROM。將E2PROM中內(nèi)容恢復(fù)到中。
B4H——讀供電方式。寄生供電時,DS18B20發(fā)送0,外界電源供電時,DS18B20發(fā)送1。
3.2.3 DS18B20的工作時序
DS18B20需要嚴(yán)格的單總線協(xié)議以確保數(shù)據(jù)的完整性,主要包括初始化系列,讀序列,寫序列,所有時序都是講主機(jī)作為主設(shè)備,單總線設(shè)備作為從設(shè)備。每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動寫時序開始,如果要求單總線器件會送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動讀時序?qū)懲陻?shù)據(jù)將接受。數(shù)據(jù)和命令的傳輸都是地位在先。
初始化時序:
1)先將數(shù)據(jù)線置高電平1。
2)延時(該時間要求不是很嚴(yán)格,但是要盡可能短一點(diǎn))。
3)數(shù)據(jù)線拉到低電平0。
4)延時750us(該時間范圍可以在480~960us)。
5)數(shù)據(jù)線拉到高電平。
6)延時等待。如果初始化成功,則在15~60ms內(nèi)產(chǎn)生一個由DS18B20返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。
7)若CPU讀到數(shù)據(jù)線上的低電平0后,還要進(jìn)行延時,其延時的時間從發(fā)出高電平算起至少要480us.
8)將數(shù)據(jù)線再次拉到高電平1后結(jié)束。如圖3.6所示。
1.021.jpg (17.49 KB, 下載次數(shù): 144)
下載附件
2017-6-9 22:07 上傳
圖3.6 初始化時序圖
寫時序:
1)數(shù)據(jù)線先置低電平0。
2)延時確定的時間為15us。
3)按從低位到高位的順序發(fā)送數(shù)據(jù)。
4)延時時間為45us。
5)將數(shù)據(jù)線拉到高電平1。
6)重復(fù)1)~5)步驟,直到發(fā)送完整個字節(jié)。
7)最后將數(shù)據(jù)線拉高到1。如圖3.7所示。
1.022.jpg (20.84 KB, 下載次數(shù): 164)
下載附件
2017-6-9 22:07 上傳
圖3.7 寫數(shù)據(jù)時序圖
讀時序:
1)將數(shù)據(jù)線拉高到1。
2)延時2us。
3)將數(shù)據(jù)線拉低到0。
4)延時6 us。
5)將數(shù)據(jù)線拉高到1。
6)延時4 us。
7)讀數(shù)據(jù)線的狀態(tài)得到一個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。
8)延時30us。
9)重復(fù)1~7步驟,直到讀取完一個字節(jié)。如圖3.8所示。
1.023.jpg (18.29 KB, 下載次數(shù): 162)
下載附件
2017-6-9 22:07 上傳
圖3.8 讀數(shù)據(jù)時序圖
第四章 硬件模塊的設(shè)計
1.024.jpg (20.58 KB, 下載次數(shù): 183)
下載附件
2017-6-9 22:07 上傳
在第二章已經(jīng)提到硬件件模塊的設(shè)計主要是指以單片機(jī)為核心,包括外接的溫度采集電路,實時時鐘電路,鍵盤,熱水器加熱開關(guān),液晶顯示電路,報警電路以及復(fù)位電路的設(shè)計。
圖4.1 硬件模塊設(shè)計框圖
4.1 溫度采集模塊
首先我們選擇DS18B20作為本次設(shè)計的測溫元件。
由第三章有關(guān)內(nèi)容可知DS18B20溫度傳感器可以將溫度這一模擬信號轉(zhuǎn)化為數(shù)字信號供處理器進(jìn)行處理,從而省去了電阻電感式傳統(tǒng)溫度傳感器的信號運(yùn)放模塊與A/D轉(zhuǎn)換模塊。
DS18B20只有三根外引線:單線數(shù)據(jù)傳輸總線端口DQ (2),外供電源線VDD(3),共用地線GND(1)。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時VDD接地,它是通過內(nèi)部電容在空閑時從數(shù)據(jù)線獲取能量,來完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時間較長。這種情況下,用單片機(jī)的一個I/O口來完成對DS18B20總線的上拉。另一種是外部供電方式(VDD接+5V),相應(yīng)的完成溫度測量的時間較短。
1.025.jpg (55.95 KB, 下載次數(shù): 179)
下載附件
2017-6-9 22:07 上傳
在本設(shè)計中采用外部供電方式實現(xiàn)DS18B20傳感器與單片機(jī)的連接,具體的接口電路如圖4.2所示。
圖4.2溫度傳感器接口電路
4.2實時時鐘電路模塊
本次設(shè)計采用的外接時鐘模塊芯片是美國DALLAS公司的DS1302時鐘芯片。
4.2.1 DS1302的介紹
其作為一款高性能、低功耗的實時時鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。DS1302的外部引腳分配如圖1所示及內(nèi)部結(jié)構(gòu)如圖2所示。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄,因此廣泛應(yīng)用于測量系統(tǒng)中。
各引腳的功能為:
Vcc1:主電源;Vcc2:備份電源。當(dāng)Vcc2>Vcc1+0.2V時,由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時,由Vcc1向DS1302供電。
SCLK:串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出;
I/O:三線接口時的雙向數(shù)據(jù)線;
CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,
CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?/div>
具體引腳圖如圖4.3所示
1.026.jpg (8.59 KB, 下載次數(shù): 188)
下載附件
2017-6-9 22:07 上傳
1.027.jpg (16.1 KB, 下載次數(shù): 164)
下載附件
2017-6-9 22:07 上傳
圖4.3 DS1302引腳圖
圖4.4 DS1302內(nèi)部結(jié)構(gòu)圖
4.2.2實時時鐘模塊原理圖
電路原理圖如圖4.5所示,DS1302與單片機(jī)的連接也僅需要3條線:CE引腳、SCLK串行時鐘引腳、I/O串行數(shù)據(jù)引腳,Vcc2為備用電源,外接12MHz晶振,為芯片提供計時脈沖。
1.028.jpg (29.01 KB, 下載次數(shù): 164)
下載附件
2017-6-9 22:07 上傳
圖4.5 DS1302實時時鐘電路接線電路
4.3鍵盤輸入模塊
鍵盤輸入原理圖如圖4.6所示:
P3.3~P3.7分別接按鍵S1~S6
按鍵的功能分別是:
S1時間調(diào)整按鈕
S3燒水開始按鈕與燒水溫度調(diào)整按鈕
S4燒水時間設(shè)定按鈕
S5“+”功能鍵
S6“—”功能鍵
1.029.jpg (15.82 KB, 下載次數(shù): 152)
下載附件
2017-6-9 22:07 上傳
圖4.6鍵盤輸入模塊原理圖
4.4繼電器加熱模塊
繼電器的定義是當(dāng)輸入量(激勵量)的變化達(dá)到規(guī)定要求時,在電氣輸出電路中使被控量發(fā)生預(yù)定的階躍變化的一種電器,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路)之間的互動關(guān)系。通常應(yīng)用于自動化的控制電路中,它實際上是用小電流去控制大電流運(yùn)作的一種“自動開關(guān)”。故在電路中起著自動調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。
本設(shè)計所用的為型號SRD-05VDC-SL-C的繼電器。線圈電壓為直流5V,為一單刀雙擲繼電器,其引腳結(jié)構(gòu)如圖4.7所示。
1.030.jpg (10.79 KB, 下載次數(shù): 155)
下載附件
2017-6-9 22:07 上傳
圖4.7 繼電器引腳圖
除線圈外,另三個引腳構(gòu)成一個單刀雙擲開關(guān),當(dāng)線圈通電時,開關(guān)達(dá)到另一邊,原來的開觸點(diǎn)吸和,閉觸點(diǎn)斷開。本設(shè)計中,目的是用繼電器吸和,接通外接的以加熱設(shè)備,從而起到溫度控制的作用,只需用到一組常開觸點(diǎn),則另一端空置。
1.031.jpg (28.95 KB, 下載次數(shù): 163)
下載附件
2017-6-9 22:07 上傳
本次繼電器模塊的設(shè)計原理圖如圖4.8所示:
圖4.8 繼電器設(shè)計原理圖
4.5 LCD顯示模塊設(shè)計
4.5.1 LCD模塊概述
本次設(shè)計采用的是一塊1602LCD液晶模塊,其共可以顯示2 行×16 個字符,每個字符是由5×8點(diǎn)陣組成的字符塊集。字符型液晶顯示模塊由字符型液晶顯示屏(LCD),控制驅(qū)動主芯片SPLC780C 及其擴(kuò)展驅(qū)動芯片SPLC1OO,配以少量外圍阻﹑容元件結(jié)構(gòu)件等裝配在PCB 板上而成。YB1602A 采用COB 工藝制作,結(jié)構(gòu)穩(wěn)定,使用壽命長。
其主要特性如下:
8位并行數(shù)據(jù)串口,適配M6800系列時序;
可選為并行數(shù)據(jù)方式;
具有字符發(fā)生器ROM,含10880位;
192中5*8點(diǎn)字符
64種5*10點(diǎn)字體字符
低功耗,高可靠性;
4.5.2 LCD模塊硬件說明
1)接口說明
表4.1 LCD1602接口說明
| | | |
| | | |
| | | |
| | | |
| | | RS=H,表示DB0-DB7 為顯示數(shù)據(jù) RS=L,表示DB0-DB7 為指令 |
| | | R/W=H,數(shù)據(jù)被讀到DB9-DB7 R/W=L, 數(shù)據(jù)被寫到DB9-DB7 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
備注:第3 腳V0 用來調(diào)節(jié)對比度,LCD 的驅(qū)動電壓Vop=VDD-V0,YB1602 的Vop是4.8V,此時顯示最佳對比度,故在5.0V 供電模式下,可以在V0 與電源地(0V)之間接一個10K 的可調(diào)電位器來調(diào)節(jié)對比度。
2)最大工作范圍
邏輯工作電壓(VDD):4.5V~5.5V
電源地(VSS):0V
LCD驅(qū)動電壓(Vop):-0.2V~+0.3V
4.5.3 內(nèi)部控制指令
表4.2 LCD內(nèi)部指令表
序號 | 指令 | 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 | 從CGRAM或DDRAM讀數(shù) | 1 | 1 | 讀出的數(shù)據(jù)內(nèi)容 |
4.5.4顯示硬件設(shè)計原理圖
1.032.jpg (11.67 KB, 下載次數(shù): 147)
下載附件
2017-6-9 22:07 上傳
根據(jù)設(shè)計要求與液晶控制方式,采用并行工作方式,將單片機(jī)的P0口作為數(shù)據(jù)傳輸口,而又由于單片機(jī)的P0口內(nèi)部沒有上拉功能,P0口作為I/O口輸出的時候時 輸出低電平為0 輸出高電平為高組態(tài)(并非5V,相當(dāng)于懸空狀態(tài))。也就是說P0 口不能真正的輸出高電平,給所接的負(fù)載提供電流,因此必須接上拉電阻[4](即外接一排阻連接到VCC上,如圖4-8所示)。其硬件顯示模塊如圖4.9所示。[16]
1.033.jpg (19.12 KB, 下載次數(shù): 177)
下載附件
2017-6-9 22:07 上傳
圖4.9 液晶顯示模塊原理圖
4.6其余硬件模塊設(shè)計
1.034.jpg (12.42 KB, 下載次數(shù): 149)
下載附件
2017-6-9 22:07 上傳
1.035.jpg (22.98 KB, 下載次數(shù): 124)
下載附件
2017-6-9 22:07 上傳
蜂鳴器電路在輸入為低電平時導(dǎo)通,作為某些按鍵按下的指示音。
LED燈在繼電器斷開即加熱工作時亮,在加熱電路斷開時,LED燈熄滅。
第五章系統(tǒng)軟件設(shè)計根據(jù)系統(tǒng)所需要實現(xiàn)的功能,軟件設(shè)計主要分為如下的幾個模塊:主程序、溫度讀取模塊設(shè)計、實時時鐘模塊設(shè)計、LCD顯示模塊設(shè)計、鍵盤掃描程序以及按鍵消抖程序。
本系統(tǒng)的工作流程是:系統(tǒng)上電后,對電路板上的各部分初始化;然后按下按鍵2,對時間進(jìn)行設(shè)定;按下按鍵3之后,對燒水溫度進(jìn)行設(shè)定;按下按鍵4后,對燒水時間進(jìn)行設(shè)定,當(dāng)溫度超過設(shè)定的溫度之后,蜂鳴器工作,系統(tǒng)停止工作;在系統(tǒng)受到較強(qiáng)干擾時,按下按鍵1可以對單片機(jī)進(jìn)行復(fù)位。
5.1主程序模塊
主程序主要完成的是對個全局變量進(jìn)行定義,對時鐘與時間的初始化,調(diào)用子函數(shù)功能。
具體流程圖如圖5.1所示。
主程序清單如下:
void main()
{
bit bz=0;
float ttt;
char we[6];
unsigned int i;
int te;
delayms(1);
chushishizhong(); //初始時鐘
chushishijian(); //初始時間
//writetime();
kaishi:
writecom(0x01); //清零
while(1)
{
readtime(); //讀取時間
t[0]=shijian[4]/10+0x30; //時間數(shù)據(jù)處理
t[1]=shijian[4]%10+0x30;
1.036.jpg (56.81 KB, 下載次數(shù): 182)
下載附件
2017-6-9 22:07 上傳
5.2 DS18B20測溫模塊
此模塊主要任務(wù)是對DS18B20進(jìn)行初始化,然后再進(jìn)行讀字節(jié)、寫字節(jié)的工作,最后將讀得的16進(jìn)制溫度傳送到處理器內(nèi)進(jìn)行處理。
DS18B20測溫流程圖如圖5.2所示
1.037.jpg (9.6 KB, 下載次數(shù): 149)
下載附件
2017-6-9 22:07 上傳
具體程序如下:
(具體程序詳見附件)
5.3實時時鐘模塊
實時時鐘模塊完成時間的設(shè)定與時間的讀取,包括年、月、日、時、分、秒。
具體流程圖如圖5.3所示
1.038.jpg (12.01 KB, 下載次數(shù): 170)
下載附件
2017-6-9 22:07 上傳
具體程序如下:
#define uchar unsigned char
sbit res= P2^0; //數(shù)據(jù)命令口選擇
sbit clo= P2^2; //脈沖信號口選擇
sbit io=P2^1; //數(shù)據(jù)口選擇
#define miao 0x80//秒
5.4 LCD顯示模塊
LCD顯示模塊主要實現(xiàn)各個數(shù)據(jù)的顯示功能,包括時間的顯示與溫度以及提示字的顯示。
顯示模塊的流程圖如圖5.4所示。
1.039.jpg (8.33 KB, 下載次數(shù): 171)
下載附件
2017-6-9 22:07 上傳
具體程序如下:
#define port P0
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^7; //將P2.0設(shè)置為數(shù)據(jù)選擇口
sbit rw= P2^6; //將P2.6設(shè)置為讀寫選擇口
sbit en= P2^5; //將P2.5設(shè)置為使能信號口
(具體程序詳見附件)
5.5鍵址返回程序
鍵盤掃描程序的功能是逐個掃描各個功能鍵和“+”“—”鍵是否被按下,若按下某個按鍵,則返回相應(yīng)的鍵址。
其按鍵掃描程序如下:
sbit k1=P3^3; //定義每個按鍵的數(shù)據(jù)口 P3.3為S1按鍵
sbit k2=P3^4; //P3.4對應(yīng)S2按鍵
sbit k3=P3^5; //P3.5對應(yīng)S3按鍵
sbit k4=P3^6; //P3.6對應(yīng)S4按鍵
sbit k5=P3^7; //P3.7對應(yīng)S5按鍵
unsigned char keyscan() //定義鍵址返回程序
{
if(k1==0) //當(dāng)按鍵1按下
{
delayms(10); //消抖 延時
if(k1==0)
{
while(k1==0);
return 1; //返回鍵址1
}
}
else if(k2==0) //當(dāng)按鍵2按下
{
delayms(10);
if(k2==0)
{
while(k2==0);
return 2; //返回鍵址2
}
}
else if(k3==0) //當(dāng)按鍵3按下
{
delayms(10);
if(k3==0)
{
while(k3==0);
return 3; //返回鍵址3
}
}
else if(k4==0) //當(dāng)按鍵4按下
{
delayms(10);
if(k4==0)
{
while(k4==0);
return 4; //返回鍵址4
}
}
else if(k5==0) //當(dāng)按鍵5按下
{
delayms(10);
if(k5==0)
{
while(k5==0);
return 5; //返回鍵址5
}
}
else
return 0; //若沒有按鍵按下則返回0
}
5.6測試及性能分析
實際硬件測試圖如下:
1)接通電源,系統(tǒng)正常顯示時鐘,如圖5.5所示
圖5.5
1.040.jpg (25.33 KB, 下載次數(shù): 175)
下載附件
2017-6-9 22:07 上傳
實時時鐘顯示
2)按下按鍵2,,光標(biāo)閃爍,進(jìn)入時鐘校準(zhǔn)模式,如圖5.6所示
圖5.6
1.041.jpg (19.24 KB, 下載次數(shù): 155)
下載附件
2017-6-9 22:07 上傳
時鐘校準(zhǔn)
3)按下按鍵3,系統(tǒng)顯示當(dāng)前溫度,按下按鍵5,按鍵6調(diào)節(jié)燒水溫度,當(dāng)水箱內(nèi)溫度低于目標(biāo)溫度時,LED燈亮,表示繼電器斷開,加熱電路工作。,如圖5.7所示。
圖5
1.042.jpg (24.88 KB, 下載次數(shù): 154)
下載附件
2017-6-9 22:07 上傳
.7加熱模式
4)當(dāng)水箱內(nèi)溫度達(dá)到加熱溫度時,LED燈熄滅,加熱電路停止工作,在溫度降到設(shè)定溫度以下,繼電器斷開,繼續(xù)加熱。如圖5.8所示
1.043.jpg (26.89 KB, 下載次數(shù): 149)
下載附件
2017-6-9 22:07 上傳
圖5.8 繼續(xù)燒水
5)按下按鍵4,進(jìn)入加熱時間設(shè)定,再按下按鍵4則進(jìn)入定時燒水模式。如圖5.9所示
1.044.jpg (25.2 KB, 下載次數(shù): 144)
下載附件
2017-6-9 22:07 上傳
圖5.9 定時燒水
6)按下按鍵1,則對系統(tǒng)進(jìn)行復(fù)位操作,系統(tǒng)初始化到時間顯示畫面,如圖5.10所示
1.045.jpg (29.75 KB, 下載次數(shù): 153)
下載附件
2017-6-9 22:07 上傳
圖5.10 復(fù)位操作
結(jié)論:成品經(jīng)實際測試,基本達(dá)到本次設(shè)計的各項要求。
第六章 結(jié)論本文主要闡述了以51系列單片機(jī)為核心處理器完成電熱水器控制系統(tǒng)的設(shè)計。
本次設(shè)計主要完成的任務(wù)有:
1)51單片機(jī)最小系統(tǒng)的研究,了解了51系列單片機(jī)的兩種復(fù)位方式;
2)本文研究了兩種方式鍵盤設(shè)計的優(yōu)劣,并且了解了如何運(yùn)用軟件對抖動現(xiàn)象的消除;
3)本文闡述了LCD液晶顯示屏的顯示原理,并且研究了液晶顯示屏的動態(tài)數(shù)字的顯示方式;
4)本次設(shè)計詳細(xì)闡述了DS18B20溫度采集芯片的詳細(xì)參數(shù),工作原理與和單片機(jī)的連接電路,以及如何對其進(jìn)行軟件編程以完成所需要的操作編程方法。
本次設(shè)計在初期時曾由于設(shè)計經(jīng)驗的不足,而導(dǎo)致在初步設(shè)計完成之后,編程與購買各芯片進(jìn)行硬件組裝,制作實物時,發(fā)現(xiàn)很多芯片價格過于昂貴,或者某些芯片由于型號過老而難以購買,同時在對某些芯片進(jìn)行軟件模塊編程時發(fā)現(xiàn)某些芯片的編程相對有些困難,于是在后期又進(jìn)行一次設(shè)計方案的改變,但是由于時間過緊,此次設(shè)計還有定時開關(guān)機(jī)功能沒有實現(xiàn)。并且由于設(shè)計經(jīng)驗的不足,單片機(jī)在某些時候會由于不確定因素出現(xiàn)死機(jī)的狀況,在復(fù)位之后又能進(jìn)行正常的工作。
本次設(shè)計使我自己對所學(xué)的專業(yè)知識得到了進(jìn)一步的鞏固,也讓我發(fā)現(xiàn)了在之前的課程學(xué)習(xí)中所未掌握的部分,從而使得自己在專業(yè)知識方面得到了一次提高,同時也讓對自己的專業(yè)有了一個全新的認(rèn)識,此次的設(shè)計,不僅鍛煉了自己分析問題與處理問題的能力,還提高了自己的動手能力,這次設(shè)計對于現(xiàn)在即將走上工作崗位的大學(xué)生來說,是一個十分寶貴的經(jīng)驗。
附錄A 硬件設(shè)計原理圖與PCB圖
1.046.jpg (80.43 KB, 下載次數(shù): 161)
下載附件
2017-6-9 22:07 上傳
1.047.jpg (87.63 KB, 下載次數(shù): 139)
下載附件
2017-6-9 22:07 上傳
附錄B軟件程序清單
附錄C 實物圖
1.048.jpg (52.85 KB, 下載次數(shù): 125)
下載附件
2017-6-9 22:07 上傳
源碼:
- //ds1302 shuju shuru wei 0
- //數(shù)據(jù)輸出 最后一位為0
- //上升沿和下降沿的制造
- //寫數(shù)據(jù),數(shù)據(jù)輸入是從低位開始 0位
- //讀數(shù)據(jù)從高位開始
-
- #include<reg52.h>
- #include<stdio.h>
- #include"delay.h"
- #include"lcd.h"
- #include"dsds1302.h"
- #include"key.h"
- #include"ds18b20.h"
-
- sbit fm=P1^3;
- sbit jd=P1^2;
- sbit de=P1^1;
-
- unsigned char tt[]="2012-01-01";
- unsigned char t[]="00:00:00";
- unsigned char fw[]="70 c -> 00:30";
- unsigned char sj=70;
- unsigned char dfen,dmiao=30;
-
-
- unsigned char aj=0; //按鍵返回值
- unsigned char gb=0; //顯示光標(biāo)
-
-
- void main()
- {
- bit bz=0;
- float ttt;
- char we[6];
- unsigned int i;
- int te;
- delayms(1);
- chushishizhong(); //初始時鐘
- chushishijian(); //初始時間
-
- //writetime();
- kaishi:
- writecom(0x01);
- while(1)
- {
- readtime(); //讀取時間
- t[0]=shijian[4]/10+0x30; //時間數(shù)據(jù)處理
- t[1]=shijian[4]%10+0x30;
- t[3]=shijian[5]/10+0x30;
- t[4]=shijian[5]%10+0x30;
- t[6]=shijian[6]/10+0x30;
- t[7]=shijian[6]%10+0x30;
- tt[2]=shijian[1]/10+0x30;
- tt[3]=shijian[1]%10+0x30;
- tt[5]=shijian[2]/10+0x30;
- tt[6]=shijian[2]%10+0x30;
- tt[8]=shijian[3]/10+0x30;
- tt[9]=shijian[3]%10+0x30;
- writestr(0,0,tt); //顯示時間 處理
- writestr(0,10," >data");
- writestr(1,0,t);
- writestr(1,10," >time");
-
-
-
- aj=keyscan(); //檢測按鍵函數(shù)
- /**********************按鍵2 按下表示進(jìn)入加熱控制模式*******************************/
- if(aj==2)
- {
- fm=0; // 0 表示閉合繼電器 閉合
- de=0;
- delayms(100);
- fm=1;
- jd=0; //打開自動燒水
-
- writecom(0x01); //清除屏幕
- while(1)
- {
- if(i==500)
- {
- i=0; //溫度讀取函數(shù) 以及 溫度的處理
- te=duwendu();
- ttt=(float)te*0.0625;
- sprintf(we,"%6.2f",ttt);
- writestr(0,0,"Temp:"); //顯示 溫度值
- writestr(0,5,we);
- writestr(1,0,fw);
- }
- i++;
-
- aj=keyscan(); //檢測按鍵
-
- if(aj==2)
- {
- de=1; //熄滅led燈
- jd=1;//斷開繼電器
- fm=0;
- delayms(100); //蜂鳴器響一聲
- fm=1;
- writecom(0x01);
-
- break; //用于 退出當(dāng)前的模式
- }
-
- if(aj==3) //調(diào)節(jié)設(shè)定的溫度值
- {
- fm=0;
- delayms(100);
- fm=1;
- jd=1;
- de=1;
- delayms(20);
- writecom(0x0f);
- writecom(0xc0+12); //光標(biāo)顯示位子
- while(1)
- {
- aj=keyscan();
- if(aj==3)
- {
- writecom(0x0c);
- delayms(20);
- writecom(0x01);
- fm=0;
- delayms(100);
- fm=1;
-
- jd=0;
- de=0;
- delayms(20);
- while(1) //開始進(jìn)行倒計時 燒水
- {
- if(dfen==0 && dmiao==0)
- {
- for(i=10;i;i--)
- {
- fm=~fm;
- de=~de;
- delayms(100);
- }
- jd=1;
- de=1;
- writecom(0x80);
- delayms(20);
- writecom(0x01);delayms(20);
- writestr(0,0,"ALL ok");
- writestr(1,0,"press KEY3 back ");
- delayms(200);
- while(1)
- {
- aj=keyscan();
- if(aj==3)
- {
- fm=0;
- delayms(100);
- fm=1;
- goto kaishi; //返回函數(shù)開始
- } }
- }
- delayms(200);delayms(200);delayms(200);delayms(200); //1s
-
- if(dmiao==0)
- {
- if(dfen!=0)
- {
- dfen--;
- dmiao=60;
- }
- }
- dmiao--;
- fw[11]=dfen/10+0x30;
- fw[12]=dfen%10+0x30;
- fw[14]=dmiao/10+0x30;
- fw[15]=dmiao%10+0x30;
- writestr(0,0," ** boiling ** ");
- writestr(1,0,fw);
- writestr(1,0," ");
- }//開始進(jìn)行倒計時 燒水
-
- }
-
- if(aj==4) //時間調(diào)節(jié)
- {
- if(gb==0)
- if(dfen<60)
- dfen++;
- else
- {
- fm=0;
- delayms(100);
- fm=1;
- }
- fw[11]=dfen/10+0x30; //顯示時間處理
- fw[12]=dfen%10+0x30;
- writestr(1,0,fw);
- writecom(0xc0+12);
- }
-
- if(aj==5)
- {
- if(dfen>0)
- dfen--;
- else
- {
- fm=0;
- delayms(100);
- fm=1;
- }
- fw[11]=dfen/10+0x30;
- fw[12]=dfen%10+0x30;
- writestr(1,0,fw);
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
完整文檔下載(word格式 可編輯):
基于51單片機(jī)的電熱水器控制系統(tǒng)設(shè)計.doc
(6.57 MB, 下載次數(shù): 272)
2017-6-9 18:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: zdmjjp
時間: 2017-6-16 08:42
謝謝樓主分享!
作者: zdmjjp
時間: 2017-6-16 08:45
謝謝樓主分享!學(xué)習(xí)C程序
作者: djnodt
時間: 2017-6-19 00:58
本帖最后由 djnodt 于 2017-6-22 22:11 編輯
請問樓主,串口通訊模塊是用什么元件的,起什么作用
作者: 3760609865
時間: 2017-6-20 06:46
下載研究一下,謝謝樓主分享。
作者: yyfpy
時間: 2017-12-18 13:29
謝謝樓主分享!學(xué)習(xí)!
作者: ray372liu
時間: 2017-12-18 15:31
謝謝樓主
作者: 201730645473
時間: 2018-4-16 22:34
謝謝樓主分享!
作者: 201730645473
時間: 2018-4-17 21:47
厲害。W(xué)習(xí)了
作者: 201730645473
時間: 2018-4-17 21:52
不過好像沒辦法下載哦~
作者: -惟勝-
時間: 2018-6-4 20:42
挺不錯的,就是沒有仿真
作者: Maserati
時間: 2018-7-21 19:32
樓主太強(qiáng)大了,剛好借鑒一下,謝謝樓主
作者: zjw2685661
時間: 2018-12-10 10:26
不錯的
作者: 半夜起床偷西瓜
時間: 2019-4-19 21:07
謝謝樓主分享
作者: yyhlsf
時間: 2019-4-26 23:43
謝謝分享謝謝分享
作者: 小小小白小
時間: 2020-6-16 13:42
能下載嗎?我這下載了一半不動了
作者: 麋鹿1212
時間: 2020-6-26 22:41
可以下載嘛
作者: morealong
時間: 2021-3-28 17:03
謝謝大佬分享,我這個好難,還要預(yù)約定時加熱,自動記錄主人使用習(xí)慣
作者: shenyuqiu
時間: 2021-3-29 11:34
謝謝大佬分享,很齊全的資料
作者: 老小學(xué)生
時間: 2021-3-29 13:35
樓主厲害,謝謝分享。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |