基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)論文_第1頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)論文_第2頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)論文_第3頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)論文_第4頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩43頁(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、 . . . 畢業(yè)設(shè)計(jì)(論文)題目名稱:基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)中文摘要隨著微機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本設(shè)計(jì)論述了一種以STC89C52單片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度控制系統(tǒng)。該控制系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時(shí)間。系統(tǒng)設(shè)計(jì)了相關(guān)的硬件電路和相關(guān)應(yīng)用程序。硬件電路主要包括STC89C52單片機(jī)最小系統(tǒng),測(cè)溫電路、實(shí)時(shí)時(shí)鐘電路、LCD液晶顯示電路以與通訊模塊電路等。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計(jì)算溫度子程序、按

2、鍵處理程序、LCD顯示程序以與數(shù)據(jù)存儲(chǔ)程序等。關(guān)鍵詞 STC89C52單片機(jī);DS18B20;顯示電路Based on single chip microcomputer temperature control system designAbstractAlong with the computer measurement and control technology of the rapid development and wide application, based on singlechip temperature gathering and control system develo

3、pment and application greatly improve the production of temperature in life level of control. This design STC89C52 describes a kind of mainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and record related t

4、o the current time. System design related hardware circuit and related applications. STC89C52 microcontroller hardware circuit include temperature detection circuit smallest system, and real-time clock circuit, LCD display circuit, communication module circuit, etc. System programming mainly include

5、 main program, read temperature subroutine, the calculation of temperature subroutines, key processing procedures, LCD display procedures and data storage procedures, etc. Keywords STC89C52 microcontroller;DS18B20;display circuit目 錄一、引言4(一)課題研究的背景4(二)課題研究的目的和意義5二、硬件電路的設(shè)計(jì)5(一)系統(tǒng)設(shè)計(jì)的框架5(二)單片機(jī)最小系統(tǒng)電路6(三)單

6、片機(jī)的選型61.STC89C52單片機(jī)簡(jiǎn)介62.STC89C52單片機(jī)時(shí)序73.STC89C52單片機(jī)引腳介紹7(四)溫度傳感器電路9(五)系統(tǒng)電源電路的設(shè)計(jì)10(六)LCD顯示電路11(七)串口通訊電路12(八)按鍵接口電路13(九)DS1302時(shí)鐘電路13(十)存儲(chǔ)器接口電路13三、系統(tǒng)軟件設(shè)計(jì)14(一)計(jì)算溫度子程序15(二)按鍵處理子程序15(三)計(jì)算溫度子程序16(四)顯示數(shù)據(jù)刷新子程序17四、結(jié)束語(yǔ)18參考文獻(xiàn)19致20附件1:系統(tǒng)原理圖21附件2:系統(tǒng)相關(guān)程序22一、DS18B20底層驅(qū)動(dòng)程序22二、DS1302時(shí)鐘底層驅(qū)動(dòng)程序27三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序33一、引言(一)課題研

7、究的背景工業(yè)控制是計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,計(jì)算機(jī)控制系統(tǒng)正是為了適應(yīng)這一領(lǐng)域的需要而發(fā)展起來(lái)的一門(mén)專業(yè)技術(shù),它主要研究如何將計(jì)算機(jī)技術(shù)、通過(guò)信息技術(shù)和自動(dòng)控制理論應(yīng)用于工業(yè)生產(chǎn)過(guò)程,并設(shè)計(jì)出所需要的計(jì)算機(jī)控制系統(tǒng)。隨著微機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本設(shè)計(jì)就是基于單片機(jī)STC89C52溫度控制系統(tǒng)的設(shè)計(jì),通過(guò)本次課程實(shí)踐,我們更加的明確了單片機(jī)的廣泛用途和使用方法,以與其工作的原理。(二)課題研究的目的和意義隨著社會(huì)的發(fā)展,溫度的測(cè)量與控制變得越來(lái)越重要。本文采用單片機(jī)STC89C52設(shè)計(jì)了溫

8、度實(shí)時(shí)測(cè)量與控制系統(tǒng)。單片機(jī)STC89C52 能夠根據(jù)溫度傳感器DS18B20 所采集的溫度在液晶屏上實(shí)時(shí)顯示,通過(guò)控制從而把溫度控制在設(shè)定的圍之。所有溫度數(shù)據(jù)均通過(guò)液晶顯示器LCD顯示出來(lái)。系統(tǒng)可以根據(jù)時(shí)鐘存儲(chǔ)相關(guān)的數(shù)據(jù)。通過(guò)該課程的學(xué)習(xí)使我們對(duì)計(jì)算機(jī)控制系統(tǒng)有一個(gè)全面的了解、掌握常規(guī)控制算法的使用方法、掌握簡(jiǎn)單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬的設(shè)計(jì)方法,進(jìn)一步鍛煉同學(xué)們?cè)谖⑿陀?jì)算機(jī)應(yīng)用方面的實(shí)際工作能力。二、硬件電路的設(shè)計(jì)(一)系統(tǒng)設(shè)計(jì)的框架本課題設(shè)計(jì)的是一種以STC89C52單片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度控制系統(tǒng)。該控制系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時(shí)間。其主要

9、包括:電源模塊、溫度采集模塊、按鍵處理模塊、實(shí)時(shí)時(shí)鐘模塊、數(shù)據(jù)存儲(chǔ)模塊、LCD顯示模塊、通訊模塊以與單片機(jī)最小系統(tǒng)。圖1 系統(tǒng)設(shè)計(jì)框架(二)單片機(jī)最小系統(tǒng)電路在課題設(shè)計(jì)的溫度控制系統(tǒng)設(shè)計(jì)中,控制核心是STC89C52單片機(jī),該單片機(jī)為51系列增強(qiáng)型8位單片機(jī),它有32個(gè)I/O口,片含4K FLASH工藝的程序存儲(chǔ)器,便于用電的方式瞬間擦除和改寫(xiě),而且價(jià)格便宜,其外部晶振為12MHz,一個(gè)指令周期為1S。使用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以與存儲(chǔ)器選擇模式(EA腳的高低電平選擇),電路如下圖2所示:圖2 單片機(jī)最小系統(tǒng)(三)單片機(jī)的選型本課題設(shè)計(jì)的溫度控制系

10、統(tǒng)主控制芯片選型為STC89C52單片機(jī),其特點(diǎn)如下:1.STC89C52單片機(jī)簡(jiǎn)介目前,51系列單片機(jī)在工業(yè)檢測(cè)領(lǐng)域中得到了廣泛的應(yīng)用,因此我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類型的語(yǔ)音接口,構(gòu)成具有合成語(yǔ)音輸出能力的綜合應(yīng)用系統(tǒng),以增強(qiáng)人機(jī)對(duì)話的功能。STC89C52單片機(jī)是宏晶科技生產(chǎn)的一種單片機(jī),在一小塊芯片上集成了一個(gè)微型計(jì)算機(jī)的各個(gè)組成部分。每一個(gè)單片機(jī)包括:一個(gè)8位的微型處理器CPU;一個(gè)512K的片數(shù)據(jù)存儲(chǔ)器RAM;4K片程序存儲(chǔ)器;四個(gè)8位并行的I/O接口P0-P3,每個(gè)接口既可以輸入,也可以輸出;兩個(gè)定時(shí)器/記數(shù)器;五個(gè)中斷源的中斷控制系統(tǒng);一個(gè)全雙工UART的串行I/

11、O口;片振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ。以上各個(gè)部分通過(guò)部總線相連接。2.STC89C52單片機(jī)時(shí)序 STC89C52單片機(jī)的一個(gè)執(zhí)器周期由6個(gè)狀態(tài)(s1s6)組成,每個(gè)狀態(tài)又持續(xù)2個(gè)震蕩周期,分為P1和P2兩個(gè)節(jié)拍。這樣,一個(gè)機(jī)器周期由12個(gè)振蕩周期組成。若采用12MHz的晶體振蕩器,則每個(gè)機(jī)器周期為1us,每個(gè)狀態(tài)周期為16us;在一數(shù)情況下,算術(shù)和邏輯操作發(fā)生在N期間,而部寄存器到寄存器的傳輸發(fā)生在P2期間。對(duì)于單周期指令,當(dāng)指令操作碼讀人指令寄存器時(shí),使從S1P2開(kāi)始執(zhí)行指令。如果是雙字節(jié)指令,則在同一機(jī)器周期的s4讀人第二字節(jié)。若為單

12、字節(jié)指令,則在51期間仍進(jìn)行讀,但所讀入的字節(jié)操作碼被忽略,且程序計(jì)數(shù)據(jù)也不加1。在加結(jié)束時(shí)完成指令操作。多數(shù)STC89C52指令周期為12個(gè)機(jī)器周期,只有乘法和除法指令需要兩個(gè)以上機(jī)器周期的指令,它們需4個(gè)機(jī)器周期。 對(duì)于雙字節(jié)單機(jī)器指令,通常是在一個(gè)機(jī)器周期從程序存儲(chǔ)器中讀人兩個(gè)字節(jié),但Movx指令例外,Movx指令是訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的單字節(jié)雙機(jī)器周期指令,在執(zhí)行Movx指令期間,外部數(shù)據(jù)存儲(chǔ)器被訪問(wèn)且被選通時(shí)跳過(guò)兩次取指操作。3.STC89C52單片機(jī)引腳介紹STC89C52單片機(jī)的40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以與32條輸入輸

13、出I/O引腳。下面按引腳功能分為4個(gè)部分?jǐn)⑹鰝€(gè)引腳的功能。(1)電源引腳Vcc和VssVcc(40腳):接+5V電源正端;Vss(20腳):接+5V電源正端。(2)外接晶振引腳XTAL1和XTAL2XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHOMS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):接外部晶體的另一端。在單片機(jī)部,接至片振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。對(duì)于CHMOS芯片,該引腳懸空不接。(3)控

14、制信號(hào)或與其它電源復(fù)用引腳 控制信號(hào)或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。(A)RST/VPD(9腳):RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)復(fù)位到初始狀態(tài)。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD(+5V)為部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。(B)ALE/ P (30腳):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),ALE(允許地址鎖存信號(hào))以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出現(xiàn)在P0口的低(C)PS

15、EN(29腳):片外程序存儲(chǔ)器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESN兩次有效,以通過(guò)數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器期間,PESN信號(hào)將不出現(xiàn)。(D)EA/Vpp(31腳):EA為訪問(wèn)外部程序儲(chǔ)器控制信號(hào),低電平有效。當(dāng)EA端保持高電平時(shí),單片機(jī)訪問(wèn)片程序存儲(chǔ)器4KB(MS52子系列為8KB)。若超出該圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器的程序。當(dāng)EA端保持低電平時(shí),無(wú)論片有無(wú)程序存儲(chǔ)器,均只訪問(wèn)外部程序存儲(chǔ)器。對(duì)于片含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp。 (4)輸入/輸出(I/O)引腳P0口、

16、P1口、P2口與P3口(A).P0口(39腳22腳):P0.0P0.7統(tǒng)稱為P0口。當(dāng)不接外部存儲(chǔ)器與不擴(kuò)展I/O接口時(shí),它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口為地址/數(shù)據(jù)分時(shí)復(fù)用口。它分時(shí)提供8位雙向數(shù)據(jù)總線。對(duì)于片含有EPROM的單片機(jī),當(dāng)EPROM編程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),則輸出指令字節(jié)。(B).P1口(1腳8腳):P1.0P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對(duì)于MCS52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2E

17、X。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P0口接收輸入的低8位地址。(C).P2口(21腳28腳):P2.0P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址圍超過(guò)256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P2口接收輸入的8位地址。(D).P3口(10腳17腳):P3.0P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見(jiàn)下表 表1 單片機(jī)P3.0管腳含義引腳第2功能P3.0R

18、XD(串行口輸入端0)P3.1TXD(串行口輸出端)P3.2INT0(部中斷0請(qǐng)求輸入端,低電平有效)P3.3INT1(中斷1請(qǐng)求輸入端,低電平有效)P3.4T0(時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖端)P3.5T1(時(shí)器/計(jì)數(shù)器1數(shù)脈沖端)P3.6WR(部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通信號(hào)輸出端,低電平有效)P3.7RD(部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效)綜上所述,MCS51系列單片機(jī)的引腳作用可歸納為以下兩點(diǎn):1).單片機(jī)功能多,引腳數(shù)少,因而許多引腳具有第2功能;2).單片機(jī)對(duì)外呈3總線形式,由P2、P0口組成16位地址總線;由P0口分時(shí)復(fù)用作為數(shù)據(jù)總線。(四)溫度傳感器電路采用一線制數(shù)字溫度傳感器DS18

19、B20來(lái)作為本課題的溫度傳感器。傳感器輸出信號(hào)進(jìn)4.7K的上拉電阻直接接到單片機(jī)的P1.0引腳上。DS18B20溫度傳感器是美國(guó)達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過(guò)多方面比較和考慮后決定的,主要有以下幾方面的原因:(1)系統(tǒng)的特性:測(cè)溫圍為-55+125 ,測(cè)溫精度為士0.5;溫度轉(zhuǎn)換精度912位可變,能夠直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時(shí)間為750ms;可以通過(guò)數(shù)據(jù)線供電,具有超低功

20、耗工作方式。(2)系統(tǒng)成本:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展,新型大規(guī)模集成電路功能越來(lái)越強(qiáng)大,體積越來(lái)越小,而價(jià)格也越來(lái)越低。一支DS18B20的體積與普通三極管相差無(wú)幾,價(jià)格只有十元人民幣左右。(3)系統(tǒng)復(fù)雜度:由于DS18B20是單總線器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線上可以掛接幾十個(gè)DS18B20,測(cè)溫時(shí)無(wú)需任何外部元件,因此,與模擬傳感器相比,可以大大減少接線的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量。(4)系統(tǒng)的調(diào)試和維護(hù):由于引線的減少,使得系統(tǒng)接口大為簡(jiǎn)化,給系統(tǒng)的調(diào)試帶來(lái)方便。同時(shí)因?yàn)镈S18B20是全數(shù)字元器件,故障率很低,抗干擾性強(qiáng),因此,減少了系統(tǒng)

21、的日常維護(hù)工作。DS18B20溫度傳感器只有三根外引線:?jiǎn)尉€數(shù)據(jù)傳輸總線端口DQ ,外供電源線VDD,共用地線GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時(shí)VDD接地,它是通過(guò)部電容在空閑時(shí)從數(shù)據(jù)線獲取能量,來(lái)完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時(shí)間較長(zhǎng)。這種情況下,用單片機(jī)的一個(gè)I/O口來(lái)完成對(duì)DS18B20總線的上拉。另一種是外部供電方式(VDD接+5V),相應(yīng)的完成溫度測(cè)量的時(shí)間較短。在本設(shè)計(jì)中采用外部供電方式實(shí)現(xiàn)DS18B20傳感器與單片機(jī)的連接,其接口電路如圖4所示。圖4 溫度傳感器接口(五)系統(tǒng)電源電路的設(shè)計(jì)本系統(tǒng)采用電源穩(wěn)壓芯片是LM2596,該開(kāi)關(guān)電壓調(diào)節(jié)器是降

22、壓型電源管理單片集成電路,能夠輸出3A的驅(qū)動(dòng)電流,輸入電壓是+5v,輸入電壓是+24v,同時(shí)具有很好的線性和負(fù)載調(diào)節(jié)特性。該器件部集成頻率補(bǔ)償和固定頻率發(fā)生器,開(kāi)關(guān)頻率為150KHz,與低頻開(kāi)關(guān)調(diào)節(jié)器相比較,可以使用更小規(guī)格的濾波元件。 該器件還有其他一些特點(diǎn):在特定的輸入電壓和輸出負(fù)載的條件下,輸出電壓的誤差可以保證在±4%的圍,振蕩頻率誤差在±15%的圍;可以用僅80A的待機(jī)電流,實(shí)現(xiàn)外部斷電;具有自我保護(hù)電路(一個(gè)兩級(jí)降頻限流保護(hù)和一個(gè)在異常情況下斷電的過(guò)溫完全保護(hù)電路)在該溫度控制系統(tǒng)中,其電源電路設(shè)計(jì)如下圖10所示。圖5 系統(tǒng)電源模塊(六)LCD顯示電路本課題設(shè)計(jì)

23、的溫度控制系統(tǒng)是采用液晶屏128*64作為顯示模塊,其接口原理圖如下圖6所示:圖6 液晶顯示接口電路(七)串口通訊電路本課題設(shè)計(jì)的通訊采用的是常見(jiàn)的串口通訊,協(xié)議轉(zhuǎn)換芯片是采用MAX232A,其接口原理圖如下圖7所示:圖6 串口通訊接口電路(八)按鍵接口電路本課題設(shè)計(jì)采用的鍵盤(pán)模塊,其接口原理圖如下圖8所示:圖8 鍵盤(pán)模塊電路(九)DS1302時(shí)鐘電路本課題設(shè)計(jì)的時(shí)鐘是采用時(shí)鐘芯片DS1302,其接口原理圖如下圖9所示:圖9 時(shí)鐘接口電路(十)存儲(chǔ)器接口電路本課題設(shè)計(jì)的存儲(chǔ)器采用的是AT24C256,其接口原理圖如下圖十所示:圖10 存儲(chǔ)器電路三、系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件主要是采用C語(yǔ)言,對(duì)單片

24、機(jī)進(jìn)行變成實(shí)現(xiàn)各項(xiàng)功能。主程序?qū)δK進(jìn)行初始化,而后調(diào)用讀溫度、處理溫度、顯示、鍵盤(pán)等模塊。用的是循環(huán)查詢方式,來(lái)顯示和控制溫度,主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值并負(fù)責(zé)調(diào)用各子程序,其程序流程如圖10系統(tǒng)程序流程圖。開(kāi)始初始化啟動(dòng)DB18B20讀溫度計(jì)算溫度LCD顯示圖10系統(tǒng)程序流程圖(一)計(jì)算溫度子程序 讀出溫度子程序的主要功能包括初始化,判斷DS18B20是否存在,若存在則進(jìn)行一系列的讀操,作若不存在則返回。其程序流程圖如圖11所示。圖11 讀溫度流程圖(二)按鍵處理子程序 按鍵處理子程序主要是負(fù)責(zé)參數(shù)的設(shè)置,主程序每循環(huán)一次都要對(duì)按鍵進(jìn)行

25、掃描,判斷是否有輸入鍵按下則進(jìn)行一系列的按鍵輸入操作。其程序流程框圖如圖12所示。圖12 溫度轉(zhuǎn)換流程圖(三)計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖13所示。 開(kāi)始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)位溫度BCD值 結(jié)束置“+”標(biāo)志NY圖13 計(jì)算溫度子程序(四)顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖14。溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))

26、結(jié)束NNYY圖14 數(shù)據(jù)刷新子程序四、結(jié)束語(yǔ)通過(guò)此次畢業(yè)論文的課題設(shè)計(jì),我們學(xué)會(huì)了怎樣把所學(xué)的書(shū)本知識(shí)應(yīng)用于實(shí)踐中去,并學(xué)會(huì)了如何去思考整個(gè)控制系統(tǒng)的軟硬件設(shè)計(jì)。實(shí)踐過(guò)程中我們遇到了一些困難,但在解決問(wèn)題的過(guò)程中,我們學(xué)會(huì)了團(tuán)隊(duì)合作精神和怎樣發(fā)現(xiàn)問(wèn)題、分析問(wèn)題,進(jìn)而解決問(wèn)題。此次課程設(shè)計(jì)不僅增強(qiáng)了我們學(xué)習(xí)專業(yè)課的興趣,而且給了我們勇氣和信心,更重要的是它為我們以后的學(xué)習(xí)指明了方向。參考文獻(xiàn)1 廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)航空航天大學(xué),2001(07).2 蔡美琴,為民等.MCS-51系列單片機(jī)系統(tǒng)與其應(yīng)用高等教育,2004(06).3 毅剛,等.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M.工業(yè)大學(xué),19

27、97.4 瑞星,胡健等.Protel DXP 實(shí)用教程機(jī)械工業(yè),2003(04).5 于海生. 計(jì)算機(jī)控制技術(shù) 機(jī)械工業(yè) 2007(05).6 譚浩強(qiáng). C程序設(shè)計(jì) 清華大學(xué).7 康華光. 電子技術(shù)基礎(chǔ) 模擬部分 高等教育 1998(08).8 余錫存. 單片機(jī)原理與接口技術(shù) 電子科技大學(xué),2003.致本論文是在我的指導(dǎo)老師密切關(guān)心和悉心指導(dǎo)下完成的。老師在課題開(kāi)題期間和論文寫(xiě)作的過(guò)程中給予了我許多指導(dǎo),導(dǎo)師總是以認(rèn)真負(fù)責(zé)、一絲不茍的工作態(tài)度閱讀并修改文章中不足的地方,他優(yōu)良的作風(fēng)和嚴(yán)謹(jǐn)治學(xué)的態(tài)度深深影響著我,至此,向恩師致以最真摯的感和最崇高的敬意!同時(shí)我要感我的同學(xué),特別是我的室友們,正是

28、他們?cè)谶@幾年里陪我一起成長(zhǎng),一起學(xué)習(xí),才讓我有了今天的成績(jī)。他們?cè)谄綍r(shí)的學(xué)習(xí)和生活中他們給予了我無(wú)私的關(guān)懷和幫助,在此表示我最誠(chéng)摯的意。附件1:系統(tǒng)原理圖附件2:系統(tǒng)相關(guān)程序一、DS18B20底層驅(qū)動(dòng)程序/延時(shí) N ms/DS1820引腳定義sbit TMDAT =P10;void DS1820_DelayCount (unsigned char Coun) data unsigned char Count; Count=Coun; while(Count>0) Count-; Count=Coun; while(Count>0) Count-;/復(fù)位DS18B20void DS1

29、820_Reset(void) TMDAT=0; DS1820_DelayCount(412); TMDAT=1; DS1820_DelayCount(16); /等待DS18B20應(yīng)答unsigned char DS1820_Answer(void)data unsigned int i;data unsigned char j; i=0xc000; while(TMDAT) i-;if (i=0)return(aban_return); i=0xffff; j=3; while(TMDAT) i-;if (i=0) if(j=0) return(aban_return); else j-;

30、 i=0xffff; DS1820_DelayCount(16); return(done_return);/等待DS18B20應(yīng)答/讀取位bit DS1820_Readbit(void) data int i=0; bit dat; TMDAT=0;i+;i+;i+;i+; TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+; dat = TMDAT;/ DS1820_DelayCount(8); DS1820_DelayCount(32); return dat;/讀取字節(jié)unsigned char DS1820_Readbyte(void)data unsigned char

31、 i,j,dat=0; for(i=1;i<=8;i+) j=DS1820_Readbit(); dat=(j<<7)|(dat>>1); return dat;/寫(xiě)一個(gè)字節(jié)void DS1820_Writebyte(unsigned char dat) data signed char i=0; data unsigned char j; bit testb; for(j=1;j<=8;j+) testb=dat & 0x01; dat = dat>>1; if(testb) TMDAT=0; i+;i+;i+;i+;i+;i+;i+;

32、i+; TMDAT=1; /DS1820_DelayCount(8); DS1820_DelayCount(32); else TMDAT=0; /DS1820_DelayCount(8); DS1820_DelayCount(32); TMDAT=1; i+;i+;i+;i+;i+;i+;i+;i+; /讀操作開(kāi)始unsigned char DS1820_StartTem(void) EA=0; DS1820_Reset(); if(DS1820_Answer()=aban_return) EA=Ea; return(aban_return); / DS1820_Delayms(1); DS

33、1820_Delayms(4); DS1820_Writebyte(0xcc); / DS1820_Writebyte(0x55); / for(i=0;i<8;i+) /DS1820_Writebyte(DS1820_tempi); DS1820_Writebyte(0x44); EA=Ea; return(done_return);/讀所有傳感器int DS1820_ReadTem(void)data unsigned char a,b;data int y3;data float y4;data unsigned char i; EA=0; DS1820_Reset(); if(D

34、S1820_Answer()=aban_return) EA=Ea; return(0xffff); DS1820_Delayms(4); DS1820_Writebyte(0xcc); /跳過(guò)匹配傳感器 /DS1820_Writebyte(0x55); /匹配傳感器 / for(i=0;i<8;i+) /DS1820_Writebyte(run_inf.system_index.DS1820_tempi); DS1820_Writebyte(0xbe); /讀取溫度 for(i=0;i<9;i+) run_inf.system_index.DS1820_tempi=DS1820_

35、Readbyte(); if(CRC(9)!=0) EA=1; return(0xffff); /計(jì)算CRC a = run_inf.system_index.DS1820_temp0; b = run_inf.system_index.DS1820_temp1; DS1820_Reset(); y3 = (b<< 8)|a; y4=y3; y4=(y4*25)/4; EA=1; return(int)(y4);二、DS1302時(shí)鐘底層驅(qū)動(dòng)程序/DS1302引腳定義sbit rtc_sc=P34;sbit rtc_io=P35;sbit rst_1302=P36;bdata uns

36、igned char temp;sbit temp_0 = temp0;sbit temp_7 = temp7;/*DS1302驅(qū)動(dòng)程序開(kāi)始*/功能: 往DS1302寫(xiě)入1Byte數(shù)據(jù)void v_RTInputByte(unsigned char ucDa) unsigned char i;temp = ucDa;for(i=8; i>0; i-)rtc_io = temp_0; /*相當(dāng)于匯編中的 RRC */rtc_sc = 1;rtc_sc = 0;temp = temp >> 1; /功能: 從DS1302讀取1Byte數(shù)據(jù)unsigned char uc_RTOu

37、tputByte(void) unsigned char i;rtc_io=1;for(i=8; i>0; i-) temp = temp >>1; /*相當(dāng)于匯編中的 RRC */ temp_7 = rtc_io; rtc_sc = 1; rtc_sc = 0; return(temp); /功能: 往DS1302寫(xiě)入數(shù)據(jù)void write1302(unsigned char ucAddr,unsigned char ucDa) bit ea; ea=EA; EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_port

38、|=rtc_rs_bit;v_RTInputByte(ucAddr); /* 地址,命令 */v_RTInputByte(ucDa); /* 寫(xiě)1Byte數(shù)據(jù)*/rtc_sc = 1;rtc_rs_port&=(rtc_rs_bit);EA = ea; /功能: 讀取DS1302某地址的數(shù)據(jù)unsigned char read1302(unsigned char ucAddr)unsigned char ucDa; bit ea; ea=EA; EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_port|=rtc_rs_bit;v

39、_RTInputByte(ucAddr); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 讀1Byte數(shù)據(jù) */rtc_sc = 1;rtc_rs_port&=(rtc_rs_bit);EA = ea;return(ucDa);/功能: 設(shè)置初始時(shí)間void Set1302(pTime_S time_temp) unsigned char i= 0x80; write1302(0x8e,0x00); /* 控制命令,WP=0,寫(xiě)操作*/ write1302(i,time_temp->sec); i +=2; write1302(i,time_te

40、mp->min); i +=2; write1302(i,time_temp->hou); i +=2; write1302(i,time_temp->day); i +=2; write1302(i,time_temp->mon); i +=2; write1302(i,0x02); i +=2; write1302(i,time_temp->yea); i +=2; write1302(0x8e,0x80); /* 控制命令,WP=1,寫(xiě)保護(hù)*/功能: 讀取DS1302當(dāng)前時(shí)間void get1302(void) unsigned char i,time_bc

41、d_temp6;unsigned char ucAddr = 0x81;for (i=0;i<7;i+) time_bcd_tempi = read1302(ucAddr);/*格式為: 秒 分 時(shí) 日 月 星期 年 */ ucAddr += 2; sec=time_bcd_temp0;min=time_bcd_temp1;hou=time_bcd_temp2;day=time_bcd_temp3;mon=time_bcd_temp4;yea=time_bcd_temp6; /連續(xù)6字節(jié)讀出程序void ds1302_read(unsigned char *ptr,unsigned ch

42、ar addr)unsigned char i;addr=addr*2+0x0c1;for(i=0;i<6;i+) *(ptr+i)=read1302(addr); addr+=2; /連續(xù)6字節(jié)寫(xiě)入程序void ds1302_write(unsigned char *ptr,unsigned char addr)unsigned char i;addr=addr*2+0x0c0;write1302(0x8e,0x00); /寫(xiě)保護(hù)置低(關(guān)閉)for(i=0;i<6;i+) write1302(addr,*(ptr+i); addr+=2; write1302(0x8e,0x80)

43、; /寫(xiě)保護(hù)置高(打開(kāi)) void Start1302(void) unsigned char temp; bit ea; ea=EA; EA=0; temp=read1302(0x81); temp&=0x7f; write1302(0x8e,0x00); /* 控制命令,WP=0,寫(xiě)操作*/ write1302(0x80,temp); write1302(0x90,0); write1302(0x8e,0x80); /* 控制命令,WP=1,寫(xiě)保護(hù)*/ EA=ea;/DS1302驅(qū)動(dòng)程序結(jié)束三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序/ATC256引腳定義sbit epr_sd=P33;sbit ep

44、r_sc=P32;bdata unsigned char temp1;sbit temp1_0 = temp10;sbit temp1_7 = temp17;/存儲(chǔ)器驅(qū)動(dòng)程序開(kāi)始void noack(void) epr_sd=1; epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=0;void ask()unsigned char i=0xff; epr_sd=1; epr_sc=1; epr_sc=1; epr_sc=1;doi-; if(epr_sd=0) epr_sc=0; i=0; while(i!=0);epr_sd=1;epr_sd=1;epr_sd=1;v

45、oid stop() epr_sd=0; epr_sd=0; epr_sd=0; epr_sc=1; epr_sc=1; epr_sc=1; epr_sd=1; epr_sd=1; epr_sd=1; epr_sd=1;/24c256 startvoid start()epr_sc=1;epr_sd=1;epr_sd=1; epr_sd=0; epr_sd=0; epr_sc=0;void wrby(unsigned char x) unsigned char i; epr_sc=0;temp1=x;for(i=0;i<8;i+) /從高位開(kāi)始傳送數(shù)據(jù) epr_sd=temp1_7; t

46、emp1=temp1<<1; /左移一位 epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=0; /24c256 rdby unsigned char rdby() /從高位開(kāi)始讀出數(shù)據(jù) unsigned char i;epr_sd=1;epr_sd=1;epr_sd=1;for(i=0;i<8;i+) epr_sc=1;epr_sc=1; temp1=temp1<<1; temp1_0=epr_sd; epr_sc=0; epr_sc=0;epr_sc=0; return(temp1);/24c256 waddr vo

47、id waddr() start(); wrby(0xa0); ask();/24c256 raddrunsigned char raddr() start(); wrby(0xa1); ask(); temp1=rdby(); noack(); stop(); return(temp1);void w16addr(unsigned int x) union unsigned int int_type;unsigned char char_type1; u_int_char;unsigned m,n;u_int__type=x; /將x的高位賦給m,低位賦給nm=u_int_c

48、har.char_type0;n=u_int_char.char_type1; wrby(m ); ask(); wrby(n ); ask();/延時(shí)void d5ms() unsigned char a, b; for (a=0;a<=15;a+) for (b=0;b<0x7f;b+) ; /24c256 讀出一字節(jié) unsigned char epr_read(unsigned int x) bit ea; ea=EA; EA=0; /關(guān)中斷 EPR_WEN; d5ms(); waddr(); w16addr(x); temp1=raddr(); EA=ea;/開(kāi)中斷 return(temp1);/24c256 寫(xiě)入一字節(jié)void epr_write(unsigned int f,unsigned char x) bit ea; ea=EA; EA=0 ; /關(guān)中斷 d5ms(); waddr(); w16addr(f); wrby(x); ask(); stop(); d

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論