全自動(dòng)電熱水壺的設(shè)計(jì)(包含原理圖和程序)_第1頁
全自動(dòng)電熱水壺的設(shè)計(jì)(包含原理圖和程序)_第2頁
全自動(dòng)電熱水壺的設(shè)計(jì)(包含原理圖和程序)_第3頁
全自動(dòng)電熱水壺的設(shè)計(jì)(包含原理圖和程序)_第4頁
全自動(dòng)電熱水壺的設(shè)計(jì)(包含原理圖和程序)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)控制電熱水壺溫度的設(shè)計(jì)中文摘要隨著微機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本設(shè)計(jì)論述了一種以STC89C52I片機(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)用程序。硬件電路主要包括STC89C52I片機(jī)最小系統(tǒng),測(cè)溫電路、實(shí)時(shí)時(shí)鐘電路、LCD1晶顯示電路以及通訊模塊電路等。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計(jì)算溫度子程序、按鍵處理程序、LCD顯示程序以及數(shù)據(jù)存儲(chǔ)程序等。關(guān)鍵詞STC89C52

2、單片機(jī);DS18B20顯示電路一、引言4(一)課題研究的背景4(二)課題研究的目的和意義5二、硬件電路的設(shè)計(jì)5(一)系統(tǒng)設(shè)計(jì)的框架5(二)單片機(jī)最小系統(tǒng)電路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é)束語18參考文獻(xiàn)19致謝

3、20附件1:系統(tǒng)原理圖21附件2:系統(tǒng)相關(guān)程序221、 DS18B20底層驅(qū)動(dòng)程序222、 DS1302時(shí)鐘底層驅(qū)動(dòng)程序27三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序33一、引言(一)課題研究的背景工業(yè)控制是計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,計(jì)算機(jī)控制系統(tǒng)正是為了適應(yīng)這一領(lǐng)域的需要而發(fā)展起來的一門專業(yè)技術(shù),它主要研究如何將計(jì)算機(jī)技術(shù)、通過信息技術(shù)和自動(dòng)控制理論應(yīng)用于工業(yè)生產(chǎn)過程,并設(shè)計(jì)出所需要的計(jì)算機(jī)控制系統(tǒng)。隨著微機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本設(shè)計(jì)就是基于單片機(jī)STC89C5溫度控制系統(tǒng)的設(shè)計(jì),通過本次課程實(shí)踐,我們

4、更加的明確了單片機(jī)的廣泛用途和使用方法,以及其工作的原理。(二)課題研究的目的和意義隨著社會(huì)的發(fā)展,溫度的測(cè)量及控制變得越來越重要。本文采用單片機(jī)STC89C52s計(jì)了溫度實(shí)時(shí)測(cè)量及控制系統(tǒng)。單片機(jī)STC89C52能夠根據(jù)溫度傳感器DS18B20所采集的溫度在液晶屏上實(shí)時(shí)顯示,通過控制從而把溫度控制在設(shè)定的范圍之內(nèi)。所有溫度數(shù)據(jù)均通過液晶顯示器LCD顯示出來。系統(tǒng)可以根據(jù)時(shí)鐘存儲(chǔ)相關(guān)的數(shù)據(jù)。通過該課程的學(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)

5、設(shè)計(jì)的框架本課題設(shè)計(jì)的是一種以STC89C52I片機(jī)為主控制單元,以DS18B20為溫度傳感器的溫度控制系統(tǒng)。該控制系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時(shí)間。其主要包括:電源模塊、溫度采集模塊、按鍵處理模塊、實(shí)時(shí)時(shí)鐘模塊、數(shù)據(jù)存儲(chǔ)模塊、LCD顯示模塊、通訊模塊以及單片機(jī)最小系統(tǒng)。電源模塊STC89C52單片機(jī)數(shù)據(jù)存儲(chǔ)模塊圖1系統(tǒng)設(shè)計(jì)框架(二)單片機(jī)最小系統(tǒng)電路在課題設(shè)計(jì)的溫度控制系統(tǒng)設(shè)計(jì)中,控制核心是STC89C5常片機(jī),該單片機(jī)為51系列增強(qiáng)型8位單片機(jī),它有32個(gè)I/O口,片內(nèi)含4KFLASHX藝的程序存儲(chǔ)器,便于用電的方式瞬間擦除和改寫,而且價(jià)格便宜,其外部晶振為12MHz一個(gè)指令

6、周期為1使用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲(chǔ)器選擇模式(2單片機(jī)最小系統(tǒng)(三)單片機(jī)的選型本課題設(shè)計(jì)的溫度控制系統(tǒng)主控制芯片選型為STC89C52I片機(jī),其特點(diǎn)如下:1.STC89C52i1片機(jī)簡(jiǎn)介目前,51系列單片機(jī)在工業(yè)檢測(cè)領(lǐng)域中得到了廣泛的應(yīng)用,因此我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類型的語音接口,構(gòu)成具有合成語音輸出能力的綜合應(yīng)用系統(tǒng),以增強(qiáng)人機(jī)對(duì)話的功能。STC89C5印片機(jī)是深圳宏晶科技有限公司生產(chǎn)的一種單片機(jī),在一小塊芯片上集成了一個(gè)微型計(jì)算機(jī)的各個(gè)組成部分。每一個(gè)單片機(jī)包括:一個(gè)8位的微型處理器CPU一個(gè)512K的片內(nèi)數(shù)據(jù)存儲(chǔ)器

7、RAM4K片內(nèi)程序存儲(chǔ)器;四個(gè)8位并行的I/O接口P0-P3,每個(gè)接口既可以輸入,也可以輸出;兩個(gè)定時(shí)器/記數(shù)器;五個(gè)中斷源的中斷控制系統(tǒng);一個(gè)全雙工UART勺串行I/O口;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ以上各個(gè)部分通過內(nèi)部總線相連接。2.STC89C52i1片機(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)周期為1/6us;在一數(shù)情況下,算術(shù)和邏輯操作發(fā)生在N期間,

8、而內(nèi)部寄存器到寄存器的傳輸發(fā)生在P2期間。對(duì)于單周期指令,當(dāng)指令操作碼讀人指令寄存器時(shí),使從S1P2開始執(zhí)行指令。如果是雙字節(jié)指令,則在同一機(jī)器周期的s4讀人第二字節(jié)。若為單字節(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ī)器周期內(nèi)從程序存儲(chǔ)器中讀人兩個(gè)字節(jié),但Movx指令例外,Movx指令是訪問外部數(shù)據(jù)存儲(chǔ)器的單字節(jié)雙機(jī)器周期指令,在執(zhí)行Movx指令期間,外部數(shù)據(jù)存儲(chǔ)器被訪問且被選通時(shí)跳過兩

9、次取指操作。3.STC89C52單片機(jī)弓I腳介紹STC89C5印片機(jī)的40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O弓I腳。下面按引腳功能分為4個(gè)部分?jǐn)⑹鰝€(gè)引腳的功能。(1)電源引腳Vcc和VssVcc(40腳):接+5V電源正端;Vss(20腳):接+5V電源正端。(2)外接晶振引腳XTAL1和XTAL2XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成采用外部時(shí)鐘時(shí),對(duì)于HMOSi片機(jī),該弓|腳接地;對(duì)于CHOMSi片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):

10、接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOSI片機(jī),該弓|腳作為外部振蕩信號(hào)的輸入端。對(duì)于CHMOS片,該引腳懸空不接。(3)控制信號(hào)或與其它電源復(fù)用引腳控制信號(hào)或與其它電源復(fù)用引腳有RST/VPDALE/P、PSENF口EA/VPP等4種形式。(A) .RST/VPD(9腳):RST即為RESETVPD為備用電源,所以該引腳為單片機(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)

11、為內(nèi)部RAMft電,以保證RAMfr的數(shù)據(jù)不丟失。(B) .ALE/P(30腳):當(dāng)訪問外部存儲(chǔ)器時(shí),ALE(允許地址鎖存信號(hào))以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出現(xiàn)在P0口的低(C) .PSEN(29腳):片外程序存儲(chǔ)器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESNW次有效,以通過數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器期間,PESN1號(hào)將不出現(xiàn)。(D) .EA/Vpp(31腳):EA為訪問外部程序儲(chǔ)器控制信號(hào),低電平有效。當(dāng)EA端保持高電平時(shí),單片機(jī)訪問片內(nèi)程序存儲(chǔ)器4KB(MS-52子系列為8KB)o若超出該范圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器

12、的程序。當(dāng)EA端保持低電平時(shí),無論片內(nèi)有無程序存儲(chǔ)器,均只訪問外部程序存儲(chǔ)器。對(duì)于片內(nèi)含有EPROMJ單片機(jī),在EPRO編程期間,該引腳用于接21V的編程電源Vpp。(4)輸入/輸出(I/O)引腳P0口、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ì)于片內(nèi)含有EPROMS單片機(jī),當(dāng)EPRO端程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),則輸出指令字節(jié)。(B) .P1口(1腳8腳):P1.0

13、P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對(duì)于MCS-52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2EX對(duì)于EPRO褊程和進(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接口且尋址范圍超過256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對(duì)于EPRO褊程和進(jìn)行程序校驗(yàn)時(shí),P2口接收輸入的8位地址。(D) .P3口(10腳17腳):P3.0P3.7統(tǒng)稱為P3口。它為

14、雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見下表表1單片機(jī)P3.0管腳含義引腳第2功能P3.0RXD(用行口輸入端0)P3.1TXD (用行口輸出端)P3.2INTO (部中斷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ǔ)器寫選通信號(hào)輸出端,低電平有效)P3.7RD (部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效)1).單片機(jī)功能多,引腳數(shù)少,因而許多引腳

15、具有第2功能;綜上 所述, MCS- 51 系列單 片機(jī)的 引腳作 用可歸 納為以 下兩點(diǎn):2).單片機(jī)對(duì)外呈3總線形式,由P2、P0口組成16位地址總線;由P0口分時(shí)復(fù)用作為數(shù)據(jù)總線。(四)溫度傳感器電路采用一線制數(shù)字溫度傳感器DS18B2味作為本課題的溫度傳感器。傳感器輸出信號(hào)進(jìn)4.7K的上拉電阻直接接到單片機(jī)的P1.0引腳上。DS18B20溫度傳感器是美國達(dá)拉斯(DALLAS導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20是在經(jīng)過多方面比較和考慮后決定的,主要有

16、以下幾方面的原因:(1)系統(tǒng)的特性:測(cè)溫范圍為-55C+125C,測(cè)溫精度為0.5C;溫度轉(zhuǎn)換精度912位可變,能夠直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式用行輸出;12位精度轉(zhuǎn)換的最大時(shí)間為750mg可以通過數(shù)據(jù)線供電,具有超低功耗工作方式。( 2)系統(tǒng)成本:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展,新型大規(guī)模集成電路功能越來越強(qiáng)大,體積越來越小,而價(jià)格也越來越低。一支DS18B20勺體積與普通三極管相差無幾,價(jià)格只有十元人民幣左右。( 3)系統(tǒng)復(fù)雜度:由于DS18B2配單總線器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線上可以掛接幾十個(gè)DS18B20測(cè)溫時(shí)無需任何外部元件,因此,與模擬傳

17、感器相比,可以大大減少接線的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量。( 4)系統(tǒng)的調(diào)試和維護(hù):由于引線的減少,使得系統(tǒng)接口大為簡(jiǎn)化,給系統(tǒng)的調(diào)試帶來方便。同時(shí)因?yàn)镈S18B201全數(shù)字元器件,故障率很低,抗干擾性強(qiáng),因此,減少了系統(tǒng)的日常維護(hù)工作。DS18B20S度傳感器只有三根外引線:?jiǎn)尉€數(shù)據(jù)傳輸總線端口DQ,外供電源線VDD共用地線GNDDS18B2M兩種供電方式:一種為數(shù)據(jù)線供電方式,此時(shí)VDD接地,它是通過內(nèi)部電容在空閑時(shí)從數(shù)據(jù)線獲取能量,來完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時(shí)間較長(zhǎng)。這種情況下,用單片機(jī)的一個(gè)I/O口來完成對(duì)DS18B20總線的上拉。另一種是外部供電方式(VDD接+

18、5V),相應(yīng)的完成溫度測(cè)量的時(shí)間較短。在本設(shè)計(jì)中采用外部供電方式實(shí)現(xiàn)DS18B20專感器與單片機(jī)的連接,具接口電路如圖4所示。圖4溫度傳感器接口(五)系統(tǒng)電源電路的設(shè)計(jì)本系統(tǒng)采用電源穩(wěn)壓芯片是LM2596該開關(guān)電壓調(diào)節(jié)器是降壓型電源管理單片集成電路,能夠輸出3A勺驅(qū)動(dòng)電流,輸入電壓是+5v,輸入電壓是+24v,同時(shí)具有很好的線性和負(fù)載調(diào)節(jié)特性。該器件內(nèi)部集成頻率補(bǔ)償和固定頻率發(fā)生器,開關(guān)頻率為150KHz與低頻開關(guān)調(diào)節(jié)器相比較,可以使用更小規(guī)格的濾波元件。該器件還有其他一些特點(diǎn):在特定的輸入電壓和輸出負(fù)載的條件下,輸出電壓的誤差可以保證在土 4%勺范圍內(nèi),振蕩頻率誤差在土 15%勺范圍內(nèi);可以

19、用僅80仙A的待機(jī)電流,實(shí)現(xiàn)外部斷電;具有自我保護(hù)電路(一個(gè)兩級(jí)降頻限流保護(hù)和一個(gè)在異常情況下斷電的過溫完全保護(hù)電路)在該溫度控制系統(tǒng)中,具電源電路設(shè)計(jì)如下圖10所示DS1SB202卬FEETA:KP6KE5Ag g oinpuT o o口 2051 小圖5系統(tǒng)電源模塊(六)LCD顯示電路本課題設(shè)計(jì)的溫度控制系統(tǒng)是采用液晶屏128*64作為顯示模塊,具接口原理圖如下圖6所示:(七)串口通訊電路本課題設(shè)計(jì)的通訊采用的是常見的串口通訊,協(xié)議轉(zhuǎn)換芯片是采用MAX232A其接口原理圖如下圖7所示:CllC1+標(biāo)-cTcTT2OUTE0)Count-;Count=Coun;while(Count0)Co

20、unt-;/復(fù)位DS18B20voidDS1820_Reset(void)TMDAT=0;DS1820_DelayCount(412);TMDAT=1;DS1820_DelayCount(16);/等待DS18B2g答unsignedcharDS1820_Answer(void)dataunsignedinti;dataunsignedcharj;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);elsej-;i=0xf

21、fff;DS1820_DelayCount(16);return(done_return);/等待DS18B2g答/讀取位bitDS1820_Readbit(void)datainti=0;bitdat;TMDAT=0;i+;i+;i+;i+;TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;dat=TMDAT;/DS1820_DelayCount(8);DS1820_DelayCount(32);returndat;/讀取字節(jié)unsignedcharDS1820_Readbyte(void)dataunsignedchari,j,dat=0;for(i=1;i=8;i+)j=D

22、S1820_Readbit();dat=(j1);returndat;/寫一個(gè)字節(jié)voidDS1820_Writebyte(unsignedchardat)datasignedchari=0;dataunsignedcharj;bittestb;for(j=1;j1;if(testb)TMDAT=0;i+;i+;i+;i+;i+;i+;i+;i+;TMDAT=1;/DS1820_DelayCount(8);DS1820_DelayCount(32);elseTMDAT=0;/DS1820_DelayCount(8);DS1820_DelayCount(32);TMDAT=1;i+;i+;i+;

23、i+;i+;i+;i+;i+;/讀操作開始unsignedcharDS1820_StartTem(void)EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(aban_return);/DS1820_Delayms(1);DS1820_Delayms(4);DS1820_Writebyte(0xcc);/DS1820_Writebyte(0x55);/for(i=0;i8;i+)/DS1820_Writebyte(DS1820_tempi);DS1820_Writebyte(0x44);EA=Ea;return(do

24、ne_return);/讀所有傳感器intDS1820_ReadTem(void)dataunsignedchara,b;datainty3;datafloaty4;dataunsignedchari;EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(0xffff);DS1820_Delayms(4);DS1820_Writebyte(0xcc);/跳過匹配傳感器/DS1820_Writebyte(0x55);/匹配傳感器/for(i=0;i8;i+)/DS1820_Writebyte(run_inf.system_

25、index.DS1820_tempi);讀取溫度DS1820_Writebyte(0xbe);/for(i=0;i9;i+)run_inf.system_index.DS1820_tempi=DS1820_Readbyte();if(CRC(9)!=0)EA=1;return(0xffff);/計(jì)算CRCa=run_inf.system_index.DS1820_temp0;b=run_inf.system_index.DS1820_temp1;DS1820_Reset();y3=(b0;i-)rtc_io=temp_0;/*相當(dāng)于匯編中的RRC*/rtc_sc=1;rtc_sc=0;temp

26、=temp1;/功能:從DS1302實(shí)取IByte數(shù)據(jù)unsignedcharuc_RTOutputByte(void)unsignedchari;rtc_io=1;for(i=8;i0;i-)temp=temp1;/*相當(dāng)于匯編中的RRC*/temp_7=rtc_io;rtc_sc=1;rtc_sc=0;return(temp);功能:往DS1302寫入數(shù)據(jù)voidwrite1302(unsignedcharucAddr,unsignedcharucDa)bitea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_

27、rs_bit;v_RTInputByte(ucAddr);/*地址,命令*/v_RTInputByte(ucDa);/*寫1Byte數(shù)據(jù)*/rtc_sc=1;rtc_rs_port&=(rtc_rs_bit);EA=ea;/功能:讀取DS1302某地址的數(shù)據(jù)unsignedcharread1302(unsignedcharucAddr)unsignedcharucDa;bitea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr);/*地址,命令*/ucDa=uc

28、_RTOutputByte();/*讀1Byte數(shù)據(jù)*/rtc_sc=1;rtc_rs_port&=(rtc_rs_bit);EA=ea;return(ucDa);/功能:設(shè)置初始時(shí)間voidSet1302(pTime_Stime_temp)unsignedchari=0x80;whte1302(0x8e,0x00);/*控制命令,WP=0,寫操作*/write1302(i,time_temp-sec);i+=2;write1302(i,time_temp-min);i+=2;write1302(i,time_temp-hou);i+=2;write1302(i,time_temp-day);

29、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,寫保護(hù)*/功能:讀取DS1302當(dāng)前時(shí)間voidget1302(void)unsignedchari,time_bcd_temp6;unsignedcharucAddr=0x81;for(i=0;i7;i+)格式為 : 秒 分 時(shí) 日 月time_bcd_tempi=read1302(ucAddr);/*星期年*/ucAddr+=2;sec=tim

30、e_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é)讀出程序voidds1302_read(unsignedchar*ptr,unsignedcharaddr)unsignedchari;addr=addr*2+0x0c1;for(i=0;i6;i+)*(ptr+i)=read1302(addr);addr+=2;/連續(xù)6字節(jié)寫入程序voidds1302_write(unsignedchar*ptr,unsignedcha

31、raddr)unsignedchari;addr=addr*2+0x0c0;write1302(0x8e,0x00);/寫保護(hù)置低(關(guān)閉)for(i=0;i6;i+)write1302(addr,*(ptr+i);addr+=2;write1302(0x8e,0x80);/寫保護(hù)置高(打開)voidStart1302(void)unsignedchartemp;bitea;ea=EA;EA=0;temp=read1302(0x81);temp&=0x7f;whte1302(0x8e,0x00);/*控制命令,WP=0,寫操作*/write1302(0x80,temp);write1302(0x

32、90,0);write1302(0x8e,0x80);/*控制命令,WP=1,寫保護(hù)*/EA=ea;/DS1302驅(qū)動(dòng)程序結(jié)束三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序/ATC256引腳定義sbitepr_sd=P3A3;sbitepr_sc=P3A2;bdataunsignedchartemp1;sbittemp1_0=temp1A0;sbittemp1_7=temp1A7;/存儲(chǔ)器驅(qū)動(dòng)程序開始voidnoack(void)epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;voidask()unsignedchari=0xff;epr_sd=1;epr_sc=1;epr

33、_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;voidstop()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;/24c256startvoidstart()epr_sc=1;epr_sd=1;epr_sd=1;epr_sd=0;epr_sd=0;epr_sc=0;voidwrby(unsignedcharx)unsignedchari;ep

34、r_sc=0;temp1=x;for(i=0;i8;i+)/從高位開始傳送數(shù)據(jù)epr_sd=temp1_7;temp1=temp11;/左移一位epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;/24c256rdbyunsignedcharrdby()/從高位開始讀出數(shù)據(jù)unsignedchari;epr_sd=1;epr_sd=1;epr_sd=1;for(i=0;i8;i+)epr_sc=1;epr_sc=1;temp1=temp11;temp1_0=epr_sd;epr_sc=0;epr_sc=0;epr_sc=0;return(temp1);/2

35、4c256waddrvoidwaddr()start();wrby(0xa0);ask();/24c256raddrunsignedcharraddr()start();wrby(0xa1);ask();temp1=rdby();noack();stop();return(temp1);voidw16addr(unsignedintx)unionunsignedintint_type;unsignedcharchar_type1;u_int_char;unsignedm,n;u_int__type=x;/將x的高位賦給m低位賦給nm=u_int_char.char_type0;

36、n=u_int_char.char_type1;wrby(m);ask();wrby(n);ask();/延時(shí)voidd5ms()unsignedchara,b;for(a=0;a=15;a+)for(b=0;b00H;0.0625*2=0.125-01H;0.0625*3=0.1875-01H;0.0625*4=0.25-02H;0.0625*5=0.3125-03H;以此類推;程序名稱:HtoB;功能:十六進(jìn)制轉(zhuǎn)BCD;入口參數(shù):A;出口參數(shù):R7HtoB:MOVB,#064H;100DIVAB;a/100MOVR7,A;MOVA,#0AHXCHA,BDIVABSWAPAORLA,BRET

37、;程序名稱:INIT_TEMP;功能:初始化DS18B20,確定DS18B20是否是存在的;入口參數(shù):無;出口參數(shù):FLAGINIT_TEMP:SETBP_DS18B20NOPCLRP_DS18B20;主機(jī)發(fā)出延時(shí)537微秒的復(fù)位低脈沖MOVR0,#6BHMOVR1,#04HTSR1:DJNZR0,$MOV40,#6BHDJNZR1,TSR1SETBP_DS18B20;然后拉高數(shù)據(jù)線,釋放總線進(jìn)入接受狀態(tài)NOPNOPNOPMOVR0,#32HTSR2:JNBP_DS18B20,TSR3;等待DS18B20回應(yīng)DJNZR0,TSR2LJMPTSR4;延時(shí)TSR3:SETBFLAG;置標(biāo)志位,表不

38、DS1820存在LJMPTSR5TSR4:CLRFLAG;清標(biāo)志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BHTSR6:DJNZR0,TSR6;時(shí)序要求延時(shí)一段時(shí)間TSR7:SETBP_DS18B20RET;程序名稱:READ_TEMP;功能:讀取DS18B20的數(shù)據(jù);入口參數(shù):TEMPERATURE_,LTEMPERATURE_H;出口參數(shù):無READ_TEMP:SETBP_DS18B20LCALLINIT_TEMP;先復(fù)位DS18B20JBFLAG,TSS2RET;判斷DS1820是否存在?若DS18B20不存在則返回TSS2:MOVA,#0CCH;LCALLWRITE_18B20MOVA,#44H;跳過ROM配發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_18B20LCALLDISPLAY;等待AD轉(zhuǎn)換結(jié)束,12位的話750微秒LCALLINIT_TEMP;MOVA,#0CCH;準(zhǔn)備讀溫度前先復(fù)位跳過ROM配LCALLWRITE_18B20MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_18B20LCALLREAD_18B20;RET將讀出的溫度數(shù)據(jù)保存到35H/36H程序名稱:WRITE_18B20;功能:將A保存的數(shù)值寫入DS1820中,;入口參數(shù):A寄存器;出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論