版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 全日制普通本科生畢業(yè)設(shè)計(jì) </p><p> 基于單片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì)</p><p> THE DESIGN OF OUTOMATIC DRINKING MACHINE CONTROL SYSTEM BASED ON SINGLE CHIP MICROMPUTER ON-BOARD</p><p><b> 目
2、 錄</b></p><p><b> 摘 要1</b></p><p><b> 關(guān)鍵詞1</b></p><p><b> 1 前言2</b></p><p> 1.1 研究的目的及意義2</p><p> 1.2
3、 車載飲水機(jī)的發(fā)展趨勢(shì)2</p><p> 1.3 主要研究的內(nèi)容3</p><p> 2 系統(tǒng)總體的設(shè)計(jì)3</p><p> 2.1 硬件總體的設(shè)計(jì)3</p><p> 2.2 軟件總體的設(shè)計(jì)4</p><p> 3 硬件系統(tǒng)設(shè)計(jì)5</p><p> 3.1 硬件電路分
4、析和設(shè)計(jì)報(bào)告5</p><p> 3.1.1 單片機(jī)最小系統(tǒng)電路5</p><p> 3.1.2 水位檢測(cè)電路7</p><p> 3.1.3 鍵盤電路7</p><p> 3.1.4 數(shù)碼管及指示燈顯示電路8</p><p> 3.1.5 溫度采集電路9</p><p>
5、 3.1.6 電源電路14</p><p> 3.1.7 報(bào)警電路設(shè)計(jì)15</p><p> 3.1.8 加熱管控制電路設(shè)計(jì)16</p><p> 3.2 系統(tǒng)硬件總圖17</p><p> 4 系統(tǒng)總設(shè)計(jì)18</p><p> 4.1 主程序流程圖18</p><p>
6、 4.2 各個(gè)模塊的流程圖19</p><p> 4.2.1 讀取溫度DS18B20模塊的流程19</p><p> 4.2.2 鍵盤掃描處理流程22</p><p> 4.2.3 報(bào)警處理流程22</p><p> 4.3 系統(tǒng)源代碼23</p><p><b> 5 系統(tǒng)調(diào)試31&
7、lt;/b></p><p> 5.1 軟件調(diào)試31</p><p> 5.2 系統(tǒng)操作說(shuō)明32</p><p> 5.3 數(shù)據(jù)測(cè)試32</p><p> 5.4 社會(huì)效益33</p><p><b> 6 結(jié)論33</b></p><p><
8、;b> 參考文獻(xiàn)34</b></p><p><b> 致謝34</b></p><p><b> 附錄35</b></p><p> 基于單片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì)</p><p> 摘 要:溫度控制系統(tǒng)可以說(shuō)是無(wú)所不在,熱水器系統(tǒng)、空調(diào)系統(tǒng)、冰箱、電
9、飯煲、電風(fēng)扇等家電產(chǎn)品以至手持式高速高效的計(jì)算機(jī)和電子設(shè)備,均需要提供溫度控制功能。本系統(tǒng)的設(shè)計(jì)可以用于熱水器溫度控制系統(tǒng)和飲水機(jī)等各種電器電路中。它以單片機(jī)AT80C51為核心,通過(guò)3個(gè)數(shù)碼管顯示溫度和4個(gè)按鍵實(shí)現(xiàn)人機(jī)對(duì)話,使用單總線溫度轉(zhuǎn)換芯片DS18B20實(shí)時(shí)采集溫度并通過(guò)數(shù)碼管顯示,并提供各種運(yùn)行指示燈用來(lái)指示系統(tǒng)現(xiàn)在所處狀態(tài),如:溫度設(shè)置、加熱、停止加熱等,整個(gè)系統(tǒng)通過(guò)四個(gè)按鍵來(lái)設(shè)置加熱溫度和控制運(yùn)行模式。</p>
10、<p> 關(guān)鍵詞: 單片機(jī);數(shù)碼管顯示;單總線;DS18B20</p><p> The Design of Automatic Drinking Machine Control System Based On Single Chip Microcomputer On-board</p><p> Abstract:Temperature control system
11、can be said to be ubiquitous, water heaters system, air conditioning systems, refrigerators, rice cookers, electric fans and other home appliances as well as high-speed and efficient hand-held computers and electronic eq
12、uipment are required to provide temperature control. The system design can be used for drinking water heater temperature control systems and other electrical circuits. AT80C51 microcontroller as the core of it, through t
13、he three temperature dig</p><p> Key words:Microcontroller;Digital Display;Single Bus;DS18B20</p><p><b> 1 前言</b></p><p> 1.1 研究的目的及意義</p><p> 本設(shè)計(jì)是基于單
14、片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì),此設(shè)計(jì)主要是要求采用單片機(jī)為控制核心,設(shè)計(jì)車載自動(dòng)飲水機(jī)電控系統(tǒng),并對(duì)飲水機(jī)的溫度控制,使其在工作中達(dá)到預(yù)期的目的效果。</p><p> 而車載飲水機(jī)的溫度控制,無(wú)論是在工業(yè)生產(chǎn)過(guò)程中,還是在日常生活中都起著非常重要的作用,過(guò)低的溫度或過(guò)高的溫度都會(huì)使水資源失去應(yīng)有的作用,從而造成水資源的巨大浪費(fèi)。特別是在當(dāng)前全球水資源極度缺乏的情況下,我們更應(yīng)該掌握好對(duì)水溫的控制,把身邊
15、的水資源好好地利用起來(lái)。</p><p> 本次設(shè)計(jì)為一個(gè)基于單片機(jī)的車載飲水機(jī)的溫度控制系統(tǒng),該系統(tǒng)可以實(shí)時(shí)檢測(cè)飲水機(jī)水箱的水溫,并且可以通過(guò)數(shù)碼管顯示飲水機(jī)水箱水溫度數(shù),可以通過(guò)鍵盤或開(kāi)關(guān)選擇制冷或加熱,可以人為設(shè)置水的溫度的上下限,如加熱,當(dāng)溫度在設(shè)定的范圍內(nèi)時(shí)正常工作,當(dāng)?shù)陀谒疁叵孪迺r(shí)控制加熱器加熱;如制冷,當(dāng)溫度高于水溫上限時(shí)控制壓縮機(jī)制冷,溫度檢測(cè)范圍0~95℃,精度±1℃,當(dāng)溫度超過(guò)設(shè)定
16、值時(shí)具有示警功能。</p><p> 1.2 車載飲水機(jī)的發(fā)展趨勢(shì)</p><p> 從1992年安吉爾生產(chǎn)出中國(guó)第一臺(tái)飲水機(jī)開(kāi)始,飲水機(jī)加桶裝水的方便,快捷,健康的飲水方式便在中國(guó)興起,到了1999年,飲水機(jī)市場(chǎng)逐漸成熟,美的,沁園,浪木等企業(yè)也開(kāi)始生產(chǎn)符合國(guó)家標(biāo)準(zhǔn)的飲水機(jī)。2006年以后,研究發(fā)現(xiàn),有內(nèi)膽飲水機(jī)的水垢和節(jié)能問(wèn)題漸漸暴露。所以安吉爾和美的推出了外置加熱的沸騰膽飲水機(jī)
17、產(chǎn)品,以獨(dú)特的熱膽外置方式加熱飲用水,現(xiàn)喝現(xiàn)燒更節(jié)能,更易清潔加熱內(nèi)壁。沁園推出了無(wú)熱膽系列產(chǎn)品,由于宣傳角度和內(nèi)部造型新穎,曾熱賣一時(shí),但是火爆之后,大量的問(wèn)題暴露,水垢,二次污染,節(jié)能,安全這些問(wèn)題都沒(méi)有解決,導(dǎo)致顧客投訴增多,身敗名列。所以飲水機(jī)的發(fā)展趨勢(shì)近10年左右還會(huì)以外形優(yōu)美的外熱飲水機(jī)為主,傳統(tǒng)飲水機(jī)為輔。</p><p> 中國(guó)水家電行業(yè)發(fā)展十余年,2002年以前少數(shù)有規(guī)模的企業(yè)在做全國(guó)市場(chǎng),并
18、進(jìn)行了一些宣傳推廣工作,雖然是獨(dú)步難行,可也很好的推動(dòng)了市場(chǎng)的發(fā)展。在2002年前后,更多企業(yè)認(rèn)識(shí)到了中國(guó)水處理市場(chǎng)的巨大商機(jī),進(jìn)來(lái)的企業(yè)多了。據(jù)有關(guān)部門統(tǒng)計(jì)中國(guó)在國(guó)家有關(guān)部門登記在冊(cè)的水家電企業(yè)有2000余家,還有一些未在統(tǒng)計(jì)范圍之內(nèi),這些企業(yè)多半在從事水家電的OEM生產(chǎn)。規(guī)模不足給中國(guó)家電中小企業(yè)形成幾大風(fēng)險(xiǎn):一是規(guī)模成本不經(jīng)濟(jì),產(chǎn)品在市場(chǎng)最終還是缺乏競(jìng)爭(zhēng)力。二是規(guī)模不足導(dǎo)致企業(yè)在產(chǎn)業(yè)環(huán)境即上下游的博弈能力不強(qiáng),一旦產(chǎn)業(yè)環(huán)境發(fā)生變化
19、,企業(yè)的應(yīng)變力不足。三是規(guī)模不足導(dǎo)致企業(yè)抗風(fēng)險(xiǎn)能力差,尤其是難以抗拒大品牌大資本企業(yè)的進(jìn)入。在未來(lái)中國(guó)飲水機(jī)結(jié)構(gòu)就產(chǎn)生了二極分化:一極為末流品牌(或稱為弱勢(shì)品牌)的產(chǎn)品陣營(yíng)。一極為主流品牌未來(lái)的市場(chǎng)份額也將由他們主宰。</p><p> 本設(shè)計(jì)是基于單片機(jī)車載自動(dòng)飲水機(jī)系統(tǒng)的設(shè)計(jì),單片機(jī)對(duì)對(duì)溫度的控制是工業(yè)生產(chǎn)中經(jīng)常使用的控制方法。單片機(jī)主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè),大到航天飛機(jī),小至日常生活中的冰箱
20、、彩電,單片機(jī)都可以大顯其能。采用單片機(jī)對(duì)整個(gè)測(cè)量電路進(jìn)行管理和控制,使得整個(gè)系統(tǒng)智能化、功耗低、使用電子元件較少、內(nèi)部配線少、成本低,制造、安裝、調(diào)試及維修方便。我相信此設(shè)計(jì)是非常有前景的。</p><p> 1.3 主要研究的內(nèi)容</p><p> (1)本系統(tǒng)上電后數(shù)碼管顯示當(dāng)前測(cè)量溫度,此時(shí)加熱指示燈和保溫指示燈均不點(diǎn)亮;若此時(shí)按“自動(dòng)加熱”鍵,則單片機(jī)自動(dòng)將預(yù)加熱溫度設(shè)置
21、為80℃并開(kāi)始加熱,送出一個(gè)加熱信號(hào),并點(diǎn)亮加熱指示燈;若按“溫度設(shè)置”鍵,則進(jìn)入預(yù)加熱溫度設(shè)置界面,此時(shí)數(shù)碼管閃爍顯示預(yù)設(shè)置溫度,此時(shí)通過(guò)按鍵“+”和“-”進(jìn)行設(shè)置溫度,預(yù)設(shè)置溫度按“5”遞增或遞減,設(shè)置好溫度后再按一次“溫度設(shè)置”鍵確定,單片機(jī)保存預(yù)設(shè)置溫度,并開(kāi)始加熱;</p><p> (2)如果實(shí)測(cè)溫度大于或等于預(yù)設(shè)置溫度,則單片機(jī)發(fā)出停止加熱信號(hào)并熄滅加熱指示燈,點(diǎn)亮保溫指示燈,且當(dāng)超過(guò)預(yù)設(shè)溫度時(shí)發(fā)
22、出報(bào)警;</p><p> (3)當(dāng)溫度下降到預(yù)設(shè)置溫度以下5度時(shí),單片機(jī)再次發(fā)出加熱信號(hào),同時(shí)熄滅保溫指示燈,點(diǎn)亮加熱指示燈,依次循環(huán)控制;</p><p> (4)完成加熱管控制電路、報(bào)警電路設(shè)計(jì),重點(diǎn)設(shè)計(jì)好臨界點(diǎn)問(wèn)題;</p><p> (5)必要時(shí)有防凍功能,當(dāng)冬天氣溫太低,要有防止管內(nèi)結(jié)冰裝置,有人工可以選擇語(yǔ)音是否播放的功能。</p>
23、<p> 2 系統(tǒng)整體的設(shè)計(jì)</p><p> 2.1 硬件整體的設(shè)計(jì)</p><p> 設(shè)計(jì)并制作一個(gè)基于單片機(jī)的熱水器溫度控制系統(tǒng)的電路,其結(jié)構(gòu)框圖如圖1:</p><p> 圖1 系統(tǒng)機(jī)構(gòu)框圖</p><p> Fig1 The system block diagram</p><p&g
24、t;<b> 硬件系統(tǒng)子模塊:</b></p><p> (1) 單片機(jī)最小系統(tǒng)電路部分;</p><p> (2) 鍵盤掃描電路部分;</p><p> (3) 數(shù)碼管溫度顯示和運(yùn)行指示燈電路部分;</p><p> (4) 溫度采集電路部分;</p><p> (5) 繼電器控制部
25、分;</p><p><b> (6) 報(bào)警部分。</b></p><p> 2.2 軟件整體的設(shè)計(jì)</p><p> 良好的設(shè)計(jì)方案可以減少軟件設(shè)計(jì)的工作量,提高軟件的通用性,擴(kuò)展性和可讀性。本系統(tǒng)的設(shè)計(jì)方案和步驟如下:</p><p> (1) 根據(jù)需求按照系統(tǒng)的功能要求,逐級(jí)劃分模塊;</p>
26、<p> (2) 明確各模塊之間的數(shù)據(jù)流傳遞關(guān)系,力求數(shù)據(jù)傳遞少,以增強(qiáng)各模塊的獨(dú)立性,便于軟件編制和調(diào)試;</p><p> (3) 確定軟件開(kāi)發(fā)環(huán)境,選擇設(shè)計(jì)語(yǔ)言,完成模塊功能設(shè)計(jì),并分別調(diào)試通過(guò);</p><p> (4) 按照開(kāi)發(fā)式軟件設(shè)計(jì)結(jié)構(gòu),將各模塊有機(jī)的結(jié)合起來(lái),即成一個(gè)較完善的系統(tǒng)。</p><p> 首先接通電源系統(tǒng)開(kāi)始工作,
27、系統(tǒng)開(kāi)始工作后,通過(guò)按鍵設(shè)定溫度值的上限值和下限值,確定按鍵將設(shè)定的溫度值存儲(chǔ)到指定的地址空間,溫度傳感器開(kāi)始實(shí)時(shí)檢測(cè),調(diào)用顯示子程序顯示檢測(cè)結(jié)果,調(diào)用比較當(dāng)前顯示溫度值與開(kāi)始設(shè)定的溫度值比較,如果當(dāng)前顯示值低于設(shè)定值就通過(guò)繼電器起動(dòng)加熱裝置,直到達(dá)到設(shè)定值停止加熱,之后進(jìn)行保溫,如果溫度高于上限進(jìn)行報(bào)警。</p><p><b> 3 硬件系統(tǒng)設(shè)計(jì)</b></p><
28、;p> 3.1 硬件電路分析及設(shè)計(jì)報(bào)告</p><p> 本次設(shè)計(jì)主要思路是通過(guò)對(duì)單片機(jī)編程將由溫度傳感器DS18B20采集的溫度外加驅(qū)動(dòng)電路顯示出來(lái),包括對(duì)繼電器的控制,進(jìn)行升溫,當(dāng)溫度達(dá)到上下限蜂鳴器進(jìn)行報(bào)警。P1.7開(kāi)關(guān)按鈕是用于確認(rèn)設(shè)定溫度的,初始按下表示開(kāi)始進(jìn)入溫度設(shè)定狀態(tài),然后通過(guò)P1.5和P1.6設(shè)置溫度的升降,再次按下P1.7時(shí),表示確認(rèn)所設(shè)定的溫度,然后轉(zhuǎn)入升溫或降溫。P2.3所接的
29、發(fā)光二極管用于表示加熱狀態(tài),P2.5所接的發(fā)光二極管用于表示保溫狀態(tài)。P2.3接繼電器。P3.1是溫度信號(hào)線。整個(gè)電路都是通過(guò)軟件控制實(shí)現(xiàn)設(shè)計(jì)要求。</p><p> 3.1.1 單片機(jī)最小系統(tǒng)電路</p><p> 因?yàn)?0C51單片機(jī)內(nèi)部自帶8K的ROM和256字節(jié)的RAM,因此不必構(gòu)建單片機(jī)系統(tǒng)的擴(kuò)展電路。如圖2,單片機(jī)最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點(diǎn)是單片機(jī)的3
30、1腳必須接高電平,否則系統(tǒng)將不能運(yùn)行。因?yàn)樵撃_不接時(shí)為低電平,單片機(jī)將直接讀取外部程序存儲(chǔ)器,而系統(tǒng)沒(méi)有外部程序存儲(chǔ)器,所以必須接VCC。在按鍵兩端并聯(lián)一個(gè)電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能力[1]。</p><p> 圖2 單片機(jī)最小系統(tǒng)圖</p><p> Fig2 The system block diagram</p><p> AT80C5
31、1的管腳說(shuō)明: </p><p> VCC:供電電壓。本設(shè)計(jì)供電電壓為+5V。</p><p><b> GND:接地。</b></p><p> P0口:P0口為一個(gè)8位漏極開(kāi)路雙向I/O口,每個(gè)管腳可吸收8個(gè)TTL門電流。當(dāng)P1口的管腳第一次寫“1”時(shí),被定義為高阻輸入。P0口能夠作為外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八
32、位。在Flash編程時(shí),P0口作為原碼輸入口,當(dāng)Flash進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個(gè)TTL門電流。P1口管腳寫入“1”后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。 </p&g
33、t;<p> P2口:P2口為一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被上拉電阻拉高,且作為輸入。P2口的管腳被外部下拉為低電平時(shí),將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉電阻,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄
34、存器的內(nèi)容。P2口在Flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。</p><p> RST:復(fù)位輸入端。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期
35、的高電平時(shí)。</p><p> ALE:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存于鎖存地址的低位字節(jié)。在FLASH編程期間,該引腳用于輸入編程脈沖。在平時(shí),ALE端口以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而,要注意的是:每當(dāng)其用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出,可將SFR8EH地址置0。此時(shí), ALE只有在執(zhí)行MOVX,MOV
36、C指令時(shí)ALE才起作用[1]。</p><p> PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令期間,每個(gè)機(jī)器周期PSEN兩次有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN信號(hào)將不出現(xiàn)。</p><p> EA:EA功能為內(nèi)外程序存儲(chǔ)器選擇控制端。當(dāng)EA保持低電平時(shí),單片機(jī)訪問(wèn)外部程序存儲(chǔ)器。當(dāng)EA端保持高電平時(shí),單片機(jī)訪問(wèn)內(nèi)部程序存儲(chǔ)器。</p>&
37、lt;p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入端。</p><p> XTAL2:來(lái)自反向振蕩器的輸出端。</p><p> 3.1.2 水位監(jiān)測(cè)電路</p><p> 水位檢測(cè)傳感器采用兩根不銹鋼針,一根和地連接,另一根通過(guò)100K電阻接到+5V電源,控制芯片采用NE555,當(dāng)水位低時(shí),不足以使兩個(gè)電極導(dǎo)通時(shí),NE555的2腳
38、為高電平,第3腳輸出低電平,即P1.2=1.單片機(jī)通過(guò)檢測(cè)P1.2的電平,可以判斷熱水箱水位是否滿[2]。水位檢測(cè)電路原理圖如圖3所示:</p><p> 圖3 水位監(jiān)測(cè)電路原理圖</p><p> Fig3 Level monitoring circuit principle diagram</p><p> 3.1.3 鍵盤電路</p>
39、<p> 鍵盤是單片機(jī)應(yīng)用系統(tǒng)中的主要輸入設(shè)備,單片機(jī)使用的鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤采用硬件線路來(lái)實(shí)現(xiàn)鍵盤的編碼,每按下一個(gè)鍵,鍵盤能夠自動(dòng)生成按鍵代碼,并有去抖功能。因此使用方便,但硬件較復(fù)雜。非編碼鍵盤僅僅提供鍵開(kāi)關(guān)狀態(tài),由程序來(lái)識(shí)別閉合鍵,消除抖動(dòng),產(chǎn)生相應(yīng)的代碼,轉(zhuǎn)入執(zhí)行該鍵的功能程序。非編碼鍵盤中鍵的數(shù)量較少,硬件簡(jiǎn)單,在單片機(jī)中應(yīng)用非常廣泛。</p><p> 圖為按鍵和
40、AT80C51的接線圖,檢測(cè)儀共設(shè)有4個(gè)按鍵,每個(gè)按鍵由軟件來(lái)決定其功能,4個(gè)按鍵功能分別為[3]:</p><p> (1) SW1:設(shè)定按鍵(設(shè)定按鍵);</p><p> (2) SW2:加法按鍵(當(dāng)前位加5);</p><p> (3) SW3:減法按鍵(當(dāng)前位減5);</p><p> (4) SW4:退出設(shè)置鍵(系統(tǒng)初始化
41、)。</p><p> 圖4 單片機(jī)按鍵和AT80C51的接線圖</p><p> Fig 4 Keys of single chip microcomputer and AT80C51</p><p> 3.1.4 數(shù)碼管及指示燈顯示電路</p><p> ?。?)數(shù)碼管顯示說(shuō)明</p><p> 表1
42、 數(shù)碼管編碼表</p><p> Table1 Digital code table</p><p> 各個(gè)數(shù)碼管的段碼都是單片機(jī)的數(shù)據(jù)口輸出,即各個(gè)數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動(dòng)態(tài)顯示的方式,即先只讓最低位顯示0(含點(diǎn)),經(jīng)過(guò)一段延時(shí),再只讓次低位顯示1,如此類推。由視覺(jué)暫留,只要我們的延時(shí)時(shí)間足夠短,就能夠使得數(shù)碼的顯示看起來(lái)非常的穩(wěn)定清楚,過(guò)
43、程如表1。</p><p> 本論文中使用了3個(gè)數(shù)碼管,其中前兩位使用動(dòng)態(tài)掃描顯示實(shí)測(cè)溫度,在設(shè)置加熱溫度的時(shí)候,兩個(gè)數(shù)碼管是閃爍,以提示目前處在溫度設(shè)置狀態(tài)。第三位數(shù)碼管靜態(tài)顯示符號(hào)“℃”。</p><p> ?。?)運(yùn)行指示燈說(shuō)明</p><p> 本熱水器溫度控制系統(tǒng)中共使用到3個(gè)LED指示燈和3個(gè)數(shù)碼管。</p><p> 右上
44、角的紅色LED是電源指示燈。</p><p> 數(shù)碼管右邊的紅色LED是加熱指示燈,當(dāng)剛開(kāi)機(jī)或溫度降到設(shè)定溫度5℃以下時(shí),該燈會(huì)亮,表示目前處于加熱狀態(tài);當(dāng)溫度上升到設(shè)定溫度時(shí),該LED滅,同時(shí)數(shù)碼管右邊的綠色LED亮,表示目前處于保溫狀態(tài),用戶可以使用熱水器;當(dāng)溫度再次下降到設(shè)定溫度5℃以下時(shí),綠色LED滅,紅色加熱的LED燈亮,不斷循環(huán)[7]。</p><p> 圖5 LED數(shù)
45、碼管顯示電路圖</p><p> Fig5 LED digital tube display circuit diagram</p><p> 3.1.5 溫度采集電路</p><p> (1) DS18B20介紹</p><p> Dallas最新單線數(shù)字溫度傳感器DS18B20簡(jiǎn)介新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)
46、。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器[4]。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、DS1822“一線總線”數(shù)字化溫度傳感器同DS18B20一樣,DS18B20也支持“一線總線”接口,測(cè)量溫度范圍為 -55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度為±0.5℃。DS1822的精度較差為±
47、;2℃。現(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其DS18B20的管腳配置和封裝結(jié)構(gòu)如圖6所示。</p><p> 圖6 DS18B20封裝</p><p> Fig6 DS18B20 package</p><p><b> 引腳定義: </b></p><p> ?、?DQ為數(shù)字
48、信號(hào)輸入/輸出端; </p><p> ?、?GND為電源地; </p><p> ?、?VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。</p><p> ?。?)DS18B20的單線(1-wire bus)系統(tǒng)</p><p> 單線總線結(jié)構(gòu)是DS18B20的突出特點(diǎn),也是理解和編程的難點(diǎn)。從兩個(gè)角度來(lái)理解單線總線:第一,單線總
49、線只定義了一個(gè)信號(hào)線,而且DS18B20智能程度較低(這點(diǎn)可以與微控制器和SPI器件間的通信做一個(gè)比較),所以DS18B20和處理器之間的通信必然要通過(guò)嚴(yán)格的時(shí)序控制來(lái)完成。第二,DS18B20的輸出口是漏級(jí)開(kāi)路輸出,這里給出一個(gè)微控制器和DS18B20連接原理圖[5]。這種設(shè)計(jì)使總線上的器件在合適的時(shí)間驅(qū)動(dòng)它。顯然,總線上的器件與(wired AND)關(guān)系。這就決定:</p><p> 1. 微控制器不能單
50、方面控制總線狀態(tài)。之所以提出這點(diǎn),是因?yàn)橄喈?dāng)多的文獻(xiàn)資料上認(rèn)為,微控制器在讀取總線上數(shù)據(jù)之前的I/O口的置1操作是為了給DS18B20一個(gè)發(fā)送數(shù)據(jù)的信號(hào)。這是一個(gè)錯(cuò)誤的觀點(diǎn)。如果當(dāng)前DS18b20發(fā)送0,即使微控制器I/O口置1,總線狀態(tài)還是0;置1操作是為了是I/O口截止(cut off),以確保微控制器正確讀取數(shù)據(jù)。</p><p> 2. 除了DS18B20發(fā)送0的時(shí)間段,其他時(shí)間其輸出口自動(dòng)截止。自動(dòng)截
51、止是為確保:1時(shí),在總線操作的間隙總線處于空閑狀態(tài),即高態(tài);2時(shí),確保微控制器在寫1的時(shí)候DS18B20可以正確讀入。</p><p> 由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S52單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。</p><p> ?、?
52、DS18B20的復(fù)位時(shí)序,如圖7</p><p> 圖7 DS18B20的復(fù)位時(shí)序圖</p><p> Fig7 DS18B20 reset timing diagram</p><p> ?、?DS18B20的讀時(shí)序</p><p> 對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。</p><p&g
53、t; 對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。DS18B20的讀時(shí)序圖如圖8所示。</p><p> 圖8 DS18B20的讀時(shí)序</p><p> Fig8 Read timing diagram DS18B20</p>&
54、lt;p> ?、?DS18B20的寫時(shí)序</p><p> 對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過(guò)程。</p><p> 對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總&l
55、t;/p><p><b> 線。如圖9所示。</b></p><p> 圖9 DS18B20的寫時(shí)序圖</p><p> Fig9 Write timing diagram of DS18B20</p><p> (3)DS18B20的供電方式</p><p> 在圖10中示出了DS18
56、B20的寄生電源電路。當(dāng)DQ或VDD引腳為高電平時(shí),這個(gè)電路便“取”的電源。寄生電路的優(yōu)點(diǎn)是雙重的,遠(yuǎn)程溫度控制監(jiān)測(cè)無(wú)需本地電源,缺少正常電源條件下也可以讀ROM。為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時(shí),DQ線上必須提供足夠的功率[6]。</p><p> 有兩種方法確保DS18B20在其有效變換期內(nèi)得到足夠的電源電流。</p><p> 第一種方法是發(fā)生溫度變換時(shí)
57、,在DQ線上提供一強(qiáng)的上拉,這期間單總線上不能有其它的動(dòng)作發(fā)生。如圖10所示,通過(guò)使用一個(gè)MOSFET把DQ線直接接到電源可實(shí)現(xiàn)這一點(diǎn),這時(shí)DS18B20工作在寄生電源工作方式,在該方式下VDD引腳必須連接到地。</p><p> 圖10 DS18B20供電方式1</p><p> Fig10 DS18B20 power supply mode 1</p><
58、p> 另一種方法是DS18B20工作在外部電源工作方式,如圖11所示。這種方法的優(yōu)點(diǎn)是在DQ線上不要求強(qiáng)的上拉,總線上主機(jī)不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送[6]。此外,在單總線上可以并聯(lián)多個(gè)DS18B20,而且如果它們?nèi)坎捎猛獠侩娫垂ぷ鞣绞剑敲赐ㄟ^(guò)發(fā)出相應(yīng)的命令便可以同時(shí)完成溫度變換。</p><p> 圖11 DS18B20供電
59、方式2</p><p> Fig11 DS18B20 power supply mode 2</p><p> (4) DS18B20設(shè)計(jì)中應(yīng)注意的幾個(gè)問(wèn)題</p><p> DS18B20具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用接口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題:較小的硬件開(kāi)銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與微處理器
60、間采用串行數(shù)據(jù)傳送。因此,在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在DS18B20有關(guān)資料中均未提及1Wire上所掛DS18B20數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)1Wire上所掛DS18B20超過(guò)8個(gè)時(shí),就需要考慮微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。連接DS18B20的總線電纜是有長(zhǎng)度限制的。實(shí)際應(yīng)用中,測(cè)溫電纜線建議采
61、用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地。</p><p> 本文以廣泛應(yīng)用的數(shù)字溫度傳感器DS18B20為例,說(shuō)明了1Wire總線的操作過(guò)程和基本原理。事實(shí)上,基于1Wire總線的產(chǎn)品還有很多種,如1Wire總線的E2PROM、實(shí)時(shí)時(shí)鐘、電子標(biāo)簽等[7]。他們都具有節(jié)省I/O資源、結(jié)構(gòu)簡(jiǎn)單、開(kāi)發(fā)快捷、成本低廉、便于總線擴(kuò)展等優(yōu)點(diǎn),因此有廣闊的應(yīng)用空間,具有較大的推
62、廣價(jià)值。</p><p> 本設(shè)計(jì)將溫度傳感器DS18B20與單片機(jī)TXD引腳相連,讀取溫度傳感器的數(shù)值。DS18B20與單片機(jī)連接圖如圖12所示。</p><p> 圖12 DS18B20與單片機(jī)連接圖</p><p> Fig12 DS18B20 and MCU connection diagram</p><p> 3.1.
63、6 電源電路</p><p> 采用L7805穩(wěn)壓塊,輸出為5V。電子組件要正常運(yùn)作都需要電源電壓供電,一般常用的電源電壓為+5V或+12V,因?yàn)閿?shù)字IC(Ingegrated Circuit:集成電路)所供給的電壓為+5V,而CMOS IC所供給的電壓為+12V,7805是一個(gè)穩(wěn)壓塊。7805穩(wěn)壓管把高電壓轉(zhuǎn)換到低電壓,7805穩(wěn)壓管具有保護(hù)單片機(jī)的作用。L7805輸出端要并聯(lián)上一個(gè)電解電容,濾除交流電干擾
64、,防止損壞單片機(jī)系統(tǒng)。本設(shè)計(jì)采用兩種供電方式,一種為DC7~18V直流穩(wěn)壓電源變換成5V的直流電;另一種為四節(jié)干電池共6V經(jīng)二極管加壓后得到將近5V的直流電源,電源配以開(kāi)關(guān)和指示燈,以方便使用。黃色發(fā)光二極管表示保溫,紅色的表示加熱狀態(tài)[8]。</p><p> 圖13 系統(tǒng)電源設(shè)計(jì)圖</p><p> Fig13 The system power supply design<
65、;/p><p> 3.1.7 報(bào)警電路設(shè)計(jì)</p><p> 同時(shí)可以在系統(tǒng)里設(shè)定溫度上限值,由于加熱停止后,加熱管還有余熱當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時(shí),程序就會(huì)進(jìn)入報(bào)警子程序,觸發(fā)蜂鳴器進(jìn)行報(bào)警。報(bào)警電路原理圖如圖14所示。</p><p> 圖14 報(bào)警電路圖</p><p> Fig14 Alarm circu
66、it diagram</p><p> 圖中的三極管8550的作用是增加驅(qū)動(dòng)能力,比9012的驅(qū)動(dòng)電流還大些,因此選用8550[9]。當(dāng)程序進(jìn)入報(bào)警子程序時(shí),把P2.7置0,就會(huì)觸發(fā)蜂鳴器,為了使報(bào)警聲音效果更好,對(duì)P2.7取反,發(fā)出報(bào)警嘟嚕聲音。</p><p> 3.1.8 加熱管控制電路設(shè)計(jì)</p><p> 繼電器是常用的輸出控制接口,可以做交直流信
67、號(hào)的輸出切換。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。繼電器控制接點(diǎn)操作說(shuō)明如下:</p><p> COM: Common,共同點(diǎn)。輸出控制接點(diǎn)的共同接點(diǎn)。</p><p> NC: Normal Close常閉點(diǎn)。以Com為共同點(diǎn),
68、NC與COM在平時(shí)是呈導(dǎo)通狀態(tài)的。</p><p> Normal Open常開(kāi)點(diǎn)。NO與COM在平時(shí)是呈開(kāi)路狀態(tài)的,當(dāng)繼電器動(dòng)作時(shí),NO與COM導(dǎo)通,NC與COM則呈開(kāi)路狀態(tài)。</p><p> 當(dāng)89S52的P2.5輸出高電平時(shí),繼電器不導(dǎo)通,反之當(dāng)輸出低電平時(shí),繼電器導(dǎo)通,這樣就激活了連接回路[10]。</p><p> 圖14 單片機(jī)控制繼電器電&l
69、t;/p><p> Fig.14 MCU control relay</p><p> 3.2 系統(tǒng)硬件總圖</p><p><b> 4 系統(tǒng)總設(shè)計(jì)</b></p><p> 本系統(tǒng)采用的是循環(huán)查詢方式,來(lái)顯示和控制溫度的。主要包括四段程序的設(shè)計(jì):DS18B20讀溫度程序,數(shù)碼管的驅(qū)動(dòng)程序,鍵盤掃描程序,以及
70、抱經(jīng)處理程序。</p><p> 4.1 主程序流程圖</p><p> 圖15 主程序流程圖1</p><p> Fig15 The flow chart of main program</p><p> 圖16 主程序流程圖2</p><p> Fig16 The flow chart of m
71、ain program2</p><p> 4.2 各模塊的流程圖</p><p> 4.2.1 讀取溫度DS18B20模塊的流程</p><p> 由于DS18B20采用的是一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S52單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。</p
72、><p> DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念。因此系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)DS18B20雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn)。 </p><p> DS18B20必須首先調(diào)用啟動(dòng)溫度轉(zhuǎn)換函數(shù),根據(jù)數(shù)據(jù)手冊(cè)上對(duì)應(yīng)轉(zhuǎn)換時(shí)間來(lái)超作,如
73、為12位轉(zhuǎn)換,則應(yīng)該是最大750mS,另外在對(duì)DS18B20超作時(shí),時(shí)序要求非常嚴(yán)格,因此最好禁止系統(tǒng)中斷。</p><p> 由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序[11]。所有時(shí)序都是將主機(jī)作為主設(shè)備,而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟
74、動(dòng)寫時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p> DS18B20的讀時(shí)序:</p><p> (1)對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程; </p><p> (2)對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS
75、18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。</p><p> DS18B20的寫時(shí)序:</p><p> (1)對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過(guò)程; </p><p> (2)對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B2
76、0能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線[12]。</p><p> 系統(tǒng)程序設(shè)計(jì)主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度子程序。流程圖如圖17所示:</p><p> 圖17 讀取溫度DS18B20模塊的流程圖</p><p> Fig.17 R
77、ead the temperature DS18B20 module flow chart</p><p><b> 程序代碼為:</b></p><p> GET_TEMPER:SETBDQ; 讀出轉(zhuǎn)換后的溫度值</p><p> LCALLINIT_1820; 先復(fù)位DS18B20</p><
78、;p> JBFLAG1,TSS2;</p><p> RET; 判斷DS1820是否存在若DS18B20不存在則返回</p><p> TSS2:MOVA,#0CCH; DS18B20已經(jīng)被檢測(cè)到!跳過(guò)ROM匹配</p><p> LCALLWRITE_1820;</p><p>
79、MOVA,#44H; 發(fā)出溫度轉(zhuǎn)換命令</p><p> LCALLWRITE_1820;</p><p> LCALL DISPLAY; 這里通過(guò)調(diào)用顯示子程序?qū)崿F(xiàn)延時(shí)一段時(shí)間,等</p><p> 待AD轉(zhuǎn)換結(jié)束,12位的話750微秒</p><p> LCALLINIT_1820;
80、 準(zhǔn)備讀溫度前先復(fù)位</p><p> MOVA,#0CCH; 跳過(guò)ROM匹配</p><p> LCALLWRITE_1820; </p><p> MOVA,#0BEH; 發(fā)出讀溫度命令</p><p> LCALLWRITE_1820;</p>
81、<p> LCALLREAD_18200 將讀出的溫度數(shù)據(jù)保存到35H/36H</p><p><b> RET[13]</b></p><p> 4.2.2 鍵盤掃描處理流程</p><p> 此流程為鍵盤掃描處理,CPU通過(guò)檢測(cè)各數(shù)據(jù)線的狀態(tài)(0或1)就能知道是否有按鍵閉合以及哪個(gè)按鍵閉合[14]。鍵盤管
82、理程序的功能是檢測(cè)是否有按鍵閉合,如果有按鍵閉合,消除抖動(dòng),根據(jù)鍵號(hào)轉(zhuǎn)到相應(yīng)的鍵處理程序,按鍵流程圖如圖18所示。</p><p> 圖18 鍵盤掃描子程序流程圖</p><p> Fig18 Keyboard scanning subroutine flow chart</p><p> 4.2.3 報(bào)警處流程圖</p><p>
83、; 運(yùn)行程序后,溫度傳感器DS18B20即可對(duì)環(huán)境進(jìn)行溫度采集,并送LED數(shù)碼管顯示。我們可以在程序里設(shè)定溫度上限值,當(dāng)采集到的外界溫度高于當(dāng)前所設(shè)定溫度上限值時(shí),程序就會(huì)進(jìn)入報(bào)警子程序,觸發(fā)蜂鳴器進(jìn)行報(bào)警。其程序流程圖如圖4.4所示[14]。</p><p> 圖19 報(bào)警子程序流程圖</p><p> Fig 19 Alarm subroutine flow chart<
84、;/p><p> 4.3 系統(tǒng)源代碼</p><p> EMPER_LEQU 29H; 用于保存讀出溫度的低8位</p><p> TEMPER_HEQU 28H; 用于保存讀出溫度的高8位</p><p> FLAG1EQU 38H; 是否檢測(cè)到DS18B20標(biāo)志位</p>&
85、lt;p> A_BITEQU 20H; 數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置</p><p> B_BITEQU 21H; 數(shù)碼管十位數(shù)存放內(nèi)存位置</p><p> B1EQU 70H; 溫度小數(shù)點(diǎn)位</p><p> A1EQU 71H; 設(shè)定溫度值<
86、/p><p> DQEQU P3.1; DQ為DS18B20數(shù)據(jù)位</p><p> BELL EQU P2.7; 蜂鳴報(bào)警</p><p> ORG 0000H; 單片機(jī)內(nèi)存分配申明</p><p> AJMP MAIN0; 前面的都是
87、定義</p><p> MAIN:MOV R0,#10;</p><p> M1:CPL P2.3;</p><p> ACALLDELAY125;</p><p> DJNZ R0,M1; 此段為燈閃5次,無(wú)實(shí)際意義</p><p> MAIN0:MOV A1,#
88、80; 默認(rèn)加熱為80度</p><p> MAIN1:LCALLD1820; 調(diào)用讀溫度子程序</p><p> LCALLDISPLAY; 調(diào)用數(shù)碼管顯示子程序</p><p><b> MOVA,29H;</b></p><p
89、><b> CLRC</b></p><p> CJNEA,A1,MAIN1_1</p><p> SETBBELL; 溫度相等,關(guān)閉蜂鳴器</p><p> AJMPMAIN1_1_A; 下等不用叫蜂鳴器</p><p> MAIN1_1:
90、JCMAIN1_2; 為1轉(zhuǎn)移,表示小于設(shè)定溫度</p><p> CPLBELL; 蜂鳴器斷續(xù)鳴叫</p><p> MAIN1_1_A:CLRP2.3; 下面是表示沒(méi)達(dá)到溫度</p><p><b> SETBP2.5</b></p>
91、;<p> AJMPMAIN2; 主要是檢測(cè)溫度是否小于設(shè)定的溫度,則 開(kāi)發(fā)熱管</p><p><b> CLR P2.3</b></p><p> MAIN1_2:SETBBELL; 關(guān)閉蜂鳴器</p><p> CLRP2.5;
92、 開(kāi)發(fā)熱管</p><p> SETBP2.3; 上面的是大于,關(guān)發(fā)熱管</p><p> MAIN2:JBP1.0,MAIN1; 看P1.0有否按下</p><p> ACALLDELAY125; 延時(shí)防抖動(dòng),常用的手法,網(wǎng)上很多介紹的&
93、lt;/p><p> JBP1.0,MAIN1; 再次查看</p><p><b> CLRP2.3</b></p><p> JNBP1.0,$; 等按鍵完全松手才進(jìn)入!</p><p><b> SETBP2.3<
94、;/b></p><p> SETBP2.5; 檢測(cè)到P1.0按鍵后后進(jìn)入設(shè)定溫度</p><p> MAIN2_1:ACALLDISPLAY1</p><p> JBP1.2,MAIN2_2</p><p> ACALLDELAY125</p><p>
95、 JBP1.2,MAIN2_2</p><p> JNBP1.2,$</p><p><b> MOVA,#5</b></p><p><b> ADDA,A1</b></p><p><b> CLRC</b></p><p>
96、CJNEA,#100,MAIN2_1_1</p><p><b> MOVA,#99</b></p><p> AJMPMAIN2_1_3; 上面這一段是+5度按鍵,按下+5度</p><p> MAIN2_1_1:JCMAIN2_1_3</p><p> MAIN2_1_2:CL
97、RC</p><p><b> MOVA,#99</b></p><p> MAIN2_1_3:MOVA1,A</p><p> MAIN2_2:JBP1.4,MAIN2_3</p><p> ACALLDELAY125</p><p> JBP1.4,MAIN2_3&l
98、t;/p><p> JNBP1.4,$</p><p><b> MOVA,A1</b></p><p> CJNEA,#99,ZY1</p><p><b> MOVB,#4</b></p><p><b> AJMPZY2</b>&l
99、t;/p><p> ZY1:MOV B,#5</p><p> ZY2:CLRC</p><p><b> MOVA,A1</b></p><p><b> SUBBA,B</b></p><p> MAIN2_2_1:JNCMAIN2_2_2</p
100、><p><b> MOVA1,#0</b></p><p> AJMPMAIN2_3; 上面這一段是-5度按鍵,按下-5度</p><p> MAIN2_2_2:MOVA1,A</p><p> MAIN2_3:JBP1.6,MAIN2_1</p><p> A
101、CALLDELAY125</p><p> JBP1.6,MAIN2_1</p><p><b> CLRP2.3</b></p><p> JNBP1.6,$</p><p><b> SETBP2.3</b></p><p> AJMPMAIN1;
102、 上面這一段是退出的意思的</p><p> D1820:LCALLGET_TEMPER; 調(diào)用讀溫度子程序</p><p> MOVB1,29H</p><p><b> MOVA,29H</b></p><p> MOVC,40H; 將28H中的最
103、低位移入C</p><p><b> RRCA</b></p><p><b> MOVC,41H</b></p><p><b> RRCA</b></p><p><b> MOVC,42H</b></p><p&g
104、t;<b> RRCA</b></p><p><b> MOVC,43H</b></p><p><b> RRCA</b></p><p><b> MOV29H,A</b></p><p><b> MOVA,B1<
105、;/b></p><p> MOVB,#10H</p><p><b> MULAB</b></p><p> MOVB,#10H</p><p><b> DIVAB</b></p><p><b> MOVB,#10</b>
106、</p><p><b> MULAB</b></p><p> MOVB,#10H</p><p><b> DIVAB</b></p><p><b> MOVB1,A</b></p><p> RET;
107、 上面這一段是讀取溫度后進(jìn)行轉(zhuǎn)換的意思</p><p> INIT_1820:SETBDQ; 這是DS18B20復(fù)位初始化子程序</p><p><b> NOP</b></p><p> CLRDQ; 主機(jī)發(fā)出延時(shí)537微秒的復(fù)位低脈沖</p>&
108、lt;p><b> MOVR1,#3</b></p><p> TSR1:MOVR0,#107</p><p><b> DJNZR0,$</b></p><p> DJNZR1,TSR1</p><p> SETBDQ; 然后拉高數(shù)據(jù)線&
109、lt;/p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> MOVR0,#25H</p&
110、gt;<p> TSR2:JNBDQ,TSR3; 等待DS18B20回應(yīng)</p><p> DJNZR0,TSR2</p><p> LJMPTSR4; 延時(shí)</p><p> TSR3:SETBFLAG1; 置標(biāo)志位,表示DS1820存在</p>
111、;<p><b> LJMPTSR5</b></p><p> TSR4:CLRFLAG1; 清標(biāo)志位,表示DS1820不存在</p><p><b> LJMPTSR7</b></p><p> TSR5:MOVR0,#117</p><
112、;p> TSR6:DJNZR0,TSR6; 時(shí)序要求延時(shí)一段時(shí)間</p><p> TSR7:SETBDQ</p><p><b> RET</b></p><p> GET_TEMPER:SETBDQ; 讀出轉(zhuǎn)換后的溫度值</p><p> LCALL
113、INIT_1820; 先復(fù)位DS18B20</p><p> JBFLAG1,TSS2</p><p> RET; 判斷DS1820是否存在?若DS18B20不存在則返回</p><p> TSS2:MOVA,#0CCH;DS18B20 ; 已經(jīng)被檢測(cè)到!!跳過(guò)ROM匹配</p><p>
114、 LCALLWRITE_1820</p><p> MOVA,#44H; 發(fā)出溫度轉(zhuǎn)換命令</p><p> LCALLWRITE_1820</p><p> LCALLDISPLAY; 這里通過(guò)調(diào)用顯示子程序?qū)崿F(xiàn)延時(shí)一段時(shí)間,等待</p><p> AD轉(zhuǎn)換結(jié)束,12位的話750微
115、秒</p><p> LCALLINIT_1820; 準(zhǔn)備讀溫度前先復(fù)位</p><p> MOVA,#0CCH; 跳過(guò)ROM匹配</p><p> LCALLWRITE_1820</p><p> MOVA,#0BEH; 發(fā)出讀溫度命令</p>
116、<p> LCALLWRITE_1820</p><p> LCALLREAD_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36H</p><p><b> RET</b></p><p> WRITE_1820:MOVR2,#8; 一共8位數(shù)據(jù)</p><p> CL
117、RC; 寫DS18B20的子程序(有具體的時(shí)序要求)</p><p> WR1:CLRDQ</p><p><b> MOVR3,#6</b></p><p><b> DJNZR3,$</b></p><p><b> RRCA</b>&
118、lt;/p><p><b> MOVDQ,C</b></p><p> MOVR3,#23</p><p><b> DJNZR3,$</b></p><p><b> SETBDQ</b></p><p><b> NOP<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)飲水機(jī)溫度控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)論文-基于at80c51單片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì)
- 4440基于單片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì)【機(jī)械畢業(yè)設(shè)計(jì)全套資料+已通過(guò)答辯】
- 基于單片機(jī)控制的飲水機(jī)加熱系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 【zs精品】4440基于單片機(jī)的車載自動(dòng)飲水機(jī)控制系統(tǒng)的設(shè)計(jì)【機(jī)械畢業(yè)設(shè)計(jì)全套資料+已通過(guò)答辯】
- 基于單片機(jī)控制的飲水機(jī)加熱系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的智能飲水機(jī)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---飲水機(jī)水溫控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的自動(dòng)門控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---飲水機(jī)水溫控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)_飲水機(jī)課程設(shè)計(jì)
- 智能飲水機(jī)控制系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 智能飲水機(jī)控制系統(tǒng)設(shè)計(jì)【畢業(yè)論文】
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)控制的送料機(jī)自動(dòng)送料機(jī)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的電梯控制系統(tǒng)
- 基于單片機(jī)的自動(dòng)擦鞋機(jī)控制系統(tǒng)設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的鍋爐防爆控制系統(tǒng)_畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的光控自動(dòng)窗簾控制系統(tǒng)設(shè)計(jì) 畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論