數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)_第1頁
數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)_第2頁
數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)_第3頁
數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)_第4頁
數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE..數(shù)碼管顯示的溫控電動(dòng)機(jī)設(shè)計(jì)目錄TOC\o"1-4"\h\z\u1緒論11.1課題研究的內(nèi)容及要求11.2功能的實(shí)現(xiàn)12單片機(jī)簡(jiǎn)介22.1單片機(jī)的發(fā)展概況22.2單片機(jī)的定義33Keil軟件和Proteus軟件簡(jiǎn)介43.1Keil軟件簡(jiǎn)介33.1.1Keil軟件系統(tǒng)概述33.1.2KeilC51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)43.2Proteus軟件簡(jiǎn)介53.2.1Proteus軟件的構(gòu)成53.2.2Proteus的主要特征54DS18B20的軟件設(shè)計(jì)65數(shù)碼管顯示的溫控電動(dòng)機(jī)65.1設(shè)計(jì)要求65.2設(shè)計(jì)過程65.2.1設(shè)計(jì)程序及編寫65.2.2電路繪制及調(diào)試96結(jié)論14附錄15參考文獻(xiàn)24致謝25..1緒論1.1課題研究的內(nèi)容及要求我本次的課程設(shè)計(jì)的題目是數(shù)碼管顯示的溫控電動(dòng)機(jī)。它是多種技術(shù)知識(shí)的結(jié)合,不僅涉及到軟件的設(shè)計(jì),而且還將應(yīng)用電子技術(shù)與單片機(jī)的應(yīng)用技術(shù)有機(jī)結(jié)合,使其具有精度高、測(cè)量誤差小、穩(wěn)定性好等特點(diǎn)。電路板的設(shè)計(jì)技術(shù)和機(jī)械加工工藝的巧妙結(jié)合,使其具備了顯示直觀、體積做工精細(xì)等特點(diǎn),能為它在其它領(lǐng)域的廣泛應(yīng)用打下良好的基礎(chǔ)。因?yàn)榻?jīng)過我們調(diào)查發(fā)現(xiàn)許多應(yīng)用場(chǎng)合原來就有測(cè)溫控溫儀器,只是隨著對(duì)生產(chǎn)質(zhì)量與生產(chǎn)需要的要求在不斷地提高,以往的那些測(cè)溫控溫的儀器根本不能滿足現(xiàn)在的要求。其中,有部分應(yīng)用場(chǎng)合對(duì)精度提高的幅度要求也不是特別高。因此,為了提高性價(jià)比,我所設(shè)計(jì)的系統(tǒng)提出在原有系統(tǒng)的基礎(chǔ)上進(jìn)行一些簡(jiǎn)單的改良,以此為出發(fā)點(diǎn),主要闡述的是一種數(shù)碼管顯示的溫控電動(dòng)機(jī)的實(shí)現(xiàn)方法?,F(xiàn)代各種家用電器以及生產(chǎn)機(jī)械都廣泛應(yīng)用電動(dòng)機(jī)來驅(qū)動(dòng),電動(dòng)機(jī)的作用是將電能轉(zhuǎn)換為機(jī)械能,但是傳統(tǒng)的電動(dòng)機(jī)只是機(jī)械的按照其工作原理來工作,需要依靠人手動(dòng)操作電動(dòng)機(jī)的運(yùn)行、停止、反向等操作,這樣需要消耗大量的人力資源,在操作過程中也有很多不便,有時(shí)會(huì)因?yàn)橥饨绛h(huán)境和溫度的因素使電動(dòng)機(jī)造成不必要的損壞。所以,為了減少這種不必要的損失,在電動(dòng)機(jī)上添加溫控裝置,可以通過溫控裝置來監(jiān)控當(dāng)前溫度,當(dāng)溫度達(dá)到要求的溫度時(shí),電動(dòng)機(jī)產(chǎn)生相應(yīng)的操作,以達(dá)到工程機(jī)械或家用電器的功能要求,而添加數(shù)碼管可以更加直觀的監(jiān)測(cè)當(dāng)前溫度。1.2功能的實(shí)現(xiàn)本設(shè)計(jì)就是從改善這一弊端出發(fā),以AT89C51單片機(jī)為核心,使用4位集成式數(shù)碼管顯示當(dāng)前溫度,使用DS18B20溫度傳感器來設(shè)計(jì)一個(gè)用4位集成式數(shù)碼管顯示當(dāng)前溫度,當(dāng)溫度在范圍之外時(shí),使直流電動(dòng)機(jī)開始旋轉(zhuǎn)的程序并仿真調(diào)試,驗(yàn)證該設(shè)計(jì)可行性。2單片機(jī)簡(jiǎn)介2.1單片機(jī)的發(fā)展概況1970年微型計(jì)算機(jī)研制成功之后,隨之即出現(xiàn)了單片機(jī)〔即單片微型計(jì)算機(jī)—美國(guó)Intel公司1971年生產(chǎn)的4位單片機(jī)4004和1972年生產(chǎn)的雛形8位單片機(jī)8008,這也算是單片機(jī)的第一次公眾亮相。1976年Intel公司首先推出能稱為單片機(jī)的MCS-48系列單片微型計(jì)算機(jī)。它以體積小、功能全、價(jià)格低等特點(diǎn),贏得了廣泛的應(yīng)用,同時(shí)一些與單片機(jī)有關(guān)公司都爭(zhēng)相推出各自的單片機(jī)。1978年下半年Motorola公司推出M6800系列單片機(jī),Zilog公司相繼推出Z8單片機(jī)系列。1980年Intel公司在MCS-48系列基礎(chǔ)上又推出高性能的MCS-51系列單片機(jī)。這類單片機(jī)均帶有串行I/O口,定時(shí)器/計(jì)數(shù)器為16位,片內(nèi)存儲(chǔ)容量〔RAM,ROM都相應(yīng)增大,并有優(yōu)先級(jí)中斷處理功能,單片機(jī)的功能、尋址范圍都比早期的擴(kuò)大了,它們是當(dāng)時(shí)單片機(jī)應(yīng)用的主流產(chǎn)品。1982年Mostek公司和Intel公司先后又推出了性能更高的16位單片機(jī)MK68200和MCS-96系列,NS公司和NEC公司也分別在原有8位單片機(jī)的基礎(chǔ)上推出了16位單片機(jī)HPC16040和μPD783××系列。1987年Intel公司又宣布了性能比8096高兩倍的CMOS型80C196,1988年推出帶EPROM的87C196單片機(jī)。由于16位單片機(jī)推出的時(shí)間較遲、價(jià)格昂貴、開發(fā)設(shè)備有限等多種原因,至今還未得到廣泛應(yīng)用。而8位單片機(jī)已能滿足大部分應(yīng)用的需要,因此,在推出16位單片機(jī)的同時(shí),高性能的新型8位單片機(jī)也不斷問世??v觀這短短的20年,經(jīng)歷了4次更新?lián)Q代,單片機(jī)正朝著集成化、多功能、多選擇、高速度、低功耗、擴(kuò)大存儲(chǔ)容量和加強(qiáng)I/O功能及結(jié)構(gòu)兼容的方向發(fā)展。新一代的80C51系列單片機(jī)除了上述的結(jié)構(gòu)特性外,其最主要的技特點(diǎn)是向外部接口電路擴(kuò)展,以實(shí)現(xiàn)微控制器〔microcontroller完善的控制功能為己任。這一系列單片機(jī)為外部提供了相當(dāng)完善的總線結(jié)構(gòu),為系統(tǒng)的擴(kuò)展和配置打下了良好的基礎(chǔ)。由于80C51系列單片機(jī)所具有的一系列優(yōu)越的特點(diǎn),獲得廣泛使用指日可待。2.2單片機(jī)的定義單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能〔可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。3Keil軟件和Proteus軟件簡(jiǎn)介3.1Keil軟件簡(jiǎn)介單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境〔uVision將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選〔目前在國(guó)內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。3.1.1Keil軟件系統(tǒng)概述KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。下面詳細(xì)介紹KeilC51開發(fā)系統(tǒng)各部分功能和使用。3.1.2KeilC51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu)中uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境<IDE>,可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件<.OBJ>。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件<.ABS>。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng):<1>仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。<2>仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。<3>仿真芯片的31腳〔/EA已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM〔其CPU的/EA引腳接至低電平的目標(biāo)系統(tǒng)中使用。3.2Proteus軟件簡(jiǎn)介Proteus軟件是來自英國(guó)Labcenterelectronics公司的EDA工具軟件,Proteus軟件有近20年的歷史,在全球廣泛使用。它除了具有和其它EDA工具一樣的原理布圖、PCB自動(dòng)或人工布線及電路仿真的功能外,其革命性的功能是,它的電路仿真是交互的,可視化的,針對(duì)微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,可以測(cè)量仿真的波形及記錄仿真數(shù)據(jù)。在不需要硬件設(shè)備投入的情況下,Proteus軟件可以建立完整的電子學(xué)習(xí)設(shè)計(jì)開發(fā)環(huán)境,縮短研發(fā)周期,并且降低開發(fā)成本。3.2.1Proteus軟件的構(gòu)成Proteus組合了高級(jí)原理布圖、混合模式SPICE仿真,PCB設(shè)計(jì)以及自動(dòng)布線來實(shí)現(xiàn)一個(gè)完整的電子設(shè)計(jì)系統(tǒng)。此系統(tǒng)受益于多年來的持續(xù)開發(fā),被《電子世界》在其對(duì)PCB設(shè)計(jì)系統(tǒng)的比較文章中評(píng)為最好產(chǎn)品—"TheRoutetoPCBCAD"。Proteus產(chǎn)品系列也包含了我們革命性的VSM技術(shù),用戶可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。用戶甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤、RS232終端等動(dòng)態(tài)外設(shè)模型來對(duì)設(shè)計(jì)進(jìn)行交互仿真。其功能模塊:—個(gè)易用而又功能強(qiáng)大的ISIS原理布圖工具;PROSPICE混合模型SPICE仿真;ARESPCB設(shè)計(jì)。PROSPICE仿真器的一個(gè)擴(kuò)展PROTEUSVSM:便于包括所有相關(guān)的器件的基于微處理器設(shè)計(jì)的協(xié)同仿真。此外,還可以結(jié)合微控制器軟件使用動(dòng)態(tài)的鍵盤,開關(guān),按鈕,LED甚至LCD顯示CPU模型。3.2.2Proteus的主要特征<1>支持許多通用的微控制器,如ARM、PIC、AVR、以及8051。<2>交互的裝置模型包括:LED和LCD顯示、RS232終端、通用鍵盤。<3>強(qiáng)大的調(diào)試工具,包括寄存器和存儲(chǔ)器、斷點(diǎn)和單步模式。<4>IARC-SPY和KeiluVision2等開發(fā)工具的源層調(diào)試。<5>應(yīng)用特殊模型的DLL界面-提供有關(guān)元件庫(kù)的全部文件。4DS18B20的軟件設(shè)計(jì)4.1單片機(jī)實(shí)現(xiàn)溫度轉(zhuǎn)換流程圖單片機(jī)實(shí)現(xiàn)溫度轉(zhuǎn)換讀取溫度數(shù)值程序的流程如圖4.1所示開始開始初始化DS18B20初始化DS18B20否應(yīng)答脈沖否應(yīng)答脈沖發(fā)起skiprom的命令發(fā)起skiprom的命令發(fā)起ConvertT的命令發(fā)起ConvertT的命令延時(shí)1s等待溫度轉(zhuǎn)換完成延時(shí)1s等待溫度轉(zhuǎn)換完成初始化DS18B20初始化DS18B20否應(yīng)答脈沖否應(yīng)答脈沖是是發(fā)起readscratchpad命令發(fā)起readscratchpad命令讀取第一二字節(jié)即為溫度數(shù)據(jù)讀取第一二字節(jié)即為溫度數(shù)據(jù)是是5數(shù)碼管顯示的溫控電動(dòng)機(jī)5.1設(shè)計(jì)要求〔1使用AT89C51單片機(jī)為核心,使用4位集成式數(shù)碼管顯示當(dāng)前溫度,溫度傳感器使用DS18B20?!?用4位集成式數(shù)碼管顯示當(dāng)前溫度,當(dāng)溫度在范圍之外時(shí),直流電動(dòng)機(jī)開始旋轉(zhuǎn)。5.2設(shè)計(jì)過程5.2.1設(shè)計(jì)程序及編寫先建立一個(gè)新的工程,保存到一個(gè)位置,如圖5.1所示:圖5.1新建工程接下來會(huì)彈出如下對(duì)話框,選擇處理器,這里選擇AT89S51或AT89S52。圖5.2選擇處理器接下來對(duì)話框提示是否把StartupCode加入到工程,選否即可。工程就建立完了。圖5.3對(duì)話框提示接下來可以新建一個(gè)文檔用來編輯程序。圖5.4新建文檔將數(shù)碼管顯示的溫控電動(dòng)機(jī)的程序輸入到新建文檔中,編輯完存為.asm〔匯編源文件或.h〔C語言頭文件或.c〔C語言實(shí)現(xiàn)文件即可。圖5.5編輯程序接下來把保存的.asm,.c或.h文件加入到工程里即可。如圖5.6所示:圖5.6將文件加入工程下面進(jìn)行工程配置。點(diǎn)擊Project菜單下的OptionsforTarget‘Target1’。在彈出對(duì)話框的Target項(xiàng)里輸入晶振為12M,然后勾上UseOn-chipROM。圖5.7工程配置〔1在Output項(xiàng)里勾上CreateHEXFile。這就是產(chǎn)生要燒寫的.hex文件。圖5.8工程配置〔2然后點(diǎn)擊Project菜單里的buildtarget或Rebuildalltargetfiles以編譯要燒寫的.hex文件。編譯完會(huì)在下面OutputWindow里顯示編譯成功與否的信息和錯(cuò)誤提示。圖5.9程序編譯5.2.2電路繪制及調(diào)試添加元件,單擊"P"按鈕,在對(duì)話框的KEYWORDS中輸入AT89C51,得到以下結(jié)果:圖5.10查找元件單擊OK,關(guān)閉對(duì)話框,這時(shí)元件列表中列出AT89C51,用同樣的方法找出其他元件。如圖5.11所示:圖5.11所需元件放置元件,在元件列表中左鍵選取AT89C51,在原理圖編輯窗口中單擊左鍵,這樣AT89C51就被放到原理圖編輯窗口中了,用同樣的方法放置其他元件,如圖5.12所示:圖5.12放置元件按照數(shù)碼管顯示的溫控電動(dòng)機(jī)的原理連接電路,如圖5.13所示:圖5.13電路原理圖完成控制電路的繪制,將Proteus與Keil開發(fā)工具結(jié)合,搭建單片機(jī)開發(fā)平臺(tái),實(shí)現(xiàn)二者的聯(lián)調(diào),然后仿真出控制電路,如圖5.14所示:圖5.13電路原理圖6結(jié)論本課程設(shè)計(jì)闡述了以AT89C51單片機(jī)為核心,使用DS18B20溫度傳感器以及4位集成式數(shù)碼管顯示溫度的數(shù)碼管顯示的溫控電動(dòng)機(jī)。實(shí)現(xiàn)了通過數(shù)碼管監(jiān)測(cè)溫度,當(dāng)溫度在范圍之外時(shí),直流電動(dòng)機(jī)開始旋轉(zhuǎn)的要求。本設(shè)計(jì)著重運(yùn)用單片機(jī)原理設(shè)計(jì)數(shù)碼管顯示的溫控電動(dòng)機(jī)的程序,并用Keil軟件編寫程序,用Proteus軟件進(jìn)行控制電路的仿真操作。在課程設(shè)計(jì)過程中,遇到一些問題,例如:從網(wǎng)上查找到相關(guān)程序和本設(shè)計(jì)題目一樣,但是用到這個(gè)程序是出現(xiàn)錯(cuò)誤,自己查找不出錯(cuò)誤所在,最后經(jīng)過問老師得到了解決。設(shè)計(jì)過程中由于對(duì)單片機(jī)理論知識(shí)的欠缺,使得對(duì)一些指令不是很了解,導(dǎo)致程序編寫錯(cuò)誤,期間花費(fèi)了大量時(shí)間找資料和同學(xué)探討調(diào)試,最終編寫出正確的程序;此外,由于初次接觸Proteus軟件,對(duì)其使用不是很熟悉,又查閱了大量該軟件的資料和使用教程來完成控制電路的繪制;在進(jìn)行控制電路仿真過程中最重要的就是Keil軟件和Proteus軟件的聯(lián)調(diào),對(duì)此我也查閱了很多相關(guān)資料,以保證該課程設(shè)計(jì)的正確性和可行性。課程設(shè)計(jì)雖然結(jié)束了,但我們的學(xué)習(xí)還沒有結(jié)束,只有不斷學(xué)習(xí),用知識(shí)充實(shí)自己的頭腦,才能在未來社會(huì)有一席之地,才能為社會(huì)的發(fā)展做出應(yīng)有的貢獻(xiàn),一句話:學(xué)無止境。附錄#include<AT89X52.h>#include"DS18B20.h"#defineuintunsignedint#defineucharunsignedchar//宏定義#defineSETP3_1//定義調(diào)整鍵#defineDECP3_2//定義減少鍵#defineADDP3_3//定義增加鍵#defineBEEPP3_7//定義蜂鳴器#defineJDQP3_5bitshanshuo_st;//閃爍間隔標(biāo)志bitbeep_st;//蜂鳴器間隔標(biāo)志sbitDIAN=P2^7;//小數(shù)點(diǎn)ucharx=0;//計(jì)數(shù)器signedcharm;//溫度值全局變量ucharn;//溫度值全局變量ucharset_st=0;//狀態(tài)標(biāo)志signedcharshangxian=70;//上限報(bào)警溫度,默認(rèn)值為70signedcharxiaxian=0;//下限報(bào)警溫度,默認(rèn)值為0ucharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*****延時(shí)子程序*****/voidDelay<uintnum>{while<--num>;}voidshortdelay<void>//誤差0us{unsignedchara,b,c;for<c=165;c>0;c-->for<b=100;b>0;b-->for<a=150;a>0;a-->;_nop_;//ifKeil,requireuseintrins.h_nop_;//ifKeil,requireuseintrins.h}/*****初始化定時(shí)器0*****/voidInitTimer<void>{TMOD=0x1;TH0=0x3c;TL0=0xb0;//50ms〔晶振12M}/*****定時(shí)器0中斷服務(wù)程序*****/voidtimer0<void>interrupt1{TH0=0x3c;TL0=0xb0;x++;}/*****外部中斷0服務(wù)程序*****/voidint0<void>interrupt0{EX0=0;//關(guān)外部中斷0if<DEC==0&&set_st==1>{shangxian--;if<shangxian<xiaxian>shangxian=xiaxian;}elseif<DEC==0&&set_st==2>{xiaxian--;if<xiaxian<0>xiaxian=0;}}/*****外部中斷1服務(wù)程序*****/voidint1<void>interrupt2{EX1=0;//關(guān)外部中斷1if<ADD==0&&set_st==1>{shangxian++;if<shangxian>99>shangxian=99;}elseif<ADD==0&&set_st==2>{xiaxian++;if<xiaxian>shangxian>xiaxian=shangxian;}}/*****讀取溫度*****/voidcheck_wendu<void>{uinta,b,c;c=ReadTemperature<>-5;//獲取溫度值并減去DS18B20的溫漂誤差a=c/100;//計(jì)算得到十位數(shù)字b=c/10-a*10;//計(jì)算得到個(gè)位數(shù)字m=c/10;//計(jì)算得到整數(shù)位n=c-a*100-b*10;//計(jì)算得到小數(shù)位if<m<0>{m=0;n=0;}//設(shè)置溫度顯示上限if<m>99>{m=99;n=9;}//設(shè)置溫度顯示上限}/*****顯示開機(jī)初始化等待畫面*****/Disp_init<>{P2=0xbf;//顯示-P1=0xf7;Delay<200>;P1=0xfb;Delay<200>;P1=0xfd;Delay<200>;P1=0xfe;Delay<200>;P1=0xff;//關(guān)閉顯示}/*****顯示溫度子程序*****/Disp_Temperature<>//顯示溫度{P2=0xc6;//顯示CP1=0xf7;Delay<300>;P2=LEDData[n];//顯示個(gè)位P1=0xfb;Delay<300>;P2=LEDData[m%10];//顯示十位DIAN=0;//顯示小數(shù)點(diǎn)P1=0xfd;Delay<300>;P2=LEDData[m/10];//顯示百位P1=0xfe;Delay<300>;P1=0xff;//關(guān)閉顯示}/*****顯示報(bào)警溫度子程序*****/Disp_alarm<ucharbaojing>{P2=0xc6;//顯示CP1=0xf7;Delay<200>;P2=LEDData[baojing%10];//顯示十位P1=0xfb;Delay<200>;P2=LEDData[baojing/10];//顯示百位P1=0xfd;Delay<200>;if<set_st==1>P2=0x89;elseif<set_st==2>P2=0xc7;//上限H、下限L標(biāo)示P1=0xfe;Delay<200>;P1=0xff;//關(guān)閉顯示}/*****報(bào)警子程序*****/voidAlarm<>{if<x>=10>{beep_st=~beep_st;x=0;}if<<m>=shangxian&&beep_st==1>||<m<xiaxian&&beep_st==1>>BEEP=0;elseBEEP=1;if<<m>=shangxian>||<m<xiaxian>>{shortdelay<>;JDQ=0;}elseJDQ=1;}/*****主函數(shù)*****/voidmain<void>{uintz;InitTimer<>;//初始化定時(shí)器EA=1;//全局中斷開關(guān)TR0=1;ET0=1;//開啟定時(shí)器0IT0=1;IT1=1;check_wendu<>;check_wendu<>;for<z=0;z<300;z++>{Disp_init<>;}while<1>{if<SET==0>{Delay<2000>;do{}while<SET==0>;set_st++;x=0;shanshuo_st=1;if<set_st>2>set_st=0;}if<set_st==0>{EX0=0;//關(guān)閉外部中斷0EX1=0;//關(guān)閉外部中斷1check_wendu<>;Disp_Temperature<>;Alarm<>;//報(bào)警檢測(cè)}elseif<set_st==1>{BEEP=1;//關(guān)閉蜂鳴器EX0=1;//開啟外部中斷0EX1=1;//開啟外部中斷1if<x>=10>{shanshuo_st=~shanshuo_st;x=0;}if<shanshuo_st>{Disp_alarm<shangxian>;}}elseif<set_st==2>{BEEP=1;//關(guān)閉蜂鳴器EX0=1;//開啟外部中斷0EX1=1;//開啟外部中斷1if<x>=10>{shanshuo_st=~shanshuo_st;x=0;}if<shanshuo_st>{Disp_alarm<xiaxian>;}}}}/*****END*****/DS18B20.h:#include<AT89X52.h>#defineDQP3_6//定義DS18B20總線I/O/*****延時(shí)子程序*****/voidDelay_DS18B20<intnum>{while<num-->;}/*****初始化DS18B20*****/voidInit_DS18B20<void>{unsignedcharx=0;DQ=1;//DQ復(fù)位Delay_DS18B20<8>;//稍做延時(shí)DQ=0;//單片機(jī)將DQ拉低Delay_DS18B20<80>;//精確延時(shí),大于480usDQ=1;//拉高總線Delay_DS18B20<14>;x=DQ;//稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗Delay_DS18B20<20>;}/*****讀一個(gè)字節(jié)*****/unsignedcharReadOneChar<void>{unsignedchari=0;unsignedchardat=0;for<i=8;i>0;i-->{DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if<DQ>dat|=0x80;

溫馨提示

  • 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. 人人文庫(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)論