

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)</b></p><p> 題 目: 大棚溫度控制系統(tǒng) </p><p> 系 別: 計(jì)算機(jī)科學(xué)系 </p><p> 班 級(jí): 計(jì) 應(yīng)091 </p><p> 姓 名: XXXX <
2、/p><p> 學(xué) 號(hào): 000000 </p><p> 指導(dǎo)老師: XXX </p><p> 二〇一一年十一月十三日</p><p><b> 目 錄</b></p><p> 第1章 緒 論1</p><
3、;p> 1.1 系統(tǒng)的概述1</p><p> 1.2 系統(tǒng)的要求1</p><p> 1.3 系統(tǒng)的主要模塊1</p><p> 1.3.1 本系統(tǒng)的主要組成部分1</p><p> 1.3.2 各部分的功能2</p><p> 1.3.3 工作原理2</p><
4、;p> 第2章 設(shè)計(jì)的理論基礎(chǔ)3</p><p> 2.1 AT89C52的工作原理3</p><p> 2.1.1 CPU的結(jié)構(gòu)3</p><p> 2.1.2 CPU的結(jié)構(gòu)I/O口結(jié)構(gòu)3</p><p> 2.1.3 程序存儲(chǔ)器3</p><p> 2.1.4 定時(shí)器4</p&
5、gt;<p> 2.1.5 中斷系統(tǒng)4</p><p> 2.2 單總線數(shù)字溫度傳感器DS18B20檢測(cè)電路5</p><p> 2.2.1 DS18B20簡(jiǎn)單介紹5</p><p> 2.2.2 DS18B20 的性能特點(diǎn)5</p><p> 2.2.3 DS18B20的測(cè)溫原理6</p>
6、<p> 2.3 LCD1602液晶顯示器6</p><p> 2.3.1 LCD1602簡(jiǎn)介6</p><p> 2.3.2 1602LCD的指令說(shuō)明及時(shí)序7</p><p> 2.4 直流馬達(dá)8</p><p> 2.4.1 馬達(dá)工作的原理8</p><p> 2.4.2 馬達(dá)的基
7、本構(gòu)造9</p><p> 第3章 系統(tǒng)的硬件組成電路設(shè)計(jì)10</p><p> 3.1 系統(tǒng)總硬件設(shè)計(jì)10</p><p> 3.2 時(shí)鐘電路10</p><p> 3.3 AT89C52的復(fù)位電路11</p><p> 3.4 單總線數(shù)字溫度傳感器DS18B20檢測(cè)電路11</p>
8、<p> 3.5 LCD1602顯示模塊12</p><p> 3.6 驅(qū)動(dòng)電路12</p><p> 第4章 系統(tǒng)軟件的設(shè)計(jì)14</p><p> 4.1主程序設(shè)計(jì)14</p><p> 4.2 溫度檢測(cè)14</p><p> 4.2.1讀取溫度設(shè)計(jì)14</p>
9、<p> 4.2.2 溫度數(shù)據(jù)處理設(shè)計(jì)16</p><p> 4.3 液晶顯示器LCM160217</p><p> 4.3.1 LCM1602初始化17</p><p> 4.4馬達(dá)的控制21</p><p> 第5章 系統(tǒng)調(diào)試22</p><p> 第6章 總結(jié)與展望23&l
10、t;/p><p><b> 5.1 總結(jié)23</b></p><p><b> 5.2 展望23</b></p><p><b> 參考文獻(xiàn)24</b></p><p><b> 致 謝25</b></p><p>&
11、lt;b> 附錄A:程序26</b></p><p> 附錄B:元件清單42</p><p> 附錄C:實(shí)物照片42</p><p> 基于單片機(jī)AT89C52的大棚溫度控制系統(tǒng)</p><p><b> 摘 要</b></p><p> 蔬菜的生長(zhǎng)與溫度息息
12、相關(guān),對(duì)于蔬菜大棚來(lái)說(shuō),最重要的一個(gè)管理因素是溫度控制。溫度不合適,蔬菜則停止生長(zhǎng)或者生長(zhǎng)速度減慢,從而造成不可估量的損失。所以要將溫度始終控制在適合蔬菜生長(zhǎng)的范圍內(nèi)。如果僅靠人工控制既耗人力,又容易造成誤差。為此,在現(xiàn)代化的蔬菜大棚管理中通常有溫度自動(dòng)控制系統(tǒng),以控制蔬菜大棚溫度,適應(yīng)生產(chǎn)需要。 </p><p> 單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),
13、特別適用于控制領(lǐng)域,故又稱為微控制器。單片機(jī)具有體積小、集成度高、性能穩(wěn)定、控制功能強(qiáng)、易擴(kuò)展、低功耗、價(jià)格便宜等特點(diǎn),所以單片機(jī)市場(chǎng)前景廣闊。</p><p> 本設(shè)計(jì)是通過(guò)單片機(jī)控制,來(lái)實(shí)現(xiàn)對(duì)蔬菜大棚溫度進(jìn)行自動(dòng)控制。系統(tǒng)以AT89C52單片機(jī)為基礎(chǔ),通過(guò)數(shù)字及模擬式對(duì)溫度進(jìn)行采集并檢測(cè),通過(guò)顯示屏顯示當(dāng)前溫度。當(dāng)采集到的溫度高于系統(tǒng)設(shè)定值,馬達(dá)將帶動(dòng)風(fēng)扇的轉(zhuǎn)動(dòng),實(shí)現(xiàn)自動(dòng)控制大棚里的溫度。</p>
14、;<p> 【關(guān)鍵詞】大棚溫度控制系統(tǒng) AT89C52 DS18B20 LCD1602 直流馬達(dá)</p><p> The Greenhouse Temperature Control System</p><p> Based on AT89C52 MCU</p><p><b> Abstract</b>&
15、lt;/p><p> The growth of vegetables and temperature are closely related, for vegetable shed, one of the most important management factor is the temperature control. Temperature not appropriate, then stop the v
16、egetable growth or growth slowed, causing the immeasurable loss. So will always control temperature in vegetable growth for the range. If only on artificial control both human consumption, and easy to cause the error. Th
17、erefore, in modern management of vegetable shed, usually with temperature automati</p><p> Single chip microcomputers are microcomputer as an important branch, is also a vitality of the model. Single chip m
18、icrocomputer hereinafter referred to as the single chip microcomputer, is particularly applicable to control field, so it is also called the micro controller. Single chip microcomputer with small size, high level of inte
19、gration, stable performance, easy to control function expansion, low power consumption, price cheap and so on, so the single chip microcomputer wide prospect of mark</p><p> This design is through the singl
20、e-chip microcomputer control, to realize the canopy temperature vegetables for automatic control. System based on single chip microcomputer AT89C52, through the digital and analog temperature in acquisition and detection
21、, through the screen shows the current temperature. When the collected temperature higher than system setting, motors will drive the rotation of the fan, and realize the automatic control the temperature of the shelter.&
22、lt;/p><p> 【Key words】Temperature control of the greenhouses system AT89C52 DS18B20 LCD1602 DC motor</p><p><b> 第1章 緒 論</b></p><p> 我國(guó)南方溫度嚴(yán)熱而漫長(zhǎng),只有大力推廣大棚蔬菜的種植
23、來(lái)滿足人們?nèi)粘I顚?duì)蔬菜的需要。隨著人們生活水平的日益增長(zhǎng),對(duì)蔬菜的要求也較高,對(duì)大棚蔬菜的溫度控制就是一個(gè)重要因素。溫度過(guò)高,蔬菜就會(huì)停止生長(zhǎng)或者糜爛。</p><p> 本系統(tǒng)仿真就基于單片機(jī)AT89C52實(shí)現(xiàn)對(duì)大棚溫度的自動(dòng)化控制(實(shí)物焊接時(shí)則采用存儲(chǔ)器更強(qiáng)大的AT89S52)。用數(shù)字溫度計(jì)DS18B20采集,將采集到的溫度用顯示屏顯示,再根據(jù)采集到的溫度作分析來(lái)控制馬達(dá)的轉(zhuǎn)或停,從而實(shí)現(xiàn)對(duì)大棚溫度的控制
24、。</p><p> 1.1 系統(tǒng)的概述</p><p> 應(yīng)用自動(dòng)控制和電子計(jì)算機(jī)實(shí)現(xiàn)農(nóng)業(yè)生產(chǎn)和管理的自動(dòng)化,是農(nóng)業(yè)現(xiàn)代化的重要標(biāo)志之一。近年來(lái)電子技術(shù)和信息技術(shù)的飛速發(fā)展,帶來(lái)了溫室控制與管理技術(shù)方面的一場(chǎng)革命,隨著“設(shè)施農(nóng)業(yè)”、“虛擬農(nóng)業(yè)”等新名稱的出現(xiàn)。溫度計(jì)算機(jī)控制與管理系統(tǒng)正在不斷吸收自動(dòng)控制和信息管理領(lǐng)域的理論和方法,結(jié)合溫室作物種植的特點(diǎn),不斷創(chuàng)新,逐步完善,從而使溫
25、室種植業(yè)實(shí)現(xiàn)真正意義上的現(xiàn)代化,產(chǎn)業(yè)化。國(guó)內(nèi)外度計(jì)算機(jī)控制技術(shù)的發(fā)展善計(jì)算機(jī)的發(fā)展最早可以追溯到上個(gè)世紀(jì)的40年代,但將計(jì)算機(jī)用于環(huán)境控制則開(kāi)始于20世紀(jì)60年代。20世紀(jì)80年代初誕生了第一批溫室控制計(jì)算機(jī),此后溫度計(jì)算機(jī)控制及管理技術(shù)便函先在發(fā)達(dá)國(guó)家得到廣泛應(yīng)用,后來(lái)各發(fā)展中國(guó)家也都紛紛引進(jìn),開(kāi)發(fā)出適合自己的系統(tǒng)。這在給各國(guó)帶來(lái)了巨大的經(jīng)濟(jì)效益的同時(shí),也極大地推動(dòng)了各國(guó)農(nóng)業(yè)的現(xiàn)代化進(jìn)程。</p><p>
26、本系統(tǒng)以AT89C52單片機(jī)為控制核心,主要是為了對(duì)蔬菜大棚內(nèi)的溫度的檢測(cè)與控制而設(shè)計(jì)的。該測(cè)控儀具有檢測(cè)精度高、使用簡(jiǎn)單、成本較低和工作穩(wěn)定可靠等特點(diǎn),所以具有一定的應(yīng)用前景。</p><p><b> 1.2 系統(tǒng)的要求</b></p><p> 本系統(tǒng)通過(guò)單片機(jī)AT89C52控制,用DS18B20數(shù)字溫度計(jì)采集溫度。通過(guò)LCD1602液晶顯示屏顯示當(dāng)前溫度,
27、當(dāng)檢測(cè)到溫度高于系統(tǒng)設(shè)定溫度值,馬達(dá)將帶動(dòng)風(fēng)扇的轉(zhuǎn)動(dòng),實(shí)現(xiàn)自動(dòng)控制降低大棚里的溫度。本設(shè)計(jì)將實(shí)現(xiàn)大棚溫度的自動(dòng)化控制。</p><p> 用protues7.7仿真軟件繪制電路原理圖,再根據(jù)電路原理圖焊接電路板。</p><p> 1.3 系統(tǒng)的主要模塊</p><p> 1.3.1 本系統(tǒng)的主要組成部分</p><p> 本系統(tǒng)為
28、一個(gè)全自動(dòng)溫度檢測(cè)與控制系統(tǒng),由以下幾個(gè)部分組成:AT89C52單片機(jī),復(fù)位電路,溫度檢測(cè)電路,顯示電路,馬達(dá)。組成圖如圖1-1。</p><p> 圖 1-1 溫度自動(dòng)控制主要組成部分</p><p> 由圖1-1所示,本系統(tǒng)的核心部分是AT89C52,此芯片是該電路的樞紐。由它先控制著溫度的檢測(cè),用檢測(cè)到的溫度實(shí)現(xiàn)馬達(dá)的自動(dòng)控制,以及顯示。若檢測(cè)到的溫度高于設(shè)定的值則驅(qū)動(dòng)馬達(dá)轉(zhuǎn)動(dòng)。
29、</p><p> 1.3.2 各部分的功能</p><p> AT89C52單片機(jī):它是系統(tǒng)的中央處理器,擔(dān)負(fù)著系統(tǒng)的控制和運(yùn)算。溫度檢測(cè)裝置:DS18B20數(shù)字溫度計(jì)對(duì)大棚內(nèi)溫度進(jìn)行采集,將溫度轉(zhuǎn)換成數(shù)字。顯示設(shè)備:主要是用于顯示檢測(cè)到的大棚溫度。馬達(dá):主要用于帶動(dòng)風(fēng)扇的轉(zhuǎn)動(dòng)。按鍵電路:設(shè)置系統(tǒng)時(shí)間和參考溫度值。</p><p> 1.3.3 工作原理&
30、lt;/p><p> 首先對(duì)硬件系統(tǒng)端口定義,DS18B20定義端口為P1.7, P0口控制液晶LCM1602的顯示,定義端口P3.7為馬達(dá)控制端口。首先對(duì)溫度采集,將采集到的溫度轉(zhuǎn)換數(shù)字,采集到的溫度由LCM液晶顯示屏顯示。再將采集到的溫度與系統(tǒng)設(shè)定溫度值進(jìn)行比較,而控制P3.7的電平輸出。</p><p> 第2章 設(shè)計(jì)的理論基礎(chǔ)</p><p> 整個(gè)控制系
31、統(tǒng)分為硬件電路設(shè)計(jì)和軟件程序設(shè)計(jì)兩部分。根據(jù)系統(tǒng)具體要求,可以對(duì)每一個(gè)具體部分進(jìn)行分析設(shè)計(jì)。但要實(shí)現(xiàn)對(duì)各部分的設(shè)計(jì),需要充分了解各部分的理論基礎(chǔ)。本設(shè)計(jì)系統(tǒng)的基本組成單元包括:?jiǎn)纹瑱C(jī)控制單元,復(fù)位電路,按鍵電路,DS18B20溫度檢測(cè)電路,LCD1602顯示電路,直流馬達(dá)。本章將逐一進(jìn)行介紹。</p><p> 2.1 AT89C52的工作原理</p><p> 2.1.1 CPU的
32、結(jié)構(gòu)</p><p> CPU是單片機(jī)內(nèi)部的核心部分,是單片機(jī)的指揮和執(zhí)行機(jī)構(gòu),它決定了單片機(jī)的主要功能特性。從功能上看,CPU包括兩個(gè)基本部分:運(yùn)算器和控制器。下面說(shuō)明控制器和運(yùn)算器[1]。</p><p> 運(yùn)算器包括算術(shù)邏輯運(yùn)算部件ALU、累加器ACCC、B寄存器、暫存寄存器TMP1和TMP2、程序狀態(tài)寄存器PSW、BCD碼運(yùn)算調(diào)整電路等。為了提高數(shù)據(jù)處理和位操作能力,片內(nèi)設(shè)有
33、一些專用的寄存器,而且還增強(qiáng)了為處理邏輯電路的功能。在進(jìn)行位操作是,進(jìn)位位CY作為位操作累加器,整個(gè)位操作系統(tǒng)構(gòu)成一臺(tái)布爾處理機(jī)。</p><p> 2.1.2 CPU的結(jié)構(gòu)I/O口結(jié)構(gòu)</p><p> AT89C52單片機(jī)有4個(gè)8位并行I/O接口,記作P0、P1、P2和P3,每個(gè)端口都是8位準(zhǔn)雙向口,共占32根引腳。每一條I/O線都能獨(dú)立地用作輸入或輸出。每個(gè)端口都包括一個(gè)鎖存器,
34、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器,作輸出時(shí)數(shù)據(jù)可以鎖存,作輸入時(shí)數(shù)據(jù)可以緩沖,但是這四個(gè)通道的功能完全不同。</p><p> 在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這四個(gè)端口的每一位都可以作為準(zhǔn)雙向I/O端口使用,在具有片外擴(kuò)展存儲(chǔ)器系統(tǒng)中,P2口送出高8位地址,P0口為雙向總線,分時(shí)送出低8位地址和數(shù)據(jù)的輸入/輸出。</p><p> 2.1.3 程序存儲(chǔ)器</p><p>
35、; 程序存儲(chǔ)器用于存放編好的程序和表格常數(shù),通常該區(qū)域具有不同的保護(hù)措施,以防止該區(qū)域的內(nèi)容被破壞。程序存儲(chǔ)器通過(guò)16位程序計(jì)數(shù)器尋址,尋址能力為64K字節(jié)。這似的能在6K地址空間內(nèi)任意尋址,但沒(méi)有指令使程序能控制從程序存儲(chǔ)器空間轉(zhuǎn)移到數(shù)據(jù)存儲(chǔ)空間。對(duì)AT89C52芯片來(lái)說(shuō),片內(nèi)有4K字節(jié)ROM/EPROM,片外可擴(kuò)展60K字節(jié)EPROM,片內(nèi)和片外程序存儲(chǔ)器統(tǒng)一編址。</p><p> 在程序存儲(chǔ)器中,有6
36、個(gè)地址單元被保留用于某些特定的地址。 如表2.1所示:</p><p> 表 2.1 AT89C52的復(fù)位、中斷入口地址</p><p> 數(shù)據(jù)存儲(chǔ)器用于存放運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖以及標(biāo)志位等。AT89C51數(shù)據(jù)存儲(chǔ)器空間也分為內(nèi)片和外片兩大部分,即片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM和片外數(shù)據(jù)存儲(chǔ)器RAM。片內(nèi)數(shù)據(jù)存儲(chǔ)器最大可以尋址256個(gè)單元,片外最大可擴(kuò)展64K字節(jié)RAM,并且片內(nèi)使用
37、的是MOV指令,片外64K ROM空間專門為MOVX指令所用。</p><p><b> 2.1.4 定時(shí)器</b></p><p> AT89C51單片機(jī)的內(nèi)部有兩個(gè)16位可變成定時(shí)器0和定時(shí)器1,它們都有定時(shí)或是事件計(jì)數(shù)的功能,可用于定時(shí)控制、延時(shí)、對(duì)外部事件計(jì)數(shù)和檢測(cè)等場(chǎng)合。它們具有計(jì)數(shù)和定時(shí)兩種工作方式以及四種工作模式。兩個(gè)特殊功能寄存器用于確定定時(shí)器/計(jì)
38、數(shù)器的功能和操作方式。定時(shí)器T0的核心是一個(gè)加1計(jì)數(shù)器,它由8位寄存器TH0和TH1組成,可被變成為13位、16位、兩個(gè)分開(kāi)的8位等不同的結(jié)構(gòu)。計(jì)數(shù)器的輸入脈沖源可以是外部脈沖源或系統(tǒng)時(shí)鐘震蕩器,計(jì)數(shù)器對(duì)著兩個(gè)輸入脈沖之一進(jìn)行遞增計(jì)數(shù)。</p><p> 定時(shí)器T0具有方式0、方式1、方式2和方式3四種工作方式。T1具有方式0、方式1和方式2三種工作方式。不管是定時(shí)工作方式還是計(jì)數(shù)方式,定時(shí)器T0和T1在對(duì)內(nèi)部
39、時(shí)鐘或?qū)ν獠繒r(shí)間計(jì)數(shù)時(shí),不占用CPU時(shí)間,除非定時(shí)器/計(jì)數(shù)器溢出,才可能中斷CPU的當(dāng)前操作。由此可見(jiàn),定時(shí)器是單片機(jī)中效率最高而且工作靈活的部件。</p><p> 2.1.5 中斷系統(tǒng)</p><p> 中斷是指中央CPU正在處理某事情的時(shí)候,外部發(fā)生了某一事件,請(qǐng)求COU迅速去處理,于是,CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)入處理所發(fā)生的事件;中斷服務(wù)處理完成以后,再回到原來(lái)被中斷的工作
40、,這樣的過(guò)程稱為中斷[2]。</p><p> AT89C52單片機(jī)有五個(gè)中斷請(qǐng)求源。其中,兩個(gè)外部中斷源;兩個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器的溢出中斷源TE0和TF1;一個(gè)片內(nèi)串行口接受或發(fā)送中斷源RI或TI。這些中斷請(qǐng)求分別由單片機(jī)的特殊功能寄存器TCON和SCON的相應(yīng)位鎖存。當(dāng)幾個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷,要求CPU提供服務(wù)的時(shí)候,就存在CPU優(yōu)先響應(yīng)哪一個(gè)中斷請(qǐng)求,于是一些微處理器和單片機(jī)規(guī)定了每個(gè)中斷源的優(yōu)先
41、級(jí)別。</p><p> 2.2 單總線數(shù)字溫度傳感器DS18B20檢測(cè)電路</p><p> 由于傳統(tǒng)的熱敏電阻等測(cè)溫元件測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對(duì)較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測(cè)溫元件。</p><p> 2.2.1 DS18B20簡(jiǎn)單介紹</p&
42、gt;<p> DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場(chǎng)合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測(cè)量范圍為-55~+125 攝氏度,可編程為9位~12 位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依
43、然保存。被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便[3]。</p><p> 2.2.2 DS18B20 的性
44、能特點(diǎn)</p><p> 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫。DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。溫范圍-5
45、5℃~+125℃,在-10~+85℃時(shí)精度為±0.5。零待機(jī)功耗??删幊痰姆直媛蕿?~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫。在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。用戶可定義報(bào)警設(shè)置。報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度的器件。測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"一線總線"
46、;串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。以上特點(diǎn)使DS18B20非常適用與多點(diǎn)、遠(yuǎn)距離溫度檢測(cè)系統(tǒng)。</p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 4 所示,DQ 為數(shù)據(jù)輸入/輸出引腳
47、。開(kāi)漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;GND為地信號(hào);VDD為可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。 </p><p> 2.2.3 DS18B20的測(cè)溫原理</p><p> DS18B20的測(cè)溫原理,低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的
48、信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量.計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55 ℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 ℃所對(duì)應(yīng)的一個(gè)基數(shù)值[4]。</p><p> 減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)
49、器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器 1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是DS18B20的測(cè)溫原理。</p><
50、p> 另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)[5]。</p><p> 2.3 LCD1602液晶顯示器</p><p> 2.3.1 LCD1602簡(jiǎn)介</p><p> 字
51、符型LCD1602通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,引腳定義如表2.2所示: </p><p> 表 2.2引腳接口說(shuō)明表</p><p> 第1腳:VSS為地電源。</p><p> 第2腳:VDD接5V正電源。</p><p&
52、gt; 第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯
53、示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 第15腳:背光源正極。</p><p> 第16腳:背光源負(fù)極。&l
54、t;/p><p> 2.3.2 1602LCD的指令說(shuō)明及時(shí)序</p><p> 1602液晶模塊內(nèi)部的控制器共有11條控制指令[6],如表2.3所示:</p><p> 表 2.3 控制命令表</p><p> 1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。1為高電平、0為低電平。</p><
55、;p> 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p> 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。</p><p> 指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),
56、高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p> 指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。</p><p> 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x
57、7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。</p><p> 指令7:字符發(fā)生器RAM地址設(shè)置。</p><p> 指令8:DDRAM地址設(shè)置。</p><p> 指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b> 指令10:寫數(shù)據(jù)。
58、</b></p><p><b> 指令11:讀數(shù)據(jù)。</b></p><p> LCD1602讀寫時(shí)序如表2.4所示:</p><p> 表2.4 基本操作時(shí)序表</p><p><b> 2.4 直流馬達(dá)</b></p><p> 電動(dòng)馬達(dá),又稱為馬
59、達(dá)或電動(dòng)機(jī),是一種將電能轉(zhuǎn)化成機(jī)械能,并可再使用機(jī)械能產(chǎn)生動(dòng)能,用來(lái)驅(qū)動(dòng)其他裝置的電氣設(shè)備。 電動(dòng)機(jī)種類非常繁多,但可大致分為交流電動(dòng)機(jī)及直流電動(dòng)機(jī)以用于不同的場(chǎng)合。</p><p> 2.4.1 馬達(dá)工作的原理</p><p> 馬達(dá)的旋轉(zhuǎn)原理的依據(jù)為佛來(lái)明左手定則,當(dāng)導(dǎo)線置放于磁場(chǎng)內(nèi),若導(dǎo)線通上電流,則導(dǎo)線會(huì)切割磁場(chǎng)線使導(dǎo)線產(chǎn)生移動(dòng)。 電流進(jìn)入線圈產(chǎn)生磁場(chǎng),利用電流的磁效應(yīng),使電磁
60、鐵在固定的磁鐵內(nèi)連續(xù)轉(zhuǎn)動(dòng)的裝置,可以將電能轉(zhuǎn)換成力學(xué)能。 與永久磁鐵或由另一組線圈所產(chǎn)生的磁場(chǎng)互相作用產(chǎn)生動(dòng)力 直流馬達(dá)的原理是定子不動(dòng),轉(zhuǎn)子依相互作用所產(chǎn)生作用力的方向運(yùn)動(dòng)[7]。 </p><p> 電樞:可以繞軸心轉(zhuǎn)動(dòng)的軟鐵芯纏繞多圈線圈。 場(chǎng)磁鐵:產(chǎn)生磁場(chǎng)的強(qiáng)力永久磁鐵或電磁鐵。 集電環(huán):線圈約兩端接至兩片半圓形的集電環(huán),隨線圈轉(zhuǎn)動(dòng),可供改變電流方向的變向器。每轉(zhuǎn)動(dòng)半圈,線圈上的電流方向就改變一次。 電
61、刷:通常使用碳制成,集電環(huán)接觸固定位置的電刷,用以接至電源。 </p><p> 2.4.2 馬達(dá)的基本構(gòu)造</p><p> 電動(dòng)機(jī)的種類很多,以基本結(jié)構(gòu)來(lái)說(shuō),其組成主要由定子和轉(zhuǎn)子所構(gòu)成。 定子在空間中靜止不動(dòng),轉(zhuǎn)子則可繞軸轉(zhuǎn)動(dòng),由軸承支撐。 定子與轉(zhuǎn)子之間會(huì)有一定空氣間隙,以確保轉(zhuǎn)子能自由轉(zhuǎn)動(dòng)。 定子與轉(zhuǎn)子繞上線圈,通上電流產(chǎn)生磁場(chǎng),就成為電磁鐵,定子和轉(zhuǎn)子其中之一亦可為永久磁鐵
62、[8]。</p><p> 第3章 系統(tǒng)的硬件組成電路設(shè)計(jì)</p><p> 系統(tǒng)的硬件組成部分包括:主控制器AT89C52單片機(jī)、溫度傳感器DS18B20、顯示電路LCD1602、馬達(dá)、報(bào)警裝置等構(gòu)成。AT89C52連接各模塊的主控制端口,初步選定將要運(yùn)用到的電子元器件,再用Protues繪制原理圖,再根據(jù)原理圖焊接電路板。</p><p> 3.1 系統(tǒng)總
63、硬件設(shè)計(jì)</p><p> 首先對(duì)硬件系統(tǒng)18B20定義端口為P1.3,P2.4,P2.5,P2.6和P0口控制液晶LCM1602的顯示,定義端口P1.5為馬達(dá)控制端口,P1.7為喇叭控制端口。首先對(duì)溫度采集,將采集到的溫度轉(zhuǎn)換數(shù)字,采集到的溫度由LCM液晶顯示屏顯示。再將采集到的溫度所屬軟件設(shè)置的哪個(gè)范圍,而控制P1.5的電平輸出。電路原理圖如3-1所示:</p><p> 圖 3
64、-1 電路原理圖</p><p> 電路原理圖用Protues7.7電路仿真軟件繪制而成。用Protues7.7電路仿真軟件軟件繪制電路原理圖方便,快捷。Protues7.7電路仿真軟件有豐富的元件庫(kù),智能的器件搜索,智能化的連線,可輸出高質(zhì)量的圖紙。電路原理圖清晰明了[9]。</p><p><b> 3.2 時(shí)鐘電路</b></p><p&
65、gt; AT89C52芯片內(nèi)部有一個(gè)高增益反向放大器,用于構(gòu)成震蕩器。反向放大器的輸入端為XTAL1,輸出端為XTAL2。在TXAL1和XTAL2兩端跨接由石英晶體及兩個(gè)電容構(gòu)成的自激震蕩器[10],如圖3-2所示。電容器C1和C2取22pF,選用不同的電容量對(duì)震蕩頻率有微調(diào)作用。但石英晶體本身的標(biāo)定頻率才是單片機(jī)震蕩頻率的決定因素。</p><p> 圖 3-2 時(shí)鐘電路</p><p
66、> 時(shí)鐘電路中,兩個(gè)電容都選擇22pF的電容,電容各一端接與晶振相連,各一端接地。選擇的晶振是頻率為12MHZ。此模塊就是產(chǎn)生像時(shí)鐘一樣準(zhǔn)確的振蕩電路。</p><p> 3.3 AT89C52的復(fù)位電路</p><p> AT89C52單片機(jī)通常采用上電自動(dòng)復(fù)位和開(kāi)關(guān)手動(dòng)復(fù)位兩種方式。本系統(tǒng)采用上電復(fù)位電路,如圖3-3所示,所謂上電復(fù)位,是指單片機(jī)只要一上電,便自動(dòng)地進(jìn)入復(fù)位
67、狀態(tài)。在通電瞬間,電容C通過(guò)電阻R充電,RST端出現(xiàn)正脈沖,用以復(fù)位[10]。</p><p> 圖 3-3 復(fù)位電路</p><p> 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。RC復(fù)位電路可以實(shí)現(xiàn)上述基本功能,但解決不了電源毛刺和電源
68、緩慢下降等問(wèn)題,而其調(diào)整 RC 常數(shù)改變延時(shí)會(huì)令驅(qū)動(dòng)能力變差。</p><p> 3.4 單總線數(shù)字溫度傳感器DS18B20檢測(cè)電路</p><p> DQ 為數(shù)據(jù)輸入/輸出引腳,連接P1.7。開(kāi)漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源,GND為地信號(hào);VCC為電源信號(hào)。圖3-4為DS18B20檢測(cè)電路。</p><p> 圖 3-4 D
69、S18B20檢測(cè)電路</p><p> 3.5 LCD1602顯示模塊</p><p> 用AT89C52的P0口作為數(shù)據(jù)線,用P2.1、P2.2、P2.3分別作為L(zhǎng)CD的RS 、R/W、E。其中E是下降沿觸發(fā)的片選信號(hào),連接P2.3,R/W是讀寫信號(hào),連接P2.2,RS是寄存器選擇信號(hào),連接P2.1。圖3-5為L(zhǎng)CD1602的硬件連接。</p><p>
70、圖3-5 LCD1602的硬件連接</p><p> VEE用連接一阻值為10K的電阻,主要用于調(diào)節(jié)對(duì)比度的調(diào)整。接高電源時(shí)對(duì)比度最低,接低電源時(shí),對(duì)比度最高。對(duì)比度過(guò)高時(shí),會(huì)產(chǎn)生“鬼影”。因此連接一10K的電阻用以調(diào)整。當(dāng)P0口作為I/O用時(shí)需要上拉電阻,如圖3.5接一排阻,用于上拉[11]。</p><p><b> 3.6 驅(qū)動(dòng)電路</b></p&g
71、t;<p> 系統(tǒng)使用的是直流馬達(dá),包含周圍磁場(chǎng)、電刷、整流子等元件,電刷和整流子將外部所供應(yīng)的直流電源,持續(xù)地供應(yīng)給轉(zhuǎn)子的線圈,並適時(shí)地改變電流的方向,使轉(zhuǎn)子能以同一方向持續(xù)旋轉(zhuǎn)。直流馬達(dá)的優(yōu)點(diǎn)有速度調(diào)整容易,啟動(dòng)轉(zhuǎn)矩較大等,但是電刷與整流子保養(yǎng)維修不易。直流馬達(dá)廣泛的用在消費(fèi)電子產(chǎn)品及玩具,如電動(dòng)刮胡刀、錄音機(jī)、CD唱機(jī)等,而大輸出功率的直流電動(dòng)機(jī)則是用在電車,快速電梯,工作母機(jī)等。圖3-6為硬件連接圖。 &l
72、t;/p><p> 圖 3-6 驅(qū)動(dòng)電路</p><p> 第4章 系統(tǒng)軟件的設(shè)計(jì)</p><p> 一個(gè)應(yīng)用系統(tǒng)要完成各項(xiàng)功能,首先必須有較完善的硬件作保證。同時(shí)還必須得到相應(yīng)設(shè)計(jì)合理的軟件的支持,尤其是微機(jī)應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過(guò)軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編和有時(shí)會(huì)變得很簡(jiǎn)單。因此充分利用其
73、內(nèi)部豐富的硬件資源和軟件資源。</p><p> 程序設(shè)計(jì)語(yǔ)言有三種:機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言。本系統(tǒng)運(yùn)用的是高級(jí)語(yǔ)言所編寫,也就是C語(yǔ)言。</p><p><b> 4.1主程序設(shè)計(jì)</b></p><p> 從軟件的功能不同可分為四大類:一是檢測(cè)軟件,它是用來(lái)檢測(cè)溫度。二是顯示部分,用來(lái)顯示所檢測(cè)到的溫度。三是控制部分,用來(lái)控制馬
74、達(dá)。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義。圖4-1為軟件設(shè)計(jì)流程圖。</p><p> 圖 4-1 軟件設(shè)計(jì)流程圖</p><p><b> 4.2 溫度檢測(cè)</b></p><p> 4.2.1讀取溫度設(shè)計(jì)</p><p> DSl8B20可以從單總
75、線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開(kāi),直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳娫礊橹?。此外,還可外接5 V電源,給DS18B20供電[12]。圖4-2</p><p> 圖 4-2 18B20讀取溫度流程圖</p><p> 讀取溫度子程序的主要功能是讀出RAM中的9個(gè)字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。D
76、S18B20的各個(gè)命令對(duì)時(shí)序的要求特別嚴(yán)格,所以必須按照所要求的時(shí)序才能達(dá)到預(yù)期的目的,同時(shí),要注意讀進(jìn)來(lái)的是高低位在后,低位在前,共12位數(shù),小數(shù)4位,整數(shù)7位,還有一位符號(hào)位。</p><p> 讀取溫度的主程序如下:</p><p> void ReadTemperature(void)</p><p><b> {</b><
77、/p><p> unsigned char a=0;</p><p> unsigned char b=0;</p><p> unsigned char t=0;</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作<
78、;/p><p> WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> delay_18B20(100); // this message is very important</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列
79、號(hào)的操作</p><p> WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器)前兩個(gè)就是溫度</p><p> delay_18B20(100);</p><p> a=ReadOneChar(); //讀取溫度值低位</p><p> b=ReadOneChar(); //讀取溫度值高
80、位</p><p> temp1=b<<4;</p><p> temp1+=(a&0xf0)>>4;</p><p> temp2=a&0x0f;</p><p> temp=((b*256+a)>>4); //當(dāng)前采集溫度值除16得實(shí)際溫度值</p><
81、p><b> }</b></p><p> 4.2.2 溫度數(shù)據(jù)處理設(shè)計(jì)</p><p> 讀出溫度數(shù)據(jù)后,TempL的低四位為溫度的小數(shù)部分,可以精確到0.0625℃,TempL的高四位和TempH的低四位為溫度的整數(shù)部分,TempH的高四位全部為1表示負(fù)數(shù),全為0表示正數(shù)。所以先將數(shù)據(jù)提取出來(lái),分為三個(gè)部分:小數(shù)部分、整數(shù)部分和符號(hào)部分。小數(shù)部分進(jìn)行
82、四舍五入處理:大于0.5℃的話,向個(gè)位進(jìn)1;小于0.5℃的時(shí)候,舍去不要。當(dāng)數(shù)據(jù)是個(gè)負(fù)數(shù)的時(shí)候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因?yàn)镈S18B20最低溫度只能為-55℃,所以可以將整數(shù)部分的最高位換成一個(gè)“-”,表示為負(fù)數(shù)。圖4-3為溫度數(shù)據(jù)處理流程圖。</p><p> 圖 4-3 溫度數(shù)據(jù)處理流程</p><p> 由于DS18B20轉(zhuǎn)換后的代碼并不是實(shí)際的溫度值,
83、所以要進(jìn)行計(jì)算轉(zhuǎn)換。溫度高字節(jié)高5位是用來(lái)保存溫度的正負(fù),高字節(jié)低3位和低字節(jié)來(lái)保存溫度值。其中低字節(jié)的低4位來(lái)保存溫度的小數(shù)位。由于本程序采用的是0.0625的精度,小數(shù)部分的值,可以用后四位代表的實(shí)際數(shù)值乘以0.0625,得到真正的數(shù)值,數(shù)值可能帶幾個(gè)小數(shù)位,所以采取小數(shù)舍入,保留一位小數(shù)即可。也就說(shuō),本系統(tǒng)的溫度精確到了0.1度[13]。</p><p> 溫度數(shù)據(jù)處理主程序如下:</p>
84、<p> str[0]=TempH/100; //十位溫度</p><p> str[1]=(TempH%100)/10; //十位溫度</p><p> str[2]=(TempH%100)%10; //個(gè)位溫度,帶小數(shù)點(diǎn)</p><p> str[3]=TempL;</p><p> if(flag_get==1)
85、 //定時(shí)讀取當(dāng)前溫度</p><p><b> {</b></p><p> temp=ReadTemperature();</p><p> if(temp&0x8000)</p><p><b> {</b></p><p> str[0]=0
86、x40;//負(fù)號(hào)標(biāo)志</p><p> temp=~temp; // 取反加1</p><p><b> temp +=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b&
87、gt; str[0]=0;</b></p><p> TempH=temp>>4;</p><p> TempL=temp&0x0F;</p><p> TempL=TempL*6/10;//小數(shù)近似處理</p><p> flag_get=0;</p><p> 4.3
88、液晶顯示器LCM1602</p><p> 4.3.1 LCM1602初始化 </p><p> LCM1602顯示函數(shù)如下[14]</p><p><b> 端口定義如下:</b></p><p> #define DATAPORT P0
89、 //定義P0口為L(zhǎng)CD通訊端口</p><p> sbit LCM_RS=P2^0;//數(shù)據(jù)/命令端</p><p> sbit LCM_RW=P2^1;//讀/寫選擇端</p><p> sbit LCM_EN=P2^2;</p><p> /***************液晶顯示子函數(shù)
90、1正常顯示*****************/</p><p> void displayfun1(void)</p><p><b> {</b></p><p> WriteCommandLCM(0x0c,1); //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p> DisplayList
91、Char(0,0,str0);</p><p> DisplayListChar(0,1,str1);</p><p> DisplayOneChar(3,0,hour/10+0x30); //液晶上顯示小時(shí)</p><p> DisplayOneChar(4,0,hour%10+0x30);</p><p> Disp
92、layOneChar(6,0,minite/10+0x30);//液晶上顯示分</p><p> DisplayOneChar(7,0,minite%10+0x30);</p><p> DisplayOneChar(9,0,seconde/10+0x30); //液晶上顯示秒</p><p> DisplayOneChar(10,0,secon
93、de%10+0x30);</p><p> DisplayOneChar(4,1,K/10+0x30); //液晶上顯示設(shè)定的溫度</p><p> DisplayOneChar(5,1,K%10+0x30);</p><p> DisplayOneChar(11,1,temp1/10+0x30); //液晶上顯示測(cè)得的溫度 &l
94、t;/p><p> DisplayOneChar(12,1,temp1%10+0x30);</p><p> DisplayOneChar(14,1,temp2/10+0x30);</p><p> if(ON_OFF==0) //若溫控標(biāo)志為0</p><p><b> {</b></p
95、><p> DisplayOneChar(14,0,0x4f); // 液晶上顯示不控溫的標(biāo)志</p><p> DisplayOneChar(15,0,0x46);</p><p><b> }</b></p><p><b> else</b></p><p&g
96、t;<b> {</b></p><p> DisplayOneChar(14,0,0x4f); // 液晶上顯示控溫的標(biāo)志</p><p> DisplayOneChar(15,0,0x4e);</p><p> if(outflag==1)</p><p> DisplayOneChar(0,0,
97、0x7c); </p><p><b> else</b></p><p> DisplayOneChar(0,0,0xef);</p><p><b> }</b></p><p><b> }</b></p><p> /****
98、********液晶顯示子函數(shù)2***************/</p><p> void displayfun2(void)</p><p><b> {</b></p><p> WriteCommandLCM(0x0c,1); //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p> Dis
99、playListChar(0,0,str0);</p><p> DisplayListChar(0,1,str1);</p><p> DisplayOneChar(6,0,minite/10+0x30);</p><p> DisplayOneChar(7,0,minite%10+0x30);</p><p> Display
100、OneChar(9,0,seconde/10+0x30);</p><p> DisplayOneChar(10,0,seconde%10+0x30);</p><p> DisplayOneChar(4,1,K/10+0x30); </p><p> DisplayOneChar(5,1,K%10+0x30);</p><p&g
101、t; DisplayOneChar(11,1,temp1/10+0x30); </p><p> DisplayOneChar(12,1,temp1%10+0x30);</p><p> DisplayOneChar(14,1,temp2/10+0x30);</p><p> WriteCommandLCM(0x0f,1); //顯示
102、屏打開(kāi),光標(biāo)顯示,閃爍,檢測(cè)忙信號(hào)</p><p> DisplayOneChar(3,0,hour/10+0x30);</p><p> DisplayOneChar(4,0,hour%10+0x30);</p><p><b> }</b></p><p> /**************液晶顯示子函數(shù)3*
103、****************/</p><p> void displayfun3(void)</p><p><b> {</b></p><p> WriteCommandLCM(0x0c,1); //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p> DisplayListChar(0,
104、0,str0);</p><p> DisplayListChar(0,1,str1);</p><p> DisplayOneChar(3,0,hour/10+0x30);</p><p> DisplayOneChar(4,0,hour%10+0x30); </p><p> DisplayOneChar(9,0,second
105、e/10+0x30);</p><p> DisplayOneChar(10,0,seconde%10+0x30);</p><p> DisplayOneChar(4,1,K/10+0x30); </p><p> DisplayOneChar(5,1,K%10+0x30);</p><p> DisplayOneChar
106、(11,1,temp1/10+0x30); </p><p> DisplayOneChar(12,1,temp1%10+0x30);</p><p> DisplayOneChar(14,1,temp2/10+0x30);</p><p> WriteCommandLCM(0x0f,1); //顯示屏打開(kāi),光標(biāo)顯示,閃爍,檢測(cè)忙信號(hào)
107、</p><p> DisplayOneChar(6,0,minite/10+0x30);</p><p> DisplayOneChar(7,0,minite%10+0x30);</p><p><b> }</b></p><p> /**************液晶顯示子函數(shù)4 **************
108、***/</p><p> void displayfun4(void)</p><p><b> {</b></p><p> WriteCommandLCM(0x0c,1); //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p> DisplayListChar(0,0,str0);</
109、p><p> DisplayListChar(0,1,str1);</p><p> DisplayOneChar(3,0,hour/10+0x30);</p><p> DisplayOneChar(4,0,hour%10+0x30); </p><p> DisplayOneChar(6,0,minite/10+0x30);<
110、/p><p> DisplayOneChar(7,0,minite%10+0x30);</p><p> DisplayOneChar(9,0,seconde/10+0x30);</p><p> DisplayOneChar(10,0,seconde%10+0x30);</p><p> DisplayOneChar(11,1,temp
111、1/10+0x30); </p><p> DisplayOneChar(12,1,temp1%10+0x30);</p><p> DisplayOneChar(14,1,temp2/10+0x30); </p><p> WriteCommandLCM(0x0f,1); //顯示屏打開(kāi),光標(biāo)顯示,閃爍,檢測(cè)忙信號(hào)</p&
112、gt;<p> DisplayOneChar(4,1,K/10+0x30); </p><p> DisplayOneChar(5,1,K%10+0x30);</p><p><b> }</b></p><p><b> 4.4馬達(dá)的控制</b></p><p>
113、 當(dāng)被測(cè)溫度低于系統(tǒng)設(shè)定溫度值時(shí),P3.7角的輸出信號(hào)為1,馬達(dá)不轉(zhuǎn)動(dòng)。當(dāng)被測(cè)溫度高于系統(tǒng)設(shè)定溫度值時(shí),P3.7角的輸出信號(hào)為0,馬達(dá)開(kāi)始轉(zhuǎn)動(dòng)。</p><p> 馬達(dá)的控制主程序如下:</p><p> if(ON_OFF==1) //若溫控標(biāo)志位1, 控制LAMP動(dòng)作</p><p><b> {</b></p
114、><p> if(temp1>=K+1){outflag=1;OUT=0;}</p><p> if(temp1<K)</p><p><b> { </b></p><p> delay_LCM(1000);</p><p> if(temp1<K){outflag=0;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)設(shè)計(jì)畢業(yè)論文
- 單片機(jī)課程設(shè)計(jì)---基于at89s52單片機(jī)的溫度控制系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---基于at89s52 單片機(jī)的溫度控制系統(tǒng)
- 基于AT89S52單片機(jī)的溫度控制系統(tǒng).pdf
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s52單片機(jī)溫度控制器的設(shè)計(jì)
- 基于at89s52單片機(jī)溫度采集設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)-基于at89s52單片機(jī)的花卉自動(dòng)澆灌控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于at89s52單片機(jī)可控倒計(jì)時(shí)控制系統(tǒng)的設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)外文翻譯--at89s52
- 基于at89s52單片機(jī)交通燈控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的兩相步進(jìn)電機(jī)控制系統(tǒng)
- 基于at89s52單片機(jī)的家用面包機(jī)控制系統(tǒng)
- 基于at89s52單片機(jī)的微波爐控制系統(tǒng)畢業(yè)論文
- 基于at89s52單片機(jī)溫度自動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于at89s52單片機(jī)溫度自動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于at89s52單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---基于at89s52單片機(jī)的遙控器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)定時(shí)鬧鐘的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論