版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計題目名稱單回路溫度控制器設(shè)計學(xué)生學(xué)院信息工程學(xué)院專業(yè)班級11級計測(2)班學(xué)號學(xué)生姓名指導(dǎo)教師2021年1月19日廣東工業(yè)大學(xué)課程設(shè)計任務(wù)書題目名稱單回路溫度控制器設(shè)計學(xué)生學(xué)院信息工程學(xué)院專業(yè)班級計算機測控11〔1〕〔2〕姓名學(xué)號一、課程設(shè)計內(nèi)容1.功能要求:溫度測量范圍0~100℃,精度1%,顯示分辨率0.1℃,使用鍵盤可設(shè)置溫度上限,當(dāng)超限時蜂鳴器報警。設(shè)置數(shù)據(jù)應(yīng)能保存,溫度控制范圍40~60℃,精度1℃。2.硬件要求:使用熱敏電阻傳感器或數(shù)字溫度傳感器、LED顯示器、按鍵3個〔設(shè)置、+、-〕、蜂鳴器等。上述內(nèi)容為根本要求,可按照自己的設(shè)計方案增加功能使之更為完善,并對系統(tǒng)功能進展詳細說明。二、課程設(shè)計要求1.明確課程設(shè)計任務(wù),復(fù)習(xí)與查閱有關(guān)文獻、資料。2.課程設(shè)計任務(wù)包括總體方案設(shè)計,電路設(shè)計、計算及仿真等;要求使用計算機繪圖,畫出詳細的電路原理圖,列出元器件清單;電路圖要求工整、清楚、正確,符合工程設(shè)計標(biāo)準,并標(biāo)明元器件管腳。3.軟件編程必須有流程圖,程序必須加注釋,各程序段的開場要注明該段程序的功能和作用。4.按要求對設(shè)計進展簡要說明,討論、分析與總結(jié),提交設(shè)計報告。三、課程設(shè)計應(yīng)完成的工作1.總體方案設(shè)計;2.電路原理圖設(shè)計;3.電路工作原理分析;4.電路參數(shù)計算、分析與仿真;5.元器件選型,電路制作;6.系統(tǒng)軟件設(shè)計;7.系統(tǒng)軟硬件調(diào)試、結(jié)果分析;8.撰寫設(shè)計報告;四、課程設(shè)計進程安排序號設(shè)計各階段內(nèi)容地點起止日期1布置設(shè)計安排;講授設(shè)計內(nèi)容;說明設(shè)計要求〔2小時〕待定2方案設(shè)計、分析、比擬,方案論證〔1天〕實驗1號樓412室3確定方案和電路參數(shù),理論計算與分析〔1天〕實驗1號樓412室4計算機仿真〔1天〕實驗1號樓412室5繪制電路原理圖;元器件選型、電路制作〔1.5天〕實驗1號樓412室6單元及系統(tǒng)調(diào)試〔1.5天〕實驗1號樓412室7軟件編程及調(diào)試〔1.5天〕實驗1號樓412室8結(jié)果分析及撰寫設(shè)計報告〔1.5天〕實驗1號樓412室9實物演示、辯論、成績評定〔1天〕實驗1號樓412室五、應(yīng)收集的資料及主要參考文獻[1]趙茂泰,智能儀器原理及應(yīng)用〔第3版〕,普通高等教育“十一五〞國家規(guī)劃教材,電子工業(yè)出版社,2021。[2]龐春穎,智能儀器原理及應(yīng)用,普通高等教育“十二五〞國家規(guī)劃教材,電子工業(yè)出版社,2021。[3]史健芳,智能儀器設(shè)計根底,普通高等教育“十二五〞國家規(guī)劃教材,電子工業(yè)出版社,2021。[4]朱欣華,智能儀器原理與設(shè)計,高等教育出版社,2021。[5]王祁,智能儀器設(shè)計根底,機械工業(yè)出版社,2021。[6]張元良,智能儀表設(shè)計實用技術(shù)及實例,機械工業(yè)出版社,2021。[7]付華,郭虹,徐耀松,智能儀器設(shè)計,國防工業(yè)出版社,2007。發(fā)出任務(wù)書日期:年月日指導(dǎo)教師簽名:方案完成日期:年月日基層教學(xué)單位責(zé)任人簽章:主管院長簽章:目錄TOC\o"1-3"\h\u摘要 51引言 72設(shè)計內(nèi)容及性能指標(biāo) 83系統(tǒng)方案比擬 93.1主控制器模塊 93.2溫度測量 93.3設(shè)置溫度 103.4顯示模塊 103.5電源選取 114系統(tǒng)器件選擇 124.1溫度傳感器的選擇 125硬件實現(xiàn)及單元電路設(shè)計 135.1主控制模塊 135.2顯示模塊電路 135.3數(shù)碼管顯示驅(qū)動電路 145.4溫度傳感器(DS18B20)電路 145.4.1DS18B20根本介紹 145.4.2DS18B20控制方法 155.4.3DS18B20供電方式 155.5蜂鳴器、發(fā)光二極管報警電路 166系統(tǒng)軟件設(shè)計 176.1程序構(gòu)造分析 176.2系統(tǒng)程序流圖 176.2.1DS18B20初始化程序流程圖 186.2.2讀溫度子程序流程圖 197系統(tǒng)的安裝與調(diào)試 207.1安裝步驟 207.2電路的調(diào)試 207.3電路的電源 207.4總結(jié) 20參考文獻 22附錄1整體電路圖 23附錄2源程序 25摘要隨著時代的進步和開展,單片機技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng)成為一種比擬成熟的技術(shù),本文主要介紹了一個基于STC89C52單片機的溫度報警系統(tǒng),詳細描述了利用溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進展了詳盡分析,對各局部的電路也一一進展了介紹,該系統(tǒng)可以方便的實現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定報警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度控制,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20與STC89C52結(jié)合實現(xiàn)最簡溫度控制系統(tǒng),該系統(tǒng)構(gòu)造簡單,抗干擾能力強,適合于惡劣環(huán)境下進展現(xiàn)場溫度的控制,有廣泛的應(yīng)用前景。關(guān)鍵詞:單片機;溫度控制;STC89C52;DS18B1引言隨著科技的不斷開展,現(xiàn)代社會對各種信息參數(shù)的準確度和準確度的要求都有了幾何級的增長,而如何準確而又迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息根底的開展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計算機技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會的每一個領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和溫度報警裝置具有重要的意義。測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的開展經(jīng)歷了三個開展階段:①傳統(tǒng)的分立式溫度傳感器②模擬集成溫度傳感器③智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀90年代中期問世的,它是微電子技術(shù)、計算機技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶,特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU)。社會的開展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機的根底上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速開展,并朝著高精度、多功能、總線標(biāo)準化、高可靠性及平安性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速開展,本文將介紹智能集成溫度傳感器DS18B20的構(gòu)造特征及控制方法,并對以此傳感器,STC89C52單片機為控制器構(gòu)成的數(shù)字溫度控制裝置的工作原理及程序設(shè)計作了詳細的介紹。其具有讀數(shù)方便,方便控制,輸出溫度采用數(shù)字顯示,主要用于對溫度控制要求比擬準確的場所,或科研實驗室使用。該設(shè)計控制器使用STC89C52單片機,測溫傳感器使用DALLAS公司DS18B20,用數(shù)碼管來實現(xiàn)溫2設(shè)計內(nèi)容及性能指標(biāo)本設(shè)計主要是介紹了單片機控制下的溫度報警系統(tǒng),詳細介紹了其硬件和軟件設(shè)計,并對其各功能模塊做了詳細介紹,其主要功能和指標(biāo)如下:單片機實時檢測溫度傳感器DS18B20的狀態(tài),并將DS18820得到的數(shù)據(jù)進展處理。上電后數(shù)碼管顯示當(dāng)前的環(huán)境溫度,通過按鍵可設(shè)置上下溫報警值,當(dāng)檢測到的溫度高于設(shè)置的報警值的時候,蜂鳴器報警同時報警燈閃爍,溫度檢測準確到0.1度。并具有掉電保存功能,數(shù)據(jù)保存在單片機內(nèi)部EEPOM中,進入設(shè)置界面后如果沒有鍵按下系統(tǒng)會在15秒后自動退出設(shè)置界面。3系統(tǒng)方案比擬該系統(tǒng)主要由溫度測量和溫度設(shè)置及系統(tǒng)狀態(tài)顯示三局部電路組成,下面介紹實現(xiàn)此系統(tǒng)功能的方案。3.1主控制器模塊方案1:采用可編程邏輯器件CPLD 作為控制器。CPLD可以實現(xiàn)各種復(fù)雜的邏輯功能、規(guī)模大、密度高、體積小、穩(wěn)定性高、IO資源豐富、易于進展功能擴展。采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)??刂葡到y(tǒng)的控制核心。但本系統(tǒng)不需要復(fù)雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是非常高。且從使用及經(jīng)濟的角度考慮我們放棄了此方案。方案2:采用STC89C52單片機作為整個系統(tǒng)的核心,用其控制行進中的小車,以實現(xiàn)其既定的性能指標(biāo)。充分分析我們的系統(tǒng),其關(guān)鍵在于實現(xiàn)小車的自動控制,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)勢——控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資源豐富、有較為強大的控制功能及可位尋址操作功能、價格低廉等優(yōu)點。STC89C52單片機具有功能強大的位操作指令,I/O口均可按位尋址,程序空間多達8K,對于本設(shè)計也綽綽有余,更可貴的是STC89C52單片機價格非常低廉。3.2溫度測量方案1:采用數(shù)字溫度芯片DS18B20測量實際溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器STC89C52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的構(gòu)造就比擬簡單,體積也不大。采用51單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC機通信上傳數(shù)據(jù),另外STC89C52在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。方案2:采用熱電偶溫差電路測溫,溫度檢測局部可以使用低溫?zé)崤?,熱電偶由兩個焊接在一起的異金屬導(dǎo)線所組成〔如下列圖〕,熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成。通過將參考結(jié)點保持在溫度并測量該電壓,便可推斷出檢測結(jié)點的溫度。數(shù)據(jù)采集局部則使用帶有A/D通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進展A/D轉(zhuǎn)換后,就可以用單片機進展數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優(yōu)點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點,并且這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比擬麻煩。3.1熱電偶電路圖從以上兩種方案,容易看出方案二的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案一的測溫裝置電路簡單、準確度較高、實現(xiàn)方便、軟件設(shè)計也比擬簡單,故本次設(shè)計采用了方案一。3.3設(shè)置溫度方案1:采用鍵盤輸入設(shè)置溫度,鍵盤則可以用4個按鍵,一個復(fù)位鍵,一個功能設(shè)定鍵,一個加減一個減鍵。四個鍵比擬常用,而且用到的接口得到了極好的利用,僅需要4個接口。方案2:可采用4*4矩陣鍵盤,該鍵盤需要8個接口,而我們不需這么多鍵。綜上所述,我們選擇第一種方案。3.4顯示模塊方案1:用數(shù)碼管進展顯示。數(shù)碼管由于顯示速度快,使用簡單,顯示效果簡潔明了而得到了廣泛應(yīng)用。方案2:用LCD液晶進展顯示。LCD由于其顯示清晰,顯示內(nèi)容豐富、清晰,顯示信息量大,使用方便,顯示快速而得到了廣泛的應(yīng)用。單對于此系統(tǒng)我們不需要顯示豐富的內(nèi)容,而且LCD液晶價格貴,因此我們選擇了此方案。綜上所述我們選擇方案13.5電源選取由于本系統(tǒng)采用電池供電,我們考慮了如下幾種方案為系統(tǒng)供電。方案1:采用5V蓄電池為系統(tǒng)供電。蓄電池具有較強的電流驅(qū)動能力以及穩(wěn)定的電壓輸出性能。但是蓄電池的體積過于龐大,在小型電動車上使用極為不方便。因此我們放棄了此方案。方案2:采用3節(jié)1.5V干電池共4.5V做電源,經(jīng)過實驗驗證系統(tǒng)工作時,單片機、傳感器的工作電壓穩(wěn)定能夠滿足系統(tǒng)的要求,而且電池更換方便。綜上所述采用方案24系統(tǒng)器件選擇4.1溫度傳感器的選擇由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫度,需要比擬多的外部元件支持,且硬件電路復(fù)雜,制作本錢相對較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測溫元件。外部封裝形式傳感器電路圖5硬件實現(xiàn)及單元電路設(shè)計5.1主控制模塊主控制最系統(tǒng)電路如下圖。單片主控電路5.2顯示模塊電路顯示采用四位數(shù)碼管顯示,當(dāng)位選翻開時,送入相應(yīng)的段碼,則相應(yīng)的數(shù)碼管翻開,關(guān)掉位選,翻開另一個位選,送入相應(yīng)的段碼,則數(shù)碼管翻開,而每次翻開關(guān)掉相應(yīng)的位選時,時間間隔低于20ms,從人類視覺的角度上看,就仿佛是全部數(shù)碼管同時顯示的一樣。顯示電路如圖5.2數(shù)碼管顯示5.3數(shù)碼管顯示驅(qū)動電路由于STC89C52左右缺乏以驅(qū)動數(shù)碼管,故用三極管8550來作為驅(qū)動電路來驅(qū)動4位數(shù)碼管,不僅簡單,而且價格廉價。驅(qū)動電路5.4溫度傳感器(DS18B20)電路5.4.1DS18B20根本介紹DS18B20是美國DALLAS半導(dǎo)體公司推出的第一片支持“一線總線〞接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字信號處理器處理。DS18B20進展準確的溫度轉(zhuǎn)換,I/O線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個DS18B20在溫度轉(zhuǎn)換期間工作電流到達1mA,當(dāng)幾個溫度傳感器掛在同一根I/O線上進展多點測溫時,只靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉(zhuǎn)換溫度或溫度誤差極大。因此,下列圖電路只適應(yīng)于單一溫度傳感器測溫情況下使用,不適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當(dāng)電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。溫度傳感器電路引腳圖5.4.2DS18B20控制方法DS18B20有六條控制命令:溫度轉(zhuǎn)換44H啟動DS18B20進展溫度轉(zhuǎn)換讀暫存器BEH讀暫存器9個字節(jié)內(nèi)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH、TL字節(jié)復(fù)制暫存器48H把暫存器的TH、TL字節(jié)寫到E2RAM中重新調(diào)E2RAMB8H把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié)讀電源供電方式B4H啟動DS18B20發(fā)送電源供電方式的信號給主CPU 5.4.3DS18B20供電方式DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖3.1所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個三極管來完成對總線的上拉。本設(shè)計采用電源供電方式,P2.2口接單線總線為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個上拉電阻和STC89C52的P2.2來完成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10μs。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三狀態(tài)的。主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:初始化。ROM操作指令。存儲器操作指令。5.5蜂鳴器、發(fā)光二極管報警電路電路如圖主要是用來設(shè)定溫度報警溫度的、有高溫和低溫報警。蜂鳴器、發(fā)光二極管驅(qū)動引腳圖6系統(tǒng)軟件設(shè)計6.1程序構(gòu)造分析6.2系統(tǒng)程序流圖主程序的主要功能是負責(zé)溫度的實時顯示,讀出并處理DS18B20的當(dāng)前溫度值,與設(shè)定的報警溫度比擬,通過調(diào)用讀溫度子程序把存入內(nèi)存儲中的整數(shù)局部與小數(shù)局部開分存放在不的的兩個單元中,然后通過調(diào)用顯示子程序顯示出來。調(diào)用顯示子程序調(diào)用顯示子程序初始化1s到?初次上電發(fā)溫度轉(zhuǎn)換開場命令讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新6.2.1DS18B20初始化程序流程圖在DS18B20工作之前需要進展初始化,流程圖如下:發(fā)復(fù)位命令發(fā)復(fù)位命令發(fā)跳過ROM命令初始化成功完畢初始化程序流程圖6.2.2讀溫度子程序流程圖讀溫度子程序的主要功能是從DS18B20中讀出溫度數(shù)據(jù),移入溫度暫存器保存。其程序流程圖如下:發(fā)復(fù)位命令發(fā)復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令移入溫度暫存器完畢溫度子程序流程圖7系統(tǒng)的安裝與調(diào)試7.1安裝步驟按電路圖買好元件后首先檢查買回元件的好壞,按各元件的檢測方法分別進展檢測,一定要仔細認真。而且要認真核對原理圖是否一致,在檢查好后才可上件、焊件,防止出現(xiàn)錯誤焊件后不便改正。、焊接各元件按原理圖的位置放置各元件,在放置過程中要先放置、焊接較低的元件,后焊較高的和要求較高的元件。特別是容易損壞的元件要后焊,在焊集成芯片時連續(xù)焊接時間不要超過10s,注意芯片的安裝方向。7.2電路的調(diào)試首先燒入顯示程序,看顯示正不正常。在調(diào)試程序時,發(fā)現(xiàn)有的指令用的不正確,導(dǎo)致電路功能不能完全實現(xiàn),另外軟件程序中的延時有的過長、有的過短。類似的現(xiàn)象還有很多就不一一列舉了。7.3電路的電源由于用3個1.5V的電池作為電源輸入可以驅(qū)動單片機,但是用過的電池電壓不穩(wěn)定且沒有到達所想要的電壓大小,故采用實驗室的6V電壓。它正常工作電壓在到5.5V之間,但是只要它電流不過8mA就不會燒,所以轉(zhuǎn)換成電壓的話是不會影響到它正常工作的,但是在高壓工作,如果不必要就建議不要采用高壓工作。7.4總結(jié)本溫度報警器,通過單片機實時檢測溫度傳感器DS18B20的狀態(tài),并將DS18820得到的數(shù)據(jù)進展處理。上電后數(shù)碼管顯示當(dāng)前的環(huán)境溫度,通過按鍵可設(shè)置上下溫報警值,當(dāng)檢測到的溫度高于設(shè)置的報警值的時候,蜂鳴器報警同時報警燈閃爍,溫度檢測準確到0.1度。并具有掉電保存功能,數(shù)據(jù)保存在單片機內(nèi)部EEPOM中,進入設(shè)置界面后如果沒有鍵按下系統(tǒng)會在15秒后自動退出設(shè)置界面。由于采用了4節(jié)干電池供電使系統(tǒng)的抗干擾性得到加強。在軟件上,充分利用了STC89C52的系統(tǒng)資源,系統(tǒng)運行流暢。本設(shè)計構(gòu)造簡單,調(diào)試方便,系統(tǒng)反映快速靈活,經(jīng)實驗測試,該溫度報警系統(tǒng)設(shè)計方案正確、可行,各項指標(biāo)穩(wěn)定、可靠。參考文獻曹巧媛.單片機原理及應(yīng)用(第二版)[M].北京:電子工業(yè)出版社,2002.全國大學(xué)生電子設(shè)計競賽組委會.第五屆全國大學(xué)生電子設(shè)計競賽獲獎作品選編(2001)[M].北京:北京理工大學(xué)出版社,2003.何力民.單片機高級教程[M].北京:北京航空大學(xué)出版社,2000.金發(fā)慶等.傳感器技術(shù)與應(yīng)用[M].北京:北京機械工業(yè)出版社,2002.劉坤、宋戈、趙洪波、張憲棟.51單片機C語言應(yīng)用開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2003.譚浩強.C程序設(shè)計[M].北京:清華大學(xué)出版社,2007.王忠飛,胥芳.MCS-51單片機原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.Peter,Van,Der,Linden.C專家編程[M].北京:人民郵電出版社,2003.附錄1整體電路圖正面圖反面圖附錄2源程序#include<reg52.h>#include"eepom52.h"#defineucharunsignedchar#defineuintunsignedint//數(shù)碼管段選定義012345 6 7 8 9 ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=3;//顯示數(shù)碼管的個位數(shù)sbitdq=P2^4; //18b20IO口的定義sbitbeep=P2^5;//蜂鳴器IO口定義uchara_a;uinttemperature;//bitflag_300ms;ucharkey_can; //按鍵值的變量ucharmenu_1;//菜單設(shè)計的變量uintt_high=300,t_low=100;bitflag_lj_en; //按鍵連加使能bitflag_lj_3_en; //按鍵連3次連加后使能加的數(shù)就越大了ucharkey_time,flag_value;//用做連加的中間變量bitkey_500ms;ucharflag_clock;ucharzd_break_en,zd_break_value;//自動退出設(shè)置界面/***********************1ms延時函數(shù)*****************************/voiddelay_1ms(uintq) uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);/***********************小延時函數(shù)*****************************/voiddelay_uint(uintq) while(q--);/***********************數(shù)碼顯示函數(shù)*****************************/voiddisplay() uchari; for(i=0;i<smg_i;i++) P3=smg_we[i]; //位選 P1=dis_smg[i]; //段選 delay_1ms(1); P3=0xff; //位選 P1=0xff; //消隱/******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/voidwrite_eepom() SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); /******************把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*****************/voidread_eepom() t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);/***********************18b20初始化函數(shù)*****************************/voidinit_18b20() bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(20); //200us dq=1; //把總線拿高釋放總線/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat) uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開場 dq=0; //把總線拿低寫時間隙開場 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1;/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20() uchari,value; for(i=0;i<8;i++) dq=0; //把總線拿低讀時間隙開場 value>>=1; //讀數(shù)據(jù)是低位開場 dq=1; //釋放總線 if(dq==1) //開場讀寫數(shù)據(jù) value|=0x80; delay_uint(5); //60us 讀一個時間隙最少要保持60us的時間 returnvalue; //返回數(shù)據(jù)/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp() uintvalue; ucharlow; //在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序 init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉(zhuǎn)換命令 delay_uint(50); //500us init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 EA=0; low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)/*************定時器0初始化程序***************/voidtime_init() EA=1; //開總中斷 TMOD=0X01; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時/****************獨立按鍵處理函數(shù)************************/voidkey() staticucharkey_new=0,key_old=0,key_value=0; if(key_new==0) { //按鍵松開的時候做松手檢測 if((P2&0x0f)==0x0f) key_value++; else key_value=0; if(key_value>=10) write_eepom(); key_value=0; key_new=1; flag_lj_en=0; //關(guān)閉連加使能 flag_lj_3_en=0; //關(guān)閉3秒后使能 flag_value=0; //清零 else if((P2&0x0f)!=0x0f) key_value++;//按鍵按下的時候 else key_value=0; if(key_value>=7) key_value=0; key_new=0; flag_lj_en=1; //連加使能 zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 key_can=20; if(key_500ms==1) key_500ms=0; zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 key_new=0; key_old=1; if((key_new==0)&&(key_old==1)) switch(P2&0x0f) case0x0e:key_can=4;break; //得到k1鍵值 case0x0d:key_can=3;break; //得到k2鍵值 case0x0b:key_can=2;break; //得到k3鍵值 case0x07:key_can=1;break; //得到k4鍵值 key_old=key_new; /****************按鍵處理數(shù)碼管顯示函數(shù)***************/voidkey_with() if(key_can==4) menu_1++; if(menu_1>=3) menu_1=0; if(menu_1==0) dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 smg_i=3; if(menu_1==1) dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取low十位顯示 dis_smg[3]=0x89; smg_i=4; if(menu_1==2) dis_smg[0]=smg_du[t_low%10]; //取low小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; smg_i=4; if(menu_1==1) //設(shè)置高溫報警 if(key_can==3) if(flag_lj_3_en==0) t_high++; //按鍵按下未松開自動加三次 else t_high+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_high>990) t_high=990; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H if(key_can==1) if(flag_lj_3_en==0) t_high--; //按鍵按下未松開自動加三次 else t_high-=10; //按鍵按下未松開自動減三次之后每次自動減10 if(t_high<=t_low) t_high=t_low+1; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H// write_eepom(); if(menu_1==2) //設(shè)置低溫報警 if(key_can==3) if(flag_lj_3_en==0) t_low++; else t_low+=10; if(t_low>=t_high) t_low=t_high-1; dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; //L if(key_can==1) if(flag_lj_3_en==0) t_low--; else t_low-=10; if(t_low<=10) t_low=10; dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度商鋪租賃與市場拓展服務(wù)協(xié)議4篇
- 科技驅(qū)動引領(lǐng)未來
- 專業(yè)建筑裝飾工程施工合作合同版B版
- 2025年度柴油銷售區(qū)域市場調(diào)研合作協(xié)議4篇
- 2025年度養(yǎng)老院場地租賃及養(yǎng)老服務(wù)合同8篇
- 2025年度茶葉電商平臺茶具批發(fā)銷售合同范本4篇
- 2025年度玩具產(chǎn)品電商銷售合作協(xié)議范本4篇
- 專業(yè)樁基砍除工程承包合同2024年
- 2025年度新型生物制藥研發(fā)合作合同范本4篇
- 2024纜車司機雇傭合同(滑雪場)
- 餐飲行業(yè)智慧餐廳管理系統(tǒng)方案
- 2025年度生物醫(yī)藥技術(shù)研發(fā)與許可協(xié)議3篇
- 電廠檢修安全培訓(xùn)課件
- 殯葬改革課件
- 血壓計保養(yǎng)記錄表
- 食品的售后服務(wù)承諾書范本范文(通用3篇)
- 新外研版九年級上冊(初三)英語全冊教學(xué)課件PPT
- 初中中考英語總復(fù)習(xí)《代詞動詞連詞數(shù)詞》思維導(dǎo)圖
- 植物和五行關(guān)系解說
- 滬教牛津版初中英語七年級下冊全套單元測試題
- 因式分解法提公因式法公式法
評論
0/150
提交評論