單片機(jī)功能豆?jié){機(jī)設(shè)計(jì)-畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩62頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  本設(shè)計(jì)從現(xiàn)代化計(jì)算機(jī)控制技術(shù)入手,利用單片機(jī)的強(qiáng)大智能功能,通過(guò)完整的軟件與硬件的結(jié)合,模擬了一種先進(jìn)的豆?jié){制作的自動(dòng)控制系統(tǒng)。</p><p>  根據(jù)豆?jié){機(jī)的工作要求與單片機(jī)功能的特點(diǎn),本設(shè)計(jì)提出出一套適合實(shí)驗(yàn)室條件下的豆?jié){機(jī)控制模擬設(shè)備,主要通過(guò)單片機(jī)、溫度傳感器,驅(qū)動(dòng)與檢測(cè)電路組成。本次設(shè)計(jì)選擇

2、的電器設(shè)備有AT89S51單片機(jī)、DS18B20溫度傳感器,ULN2003驅(qū)動(dòng)器,繼電器等。設(shè)計(jì)硬件控制流程圖、控制電路圖,軟件中的主程序流程圖及完整的控制程序。工作過(guò)程:硬件電路主要以單片機(jī)為核心,根據(jù)檢測(cè)電路(溫度傳感器及其他檢查電路)送來(lái)的不同信號(hào)做出處理后,通過(guò)改變單片機(jī)輸出端口的狀態(tài),控制驅(qū)動(dòng)電路做出與之對(duì)應(yīng)的工作;整個(gè)工作過(guò)程的控制思想有軟件編程來(lái)實(shí)現(xiàn),控制程序的編寫是根據(jù)豆?jié){機(jī)在工作過(guò)程中可能遇到的情況,及對(duì)其處理的判斷直

3、到工作結(jié)束,程序執(zhí)行完畢,從而完成對(duì)整個(gè)工作過(guò)程的控制。通過(guò)系統(tǒng)模擬實(shí)驗(yàn)與下載調(diào)試表明:該系統(tǒng)設(shè)計(jì)合理,自動(dòng)化程度高,實(shí)驗(yàn)過(guò)程時(shí)間短,工作穩(wěn)定可靠,基本滿足了設(shè)計(jì)的相關(guān)要求。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī);溫度傳感器;驅(qū)動(dòng)芯片;按鍵控制;</p><p><b>  Abstract</b></p><p>  The design of

4、 modern computer control technology from the start, using the power of intelligent features microcontroller, through the complete combination of software and hardware to simulate an advanced automatic control system of m

5、ilk production.</p><p>  Soymilk's work according to requirements and functional characteristics of MCU, the design of a set of suitable laboratory conditions for Soymilk control analog devices, primaril

6、y through the microcontroller, temperature sensor, drive and detection circuit. The design choices of electrical equipment AT89S51 microcontroller, DS18B20 the temperature sensor, ULN2003 drivers, relays and so on. Desig

7、n hardware control flow, control circuit, the software in the main program flow chart and complete con</p><p>  Keywords: microcontroller; temperature sensor; driver chip; keys to control</p><p>

8、;<b>  目 錄</b></p><p><b>  摘 要1</b></p><p>  Abstract2</p><p><b>  1系統(tǒng)總體設(shè)計(jì)1</b></p><p><b>  1.1 引言1</b></p>&l

9、t;p>  1.2 豆?jié){機(jī)控制系統(tǒng)的總體介紹1</p><p>  1.3 豆?jié){機(jī)功能的設(shè)計(jì)2</p><p>  1.4 豆?jié){機(jī)控制電路的硬件選擇2</p><p>  1.5 豆?jié){機(jī)工作算法的構(gòu)思3</p><p>  2 硬件電路設(shè)計(jì)4</p><p>  2.1 控制電路硬件簡(jiǎn)述4</

10、p><p>  2.2 硬件電路設(shè)計(jì)4</p><p>  2.2.1 單片機(jī)的簡(jiǎn)介4</p><p>  2.2.2 AT89S51單片機(jī)5</p><p>  2.2.3 驅(qū)動(dòng)及檢測(cè)電路9</p><p>  2.2.4 溫度傳感器的控制電路15</p><p>  2.2.5 按鍵與

11、顯示指示電路24</p><p>  2.2.5 控制電路的電源電路25</p><p>  3系統(tǒng)軟件設(shè)計(jì)27</p><p>  3.1 溫度傳感器的讀寫控制程序27</p><p>  3.2 無(wú)水防干燒與按鍵的編程思路29</p><p>  3.3 煮豆、打漿及防溢出的編程及思路29</p&

12、gt;<p>  3.4 整體程序34</p><p>  4 系統(tǒng)模擬仿真36</p><p>  4.1功能測(cè)試36</p><p>  4.1.1 豆?jié){機(jī)防干燒與防溢出功能測(cè)試36</p><p>  4.1.2 豆?jié){機(jī)打漿功能的測(cè)試36</p><p><b>  5 設(shè)計(jì)總結(jié)

13、38</b></p><p>  5.1 本設(shè)計(jì)的優(yōu)點(diǎn)38</p><p>  5.2本設(shè)計(jì)可改進(jìn)的方面38</p><p><b>  致 謝39</b></p><p><b>  參考文獻(xiàn)40</b></p><p><b>  附錄4

14、1</b></p><p><b>  1系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  1.1 引言</b></p><p>  隨著人類的進(jìn)步與社會(huì)的發(fā)展,電子產(chǎn)品也在飛速的發(fā)展。在人類科學(xué)不斷的進(jìn)步中,我們的生活隨之發(fā)生改變,全自動(dòng)豆?jié){機(jī)也逐漸變?yōu)闊徜N家用電器。豆?jié){機(jī)之所以成為家喻戶曉的家用電器,其中有

15、很多原因推動(dòng)著豆?jié){機(jī)的發(fā)展,人們生活節(jié)奏的加快,對(duì)時(shí)間觀念的重視及奶粉、飲料事件的不斷出現(xiàn)等,使的人們對(duì)豆?jié){機(jī)更加偏愛。</p><p>  單片機(jī)作為整個(gè)控制系統(tǒng)的核心,其性能好壞對(duì)整個(gè)系統(tǒng)起著至關(guān)重要的作用。早期的單片機(jī)8031,89c51等,大多采用紫外線擦除或需要專用的燒錄器,在實(shí)驗(yàn)調(diào)試仿真時(shí)比較麻煩,且存儲(chǔ)容量低,做大型的控制程序時(shí),需要外接擴(kuò)展存儲(chǔ)器,造價(jià)和電路設(shè)計(jì)上都不劃算,因此不宜使用。當(dāng)前比較先

16、進(jìn)的ARM嵌入式芯片,存儲(chǔ)容量大,運(yùn)算速度快,智能度強(qiáng)大,外圍引腳豐富,穩(wěn)定性高,是比較合適的選擇[1]。但由于其價(jià)格昂貴,使豆?jié){機(jī)的成本大大增加,不適合大眾消費(fèi)。而當(dāng)前應(yīng)用比較廣泛的AT89s51單片機(jī)及其同類單片機(jī),有智能度高,外圍電路成熟,成本低且存儲(chǔ)容量可以滿足要求,使用比較方便。所以無(wú)論從價(jià)格,還是功能上考慮,都是比較合適的選擇。</p><p>  1.2 豆?jié){機(jī)控制系統(tǒng)的總體介紹</p>

17、<p>  本設(shè)計(jì)控制電路要求:首先,具有檢測(cè)豆?jié){機(jī)缸體內(nèi)是否有水,水量是否過(guò)少,以防加熱器干燒,遭到損壞,造成不必要的損失。其次,根據(jù)人們的放料及主觀意識(shí)選擇打漿方式。本系統(tǒng)共設(shè)置了三種工作方式:五谷漿,全豆豆?jié){及果蔬漿。在打漿工作中能根據(jù)溫度傳感器輸出信號(hào),能分別控制高溫煮豆,啟動(dòng)打漿,文火熬漿,防溢出和工作完畢自動(dòng)報(bào)警等功能。最后是電路板的設(shè)計(jì),選用雙層布線方式,既節(jié)省材料,又提高了集成度。設(shè)計(jì)產(chǎn)品制作過(guò)程:根據(jù)前期

18、設(shè)想對(duì)部分電路進(jìn)行模擬調(diào)試通過(guò)后,畫出原理圖,制作印制電路板文件,印制電路板,焊接元器件,調(diào)試電路板排查故障,通過(guò)后根據(jù)豆?jié){機(jī)功能要求編寫程序并調(diào)試及在電路板上模擬仿真。</p><p>  1.3 豆?jié){機(jī)功能的設(shè)計(jì)</p><p>  一般豆?jié){機(jī)可分為:純豆豆?jié){機(jī),五谷豆?jié){機(jī),多功能豆?jié){機(jī)和冷熱多功能豆?jié){機(jī)。本設(shè)計(jì)為多功能豆?jié){機(jī),其他豆?jié){機(jī)只是在此基礎(chǔ)上加減部分元件及改變部分模塊程序,這

19、里就不再敘述。</p><p>  多功能豆?jié){機(jī)可以制作純豆豆?jié){,五谷漿和果蔬漿。它們的制作是有人們根據(jù)原料的不同,選擇對(duì)應(yīng)的功能鍵,然后調(diào)用相應(yīng)的其工作程序。</p><p>  純豆豆?jié){的制作,根據(jù)大豆的成分,經(jīng)過(guò)8小時(shí)左右的清水浸泡,使其變得疏松,既有營(yíng)養(yǎng)價(jià)值,又方便研磨。在加熱器加熱到一定溫度時(shí),有溫度傳感器發(fā)出信號(hào),啟動(dòng)打漿,此時(shí)分別做打漿煮沸工作。經(jīng)過(guò)三遍后,開始文火熬漿及研磨

20、攪拌工作(兩遍),直到熬漿結(jié)束,報(bào)警提示,本次打漿即為五遍打漿法。</p><p>  五谷漿的制作,由于五谷原料雜亂,浸泡不方便,一般就直接打漿,考慮到原料的硬度不同,并使五谷充分混合,本次打漿采用六遍打漿法,其具體做法與上同。</p><p>  果蔬漿的制作,一般果樹比較軟,并要考慮其新鮮口感,所以無(wú)須多遍研磨及攪拌,本次打漿采用四遍打漿法。</p><p>

21、  1.4 豆?jié){機(jī)控制電路的硬件選擇</p><p>  在硬件選擇上為了有利于購(gòu)買和實(shí)驗(yàn)方便,根據(jù)當(dāng)前市場(chǎng)上各種處理器的性價(jià)比,本設(shè)計(jì)選擇AT89C51單片機(jī),溫度檢測(cè)采用DS18B20溫度傳感器,對(duì)交流電機(jī)的控制采用5V5腳繼電器,對(duì)加熱器的控制采用兩個(gè)5V8腳繼電器,因?yàn)槎節(jié){機(jī)的功能要求,加熱器具有“高溫煮沸,文火熬漿”,所以對(duì)其控制采用兩路電源。報(bào)警裝置采用普通蜂鳴器。對(duì)繼電器,蜂鳴器的驅(qū)動(dòng)采用ULN20

22、03,它即可滿足由單片機(jī)輸出端口直接控制驅(qū)動(dòng),同時(shí)可兼做無(wú)水防干燒與防溢出用。只是2003是高電平有效,這與單片機(jī)個(gè)管腳上電就輸出高電平有點(diǎn)沖突,但考慮到其價(jià)格低廉,控制簡(jiǎn)單,在這里仍然用它,只需在其前段加一電平轉(zhuǎn)換即可。各器件的具體用法將在下文一一說(shuō)明。</p><p>  1.5 豆?jié){機(jī)工作算法的構(gòu)思</p><p>  根據(jù)家用電器的特點(diǎn):控制電路簡(jiǎn)單,使用方便易學(xué)、易懂等。編程思路

23、如下圖1—1。</p><p>  圖1-1豆?jié){機(jī)工作的算法</p><p>  本設(shè)計(jì)從無(wú)水防干燒開始,缸體內(nèi)水量達(dá)到,檢測(cè)電路送出一個(gè)高電平,無(wú)水則報(bào)警。編程容易實(shí)現(xiàn),只是檢測(cè)信號(hào)電路不好設(shè)計(jì)。整個(gè)燒水煮豆過(guò)程是不確定的,當(dāng)溫度達(dá)到以后定時(shí)器開始計(jì)時(shí),以后的工作有時(shí)間的限制。</p><p>  對(duì)溫度傳感器的啟用與控制需要嚴(yán)格的時(shí)間限制,這部分程序的編寫是復(fù)雜

24、而繁瑣的。在進(jìn)行煮豆與打漿的切換,高溫與文火的切換都有時(shí)間的控制,需要用到定時(shí)器中斷中斷;在煮豆防益,熬漿防益上不僅要用到外部中斷,還要用到記時(shí)延時(shí)。這些部分是一個(gè)連貫的過(guò)程,又有著不確定時(shí)間。因此,實(shí)現(xiàn)起來(lái)不太容易,這正是整個(gè)程序核心。整個(gè)程序調(diào)試過(guò)程中,這部分出現(xiàn)的問(wèn)題最多。對(duì)問(wèn)題的排除是,整體改過(guò)后,在逐步調(diào)試,一點(diǎn)一點(diǎn)添加功能模塊,最終得到實(shí)現(xiàn)。軟件編程語(yǔ)言采用C語(yǔ)言。</p><p><b>

25、  2 硬件電路設(shè)計(jì)</b></p><p>  2.1 控制電路硬件簡(jiǎn)述</p><p>  一個(gè)完整的控制系統(tǒng),單純依靠一塊單片機(jī)是遠(yuǎn)遠(yuǎn)不夠的。它必須與外圍電路元件相互搭配,共同完成任務(wù)[2]。本設(shè)計(jì)用到的外圍電路有:溫度檢測(cè)電路,驅(qū)動(dòng)電路,LED顯示電路,按鍵接口電路等。要是個(gè)部分電路能在一起穩(wěn)定的工作,就要讓他們銜接的很匹配,如各部分電路對(duì)電壓、電流的要求等都要合理的

26、設(shè)計(jì)。下面是對(duì)各部分硬件電路的介紹。如圖2-1所示。</p><p><b>  圖2-1硬件流程圖</b></p><p>  2.2 硬件電路設(shè)計(jì)</p><p>  以下是對(duì)本設(shè)計(jì)中的電路設(shè)計(jì)部分、硬件選取及元器件的用法等的介紹。</p><p>  2.2.1 單片機(jī)的簡(jiǎn)介</p><p>

27、;  單片微型計(jì)算機(jī)(Single Chip Microcomputer)簡(jiǎn)稱單片機(jī),是指集成在一塊芯片上的計(jì)算機(jī),它具有結(jié)構(gòu)簡(jiǎn)單、控制功能強(qiáng)、可靠性高、體積小、價(jià)格低、等優(yōu)點(diǎn)。單片機(jī)技術(shù)作為計(jì)算機(jī)技術(shù)的一個(gè)重要分支,廣泛地應(yīng)用于工業(yè)控制、智能化儀器儀表、家用電器、電子玩具等各領(lǐng)域。</p><p>  盡管單片機(jī)種類很多,但無(wú)論是從世界范圍還是從全國(guó)范圍來(lái)看,使用最為廣泛的應(yīng)屬M(fèi)CS-51系列單片機(jī)。其生產(chǎn)廠家

28、有:Intel公司、Atmel公司、Philips公司等。本設(shè)計(jì)采用Atmel公司的AT89S51,其它廠家單片機(jī)這里不再多說(shuō),以下是對(duì)AT89S51的介紹。</p><p>  2.2.2 AT89S51單片機(jī) </p><p>  Atmel公司生產(chǎn)的AT89S51單片機(jī)是一種低功耗/低電壓、高性能的8位單片機(jī),內(nèi)部除CPU外,還包括128B的內(nèi)部用戶數(shù)據(jù)存儲(chǔ)器RAM,4KB的內(nèi)部用戶

29、程序存儲(chǔ)器,4個(gè)8位并行可編程I/0口,2個(gè)16位計(jì)數(shù)/定時(shí)器,5個(gè)中斷源,2個(gè)優(yōu)先級(jí)別,1個(gè)可編程的串行通信口。以下是對(duì)各部分的具體介紹:</p><p><b>  內(nèi)部介紹:</b></p><p> ?。?)中央處理器又稱CPU,是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)

30、算和控制輸入輸出功能等操作。</p><p> ?。?)數(shù)據(jù)存儲(chǔ)器又稱RAM,S51(AT89S51)內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問(wèn),而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型數(shù)據(jù)。并具有64KB外部數(shù)據(jù)存儲(chǔ)器尋址空間。</p><

31、p> ?。?)程序存儲(chǔ)器又稱ROM,S51共有4KB的掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。并具有64KB外部程序存儲(chǔ)器尋址空間。</p><p> ?。?)定時(shí)/計(jì)數(shù)器,S51有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,稱為定時(shí)器0(T0)和定時(shí)器1(T1)。T0有專用寄存器TH0和TL0組成,T10有專用寄存器TH1和TL1組成。并且可編程定時(shí)/計(jì)數(shù)器的工作方式、定時(shí)時(shí)間、計(jì)數(shù)值、啟動(dòng)、中斷請(qǐng)求等都可以由

32、程序設(shè)定。</p><p> ?。?)中斷系統(tǒng),S51的中斷功能較強(qiáng),可滿足控制應(yīng)用的需要。共有5個(gè)中斷源,即兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,并具有兩個(gè)優(yōu)先級(jí)別的選擇。</p><p>  (6)時(shí)鐘電路,S51內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,系統(tǒng)允許的晶振頻率一般位6MHz和12MHz,在應(yīng)用精度要求較高的場(chǎng)合一般選用11.0

33、592MHz,可以使定時(shí)器/計(jì)數(shù)器更精確。</p><p>  以上是從S51單片機(jī)的內(nèi)部介紹,下面再?gòu)耐獠靠雌浣Y(jié)構(gòu)。如圖2-2所示。</p><p>  圖2-2 S51的外部結(jié)構(gòu)</p><p><b>  外部介紹:</b></p><p>  有外部結(jié)構(gòu)圖我們可以看到,S51單片機(jī)有40個(gè)管腳。正電源和地線兩根,

34、外置石英振蕩器的時(shí)鐘線兩根,一個(gè)復(fù)位端RESET,/EA,ALE,/PSEN三根線,P0-P3共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:</p><p>  (1)主電源引腳Vcc和Vss </p><p>  Vcc(40腳):主電源接+5V </p><p>  Vss(20腳):接地 </p><p>

35、  (2)時(shí)鐘電路引腳XTAL1和XTAL2:接外部晶體振蕩器的引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),兩引腳用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘脈沖信號(hào)。這兩個(gè)引腳連接的電路成為時(shí)鐘電路,用來(lái)產(chǎn)生單片機(jī)正常工作時(shí)所需要的時(shí)鐘脈沖信號(hào)。</p><p>  (3)控制信號(hào)RST/Vpd、ALE/(/PROG) 、/ PSEN和 (/EA)/Vpp </p><p>  RST

36、/Vpd(9腳):復(fù)位端。高電平有效,保持在2個(gè)機(jī)器周期寬度以上,使單片機(jī)復(fù)位,用于完成單片機(jī)的復(fù)位初始化操作。在進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)時(shí),這個(gè)引腳一定要連接相應(yīng)的電路,即復(fù)位電路。該引腳有復(fù)用功能,Vpd為備用電源輸入端,防止主電源掉電。</p><p>  ALE/(/PROG)(30腳):地址鎖存信號(hào)端。訪問(wèn)片外存貯器時(shí),ALE作低八位地址的鎖存控制信號(hào)。平時(shí)不訪問(wèn)片外存貯器時(shí),該端以六分之一的時(shí)鐘振蕩頻率

37、固定輸出脈沖。ALE端負(fù)載驅(qū)動(dòng)能力為8個(gè)LSTTL門。該引腳有復(fù)用功能, 為片內(nèi)程序存貯器編程(固化)的編程脈沖輸入。 </p><p>  /PSEN(29腳):片外程序存貯器讀選通信號(hào)端。負(fù)載能力為8LSTTL門。 </p><p>  (/EA)/Vpp(31腳):/EA端接高電平時(shí),CPU取指令從片內(nèi)程序存貯器自動(dòng)順延至片外程序存貯器。 /EA端接低電平時(shí),CPU僅從片外程序存貯器

38、取指令。該引腳有復(fù)用功能,Vpp為片內(nèi)程序存貯器編程時(shí)的編程電壓。</p><p>  (4)輸入/輸出引腳P0、P1、P2和P3口 </p><p>  P0.0~P0.7(39~32腳):訪問(wèn)片外存貯器時(shí)作為低八位地址線和八位數(shù)據(jù)線(復(fù)用)。負(fù)載能力為8個(gè)LSTTL門。</p><p>  P1.0~P1.7(1~8腳): 8位準(zhǔn)雙向I/O口。負(fù)載能力為3個(gè)LS

39、TTL門。 </p><p>  P2.0~P2.7(21~28腳):訪問(wèn)片外存貯器時(shí)作為高八位地址線。</p><p>  P3.0~P3.7(10~17腳):8位準(zhǔn)雙向I/O口。負(fù)載能力為3個(gè)LSTTL門。另外還有專門的第二功能。 </p><p><b>  P3口的第二功能是</b></p><p>  P3.0

40、(10腳): RXD(串行口輸入端)</p><p>  P3.1(11腳): TXD(串行口輸出端) </p><p>  P3.2(12腳): /INT0(外部中斷0輸入端) </p><p>  P3.3(13腳): /INT1(外部中斷1輸入端) </p><p>  P3.4(14腳): T0(定時(shí)器/計(jì)數(shù)器0外部輸入端) <

41、/p><p>  P3.5(15腳): T1(定時(shí)器/計(jì)數(shù)器1外部輸入端) </p><p>  P3.6(16腳): /WR(片外數(shù)據(jù)存貯器寫選通信號(hào)輸出端) </p><p>  P3.7(17腳): /RD(片外數(shù)據(jù)存貯器讀選通信號(hào)輸出端)[3]</p><p>  下圖是單片機(jī)工作的最小模塊,如圖2-3所示。</p><

42、;p>  圖2-3單片機(jī)最小工作模塊</p><p>  2.2.3 驅(qū)動(dòng)及檢測(cè)電路</p><p>  本設(shè)計(jì)選用的驅(qū)動(dòng)芯片是ULN2003,它具有價(jià)格便宜、原理簡(jiǎn)單易使用、工作穩(wěn)定性高,并且可兼做豆?jié){機(jī)的無(wú)水防干燒和防溢出檢測(cè)器用。以下將對(duì)其進(jìn)行詳細(xì)介紹。ULN2003的外部結(jié)構(gòu)如圖2-4所示。</p><p>  圖2-4 ULN2003的外部結(jié)構(gòu)<

43、;/p><p>  從ULN2003外部結(jié)構(gòu)圖上,可以很輕松的看出各管腳的功能,這足以說(shuō)明它的使用相當(dāng)簡(jiǎn)單。它有一個(gè)接電源引腳,一個(gè)接地引腳,六路輸入對(duì)應(yīng)著六路輸出。</p><p>  ULN2003 是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN 達(dá)林頓管組成。</p><p><b>  其特點(diǎn)是:</b></p><p>

44、; ?、賃LN2003 的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù)。</p><p> ?、赨LN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。</p><p> ?、踀LN2003 采用DIP—16 或

45、SOP—16 塑料封裝。</p><p>  由于其接口可以與多種元件直接連用,且封裝常規(guī)已購(gòu)買、驅(qū)動(dòng)電流大使用方便等特點(diǎn)。因此常被用在數(shù)字電路及大電流高電壓的燈、繼電器、打印機(jī)錘和其它類似負(fù)載電路的接口處。也是本設(shè)計(jì)比較理想的驅(qū)動(dòng)芯片。</p><p>  圖2-5 內(nèi)部構(gòu)造圖</p><p>  圖2-6 工作原理圖</p><p>  

46、由其內(nèi)部構(gòu)造圖和原理圖可知,該芯片是高電平有效、集電極輸出的開關(guān)元件。這里畫出原理圖供大家參考一下,其原理不再多說(shuō),只要懂得它的用法即可。下圖是ULN2003在電路中的用法,如圖2-7所示。</p><p><b>  圖2-7 驅(qū)動(dòng)電路</b></p><p>  電路圖中的PA是豆?jié){機(jī)的兩路檢測(cè)電路:無(wú)水防干燒與防溢出。</p><p> 

47、 實(shí)現(xiàn)方法是:利用水的導(dǎo)電特性,將5V電壓放入缸體中及PA的1端放入缸體,再將P A的2端放入缸體,如果有水的話它們即通過(guò)水連接在一起,因?yàn)樗碾娮柙?5K歐姆左右,不會(huì)引起電流過(guò)大,燒壞元器件。因而可以利用檢測(cè)ULN2003的2腳是否有高電平來(lái)判斷缸體內(nèi)是否有水。</p><p>  其具體方法是:將PA的2腳接在ULN2003的2腳,由于ULN2003的輸入端是高電平有效,當(dāng)某一輸入端有效時(shí),對(duì)應(yīng)輸出端變?yōu)榻?/p>

48、地,這樣再將ULN2003輸出端的2腳接在單片機(jī)的P27腳上,通過(guò)單片機(jī)檢測(cè)其指定端口電平的高低,即可作出有水無(wú)水的判斷。同理,將PA的3腳放在接近缸口的地方,利用水的導(dǎo)電性與ULN2003的輸出端,單片機(jī)即可檢測(cè)有無(wú)溢出。值得注意的是,豆?jié){機(jī)什么時(shí)候溢出,是一個(gè)不確定的因素。根據(jù)單片機(jī)針對(duì)突發(fā)事件處理的功能,這里要接指定端口,即外部中斷端口P32或P33。</p><p>  因?yàn)閱纹瑱C(jī)不能直接對(duì)交流電進(jìn)行控制

49、,但可以控制繼電器的斷開與閉合,從而實(shí)現(xiàn)對(duì)交流電的控制。</p><p>  ULN2003的12腳、13腳,即輸出端的4腳、5腳為加熱器繼電器,即8腳繼電器的驅(qū)動(dòng)控制端,因?yàn)槎節(jié){機(jī)在工作的時(shí)候分為:高溫煮豆與文火熬漿,所以這里選用兩個(gè)繼電器來(lái)控制。在高溫煮豆時(shí)有繼電器K2工作,為加熱器接通220V電源。在文火熬漿時(shí)讓繼電器K3工作,為加熱器接通110V電源。為了安全期間,以防驅(qū)動(dòng)芯片損壞,造成220V與110V

50、同時(shí)導(dǎo)通。這里采用具有互鎖功能的繼電器,確保它們不會(huì)同時(shí)得電而損壞元器件的器件[4]。</p><p>  接著是研磨、攪拌電機(jī)的繼電器驅(qū)動(dòng)控制端ULN2003的11腳,即輸出端的6腳。這里沒有必要為豆?jié){機(jī)的電機(jī)采用調(diào)速控制,因?yàn)椴捎谜{(diào)速控制與不用調(diào)速控制,對(duì)豆?jié){的味道幾乎都沒有區(qū)別。但采用調(diào)速控制雖然可以減少電能損耗,卻要使豆?jié){機(jī)的成本增加。以企業(yè)對(duì)現(xiàn)在市場(chǎng)上豆?jié){機(jī)的定位及大眾對(duì)豆?jié){機(jī)的消費(fèi)情況來(lái)看,不易采用調(diào)

51、速控制。在所有繼電器下面都并聯(lián)了一個(gè)續(xù)流二極管,用來(lái)對(duì)繼電器斷電后產(chǎn)生的電流進(jìn)行處理。</p><p>  最下面ULN2003的第10腳,即輸出端的7腳,接的是蜂鳴器的驅(qū)動(dòng)控制端,用于報(bào)警作用。</p><p>  ULN2003的所有驅(qū)動(dòng)控制端,全部接在單片機(jī)上,由單片機(jī)根據(jù)情況來(lái)做出具體控制。對(duì)于ULN2003的部分輸入端口,驅(qū)動(dòng)電流要求交大一點(diǎn),可以在其對(duì)應(yīng)段加一上拉電阻皆即可。&

52、lt;/p><p>  由于單片機(jī)上電時(shí)瞬間各I/O管腳默認(rèn)為高電平,而ULN2003的輸入端是高電平有效,這樣在上電的一瞬間將會(huì)造成加熱器繼電器、電機(jī)繼電器誤動(dòng)作。而加熱器繼電器電路才擁有互鎖功能,上電瞬間系統(tǒng)不會(huì)有什么表現(xiàn)。只需要在ULN2003驅(qū)動(dòng)電機(jī)的控制端加一電平轉(zhuǎn)換即可,電路原理如圖2-8所示。</p><p>  圖2-8 電平轉(zhuǎn)換電路</p><p> 

53、 電路原理是:在ULN2003的電機(jī)控制端加一PNP三極管,使其工作在飽和與截止?fàn)顟B(tài),因三極管是PNP型,在其控制端基極為低電平有效,這樣就可以完成電平轉(zhuǎn)換了。</p><p>  2.2.4 溫度傳感器的控制電路</p><p><b>  溫度傳感器的選擇 </b></p><p>  溫度傳感器有很多種,如熱電偶溫度傳感器、鉑電阻溫度傳感

54、器、紅外溫度傳感器、數(shù)字溫度傳感器等。為了便于實(shí)驗(yàn),并且自己有實(shí)物,本設(shè)計(jì)采用數(shù)字溫度傳感器DS18B20。</p><p>  DS18B20的簡(jiǎn)介</p><p>  DS18B20是美國(guó)DALLAS半導(dǎo)體器件公司推出的單總線數(shù)字化智能集成溫度傳感器。單總線(1-Wire)是DALLAS公司的一項(xiàng)專有技術(shù),它采用單根信號(hào)線,既傳輸時(shí)鐘又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,具有節(jié)省I/O口線

55、資源、結(jié)構(gòu)簡(jiǎn)單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。[5]</p><p>  DS18B20 的特點(diǎn)及內(nèi)部構(gòu)造</p><p><b>  特點(diǎn)如下:</b></p><p> ?、俨捎锚?dú)特的單總線接口方式,即只有一根信號(hào)線與控制器相連,實(shí)現(xiàn)數(shù)據(jù)的雙向通信,不需要外部元件;</p><p> ?、跍y(cè)量結(jié)果直接輸出數(shù)

56、字溫度信號(hào),以單總線串行傳送給控制器,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力;</p><p> ?、壑С侄帱c(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三根線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)量;</p><p>  ④適應(yīng)電壓范圍寬3.0-5.5V,不需要備份電源、可用數(shù)據(jù)線供電,溫度測(cè)量范圍為-55℃~125℃,-10℃~85℃時(shí)測(cè)量精度為±0.5℃;</p>&l

57、t;p> ?、萃ㄟ^(guò)編程可實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式,對(duì)應(yīng)的可分辨溫度分別為0.5℃,0.25℃,0.125℃,0.0625℃,實(shí)現(xiàn)高精度測(cè)溫;</p><p> ?、挢?fù)壓特性。電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。</p><p>  封裝圖及內(nèi)部構(gòu)造,如下圖所示。</p><p>  圖2-10 DS18B20的封裝</p>

58、<p><b>  引腳功能如下:</b></p><p>  NC:空引腳,懸空不使用;</p><p>  VDD:可選電源腳,電源電壓范圍3~5.5V。工作于寄生電源時(shí),此引腳應(yīng)接地;</p><p>  I/O:數(shù)據(jù)輸入/輸出腳,漏極開路,常態(tài)下高電平。</p><p>  DS18B20采用3腳TO

59、-92封裝或8腳SOIC及CSP封裝方式。圖2-8所示為DS18B20的內(nèi)部結(jié)構(gòu)框圖,它主要包括寄生電源、溫度傳感器、64位光刻ROM及單總線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM)、存儲(chǔ)與控制邏輯、用于存儲(chǔ)用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器、結(jié)構(gòu)寄存器、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等八部分。</p><p>  64位ROM的結(jié)構(gòu)如圖2-11所示,開始8位是產(chǎn)品類型的編號(hào);接著是每個(gè)器件唯

60、一的序號(hào),共48位;最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可采用單線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器TH、TL,可以通過(guò)編程寫入用戶報(bào)警上下線數(shù)據(jù)。</p><p>  圖2-11 64位ROM示意圖</p><p>  DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPROM。</p><p>

61、  高速暫存RAM的結(jié)構(gòu)位9字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2-12所示。前兩個(gè)字節(jié)包括測(cè)得溫度的信息。3、4字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5字節(jié)為配置寄存器,其內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換頻率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如圖2-13,其低5位一直為1;TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在檢測(cè)模式,在DS18B20出廠時(shí),該位被設(shè)置為0,用戶

62、不要去改動(dòng);R1和R2決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辨率,其定義方法見表a。</p><p>  表a DS18B20分辨率的定義</p><p>  由表a可見,DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。</p><p>  高速暫存RAM的第6、7、8字節(jié)保留未用

63、,表現(xiàn)為全1.第9字節(jié)是前面8字節(jié)的CRC碼,可以用來(lái)檢驗(yàn)數(shù)據(jù)的正確性。</p><p>  當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在暫存RAM的第1、2字節(jié)中。</p><p>  單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù)。的數(shù)據(jù)時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><

64、p><b>  表b 溫度值格式</b></p><p>  表b中,S表示符號(hào)位。當(dāng)S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,在計(jì)算十進(jìn)制值。表c是部分溫度值對(duì)應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。</p><p>  表c DS18B20溫度與表示值對(duì)應(yīng)表</p><p&

65、gt;  DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容對(duì)照,若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。[6]因此,可以用多個(gè)DS18B20同時(shí)測(cè)得溫度并進(jìn)行報(bào)警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并與存入DS18B20的CRC值作比

66、較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p>  關(guān)于DS18B20的工作原理這里就不再多說(shuō),有感興趣的可以查閱相關(guān)手冊(cè)。</p><p>  DS18B20的編程指令</p><p>  DS18B20的指令有:讀ROM(33H),匹配ROM(55H),跳過(guò)ROM(CCH),搜索ROM(F0H),報(bào)警搜索(ECH),穩(wěn)定轉(zhuǎn)換(44H),度暫存器(BEH

67、),寫暫存器(4EH),復(fù)制暫存器(48H),重調(diào)E2PROM(B8H),讀供電方式(B4H)。關(guān)于這些指令,這里也不再一一介紹,只把本設(shè)計(jì)用到的用法說(shuō)一下。</p><p>  CCH-跳過(guò)ROM指令。忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令,適用于一個(gè)從機(jī)工作。</p><p>  44H-溫度轉(zhuǎn)換指令。啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ms(9位

68、93.75ms)。結(jié)果存入內(nèi)部9字節(jié)的RAM中。</p><p>  BEH-讀暫存器指令。讀內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)。</p><p>  如圖2-14所示,是DS18B20在電路中的接發(fā),本設(shè)計(jì)采用的是單獨(dú)電源供電方式,下面將介紹其工作時(shí)序,有工作時(shí)序圖可以很清楚的知道該這樣控制DS18B20。</p><p>  圖2-14 DS18B20的工作電路<

69、;/p><p><b>  工作時(shí)序</b></p><p>  初始化時(shí)序,當(dāng)主機(jī)將單總線P30從邏輯高拉到邏輯低時(shí),即啟動(dòng)一個(gè)寫時(shí)隙,所有的寫時(shí)隙必須在60~120us完成,且在每個(gè)循環(huán)之間至少需要1us的恢復(fù)時(shí)間。寫0和寫1時(shí)隙如圖所示。在寫0時(shí)隙期間,微控制器在整個(gè)時(shí)隙中將總線拉低;而寫1時(shí)隙期間,微控制器將總線拉低,然后在時(shí)隙起始后15us之釋放總線。時(shí)序圖如圖

70、2-15所示。</p><p>  圖2-15 初始化時(shí)序圖</p><p><b>  具體步驟如下:</b></p><p> ?、傧葘?shù)據(jù)線置高電平1。</p><p> ?、谘訒r(shí)(時(shí)間應(yīng)盡量短些)。</p><p> ?、蹟?shù)據(jù)線拉到低電平0。</p><p> ?、?/p>

71、延時(shí)750 μs(該范圍可以在480~960μs)。</p><p>  ⑤數(shù)據(jù)線拉置高電平1.</p><p> ?、扪訒r(shí)等待。如果初始化成功則在15~60ms內(nèi)產(chǎn)生一個(gè)由DS18B20返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。但是應(yīng)注意,不能無(wú)限地等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)判斷。若CPU讀到數(shù)據(jù)線上的低電平0后,還要進(jìn)行延時(shí),其延時(shí)的時(shí)間從發(fā)出高電平算起(第5)步的時(shí)

72、間算起)最少要480μs。</p><p>  ⑦將數(shù)據(jù)線再次拉置高電平1后結(jié)束。</p><p><b>  寫數(shù)據(jù)時(shí)序</b></p><p>  當(dāng)主機(jī)將單總線P30從邏輯高拉到邏輯低時(shí),即啟動(dòng)一個(gè)寫時(shí)隙,所有的寫時(shí)隙必須在60~120us完成,且在每個(gè)循環(huán)之間至少需要1us的恢復(fù)時(shí)間。寫0和寫1時(shí)隙如圖所示。在寫0時(shí)隙期間,微控制器在整

73、個(gè)時(shí)隙中將總線拉低;而寫1時(shí)隙期間,微控制器將總線拉低,然后在時(shí)隙起始后15us之釋放總線。時(shí)序圖見圖2-16所示。</p><p>  圖2-16 寫數(shù)據(jù)時(shí)序圖</p><p><b>  具體步驟如下:</b></p><p>  ①數(shù)據(jù)線先置低電平0。</p><p> ?、谘訒r(shí)確定時(shí)間為15μs。按從低位到高位的

74、順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。</p><p>  ③延時(shí)時(shí)間為45μs。</p><p>  ④將數(shù)據(jù)線拉到高電平1。</p><p> ?、葜貜?fù)①~⑤步驟,直到發(fā)送完整個(gè)字節(jié)。</p><p> ?、拮詈髮?shù)據(jù)線拉高到1。</p><p><b>  讀數(shù)據(jù)時(shí)序</b></p>

75、<p>  DS18B20器件僅在主機(jī)發(fā)出讀時(shí)隙時(shí),才向主機(jī)傳輸數(shù)據(jù)。所以在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便DS18B20能夠傳輸數(shù)據(jù)。所有的讀時(shí)隙至少需要60us,且在兩次獨(dú)立的讀時(shí)隙之間,至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至少拉低總線1us。在主機(jī)發(fā)起讀時(shí)隙之后,DS18B20器件才開始在總線上發(fā)送0或1,若DS18B20發(fā)送1,則保持總線為高電平。若發(fā)送為0,則拉低總線當(dāng)發(fā)送0時(shí),DS18

76、B20在該時(shí)隙結(jié)束后,釋放總線,由上</p><p>  拉電阻將總線拉回至高電平狀態(tài)。DS18B20發(fā)出的數(shù)據(jù),在起始時(shí)隙之后保持有效時(shí)間為15us。因而主機(jī)在讀時(shí)隙期間,必須釋放總線。并且在時(shí)隙起始后的15us之內(nèi)采樣總線的狀態(tài)。時(shí)序圖見圖2-17所示。</p><p>  圖2-17 讀數(shù)據(jù)時(shí)序圖</p><p><b>  具體步驟如下:</

77、b></p><p>  ①將數(shù)據(jù)線拉高到1。</p><p><b>  ②延時(shí)2μs。</b></p><p>  ③將數(shù)據(jù)線拉低到0。</p><p><b> ?、苎訒r(shí)6μs。</b></p><p> ?、輰?shù)據(jù)線拉高到1。</p><p&

78、gt;<b> ?、扪訒r(shí)4μs。</b></p><p> ?、咦x數(shù)據(jù)線的狀態(tài)得到一個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。</p><p><b> ?、嘌訒r(shí)6μs。</b></p><p> ?、嶂貜?fù)①~⑦步驟,直到讀取完一個(gè)數(shù)據(jù)。[7]</p><p>  2.2.5 按鍵與顯示指示電路 </p>

79、;<p>  1.豆?jié){機(jī)的按鍵電路</p><p>  豆?jié){機(jī)本身沒有太多功能鍵,在此對(duì)按鍵的設(shè)計(jì)采用獨(dú)立式按鍵,為節(jié)省元件,并提高集成度,對(duì)按鍵的消抖設(shè)計(jì)采用編程的方法。一下是按鍵部分電路圖。</p><p><b>  如圖2-18所示。</b></p><p>  圖2-18 豆?jié){機(jī)的按鍵電路</p><

80、p>  2.豆?jié){機(jī)顯示指示電路</p><p>  現(xiàn)在市場(chǎng)上豆?jié){機(jī)的顯示部分,一般都是按下某功能鍵,對(duì)應(yīng)的功能指示燈亮,來(lái)表示當(dāng)前的工作狀態(tài)。而一般用戶對(duì)豆?jié){機(jī)的顯示部分也沒過(guò)多要求,在此本設(shè)計(jì)顯示部分也采用LED指示燈。電路原理如圖2-19所示。</p><p>  圖2-19 顯示指示電路</p><p>  關(guān)于按鍵電路與顯示電路的原理,這里就不再敘述

81、。</p><p>  2.2.5 控制電路的電源電路 </p><p>  本系統(tǒng)所有芯片都需要+5V的工作電壓,雖然用干電池足能提供的電壓為1.5V的倍數(shù)的電壓,并且隨著使用時(shí)間的延長(zhǎng),其電壓會(huì)逐漸下降,想要得到穩(wěn)定的+5V工作電壓,可用給豆?jié){機(jī)供電的變壓器或開關(guān)電源上直接引出,只需要一穩(wěn)壓芯片L7805 即可。封裝模型及原理圖如下圖所示,關(guān)于其原理這里不再敘述。</p>

82、<p>  圖2-20 穩(wěn)壓芯片L7805</p><p>  圖2-21 穩(wěn)壓電路</p><p>  整體原理圖及元件明細(xì)表見附錄Ⅱ。</p><p><b>  3系統(tǒng)軟件設(shè)計(jì)</b></p><p>  在完成了硬件的設(shè)計(jì)之后,需要進(jìn)行相應(yīng)的軟件設(shè)計(jì),對(duì)豆?jié){機(jī)的控制思想,是直接通過(guò)軟件編程來(lái)實(shí)現(xiàn)的。因

83、此,軟件部分是整個(gè)設(shè)計(jì)過(guò)程中最重要的部分之一,直接關(guān)系到豆?jié){機(jī)在工作中的穩(wěn)定性。本章先對(duì)程序運(yùn)行的重要環(huán)節(jié)—DS18B20溫度傳感器的讀寫控制進(jìn)行了說(shuō)明,再針對(duì)各個(gè)功能模塊設(shè)計(jì)了相關(guān)軟件,各模塊間相互獨(dú)立,可用于測(cè)試各個(gè)部件的運(yùn)行狀況。最后合成一個(gè)具有完整性能和多判斷的豆?jié){控制程序。</p><p>  3.1 溫度傳感器的讀寫控制程序</p><p>  DS18B20采用的是單總線傳輸

84、數(shù)據(jù),硬件電路十分簡(jiǎn)單,但軟件編程卻相當(dāng)麻煩。必須嚴(yán)格按照其時(shí)序圖編寫工作程序。</p><p>  DS18B20 的數(shù)據(jù)傳送端接在S51的P3.0端口上,流程圖及編寫程序如下:</p><p>  圖3-1 溫度轉(zhuǎn)換流程圖</p><p>  void intt(void) //18B20初始化子程序</p><

85、;p><b>  {</b></p><p><b>  uint i;</b></p><p>  DS=0;//數(shù)據(jù)線拉倒低電平</p><p>  i=103; //延時(shí)480us—960us</p><p>  while(i>0)i--;</

86、p><p>  DS=1;//將數(shù)據(jù)線拉到高電平</p><p>  i=4; //延時(shí)等待</p><p>  while(i>0)i--;</p><p><b>  }</b></p><p>  void tmpchange(void)

87、 //啟動(dòng)DS18B20開始轉(zhuǎn)換溫度子程序 </p><p><b>  {</b></p><p>  intt(); </p><p><b>  delay(1);</b></p><p>  tmpwritebyte(0xcc); //跳過(guò)64位ROM指

88、令</p><p>  tmpwritebyte(0x44); //啟動(dòng)18B20檢測(cè)溫度指令</p><p><b>  }</b></p><p>  uint tmp() //向單片機(jī)送去溫度數(shù)據(jù)子程序 </p><p><b>  {

89、 </b></p><p><b>  float tt;</b></p><p>  uchar a,b;</p><p>  intt(); //調(diào)用初始化</p><p>  delay(1);//延時(shí)1ms</p><p>  tmpwriteb

90、yte(0xcc); //發(fā)送跳過(guò)64位ROM指令</p><p>  tmpwritebyte(0xbe); //讀18B20的數(shù)據(jù)</p><p>  a=tmpread(); // 讀低8位溫度數(shù)據(jù)</p><p>  b=tmpread(); // 讀高8位溫度數(shù)據(jù)</p><p>&

91、lt;b>  temp=b;</b></p><p>  temp<<=8; //合并兩字節(jié)數(shù)據(jù)</p><p>  temp=temp|a;</p><p>  tt=temp*0.0625; //溫度數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制</p><p>  temp=tt*1

92、0+0.5; //減小誤差</p><p>  return temp; </p><p><b>  }</b></p><p>  3.2 無(wú)水防干燒與按鍵的編程思路</p><p>  無(wú)水防干燒是利用水的導(dǎo)電特性,將兩根導(dǎo)線分別接在5V電源與ULN2003輸入端的2腳上,其2腳對(duì)

93、應(yīng)輸出端接在單片機(jī)的P27上。兩根導(dǎo)線分別放在缸內(nèi)兩個(gè)不同的地方。如果剛內(nèi)有水,兩根導(dǎo)線便通過(guò)水連在一起。水的電阻在15K歐姆左右,通上5V電源不會(huì)產(chǎn)生多大電流,但足夠給ULN2003的輸入端提供一高電平,使其導(dǎo)通。這樣它的對(duì)應(yīng)輸出端,即單片機(jī)的P27被拉為低電平。在編程時(shí),只要對(duì)P27的狀態(tài)進(jìn)行檢測(cè),便知道缸內(nèi)是否有水。</p><p>  按鍵程序的編寫同樣也是靠單片機(jī)對(duì)其對(duì)應(yīng)端口進(jìn)行檢測(cè),通過(guò)判斷其管腳電平

94、的高低來(lái)確定是否有鍵按下,對(duì)應(yīng)什么處理程序,然后有單片機(jī)進(jìn)行處理。無(wú)水防干燒與按鍵程序過(guò)于簡(jiǎn)單這里不再舉出,可在附表中查詢。</p><p>  3.3 煮豆、打漿及防溢出的編程及思路</p><p>  程序的編寫主要是根據(jù)豆?jié){機(jī)的工作流程而定。從豆?jié){機(jī)煮豆開始,溫度傳感器就在不停的檢測(cè)水的溫度。當(dāng)水溫達(dá)到設(shè)定值時(shí),開始第一次打漿,并啟動(dòng)定時(shí)器0,為打漿計(jì)時(shí)。一般第一次打漿是幾秒鐘,主要

95、是使缸體內(nèi)的水能全面加熱。定時(shí)器0計(jì)時(shí)3秒后,關(guān)斷定時(shí)器0,關(guān)斷電機(jī),啟動(dòng)定時(shí)器1開始計(jì)時(shí),再經(jīng)過(guò)兩分鐘的加熱,才開始正式的打漿。打漿時(shí)間有是預(yù)先設(shè)定好的,由定時(shí)器0計(jì)時(shí)控制,時(shí)間到關(guān)斷打漿,啟動(dòng)加熱。有單片機(jī)控制打漿次數(shù),當(dāng)打到第三遍時(shí),啟動(dòng)標(biāo)志位,將加熱器切換到熬漿當(dāng)。如此循環(huán)判斷,繼續(xù)上述過(guò)程,直到打漿結(jié)束,啟動(dòng)結(jié)束標(biāo)志位,在下次循環(huán)時(shí)啟動(dòng)報(bào)警。在整個(gè)工作流程中,打漿與加熱是輪流進(jìn)行的。有軟件編程使其在內(nèi)部以自鎖形式存在。關(guān)于定時(shí)

96、器的應(yīng)用,將于豆?jié){機(jī)的防益功能一起介紹。</p><p>  豆?jié){機(jī)的防益功能是采用單片機(jī)的中斷系統(tǒng)來(lái)完成的,定時(shí)器計(jì)時(shí)功能用的也是中斷系統(tǒng)。具體用法,下面將一一介紹。</p><p><b>  防益外部中斷</b></p><p>  本設(shè)計(jì)的防益功能,是通過(guò)51單片機(jī)的中斷控制功能實(shí)現(xiàn)的。MCS-51系列單片機(jī)有5個(gè)中斷源,可分為2個(gè)中斷

97、優(yōu)先級(jí)。本防益功能所用到的中斷源為外部中斷0。其請(qǐng)求信號(hào)由P3.2輸入,請(qǐng)求信號(hào)有效電平由IT0設(shè)置,一旦輸入信號(hào)有效,則將TCON中的IE0標(biāo)志位置1,可向CUP申請(qǐng)中斷。</p><p>  以下操作位本設(shè)計(jì)不用的的就不再敘述,可查閱相關(guān)資料。</p><p>  MCS-51系統(tǒng)中斷控制由3個(gè)專用寄存器組成。[8]</p><p>  中斷請(qǐng)求標(biāo)志寄存器TCO

98、N,該字節(jié)各位的定義如圖3-2所示。</p><p>  圖3-2 TCON各位的定義</p><p>  其中IE0/IE1為外部中斷零的申請(qǐng)標(biāo)志位。當(dāng)外部中斷源有請(qǐng)求時(shí),該位置1,其復(fù)位由觸發(fā)方式來(lái)設(shè)置。IT0/IT1為外部中斷觸發(fā)方式設(shè)置位,IT0/IT1=0時(shí),為電平觸發(fā)方式,該方式下,CUP每個(gè)機(jī)器周期對(duì)外部中斷源采樣,如果為低電平,則進(jìn)入中斷。該方式中CUP響應(yīng)中斷后不能自動(dòng)清

99、除IE標(biāo)志位,所以中斷返回前,外部中斷源引腳上的低電平必須撤銷。IT0/IT1=1時(shí)為脈沖觸發(fā)方式,即在兩個(gè)相鄰的機(jī)器周期內(nèi)P32/P33上的電平發(fā)生由高到低的跳變即進(jìn)入中斷IE=1保持到CUP響應(yīng)中斷時(shí),才由硬件清除,該方式下,中斷源低電平需要至少保持一個(gè)機(jī)器周期。</p><p>  中斷允許和禁止寄存器IE,圖3-3是其各位的定義。</p><p>  圖3-3 中斷允許寄存器各位的

100、定義</p><p>  其中,EA為總中斷允許位,當(dāng)EA=1時(shí)開放中斷,當(dāng)EA=0時(shí)關(guān)斷一切中斷。EX0為外部中斷0允許位,EX0=1時(shí)允許中斷。其余位的操作一樣。</p><p>  ET0為定時(shí)器0中斷允許位。</p><p>  EX1為外部中斷1中斷允許位。</p><p>  ET1為定時(shí)器1中斷允許位。</p>&

101、lt;p>  中斷優(yōu)先級(jí)寄存器IP,其各位的定義如圖3-4所示。</p><p>  圖3-4 中斷優(yōu)先級(jí)寄存器各位的定義</p><p>  其中PX0為外部中斷0優(yōu)先級(jí)設(shè)定。當(dāng)PX0=1時(shí),外部中斷0為高優(yōu)先級(jí)。</p><p>  當(dāng)PX0=0時(shí),外部中斷0位低優(yōu)先級(jí)。其余位也是如此。</p><p>  PT0為定時(shí)器0優(yōu)先級(jí)設(shè)

102、定。</p><p>  PX1為外部中斷1優(yōu)先級(jí)設(shè)定。</p><p>  PT1為定時(shí)器1優(yōu)先級(jí)設(shè)定。</p><p>  防益功能中斷程序的編寫如下:</p><p>  void int0()interrupt 0 //防溢出程序</p><p>  { p32=1; </p

103、><p>  p33=p34=0; //關(guān)斷加熱器</p><p>  biao=1; //置位延時(shí)標(biāo)志位</p><p>  yans=jishu1; //賦計(jì)時(shí)初值</p><p>  wence(); //延時(shí)</p><p><b>  }</b&

104、gt;</p><p>  定時(shí)/計(jì)數(shù)器內(nèi)部中斷</p><p>  定時(shí)/計(jì)數(shù)器的工作方式有4種。工作方式設(shè)置寄存器TMOD,其各位的定義如圖3-5所示。</p><p>  圖3-5 TMOD各位的定義</p><p>  TMOD的低4位為定時(shí)器0的方式字段,高4位為定時(shí)器1的方式字段,它們的含義完全相同。</p><

105、;p>  M1和M0為定時(shí)器工作方式選擇位。其定義如圖3-6所示。</p><p>  定時(shí)/計(jì)數(shù)器分內(nèi)部計(jì)數(shù)與外部計(jì)數(shù)。當(dāng)C/T=1時(shí),為外部計(jì)數(shù),等于0時(shí)為內(nèi)部計(jì)數(shù)。當(dāng)TR0/TR1為1時(shí),啟動(dòng)定時(shí)器,內(nèi)部計(jì)數(shù)是對(duì)單片機(jī)內(nèi)部時(shí)鐘周期進(jìn)行計(jì)數(shù),外部計(jì)數(shù)是對(duì)外部脈沖計(jì)數(shù)(來(lái)自單片機(jī)P34或P35端口)當(dāng)計(jì)滿數(shù)后,置位中斷標(biāo)志位TF0/TF1,如果中斷允許寄存器允許,在下一機(jī)器周期,CPU響應(yīng)中斷請(qǐng)求,進(jìn)入中

106、斷服務(wù)子程序。其中斷設(shè)置方式與外部中斷相同。</p><p>  在使用時(shí)一定先給其專用寄存器TH0、TL0或TH1、TL1賦初值,以免發(fā)生意想不到的錯(cuò)誤,增加調(diào)試難度。以下是定時(shí)器的中斷服務(wù)程序。</p><p>  void t0()interrupt 1 //轉(zhuǎn)數(shù)控制程序</p><p><b>  {</b></p>

107、<p>  TH0=0x3c; //賦初值</p><p><b>  TL0=0xb0;</b></p><p><b>  jishi++;</b></p><p>  if(jishi==20)//一秒判斷</p><p><b>  { <

108、;/b></p><p>  jishi=0;jishu++;</p><p>  if(jishu==a) //判斷打漿是否結(jié)束</p><p>  {p35=1;TR1=1;jishu=0;TR0=0;} //關(guān)閉打漿電機(jī),啟動(dòng)T1,關(guān)閉T0 </p><p><b>  }</b></

109、p><p><b>  }</b></p><p>  void t1()interrupt 3 //熬煮時(shí)間控制程序</p><p><b>  {</b></p><p>  TH1=0x3c; //為定時(shí)器賦初值</p><p><b>

110、;  TL1=0xb0;</b></p><p>  jishi1++; </p><p>  if(jishi1==100) //5秒判斷</p><p>  {jishi1=0;jishu1++;</p><p>  if(jishu1-yans==1)biao=0;yans=jishu1;//溢出后延

111、時(shí)5秒的判斷</p><p>  if(jishu1==6&&zhonglei>0) //判斷熬煮時(shí)間是否結(jié)束</p><p>  { jishu1=0;cisu++; //記錄打漿次數(shù)</p><p>  if(cisu==1)a=10; //根據(jù)打漿次數(shù)設(shè)置打漿時(shí)間</p>

112、<p>  else if(cisu==2)a=15; </p><p>  else if(cisu==3)a=20;</p><p>  else a=30;</p><p>  TR0=1;TR1=0;zhonglei--;p34=p33=0;p35=0; //熬煮結(jié)束,關(guān)閉T1,啟動(dòng)T0</p><p>  }

113、 //判斷是否進(jìn)入延時(shí)熬漿</p><p>  if(zhonglei==0)</p><p><b>  {</b></p><p><b>  jishi1=0;</b></p><p>  if(jishu1==(7-cisu)*10) </p><p&g

114、t;  {F0=0;biao4=1;TR1=0;}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  3.4 整體程序</b></p>&l

115、t;p>  以上所述的幾大功能模塊之間有一定的聯(lián)系,定時(shí)器0、定時(shí)器1和外部中斷0之間有一定的互鎖性,因?yàn)樗麄兪嵌節(jié){機(jī)控制程序的核心,溫度傳感器與按鍵稍加改動(dòng)都可以獨(dú)立使用,分別完成不同的任務(wù)。而把它們聯(lián)系到一塊,則可以形成一個(gè)完整的程序,使豆?jié){機(jī)可以完成幾種不同的任務(wù)。</p><p>  整體程序流程圖見附錄Ⅰ。</p><p>  整體程序代碼見附錄Ⅰ。</p>

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論