完整的word格式的論文下載:
基于單片機的溫度采集系統設計.docx
(1.23 MB, 下載次數: 287)
2016-7-5 03:09 上傳
點擊文件名下載附件
摘 要
溫度是一種最基本的環境參數,日常生活和工農業生產中經常要檢測溫度。隨著半導體技術的飛速發展,各種數字化、智能化溫度測量技術的應用范圍越來越廣,因此掌握溫度測控系統的硬件組成及系統軟件設計尤為重要。 整個系統采用模塊化設計,硬件結構由DS18B20和單片機、LCD1602、蜂鳴器等裝置組成,DS18B20溫度傳感器將物理參量轉變為電壓并完成信號的調理,調整為數字量,再送入單片機AT89C52讀取,單片機對數字量的溫度進行處理,并將數據通過LCD1602顯示,同時根據預設定的參數控制蜂鳴器是否報警,提醒工作人員注意。 本設計在proteus上畫出原理圖并進行仿真,實現了溫度采集的整體功能,包括溫度顯示和高溫報警。驗證本設計所使用方案的有效性和正確性,最終完成豐富發展了相應的理論知識。
關鍵字:AT89C52;LCD1602;RS-232;DS18B20
Design Of Digital Thermometer Based On MCU Abstract
Temperature is one of the most basic environmental paramenters,and it usually must be measured in daily life and industrial & agricultural production. With the rapid development of semiconductor technology,more and more,digital & intelligent temperature measuring technology is widely applied.So it is particularly important to master the technology of designing a temperature measurement & control system in hardware and software. In this project,a temperature measuring & transmition system controlled by SCM is designedll. At front end, the real-time temperature data acquired and converted to digital type through DS18B20 sensor are sent into SCM, and it is display on LCD1602 module . In addition , the acquired temperature data are transmitted to back end PC via RS-232 interface so as to be displayed ,storied an continued process. The design achieved the results in proteus. It verify the validity and correctness of the proposed scheme. Finally, it complete and developed the theoretical knowledge.
Key words:AT89C52;LCD1602;RS-232;DS18B20
目錄 引言 第一章 緒論 1.1 課題背景及實際意義 1.2本課題的研究現狀及發展趨勢 1.3課題研究的主要內容 第二章 總體設計方案 2.1系統方案選擇 2.1.1溫度測量的選擇 2.1.2顯示電路的選擇 2.1.3系統各模塊的最終方案 2.2方案的總體設計電路圖 第三章 硬件設計 3.1單片機AT89C52 3.1.1簡介 3.1.2單片機最小系統 3.2溫度傳感器DS18B20 3.2.1 簡介 3.2.2 DS18B20溫度傳感器與單片機的接口電路 3.3LCD1602顯示模塊設計 3.3.1 LCD1602簡介 3.3.2 LCD1602與單片機的接口電路 3.4報警器的設計 第四章 系統軟件設計 4.1Keil軟件概述 4.2主程序 4.3讀出溫度子程序 4.4溫度報警命令子程序 4.5顯示數據刷新子程序 第五章 調試與仿真 5.1Proteus簡介 5.2調試與仿真 結論與展望 致謝 參考文獻 附錄A:電路原理圖繪制 附錄B:一篇引用的引文文獻及翻譯 附錄C:主要參考文獻與摘要 附錄D:程序
插圖清單 圖 1 總體設計方案 圖 2 系統設計框圖 圖 3 AT89C52結構框圖 圖 4 TMOD特殊功能寄存器 圖 5 PCON TCON 的控制字格式 圖 6 SCON特殊功能寄存器 圖 7 IE特殊功能寄存器 圖 8 IP特殊功能寄存器 圖 9 單片機最小系統 圖 10 DS18B20封裝 圖 11 溫度傳感器模塊 圖 12 LCD尺寸圖 圖 13 LCD 內部顯示地址 圖 14 LCD模塊電路圖 圖 15 報警模塊電路圖
表格清單 表格 1 工作方式選擇表 表格 2 串口方式選擇 表格 3 配置寄存器結構 表格 4 引腳接口說明 表格 5控制命令表 表格 6基本操作時序表
安徽工程科技學院畢業設計(論文) 引言溫度是一種最基本的環境參數,日常生活和工農業生產中經常要檢測溫度,隨著半導體技術的飛速發展,各種數字化、智能化溫度測量技術的應用范圍越來越廣,因此掌握溫度測控系統的硬件組成及系統軟件設計尤為重要。而傳統的測溫方法多以熱電阻和熱電偶等為溫度敏感元件,但這些溫度傳感器構成的測溫系統必須經過A/D轉換環節獲得數字信號后才能與單片機等微機處理器接口,使得硬件電路結構復雜,制作成本較高,本設計研究的是數字溫度計,它是通過一定的電路和溫度傳感器進行測控,將溫度用數字準確的顯示出來。數據顯示比較直觀而且測量精度也比較高,范圍比較大。 整個系統采用模塊化設計,硬件結構由DS18B20和單片機、LCD、蜂鳴器等裝置組成,DS18B20溫度傳感器將物理參量轉變為電壓并完成信號的調理,調整為數字量,再送入單片機AT89C52讀取,單片機對數字量的溫度進行處理,并將數據通LCD1602顯示,同時根據預設定的參數控制蜂鳴器是否報警,提醒工作人員注意。 本設計在POTEUS上畫出了原理圖并進行仿真,實現了溫度采集的整體功能,包括溫度顯示和高溫報警,此次設計驗證了所使用方案的有效性和正確性,最終完成豐富發展了相應的理論知識。
第一章 緒論1.1 課題背景及實際意義溫度是一種最基本的環境參數,日常生活和工農業生產中經常要檢測溫度,隨著半導體技術的飛速發展,各種數字化、智能化溫度測量技術的應用范圍越來越廣,因此掌握溫度測控系統的硬件組成及系統軟件設計尤為重要。尤其在過程控制的實時監測和監控系統中,溫度的采集是很普片的,快速可靠的采集到工業現場中的高精度溫度數據可以為過程控制系統提供可靠的依據。而傳統的測溫方法多以熱電阻和熱電偶等為溫度敏感元件,但這些溫度傳感器構成的測溫系統必須經過A/D轉換環節獲得數字信號后才能與單片機等微機處理器接口,使得硬件電路結構復雜,制作成本較高,而美國DALLAS公司生產的DS18B20數字溫度傳感器集溫度測量和A/D轉換于一體,直接輸出數字量,硬件電路結構簡單,與單片機接口幾乎不需要外圍元件,廣泛使用與距離遠,節點分布多的場合,具有較強的推廣應用價值。 數字溫度計有手持式,盤裝式,及醫用的小體積的等等,它是采用進口高精度、低溫漂、超低功耗集成電路和寬溫型液晶顯示器,內置高能量電池連續工作≥5年無需敷設供電電纜,是一種精度高、穩定性好、誤差≤0.5%、微功耗、不銹鋼外殼,防護堅固,美觀精致、適用性極強的新型現場溫度顯示儀。是傳統現場指針雙金屬溫度計的理想替代產品,廣泛應用于各類工礦企業、大專院校、科研院所。 最早的溫度計是在1593年由意大利科學家伽利略發明的。后來又相繼出現華氏溫度及、列式溫度計、攝氏溫度計,均采用水銀和酒精等制作,現在英、美國家多用華氏溫度計,德國多用列式溫度計,而世界科技界和工農業生產中,以及我國、法國等大多數國家則多用攝氏溫度計。隨著科學技術的發展和現代工業技術的需要,測溫技術也在不斷地改進和提高。由于測溫范圍變得越來越廣,根據不同的要求,又制造出不同的測溫儀器:氣體溫度計、電阻溫度計、溫差電偶溫度計、高溫溫度計等。耳本設計研究的是數字溫度計,它是通過一定的電路和溫度傳感器進行測控,將溫度用數字準確的顯示出來。數據顯示比較直觀而且測量精度也比較高,范圍比較大。 1.2本課題的研究現狀及發展趨勢國外對溫度控制技術研究較早,始于20世紀70年代。先是采用模擬式的組合儀表,采集現場信息并進行指示、記錄和控制。80年代末出現了分布式控制系統。目前正開發和研制計算機數據采集控制系統的多因子綜合控制系統,F在世界各國的溫度測控技術發展很快,一些國家在實現自動化的基礎上正向著完全自動化、無人化的方向發展。我國對于溫度測控技術的研究較晚,始于20世紀80年代。我國工程技術人員在吸收發達國家溫度測控技術的基礎上,才掌握了溫度室內微機控制技術,該技術僅限于對溫度的單項環境因子的控制。我國溫度測控設施計算機應用,在總體上正從消化吸收、簡單應用階段向實用化、綜合性應用階段過渡和發展。在技術上,以單片機控制的單參數單回路系統居多,尚無真正意義上的多參數綜合控制系統,與發達國家相比,存在較大差距。我國溫度測量控制現狀還遠遠沒有達到工廠化的程度,生產實際中仍然有許多問題困擾著我們,存在著裝備配套能力差,產業化程度低,環境控制水平落后,軟硬件資源不能共享和可靠性差等缺點。 溫度計的進一步完善和發展是沿著兩個方向進行的,一是測溫物質的選擇;二是刻度標準的確定。 1.測溫物質的研究和確定 除上述用酒精取代水作測溫物質的嘗試外,1659年法國天文學家布(I.Boulliau)制造一個溫度計,他把玻璃泡的體積縮小,第一次使用水銀作測溫物質。他本人從1658年5月起至1660年9月,連續進行了兩年多的溫度觀察記錄,僅次于開始于1655年的佛羅倫薩的溫度觀察記錄,成為現存最古老的溫度記錄之一。這樣的溫度計已具備了現在溫度計的雛形。 但到了18世紀,法國的勒奧默有鑒于水銀的膨脹系數小,曾強烈反對使用水銀作測溫物質。他致力于制造一個既方便又能達到精度要求的酒精溫度計。但由于他的溫度計結果不好,并且不同的溫度計也不一致,日內瓦的德呂斯(1727—1817)又恢復使用水銀,并以一個物理學家的身份熱情地呼喊:“自然界給我們這個礦物肯定是為了做溫度計”。 2.刻度標準的研究和確定 從伽利略到布里奧,測溫術從定性發展到定量,但讀數還沒有統一的標準。西曼托科學院的成員們為溫度計選擇了兩個固定的溫度:一個是冬冷,一個是夏熱。冬冷是指最冷的冰凍時期的雪或冰的溫度,夏熱指奶;蚵沟捏w溫。在兩個固定的溫度點之間,他們又分成80或40個相等的間隔。1829年,曾在舊的玻璃器皿中發現了當年佛羅倫薩的 溫度計的發展速度很快,從原來的煤油溫度計、酒精溫度計、水銀溫度計等發展到了現在的熱電阻溫度計、熱電偶溫度計、氣體溫度計、電子溫度計、電阻溫度計、溫差電偶溫度計、輻射溫度計和光測溫度計、雙金屬溫度計……這些溫度計都或多或少有著反應速度慢、讀數麻煩、測量精度不高、誤差大等缺點。 傳統的指針式的溫度計雖然能指示溫度,但是精度低,使用不夠方便,顯示不夠直觀。目前市場上使用最為廣泛的測溫儀器類型莫過于是數字溫度計(digital thermometer),數字溫度計的出現可以讓人們直觀的了解自己想知道的溫度到底是多少度,它可以準確的判斷和測量溫度,以數字顯示,而非指針或水銀顯示。故稱數字溫度計或數字溫度表。 數字溫度計有手持式,盤裝式,及醫用的小體積的等等,它是采用進口高精度、低溫漂、超低功耗集成電路和寬溫型液晶顯示器,內置高能量電池連續工作≥5年無需敷設供電電纜,是一種精度高、穩定性好、誤差≤0.5%、微功耗、不銹鋼外殼,防護堅固,美觀精致、適用性極強的新型現場溫度顯示儀。是傳統現場指針雙金屬溫度計的理想替代產品,廣泛應用于各類工礦企業、大專院校、科研院所。 數字溫度計采用溫度敏感元件也就是溫度傳感器(如鉑電阻,熱電偶,半導體,熱敏電阻等),將溫度的變化轉換成電信號的變化,如電壓和電流的變化,溫度變化和電信號的變化有一定的關系,如線性關系,一定的曲線關系等,這個電信號可以使用模數轉換的電路即A/D轉換電路將模擬信號轉換為數字信號,數字信號再送給處理單元,如單片機或者PC機等,處理單元經過內部的軟件計算將這個數字信號和溫度聯系起來,成為可以顯示出來的溫度數值,如25.0攝氏度,然后通過顯示單元,如LED、LCD或者電腦屏幕等顯示出來給人觀察。這樣就完成了數字溫度計的基本測溫功能。 隨著時代的進步和電子技術的不斷發展,采用單片機控制進行采集溫度無疑是人們追求的目標之一,也是未來溫度計發展的主要方向。它所給人帶來的方便也是不可否認的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人生活、工作、學習、科研等社會各領域提供更好的更方便的“溫度計”,就需要從數單片機技術入手,將溫度測量技術一切向著數字化控制,智能化控制方向發展。綜合分析本次畢業設計(論文),可以預研作出該系統的發展趨勢如下: 1.溫度傳感器高精度化 由于采集溫度的精度必須高于控制處理的精確度,否則無從實現控制的精度要求。目前的溫度采集系統中溫度傳感器是它的重要組成部分,它的精度靈敏度基本決定了本溫度采集系統的精度、測量范圍、控制范圍和適用范圍等。數字溫度傳感器將會集成更好的模擬傳感器、轉換速度更快精度更高的A/D轉換器。傳感器應用極其廣泛,目前已經研制出多種新型傳感器。但是,作為應用系統設計人員需要根據系統要求選用適宜的傳感器,并與自己設計的系統連接起來,從而構成性能優良的監控系統。未來的溫度傳感器必然向高精度化、高集成化發展。 2.單片機微型化 常見單片機都是將中央處理器、隨機存取數據存儲、只讀程序存儲器、并行和串行通信接口、中斷系統、定時電路、時鐘電路等集成在一塊單一的芯片上。但是,隨著人們對電子產品的要求越來越高:要求體積小、質量輕,這也就要求單片機除了功能強和功耗低外,還要求其體積要小、質量輕。單片機廠商還可以根據用戶的要求量身定做,制造出具有自己特色的單片機芯片,F在的許多單片機都具有多種封裝形式,其中表面封裝越來越受歡迎,使得由單片機構成的系統正朝微型化方向發展。此外,微型化的單片機還可以集成了如 A/D 轉換器、PMW(脈寬調制電路)、WDT(看門狗)、有些單片機將 LED驅動電路都集成在一個單片機的芯片上,這樣單片機包含的單元電路就更多,功能就越強大,也逐漸實現微型化。 3.接口標準化 當前采用的通用標準接口主要有兩種:IEEE-488和CAMAC。以微處理器為基礎的數據采集與控制系統有許多是采用IEEE-488接口總線技術的。用這種總線一臺計算機接口就可連接多達15臺儀器而且它們之間還可相互通信。因此用這種總線可以組成一種多用途自動測試系統, 從而使各個儀器都能充分發揮作用。對于一些對溫度把握非常嚴格和準確的場合,溫度測量系統的不準確會帶來非常大的麻煩。本溫度采集系統設計結構簡單,價格低廉,精度高,使用方便,功能全,便于集成,可以廣泛地應用于家庭、醫院以及電影院、廣場、汽車站、火車站等公共場所,將會受廣大消費者的喜愛。由于該系統便于集成,故可以作為單獨使用,也可以當作溫度處理模塊嵌入其它系統中,作為其他主系統的輔助擴展。因此,接口電路的標準化也是必然的發展趨勢之一。 4.系統模塊化 六十年代到七十年代中期,數據采集系統的器件主要還是半導體分立器件,但是到了七十年代末和八十年代初,隨著大規模和超大規模集成電路技術的發展而出現了單芯片器件以及高集成度的單芯片數據采集器件。由于出現了這些先進的器件,不僅劇烈地改變著傳統的老方法而且也大大地改變了數據采集系統元件的銷路。本次畢業設計的基于單片機的溫度采集系統完全可以發展成模塊化的器件,將會更廣的銷售市場。 5.智能化 現代數據采集系統主要是向與微型處理器或者微型計算機通信相兼容的方向發展,即實現由微處理器控制的或者以微處理器為基礎的智能化數據采集系統,F代數據采集系統隨著電子技術的發展獲得很大的成功和發展,尤其在配上微處理器或者微計算機后,其能力有了顯著的提高,而且與普通的數據采集系統很難區別開來。當前以微型計算機為中心的系統普遍采用數據記錄器組成復雜的分布監控系統, 用計算機進行控制和用數據記錄器進行數據采集或作為系統記錄裝置來實現工業過程自動化。 總之, 當前以微處理機或微型計算機為基礎的數據采集與處理系統大大提高了測試設備的靈活性、可靠性和經濟益效性。隨著高性能機器的發展, 微型計算機控制邏輯能力大為提高, 而且能單獨完成數據采集和聯機有限數據處理, 并且還具有代碼浮動性、多處理功能和增強型指令和尋址能力。 6.軟件高級語言化 硬件的作用是要通過軟件編程調試運行發揮的, 因此溫度采集系統的軟件編程也是至關其要的。當前以單片機為控制核心的系統主要是采用匯編語言編寫程序。從長遠的發展看,為了能夠實現測量與控制向高度自動化智能化發展,控制系統勢必要采用通用的高級語言,如C/C++等高級匯編語言編寫程序,實現系統軟件向高級語言發展。 1.3課題研究的主要內容本設計是基于單片機的溫度采集系統,此系統以AT89C52單片機為控制核心,以數字傳感器DS18B20作為前端,采集溫度經過單片機處理后,通過LCD1602液晶顯示器將溫度顯示出來。本設計將首先介紹系統的設計方案,接著對系統硬件進行選型,然后介紹系統的結構框圖,詳細介紹系統的硬件設計,在給出系統的連接圖,通過PROTEL 99SE進行系統電路原理圖的繪制,生成相應的PCB板,并分析系統的工作原理,在軟件方面對整體和各個模塊的程序進行設計,在KEIL中進行匯編語言程序的編寫與調試,最后,在仿真軟件PROTEUS中進行系統的仿真實驗。 此次設計是一種基于單片機的溫度采集系統設計,以溫度傳感器DS18B20自動對溫度進行采集,采集精度要求為0.001℃,控制溫度范圍為-55℃~ +120℃。同時采用了LCD顯示實時溫度?傮w的設計方案如圖1所示: 圖 1 總體設計方案 具體章節介紹如下: 第一章為緒論主要是介紹課題的背景與實際意義以及本課題的研究現狀與發展趨勢,和本課題所研究的主要內容 。 第二章為總體設計方案,對應本課題設計的兩種設計方案,綜合系統的硬件與軟件方面進行比較,第二種方案的硬件電路簡單,軟件設計也相對容易,所以課題最終方案采用第二種方案 ,本章也介紹了系統總體電路圖。 第三章為硬件設計,主要包括單片機介紹,單片機最小系統,溫度傳感器模塊與LCD顯示模塊的介紹。硬件電路的各個模塊的電路設計,畫出了與單片機的外圍連接圖。 第四章為軟件設計,Keil軟件簡介,系統的程序和程序的流程圖。 第五章為調試與仿真主要包括Proteus軟件的簡介以及系統的調試與仿真。
第二章 總體設計方案2.1系統方案選擇 整個系統采用模塊化設計,硬件結構由傳感器和單片機、LCD、蜂鳴器等裝置組成,傳感器將物理參量轉變為電壓并完成信號的調理,在送入下位單片機AT89C52讀取,單片機將數據通過LCD1602顯示,根據預想設定的參數決定要采取的措施。 2.1.1溫度測量的選擇溫度測量一般有兩種方案,第一種采用熱電偶溫差電路測量溫度,溫度檢測部分可以使用低溫熱偶,熱電偶由兩個焊接在一起的異金屬導線所組成,熱電偶產生的熱電勢由兩種金屬的接觸電勢和單一的導體的溫差電勢組成。通過將參考結點保持在已知溫度并測量該電壓,便可推斷出檢測結點的溫度。數據采集部分則使用帶有A/D通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小,容易遭受來自導線環路的噪聲影響以及飄移較高的缺點,并且種種設計需要用到A/D轉換電路,感溫電路比較麻煩。 第二種是采用溫度芯片DS18B20測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統的測量方法的很多外圍電路。DS18B20的最大優點之一是采用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器AT89S52構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。這樣,測溫系統的就比較簡單,體積也不大。采用52單片機控制,軟件編程的自由度大,可通過編程實現各種各樣的算法和邏輯控制,且體積小,硬件實現簡單,安裝方便。 從以上兩種方案,很容易看出方熱電偶的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大,外圍電路復雜。而DS18B20的測溫裝置電路簡單、精確度較高、實現方便、軟件設計也比較簡單,故本設計采用DS18B20采集溫度。 2.1.2顯示電路的選擇方案一是使用LED數碼管動態顯示,此方法需要外加外部驅動以此增加輸出電流來更好的驅動數碼管顯示,電路簡單,但成本較高,需要特定的編程來完成動態刷新,如果用靜態顯示,占用的I/O口多,最重要的是在進行多路的溫度采集實驗時,不能同時顯示多路溫度值,所以用數碼管顯示溫度弊多利少,本課題采用方案二作為顯示電路。 方案二是使用LCD1602液晶顯示,在單片機系統中應用晶液顯示器作為輸出器件有以下幾個優點: (1)顯示質量高,由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質高且不會閃爍。 (2)數字式接口,液晶顯示器都是數字式的,和單片機系統的接口更加簡單可靠,操作更加方便。 體積小、重量輕 液晶顯示器通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示器要輕得多。 (3)功耗低 ,相對而言,液晶顯示器的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示器要少得多。 2.1.3系統各模塊的最終方案最終確定了本設計的各模塊硬件選擇,總結如下,單片機選用AT89C52,溫度采集用DS18B20,顯示模塊用LCD1602,蜂鳴器實現報警功能。連接各模塊實現最終的溫度采集功能。 2.2方案的總體設計電路圖
圖 2 系統設計框圖 框圖中單片機采用的的是AT89C52單片機,首先單片機控制DS18B20數字溫度感器,把溫度信號通過單總線從數字溫度傳感器傳遞到單片機上,單片機數據處理后,發出控制信號改變報警即控制執行模塊的狀態,同時將當前溫度信息發送到LCD1602液晶屏進行顯示。本次設計的重點在于溫度采集系統和顯示系統部分,這兩個部分直接關系到設計的成功與否。
第三章 硬件設計3.1單片機AT89C523.1.1簡介AT89C52 具有以下標準功能:8K 字節 Flash,256 字節 RAM,32 位 I/O 口線,看門狗定時器,2 個數據指針,三個 16 位定時器/計數器,一個 6 向量 2 級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89C52 可降至 0Hz 靜態邏輯操作,支持 2 種軟件可選擇節電模式?臻e模式下,CPU 停止工作,允許 RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM 內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器,8K 字節在系統可編程Flash。下面對本課題使用到的相關部分作詳細介紹。 一.結構框圖 圖 3.1 是單片機 AT89C52 的內部結構總框圖。它可以劃分為 CPU、存儲器、并行口、串行口、定時器/計數器和中斷邏輯幾個部分。 圖 3 AT89C52結構框圖 二.存儲器 MCS-51 器件有單獨的程序存儲器和數據存儲器。程序存儲器用來存放程序和始終要保留的常數;數據存儲器常用來存放程序運行中所需要的常數或變量。 1.程序存儲器 AT89S52 具有 8Kbytes Flash 片內程序存儲器,可以外接達到 64K 字節的外部程序存儲器。AT89S52 單片機復位后程序計數器 PC 的內容為 0000H,系統從 0000H 單元開始取指令,并執行程序。 若EA引腳接地,程序讀取只從外部存儲器開始。 對于 AT89S52 而言,如果EA接VCC,程序讀寫先從內部存儲器(地址為0000H~1FFFH)開始,接著從外部尋址,尋址地址為:2000H~FFFFH。 2.數據存儲器 AT89S52 有 256 字節片內數據存儲器。高 128 字節與特殊功能寄存器重疊。也就是說 128 字節與特殊功能寄存器有相同的地址,而物理上是分開的。 AT89S52 數據存儲器根據不同的尋址方式和不同的功能分成四個部分,即 DATA區、特殊功能寄存器、IDATA 區、XDATA區。 三.定時器/計數器 AT89S52 有 3 個 16 位可編程定時計數器。 1.定時器方式寄存器 TMOD 其每位的定義如圖 3.2 所示。 圖 4 TMOD特殊功能寄存器 1)GATE:定時器/計數器運行控制位,用來確定對應的外部中斷請求引腳 INT0,INT1 是否參與 T0、T1 的操作控制。 當 GATE=0時,只要定時器控制寄存器 TCON 中的 TR0 或 TR1 置 1 時,T0 或 T1 運行開始計數; 當 GATE=1 時,不僅要定時器控制寄存器 TCON中的 TR0 或 TR1 被置 1 時,還需要P3 口中的 INT0 或 INT1 引腳為高電平,T0 或 T1 才被允許開始計數。 2)C/T:定時器或計數器方式選擇位。C/T=1 時,為計數器方式;C/T=0 時,為定時器方式。 3)M1M0:定時器/計數器四種工作方式的選擇。工作方式選擇如表 1 所示。 表格 1 工作方式選擇表 2.定時器控制寄存器 TCON:用于定時器操作及對定時器中斷控制。其中D0~D3 位與外部中斷有關。 TR0:T1 的運行控制位,給該位置 1 或清 0,用來實現啟動計數或停止計數。 TF0:T0 的溢出中斷標志位。當計數器溢出時由硬件自動置 1,在 CPU 中斷處理時由硬件清為 0。 TR1:T1 的運行控制位,功能同 TR0。 TF1:T1 的中斷標志位,功能同 TF0。 TMOD 和 TCON 寄存器在復位時每一位均清 0。 四.串行口 AT89S52 有 1 個全雙工串行口,串行口的寄存器有:一個發送 SBUF,一個接收SBUF,一個移位寄存器。發送和接收的 SBUF 對應同一地址(99H),但在物理上是兩個分開的寄存器。串行口為全雙工工作方式,而且還要緩沖的作用。 1.特殊功能寄存器 PCON:沒有位尋址能力,字節地址 87H。其中的 D7 位(稱為SMOD)為波特率的選擇位,其他無意義。復位時SMOD 為 0。當 SMOD=1 時,在串行口方式 1、2 或 3 的情況下,波特率提高一倍。如圖 3.4 所示。 圖 5 PCON TCON 的控制字格式 2.特殊功能寄存器 SCON:用于串口操作方式選擇和對它進行控制,其字節地址 為 98H。 1)RI:接收中斷標志。 在方式 0 中,當串行接收到第 8 位結束時由硬件置位;在其他方式中,在接收到停止位的中間時刻由硬件置位。當 RI=1 時,申請中斷,要求 CPU 取走數據。 在方式 1 中,SM2=1,若未收到有效的停止位,則不會 RI 置位,在任何方式下必須由軟件清零。 2)TI:發送中斷標志。在方式 0 中,串行發送完第 8 位數據時由硬件置位,在其他方式中,發送停止位的開始由硬件置位。當 TI=1時,申請中斷,CPU 響應后,發送下一幀數據。任何方式下必須由軟件清零。 3)TB8:是在方式 2 和 3 中要發送的第 9 位數據,可由軟件置位或清零。 4)RB8:是在方式 2 和 3 中已接收到的第 9 位數據。在方式 1 中,若 SM2=0,RB8轉載接收到的停止位。在方式 0 中 RB8 不被使用。 5)REN:允許串行接收,由軟件置位或清零,允許接收或禁止接收。 6)SM2:允許方式 2 和方式 3 進行多機通信。 7)SM0、SM1:串行口操作方式選擇位。兩個選擇位對應于四種狀態,所以串口能以四種工作方式工作,如表 2 所示。
表格 2 串口方式選擇 系統復位時,SCON 中的所有位都被清零。 五.中斷系統 當 CPU 正在處理某件事情的時候,外部發生的某一事件如電平變化,一個脈沖沿的發生或定時器的溢出等請求 CPU 迅速去處理,于是CPU 暫時中止當前的工作,轉去處理所發生的事件。處理完該事件之后,再回到原來被中止的地方,繼續原來的工作,這樣的過程稱為中斷。 1.中斷源 AT89S52 共有 6 個中斷源,2 個外部中斷(INT0 和 INT1),三個定時器/計數器中斷(定時器/計數器 T0、T1 或 T2),和一個串口中斷(TXD 和 RXD)。 串口的中斷請求標記由可尋址串口控制寄存器 SCON 的 TI 和 RI 來設置。SCON 字節地址是 98H,如圖 3.4 所示。 圖 6 SCON特殊功能寄存器 2.中斷允許控制 中斷使能寄存器 IE 的各位如圖 3.5 所示。 圖 7 IE特殊功能寄存器 EA:使能標志位置位則所有中斷使能復位則禁止所有中斷; —:保留; ET2:定時器 2 中斷使能; ES:串行通信中斷使能; ET1:定時器 1 中斷使能; EX1:外部中斷 1 使能; ET0:定時器 0 中斷使能; EX0:外部中斷 0 使能。 3.中斷優先級 每個中斷源都可通過設置中斷優先級寄存器 IP 來單獨設置中斷優先級。如果每個中斷源的相應位被置位,則該中斷源的優先級為高。如果相應的位被復位,則該中斷源的優先級為低。圖 3.6 所示為 IP 寄存器的各位,此寄存器可位尋址。
圖 8 IP特殊功能寄存器 4.中斷執行和中斷響應 CPU 一旦響應某一中斷,立即按查詢中得到的中斷優先級置位“中斷優先級狀態觸發器”優先級別,供下一查詢周期進行判別,然后執行一條硬件的長調用指令。在執行長調用指令時,首先把當前程序計數器 PC 值壓棧,然后清中斷申請標志。最后把中斷源相應的中斷矢量壓入程序計數器 PC,程序轉到中斷服務程序執行。 在用戶編寫的中斷服務程序中,最后一條指令一般是 RETI(中斷返回)指令。執行該指令時 CPU 首先清除中斷優先級狀態觸發器,然后把棧頂上的兩個字節內容彈入程序計數器 PC,程序由此繼續執行。 5.AT89S52 晶振特性 AT89S52 單片機有一個用于構成內部振蕩器的反相放大器,XTAL1 和 XTAL2 分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構成自激振蕩器。從外部時鐘源驅動器件的話,XTAL2 可以不接,而從 XTAL1 接入。由于外部時鐘信號經過二分頻觸發后作為外部時鐘電路輸入的,所以對外部時鐘信號的占空比沒有其它要求,最長低電平持續時間和最少高電平持續時間等還是要符合要求的。 3.1.2單片機最小系統對于一個完整的電子設計來講,首要問題就是為整個系統提供電源供電模塊,電源模塊的穩定可靠是系統平穩運行的前提和基礎。單片機雖然使用時間最早、應用范圍最廣,但是在實際用過程中,一個和典型的問題就是相比其他系列的單片機,單片機更容易受到干擾而出現程序跑飛的現象,克服這種現象出現的一個重要手段就是為單片機系統配置一個穩定可靠的電源供電模塊。 此最小系統中的電源供電模塊的電源可以通過計算機的USB口供給,也可使用外部穩定的5V電源供電模塊供給。 復位電路:由電容串聯電阻構成,由圖并結合"電容電壓不能突變"的性質,可以知道,當系統一上電,RST腳將會出現高電平,并且,這個高電平持續的時間由電路的RC值來決定.典型的單片機當RST腳的高電平持續兩個機器周期以上就將復位,所以,適當組合RC的取值就可以保證可靠的復位. 一般教科書推薦C 取10u,R取8.2K.當然也有其他取法的,原則就是要讓RC組合可以在RST腳上產生不少于2個機周期的高電平。 XTAL1 和XTAL2 是獨立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內振蕩器,或者是器件直接由外部時鐘驅動。單片機系統里都有晶振,在單片機系統里晶振作用非常大,全程叫晶體振蕩器,他結合單片機內部電路產生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執行都是建立在單片機晶振提供的時鐘頻率。 在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內調整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機械能相互轉化的晶體在共振的狀態下工作,以提供穩定,精確的單頻振蕩。單片機晶振的作用是為系統提供基本的時鐘信號。通常一個系統共用一個晶振,便于各部分保持同步。有些通訊系統的基頻和射頻使用不同的晶振,而通過電子調整頻率的方法保持同步。晶振通常與鎖相環電路配合使用,以提供系統所需的時鐘頻率。如果不同子系統需要不同頻率的時鐘信號,可以用與同一個晶振相連的不同鎖相環來提供。單片機最小系統如圖3.7。 圖 9 單片機最小系統 3.2溫度傳感器DS18B203.2.1 簡介DALLAS 最新單線數字溫度傳感器 DS18B20 是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經濟。DALLAS 半導體公司的數字化溫度傳感器 DS18B20 是世界上第一片支持“一線總線”接口的溫度傳感器。 一.引腳排列極其內部結構 1.引腳排列 DS18B20 的 3 腳封裝如圖 3.8所示。其中,DQ 為數字信號輸入/輸出端;GND 為電源地;VDD 為外接供電電源輸入端。 圖 10 DS18B20封裝 2.內部結構 DS18B20主要由 64 位光刻 ROM、溫度傳感器、非揮發的溫度報警觸發器 TH 和 TL、配置寄存器組成。 3.性能特點 1)獨特的單線接口,既可通過串行口線,也可通過其它 I/O 口線與微機接口,無需變換其它電路,直接輸出被測溫度值; 2)DS18B20 支持多點組網功能,多個 DS18B20 可用并聯在唯一的三線上,實現組網多點測溫; 3)DS18B20 在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內; 4)適應電壓范圍更寬,電壓范圍:3.0~5.5V; 5) DS18B20 不需要備份電源,既可用數據線供電,也可采用外部電源供電; 6)測量范圍為-55℃~+125℃,固有測溫分辨率為 0.5℃; 7)可編程的分辨率為 9~12 位,對應的可分辨溫度分別為 0.5℃、0.25℃、0.125℃和 0.0625℃,可實現高精度測溫; 8)測量結果直接輸出數字溫度信號,以“一線總線”串行傳送給 CPU,同時可傳送 CRC 校驗碼,具有較強的抗干擾糾錯能力; 9)警告搜索命令能識別和尋址溫度在編訂的極限之外的器件(溫度警告情況); 10)應用范圍包括恒溫控制、工業系統、消費類產品、溫度計或任何熱敏系統; 11)DS18B20 具有負壓特性:電源極性接反時,芯片不會因發熱而燒毀,但不能正常工作。 二.測溫原理 DS18B20 的測溫原理:低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器 1。高溫度系數晶振隨溫度變化其振蕩率明顯改變所產生的信號作為計數器 2 的脈沖輸入。計數器 1 和溫度寄存器被預置在-55℃所對應的一個基數值。計數器 1 對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器 1 的預置值減到 0 時,溫度寄存器的值將加 1,計數器 1 的預置將重新被裝入,計數器 1 重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到計數器 2 計數到 0 時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數器 1 的預置值。 三.DS18B20 控制接口介紹 1.64 位光刻 ROM 光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。64 位光刻 ROM 的排列是:開始 8 位(28H)是產品類型標號,接著的 48位是該 DS18B20 自身的序列號,最后 8 位是前面 56 位的循環冗余校驗碼(CRC=X8+X5+X4+1)。光刻 ROM 的作用是使每一個 DS18B20 都各不相同,這樣就可以實現一根總線上掛接多個 DS18B20 的目的。 2.溫度傳感器 DS18B20 加電后,處在空閑狀態,要啟動溫度測量和模數轉換,處理器需要向其發出 Convert T[44h]命令,轉換完后DS18B20回到空閑狀態,溫度數據以帶符號位的 16 位補碼存儲在溫度寄存器中。 溫度是正值還是負值,正值時 S=0,負值時 S=1,表 1 給出了一些數字輸出數據與對應的溫度值的例子。以 12 位轉化為例:用 16 位符號擴展的二進制補碼讀數形式提供,以 0.0625℃/LSB 形式表達,其中 S 為符號位。例如+125℃的數字輸出為 07D0H,+25.0625℃的數字輸出為 0191H,-25.0625℃的數字輸出為 FF6FH,-55℃的數字輸出為 FC90H。 3.非揮發的溫度報警觸發器 TH 和 TL DS18B20 完成溫度轉換后,就把測得的溫度值與 TH、TL(TH 和 TL 分別為最高和最低檢測溫度)作比較。若 T〉TH 或 T〈TL,則將該器件內的告警標志置位,并對主機發出的告警搜索命令作出響應。因此,可用多只 DS18B20 同時測量溫度并進行告警探索搜索。一旦某測溫點越限,主機利用告警搜索命令即可識別正在告警器件。高低溫報警觸發器 TH 和 TL、配置寄存器均由一個字節的 EEPROM 組成,使用一個存儲器功能命令可對 TH、TL 或配置寄存器寫入。 4.配置寄存器 配置寄存器由R0和R1組成。該字節各位的意義如表3所示,低五位一直都是“1”,TM 是測試模式位,用于設置 DS18B20 在工作模式還是在測試模式。在 DS18B20 出廠時該位被設置為 0,用戶不要去改動。R1 和 R0 用來設置分辨率(DS18B20出廠時被設置為 12 位)。
表格 3 配置寄存器結構
5.高速暫存存儲器 高速暫存存儲器由 9 個字節組成。開始兩個字節包含被測溫度的數字量信息;第 3、4、5 字節分別是 TH、TL、配置寄存器的臨時復制,每一次上電復位時被刷新;第 6 字節未用,表現為全邏輯 1;第 7、8 字節為計數剩余值和每度計數值;第 9 字節讀出的是前面所有 8個字節的 CRC 碼,可用來保證通信正確。 根據 DS18B20 的通訊協議,主機(單片機)控制 DS18B20 完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對 DS18B20 進行復位操作,復位成功后發送一條 ROM指令,最后發送 RAM 指令,這樣才能對 DS18B20 進行預定的操作。復位要求主 CPU將數據線下拉 500 微秒,然后釋放,當 DS18B20 收到信號后等待 16~60 微秒左右,后發出 60~240 微秒的存在低脈沖,主 CPU 收到此信號表示復位成功。 3.2.2 DS18B20溫度傳感器與單片機的接口電路圖 11 溫度傳感器模塊 3.3LCD1602顯示模塊設計在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產品的通過器件,如在計算器、萬用表、電子表及很多家用電子產品中都可以看到,顯示的主要是數字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發光管、LED數碼管、液晶顯示器。發光管和LED數碼管比較常用,軟硬件都比較簡單,現在LCD1602已經很普遍了,本章重點介紹字符型液晶顯示器的應用。 在單片機系統中應用液晶顯示器作為輸出器件有以下幾個優點: 顯示質量高 由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質高且不會閃爍。 數字式接口 液晶顯示器都是數字式的,和單片機系統的接口更加簡單可靠,操作更加方便。 體積小、重量輕 液晶顯示器通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示器要輕得多。 功耗低 相對而言,液晶顯示器的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示器要少得多。 3.3.1 LCD1602簡介 液晶顯示簡介 ①液晶顯示原理 液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。 ②液晶顯示器的分類 液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據驅動方式來分,可以分為靜態驅動、單純矩陣驅動和主動矩陣驅動三種。 ③液晶顯示器各種圖形的顯示原理: 線段的顯示 點陣圖形式液晶由M×N個顯示單元組成,假設LCD顯示屏有64行,每行有128列,每8列對應1字節的8位,即每行由16字節,共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區1024字節相對應,每一字節的內容和顯示屏上相應位置的亮暗對應。例如屏的第一行的亮暗由RAM區的000H——00FH的16字節的內容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。 字符的顯示 用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區的8字節,還要使每字節的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。 漢字的顯示 漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據在LCD上開始顯示的行列號及每行的列數可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節,光標位置加1,送第二個字節,換行按列對齊,送第三個字節……直到32B顯示完就可以LCD上得到一個完整漢字。 字符型LCD1602簡介 字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。 LCD1602的基本參數及引腳功能 LCD1602分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖3.10所示: 圖 12 LCD尺寸圖 LCD1602主要技術參數 顯示容量:16×2個字符; 芯片工作電壓:4.5—5.5V; 工作電流:2.0mA(5.0V); 模塊最佳工作電壓:5.0V; 字符尺寸:2.95×4.35(W×H)mm; 第1腳:VSS為地電源; 第2腳:VDD接5V正電源; 第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度; 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器; 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據; 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令; 第7~14腳:D0~D7為8位雙向數據線; 第15腳:背光源正極; 第16腳:背光源負極。 引腳功能說明 1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表4所示: 表格 4 引腳接口說明
LCD1602的指令說明及時序 1602液晶模塊內部的控制器共有11條控制指令,如表5所示:
表格 5控制命令表 1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置。 指令2:光標復位,光標返回到地址00H。 指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。 指令7:字符發生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。 指令10:寫數據。 指令11:讀數據。 與HD44780相兼容的芯片時序表如下: 表格 6基本操作時序表 | | | | | | | RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 | | | | | | | | | | RS=H,R/W=L,D0—D7=數據,E=高脈沖 | | |
LCD1602的RAM地址映射及標準字庫表 液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3.13是1602的內部顯示地址。
圖 13 LCD 內部顯示地址 3.3.2 LCD1602與單片機的接口電路圖 14 LCD模塊電路圖 3.4報警器的設計報警模塊采用了蜂鳴器報警,由軟件編程,當溫度高于預設值是蜂鳴器急促響起。提醒工作人員注意溫度過高,蜂鳴器與單片機的連接電路如圖3.19 圖 15 報警模塊電路圖
第四章 系統軟件設計4.1Keil軟件概述單片機開發中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變為CPU可以執行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變為機器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發技術的不斷發展,從普遍使用匯編語言到逐漸使用高級語言開發,單片機的開發軟件也在不斷發展,Keil軟件是目前最流行開發MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部份組合在一起。運行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統。 1. 系統概述 Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。用過匯編語言后再使用C來開發,體會更加深刻。 Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。 2.Keil C51單片機軟件開發系統的整體結構 C51工具包的整體結構, uVision與Ishell分別是C51 for Windows和for Dos的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創建生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。
4.2主程序
4.3讀出溫度子程序本次設計的重點在于溫度采集系統和顯示系統部分,這兩個部分直接關系到設計的成功與否
4.4溫度報警命令子程序
4.5顯示數據刷新子程序
第五章 調試與仿真5.1Proteus簡介 Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。 Proteus提供了豐富的資源 (1)Proteus可提供的仿真元器件資源:仿真數字和模擬、交流和直流等數千種元器件,有30多個元件庫。 (2)Proteus可提供的仿真儀表資源 :示波器、邏輯分析儀、虛擬終端、SPI調試器、I2C調試器、信號發生器、模式發生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個電路中隨意的調用。 (3)除了現實存在的儀器外,Proteus還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數指標,例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結果的影響。 5.2調試與仿真繪制原理圖如附錄A 調試與仿真步驟如下: 第一步:啟動軟件,雙擊桌面的Keil C51快捷圖標,進入如圖5.1所示的Keil C51集成開發環境。
圖5.1 第二步:建立工程項目,選擇菜單欄的PROJECT,NEW PROJECT命令,建立一個新的UVISION3工程,命名為畢業設計,單擊保存按鈕,選擇CPU型號如圖5.2 圖5.2 第三步:建立項目文件,單擊FILE,NEW 新建一個名為Tewt1的空白文件,單擊FILE,save,如圖5.3所示。 圖5.3 第四步:添加項目文件,右擊Source Group1,選擇Add Files to Group “Source Group1” 如圖5.4。 圖5.4 然后找到剛才新建的源文件并選擇,單擊Add,加載完成后單擊Close。 第五步:工程的詳細設置,在uvision3的菜單PROJECT,OPTIONS FOR TARGET TAGET1的OUTPUT選項卡中,選擇Create HEX File以產生hex文件。 第六步:工程編譯,選擇菜單Project,Rebuild all target files后,程序會進行編譯。若沒有錯誤則生成相應的工程名.HEX的文件,用于下載程序到單片機上單獨硬件運行,如圖5.5. 圖5.5 第七步:仿真,在proteus上畫好的原理圖上雙擊單片機,選擇剛才編譯好的.HEX文件確定,如圖5.6. 圖5.6 最后單擊run,進行仿真。結果如圖5.7所示。DS18B20溫度在LCD1602第一行實時顯示出來,第二行顯示本課題設計作者名字的拼音。 圖5.7
結論與展望在本次測溫系統設計中,低成本、模塊化和可控性是主線。 一.在模塊化設計方面,按每個要求的功能,從單片機、顯示器、傳感器等都盡量選擇市場上通用性最好的產品,在滿足性能的前提下,盡量選擇低成本元件,最大限度地降低了整個系統的成本。特別是選用了 DS18B20 傳感器,它集溫度與 A/D 轉換于一身,大大提高了系統的可靠性,使整個電路變得簡潔。 二.在硬件電路設計方面,也預留了管腳空間,為以后的功能擴展做好準備。 三.在軟件設計中融入模塊化、通用化思想,核心的方法就是每個功能程序化,主程序只是對各個功能的標志位進行判斷,依照標志位來決定程序的走向,可以實現了溫度在液晶上顯示,不用的模塊進入休息狀態以最大限度地降低功耗。 隨著時代的進步和電子技術的不斷發展,采用單片機控制進行采集溫度無疑是人們追求的目標之一,也是未來溫度計發展的主要方向。它所給人帶來的方便也是不可否認的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人生活、工作、學習、科研等社會各領域提供更好的更方便的“溫度計”,就需要從數單片機技術入手,將溫度測量技術一切向著數字化控制,智能化控制方向發展。
致謝本課題是在導師查君君老師的悉心指導下完成的,從論文的選題、系統設計、到修改定稿都沒有離開查老師的無私幫助,本人從查老師那里學到了很多的知識,使本人受益匪淺,在此向查老師表以崇高的敬意和由衷的感謝。 本次課題設計的順利完成更是離不開安徽工程科技學院電氣工程系的老師們在平時嚴謹的治學和勤懇的教育,因此在此要向他們致以深深的謝意。 在課題進行期間,還得到了同學們無私的幫助和支持,在此同樣對他們表示深深的感謝。 還有就是要感謝,大學四年來一直支持我的親人,朋友,本次論文的完成也是離不開他們的鼓勵和支持的。
作者:
2016年 6 月 25日
安徽工程科技學院畢業設計(論文) 參考文獻[1] 朱群峰,王曉芳,黃磊基于DS18B20的多路溫度采集系統[J].船電技術.2009,2:7-9 [2] 江太輝,鄧展威.DS18B20數字溫度傳感器的特征與應用[J].電子技術,2003,12:46-49 [3] 袁東等編著.51單片機應用開發實戰手冊[C].北京:電子工業出版社,2011:376-419 [4] 陶冶,袁永超,羅平.基于DS18B20的單片機溫度測量系統[J].農機化研究,2007.10:160-164 [5] 易麗華,黃俊.基于AT89C51單片機與DS18B20的溫度測量系統[J].電子與封裝,2009.5,9(5):39-43 [6] 李廣明,袁華強.基于嵌入式和DS18B20的溫度采集系統[J].東莞理工學院學報,2009.6,16(3):1-4 [7] 樊強,張敏,李霞.基于DS18B20的溫度采集系統設計與實現[J].農機化研究,2011,12:161-164. [8] 陰志國,袁兵,陳云輝.基于DS18B20多點溫度采集兼紅外無線傳輸系統研究[J].現代商貿工業,2010,16:373-373. [9] 陳桂友等編著.單片微型計算機原理及接口技術,2012.4 [10] 邢鵬康,劉彥華.基于Proteus和LabVIEW軟件的溫度采集系統的設計與仿真 [11] 郭慶鋒,基于單片機溫度采集系統的開發與應用,2015:1671-7341 [12] 曠愛華,李萍,基于單片機的遠程多路溫度采集系統,2015:1007-9416 [13] DS18B20數據手冊.pdf [14]Halang W A.Measuring the Performance of Real-time Systems[J].The International Journal of Time-critical Computing Systems , 2000 , 18( 1): 59-68 [15]Stao N, Hasegawa K.A computer controlled irrigation system for muskmelon using stem diameter sensor[J].Acta Horticulturae, 1995, 226: 91-98. [16]Kang Jianli, Wu Zhiqian. Methods of data fitt ing and graph draw ing in Visual Basic[ J].Comput er and Applied Chemistry , 2009, 26( 6) : 763- 766. 附錄A:電路原理圖繪制附錄B:一篇引用的引文文獻及翻譯DS18B20,Programmable Resolution,1-Wire® Digital Thermometer (P1 ~ P4) DESCRIPTION The DS18B20 Digital Thermometer provides 9 to 12–bit centigrade temperature measurements and has an alarm function with nonvolatile user-programmable upper and lower trigger points.The DS18B20 communicates over a 1-wire bus that by definition requires only one data line (and ground) for communication with acentral microprocessor.It has an operating temperature range of –55°C to +125°C and is accurate to ±0.5°C over the range of –10°C to +85°C.In addition, the DS18B20 can derive power directly from the data line (“parasite power”), eliminating the need for an external power supply. Each DS18B20 has a unique 64-bit serial code,which allows multiple DS18B20s to function on the same 1–wire bus;thus,it is simple to use one microprocessor to control many DS18B20s distributed over a large area.Applications that can benefit from this feature include HVAC environmental controls,temperature monitoring systems inside buildings,equipment or machinery,and process monitoring and control systems. DETAILED PIN DESCRIPTIONS Table 1 8-PIN SOIC* | TO-92 | SYMBOL | DESCRIPTION | 5 | 1 | GND | Ground. | 4 | 2 | DQ | Data Input/Outputpin.Open-drain 1-wire interface pin.Also provides power to the device when used in parasite power mode (see “Parasite Power” section.) | 3 | 3 | VDD | Optional VDDpin.VDD must begrounded for operation in parasite power mode. |
*All pins not specified in this table are “No Connect” pins. OVERVIEW Figure 1 shows a block diagram of the DS18B20,and pin descriptions are given in Table 1.The 64-bit ROM stores the device’s unique serial code.Thescratchpad memory contains the 2-byte temperature register that stores the digital output from the temperature sensor.In addition,the scratchpad provides accessto the 1-byte upper and lower alarm trigger registers(TH and TL),and the 1-byte configuration register.The configuration register allows the user to set theresolution of the temperature-to-digital conversion to 9,10,11,or12 bits.The TH,TL and configuration registers are nonvolatile(EEPROM),so they will retain datawhen the device is powered down. The DS18B20 uses Dallas’ exclusive 1-wire bus protocol that implements bus communication using one control signal.The control line requires a weak pullup resistor since all devices are linked to the bus via a 3-state or open-drain port(the DQ pin in the case of the DS18B20).In this bus system,the microprocessor(the master device)identifies and addresses devices on the bus using each device’s unique 64-bit code.Because each device has a unique code, the number of devices that can be addressed on one bus is virtually unlimited.The 1-wire bus protocol, including detailed explanations of the commands and “time slots,” is covered in the 1-WIRE BUS SYSTEM section of this datasheet. Another feature of the DS18B20 is the ability to operate without an external power supply.Power is instead supplied through the 1-wire pullup resistor via the DQ pin when the bus is high.The high bus signal also charges an internal capacitor (CPP), which then supplies power to the device when the bus is low.This method of deriving power from the 1-wire bus is referred to as “parasite power.”As an alternative, the DS18B20 may also be powered by an external supply on VDD. DS18B20 BLOCK DIAGRAM Figure 1
OPERATION –MEASURINGTEMPERATURE The core functionality of the DS18B20 is its direct-to-digitaltemperature sensor. The resolution of the temperature sensor isuser-configurable to 9,10,11,or 12 bits, corresponding toincrements of 0.5°C,0.25°C,0.125°C,and0.0625°C, respectively.The default resolution at power-up is 12 bit.The DS18B20 powers-up in a low-power idle state;to initiate a temperature measurement and A-to-D conversion, the master mustissue a Convert T[44h] command.Following the conversion, theresulting thermal data is stored in the 2-byte temperature register inthe scratchpad memory and the DS18B20 returns to its idle state.Ifthe DS18B20 is powered by an external supply, the master can issue “read time slots” (see the 1-WIRE BUS SYSTEM section) after the Convert T command and the DS18B20 will respond by transmitting 0 while the temperature conversion is in progress and 1 when the conversion is done.If the DS18B20 is poweredwith parasite power, this notification technique cannot be used since the bus must be pulled high by a strong pullup during the entire temperature conversion.The bus requirements for parasite power are explained in detail in the POWERING THE DS18B20 section of this datasheet. The DS18B20 output temperature data is calibrated in degrees centigrade;for Fahrenheit applications,a lookup table or conversion routine must be used.The temperature data is stored as a 16-bit sign-extended two’s complement number in the temperature register (see Figure 2).The sign bits (S) indicate if the temperatureis positive or negative:for positive numbers S=0 and for negative numbers S=1.If the DS18B20 is configured for 12-bit resolution,all bits in the temperatureregister will contain valid data.For 11-bit resolution,bit 0 is undefined.For 10-bit resolution, bits 1 and 0 are undefined,and for 9-bit resolution bits 2,1 and 0 areundefined.Table 2 gives examples of digital output data and the corresponding temperature reading for 12-bit resolution conversions. TEMPERATUREREGISTERFORMATFigure 2
TEMPERATURE/DATARELATIONSHIPTable2 TEMPERATURE | DIGITALOUTPUT (Binary) | DIGITAL OUTPUT(Hex) | +125°C | 0000 0111 1101 0000 | 07D0h | +85°C* | 0000 0101 0101 0000 | 0550h | +25.0625°C | 0000 0001 1001 0001 | 0191h | +10.125°C | 0000 0000 1010 0010 | 00A2h | +0.5°C | 0000 0000 0000 1000 | 0008h | 0°C | 0000 0000 0000 0000 | 0000h | -0.5°C | 1111 1111 1111 1000 | FFF8h | -10.125°C | 1111 1111 0101 1110 | FF5Eh | -25.0625°C | 1111 1110 0110 1111 | FE6Fh | -55°C | 1111 1100 1001 0000 | FC90h |
*The power-on reset value of the temperature register is +85°C OPERATION –ALARMSIGNALING After the DS18B20 performs a temperature conversion, the temperature value is compared to the user-defined two’s complement alarm trigger values storedin the 1-byte TH and TL registers (see Figure 3).The sign bit(S) indicates if the value is positive or negative: for positive numbers S=0 and for negative numbersS=1.The TH and TL registers are nonvolatile (EEPROM) so they will retain data when the device is powered down.TH and TL can be accessed through bytes 2and 3 of the scratchpad as explained in the MEMORY section of this datasheet. THAND TLREGISTER FORMATFigure 3 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 Only bits 11 through 4 of the temperature register are used in the TH and TL comparison since TH and TL are 8-bit registers.If the result of a temperaturemeasurement is higher than TH or lower than TL,an alarm condition exists and an alarm flag is set inside the DS18B20.This flag is updated after every temperaturemeasurement; therefore, if the alarm condition goes away, the flag will be turned off after the next temperature conversion. The master device can check the alarm flag status of all DS18B20s on the bus by issuing an Alarm Search [ECh] command.Any DS18B20s with a set alarmflag will respond to the command, so the master can determine exactly which DS18B20s have experienced an alarm condition.If an alarm condition exists and theTH or TL settings have changed,another temperature conversion should be done to validate the alarm condition. POWERING THEDS18B20 The DS18B20 can be powered by an external supply on the VDD pin, or it can operate in “parasite power” mode, which allows the DS18B20 to functionwithout a local external supply.Parasite power is very useful for applications that require remote temperature sensing or that are very space constrained. Figure 1shows the DS18B20’s parasite-power control circuitry, which “steals” power from the 1-wire bus via the DQ pin when the bus is high.The stolen charge powers the DS18B20 while the bus is high, and some of the charge is stored on the parasite power capacitor (CPP) to provide power when the bus is low.When the DS18B20 is used in parasite power mode, the VDD pin must be connected to ground. 外文譯文:(From:DS18B20,Programmable Resolution,1-Wire® Digital Thermometer) DS18B20,可編程的單總線數字溫度計 (P1 ~ P4)
描述 數字溫度計DS18B20可以提供9至12位攝氏溫度測量和非易失性用戶可編程上限和下限觸發點報警功能。DS18B20的通信使用單總線,只需要一個數據線(和地線)為與中央微處理器。它用于測量溫度的范圍為-55°C至+125°C,當被測溫度范圍為-10°C至+85°C時可以精確到±0.5℃以上。此外,DS18B20的可以直接從數據線(“寄生電源”)得到電壓,無需外部電源供應器。 每個DS18B20都有一個唯一的64位串行代碼,這使得多個DS18B20在同一個單總線上運作,因此,使用一個微處理器控制多個DS18B20就變得很簡單。正因為DS18B20的這一特點,這使得包括暖通空調環境控制,溫度監測系統內的建筑物,機器設備,和過程的監測和控制系統等都將受益于此應用程序。 具體的芯片管腳說明如下表: 表-1 8腳SOIC* | TO-92 | 符號 | 說明 | 5 | 1 | GND | 地 | 4 | 2 | DQ | 單線應用的數據輸入/輸出引腳:漏極開路, 還提供電源的裝置在使用寄生模式時(見“寄生電源”一節) | 3 | 3 | VDD | 可選VDD引腳:有關連接的細節見“寄生電源”一節 |
*本表中未指定的引腳是“無連接”引腳。 概述 圖1給出了DS18B20的內部結構框圖和引腳,表1已經給出了引腳說明。64位的ROM中存儲設備的獨特串行碼。暫存存儲器包含雙字節溫度寄存器,用于存儲溫度傳感器的數字輸出。此外,暫存器還提供獲得1個字節的上限和下限報警觸發寄存器(TH和TL)和1個字節的寄存器配置。配置寄存器允許用戶設定的溫度到數字的決議轉換為9,10,11,或者12位。TH、TL和配置寄存器都是EEPROM,因此當丟電時將保留設備斷電時的數據。 DS18B20利用達拉斯獨家單總線協議,實現了用一個控制信號通信。由于所有設備連接到總線通過一個三態或漏極開路端口(DS18B20中DQ引腳),控制線需要一個弱上拉電阻。在這種總線系統中,微處理器(主設備)和地址識別設備的總線使用每個設備的唯一的64位代碼。因為每個裝置有一個唯一的代碼,一些設備可以在一個總線處理幾乎是無限的。這種單總線協議,包括命令和“時段”的詳細解釋,是在此資料的關于單總線系統部分。 DS18B20的另一個特點是無需外部電源進行工作。當總線電壓很高時,電源是由通過DQ引腳的一線上拉電阻來提供的。這個總線信號為高電平時,可以控制內部電容(CPP),然后作為供電設備時總線信號為低電平。這種從一線總線產生電源的方法稱為“寄生電源”。此外,DS18B20也可由外部電源供電。 DS18B20框圖如圖1
應用- 測量溫度 DS18B20的核心功能是它的直接數字式溫度傳感器。溫度傳感器的分辨率為用戶配置分別為9,10,11或12位,對應增量為0.5℃,0.25°,0.125°C和0.0625°C,默認分辨率是12 位。DS18B20的電源在低功耗空閑狀態;啟動溫度測量和A/D轉換時,主機必須發出一個轉換命令T[44H]。轉換后產生的熱數據存儲在2個字節的溫度寄存器暫存器,DS18B20的返回到其空閑狀態。如果DS18B20是由外部電源供電,當發出轉換T命令后,主機可以發出“讀時隙”(見單總線系統部分),此時DS18B20 將發送0以響應正在進行溫度轉換,當變成1時表示轉換完成。如果DS18B20是寄生電源供電,上述通信技術不適用,因為在整個溫度的轉換過程中總線必須通過一個上拉電阻來保持高電平?偩對寄生電源要求高的原因已經在本手冊的DS18B20的供電部分作了詳細解釋。 DS18B20的輸出溫度數據進行校準攝氏度輸出;為華氏應用,必須使用查表或轉換例程。溫度數據存儲在溫度寄存器為一個16位符號擴展的補碼(見圖2)標志位(S)表示溫度是正還是負:零上(正)時,S= 0,零下(負)時,S = 1。如果為負數DS18B20的12位分辨率的配置,在溫度寄存器所有位將包含有效位。當分辨率為11位時,位0是不確定的。對于10位分辨率,位1和0是不確定的,并為9位位分辨率位2,1和0是不確定的。表2給出的數字輸出數據的例子和相應的12位分辨率的溫度轉換。 溫度寄存器的格式如圖2
溫度數據關系表2 溫度/°C | 輸出數據(二進制) | 輸出數據(十六進制) | +125°C | 0000 0111 1101 0000 | 07D0h | +85°C* | 0000 0101 0101 0000 | 0550h | +25.0625°C | 0000 0001 1001 0001 | 0191h | +10.125°C | 0000 0000 1010 0010 | 00A2h | +0.5°C | 0000 0000 0000 1000 | 0008h | 0°C | 0000 0000 0000 0000 | 0000h | -0.5°C | 1111 1111 1111 1000 | FFF8h | -10.125°C | 1111 1111 0101 1110 | FF5Eh | -25.0625°C | 1111 1110 0110 1111 | FE6Fh | -55°C | 1111 1100 1001 0000 | FC90h |
*以上電源復位溫度值寄存器是+ 85°C 應用–報警信號 DS18B20進行溫度轉換后,溫度值和用戶定義的存儲在一個字節TH和TL存儲器中(見圖3)的報警觸發值相比較。符號位(S)表明溫度值是正數或負數:正時,S=0,負時,S=1。TH和TL存儲器都是EEPROM,所以當設備丟電時,他們將保留數據,TH和TL可以存儲在暫存器的字節2和3中,在本數據手冊的內存部分已經解釋過。 TH和TL寄存器格式圖3 第7位 第6位 第5位 第4位 第3位 第2位 第1位 第0位 由于TH和TL是8位寄存器,所以只有第11位通過4個溫度寄存器在TH和TL比較中有用。如果溫度測量結果高于TH或低于TL就會存在報警狀態,同時報警標志被設置在DS18B20。每一個溫度測量這個標志都會更新;因此,如果報警條件消失,該標志將被關閉,直到下一個溫度轉換結束。 主設備可以通過發出報警搜索命令[ECh]檢查所有的DS18B20總線上的報警標志狀態。所有含有報警標志的DS18B20s都將響應命令,因此主設備可以準確地確定哪些DS18B20已經經歷了一個報警狀態。如果存在報警條件并且TH或TL的設置已經改變了,另一個溫度轉換應該做驗證報警條件。 DS18B20的供電 DS18B20可以由VDD引腳上的外部電源供電,它可以工作在“寄生電源”模式下,它允許DS18B20的功能沒有本地外部電源供電。對于某些需要遠程溫度傳感或非常空間受限的情況下,寄生電源是非常有用的。圖1顯示了DS18B20的寄生蟲電源控制電路,當總線為高電平時,從單總線上“竊取”的電流通過DQ引腳。這些竊取”的電流給DS18B20供電。當總線為低電平時,一些存放在寄生電力電容器(CPP)電流提供電源。當DS18B20工作在寄生電源模式時,VDD引腳必須接地。
附錄C:主要參考文獻與摘要 [1] 周馳. 基于Atmega128單片機的機房空調溫度控制系統設計, 2015。 【摘 要】隨著信息化時代的到來,通信機房的數量也在急劇增多,作為通信機房主要的散熱設備,精密空調的控制也越來越受到廣大用戶的關注與重視。本文結合通信機房的溫度環境特征和控制系統的功能要求,給出了精密空調溫度控制系統的總體設計方案,并對溫度控制系統進行了控制算法研究和軟、硬件設計。控制系統采用了手操板加核心板的設計思路,兩板都以Atmega128單片機為控制核心,手操板則配以按鍵、顯示、通信等模塊電路,核心板上則設計了系統的溫濕度采集電路(通過DS18b20和DHT1l等數字溫濕度傳感器)、基于SPI通信的溫度控制電路、基于單片機PWM功能模塊的濕度控制電路、風機控制電路和通信模塊電路等外圍電路,詳細闡述了系統的軟件設計,重點給出了控制算法的實現過程和中斷服務過程?刂葡到y可實現信號采集、調濕裝置控制、調溫裝置控制、風機控制、數據計算、數據通信以及數據顯示等功能。 【關鍵詞】Atmega128;DS18b20;串行通信 [2]張博濤,劉華;趩纹瑱C的溫度采集系統的設計,2008. 【摘 要】介紹了一種溫度采集系統,分析了其測量原理。給出了其系統設計。本系統采用PT100熱電阻作為溫度傳感器,使用C8051F020單片機完成溫度采集,并給出了該系統的硬件結構和軟件流程。經現場調試、運行,溫度測量的準確度、精度都達到了設計要求,系統運行良好。 【關鍵詞】MCU;C8051F020;測溫 [3]劉永春,王秀碧;趩纹瑱C的分布式溫度采集系統設計,2008. 【摘 要】本文分析和設計了一款基于單片機和集成單總線溫度傳感器DS18B20和支持I~2C技術的LED和鍵盤驅動模塊ZLG7290的分布式溫度采集系統,主要包括系統控制、溫度信號采集、溫度信號顯示及控制等功能模塊。 【關鍵詞】AT89S52;LED;DS18B20 [4]劉瑩。基于單片機的精密儀器生產車間溫濕度自動控制系統,2014 【摘 要】該設計是基于單片機的溫濕度檢測控制系統,采用模塊化、層次化設計。采用新型的數字型溫濕度傳感器DHT11,它可以實現對溫度、濕度的采集,并將采集到的模擬信號轉換成數字信號;運用單片機STC89C52對數據進行分析和處理,為顯示提供信號;顯示部分采用字符型LCD1602液晶顯示器顯示所測溫度和濕度值。 【關鍵詞】智能化;DHT11;溫度濕度采集 [5]秋菜青;趩纹瑱CAT89S52的溫度控制系統,2010. 【摘 要】以水溫為主要控制目標,設計了溫度實時控制系統,采用AT89S52單片機為核心控制器件,用線性度好、靈敏度高的集成溫度傳感器AD590及分辨率高、噪聲低的A/D轉換器進行溫度采集,實現對水溫40~90℃自動控制,系統具有設定溫度顯示、當前溫度實時顯示的功能,經過實際運行表明,系統能夠較好地控制水溫。 【關鍵詞】單片機;AD590;A/D [6] 劉永春,張峰;趩纹瑱C的水溫控制系統設計,2008。 【摘 要】系統采用凌陽SPCE061A單片機作為水溫控制中心,水溫信號由DS18B20數字溫度傳感器采集,控制器采用數字增量式PID算法,控制信號經繼電器實現對熱電爐工作狀態及水溫控制。系統采用上位機PC機實現多個控制對象的集中監控。 【關鍵詞】智能化;DS18b20;SPCE061A [7]馮少懷,周申輝;贒S18B20的溫度測量系統,2009. 【摘 要】以溫度的采集處理和顯示為目的,研究了基于AT89S51單片機的溫度檢測及顯示的設計方法,給出了硬件和軟件系統設計,包括溫度傳感器芯片的選取、單片機與溫度傳感器的接口設計以及實現溫度采集和數據傳輸的軟件設計。該系統結構簡單,成本較低,體積小,測溫范圍為-55℃~125℃,可以應用在很多溫度檢測領域。 【關鍵詞】AT89S51;DS18b20;串行通信 [8]李淑華,高翠山。基于單片機的遠距離自編碼數據采集系統設計,1998. 【摘 要】本文介紹一種在遠距離數據采集系統中,為了提高抗干擾和可靠性,利用單片機和PC機進行傳輸信號自編碼,解碼的電路設計。本系統在北京譜儀的簇設電子學系統中,對溫度和電壓的監控有重要意義。 【關鍵詞】溫度采集;DS18b20;單片機 [9]張長蓮,基于AT89C51單片機的溫度傳感器控制電路,2007 【摘 要】溫度是表征物體冷熱程度的物理量。本文簡要介紹了采用由 AT89C51單片機及溫度傳感器組成數據采集電路,加上顯示電路和控制電路等,根據溫度數據測量,通過控制電路對溫度進行控制。本系統具有快速顯示、測量準確、精度高、可調溫控范圍、硬件結構簡單等優點,是一種比較經濟的溫度控制系統。該系統的設計使溫度傳感器正向單片集成化、智能化、網絡化和單片系統化方向發展。 【關鍵詞】AT89C51;單片機集成;溫度傳感器 [10]葉華,袁運連;趩纹瑱C的高溫工業爐電視監控裝置,2009 【摘 要】 針對高溫工業爐監控性能自動化程度較低的問題,介紹了一種用ATMega128單片機為CPU組成的電視監控裝置設計和實現的基本過程。從需求和功能入手分析系統整體框架,詳述了基于單片機的硬件主體設計,利用模數接口,采集現場溫度傳感器、冷卻氣流量及壓力、水壓力傳感器等標準4~20mA模擬量信號以獲取高溫工業爐運行參數。單片機一方面將獲取的實時參數顯示在控制箱的小型液晶屏上,另一方面與監控主機實現實時數據通訊。并利用探頭裝置和限位開關等,控制探頭電機的正反轉,進而實現高溫工業爐探頭在不同條件下的自動退出保護控制。最后就其硬件設計和功能需求開發了實現相應功能的單片機C程序。 【關鍵詞】ATMega128;液晶;監控裝置 附錄D:程序- #include
- #include
- #define uchar unsigned char
- #define uint unsigned int
- uint code table[]={0+0x30,1+0x30,2+0x30,3+0x30,4+0x30,5+0x30,6+0x30,7+0x30,8+0x30,9+0x30};
-
- uchar code table1[]="liujiantao";
- uchar code table2[]=".";
- uchar code table3[]="C";
- sbit ds=P2^2; //溫度傳感器信號線
- sbit beep=P2^3; //蜂鳴器
- sbit lcden=P3^4; //液晶使能端
- sbit lcdrs=P3^5; //液晶數據命令選擇端
- uchar num;
- uint temp;
- float f_temp;
- uint warn_l1=260;
- uint warn_l2=250;
- uint warn_h1=300;
- uint warn_h2=320;
-
- sbit led0=P1^0;
- sbit led1=P1^1;
- sbit led2=P1^2;
- sbit led3=P1^3;
-
-
-
- void delay(uint z)//延時函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
-
-
-
- void dsreset(void) //18B20復位,初始化函數
- {
- uint i;
- ds=0;
- i=103;
- while(i>0)i--;
- ds=1;
- i=4;
- while(i>0)i--;
- }
-
- bit tempreadbit(void) //讀1位函數
- {
- uint i;
- bit dat;
- ds=0;i++; //i++ 起延時作用
- ds=1;i++;i++;
- dat=ds;
- i=8;while(i>0)i--;
- return (dat);
- }
-
- uchar tempread(void) //讀1個字節
- {
- uchar i,j,dat;
- dat=0;
- for(i=1;i<=8;i++)
- {
- j=tempreadbit();
- dat=(j<<7)|(dat>>1); //讀出的數據最低位在最前面,這樣剛好一個字節在DAT里
- }
- return(dat);
- }
-
- void tempwritebyte(uchar dat) //向18B20寫一個字節數據
- {
- uint i;
- uchar j;
- bit testb;
- for(j=1;j<=8;j++)
- {
- testb=dat&0x01;
- dat=dat>>1;
- if(testb) //寫 1
- {
- ds=0;
- i++;i++;
- ds=1;
- i=8;while(i>0)i--;
- }
- else
- {
- ds=0; //寫 0
- i=8;while(i>0)i--;
- ds=1;
- i++;i++;
- }
-
- }
- }
-
- void tempchange(void) //DS18B20 開始獲取溫度并轉換
- {
- dsreset();
- delay(1);
- tempwritebyte(0xcc); // 寫跳過讀ROM指令
- tempwritebyte(0x44); // 寫溫度轉換指令
- }
-
- uint get_temp() //讀取寄存器中存儲的溫度數據
- {
- uchar a,b;
-
- dsreset();
- delay(1);
- tempwritebyte(0xcc);
- tempwritebyte(0xbe);
- a=tempread(); //讀低8位
- b=tempread(); //讀高8位
- temp=b;
- temp<<=8; //兩個字節組合為1個字
- temp=temp|a;
- f_temp=temp*0.0625; //溫度在寄存器中為12位 分辨率位0.0625°
- temp=f_temp*10+0.5; //乘以10表示小數點后面只取1位,加0.5是四舍五入
- f_temp=f_temp+0.05;
- return temp; //temp是整型
- }
- void write_com(uchar com)
- {
- lcdrs=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void init()
- {
- lcden=0;
- write_com(0x38);//設置16X2顯示,5X7點陣,8位數據接口
- write_com(0x0c);//設置開顯示,不顯示光標
- write_com(0x06);//寫一個字符后地址指針加1
- write_com(0x01);//顯示清零,數據指針清零
- }
-
- void write_data(uchar date)
- {
- lcdrs=1;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- ////////////////////顯示程序//////////////////////////
- void display(uint o,uint p,uint q )
- {
- init();
- write_com(0x80);
- write_data(table[o]);
- write_com(0x80+0x01);
- write_data(table[p]);
- write_com(0x80+0x02);
- write_data(table2[0]);
- write_com(0x80+0x03);
- write_data(table[q]);
- write_com(0x80+0x04);
- write_data(table3[0]);
- write_com(0x80+0x40);
- for(num=0;num<10;num++)
- {
- write_data(table1[num]);
- }
- delay(500);
- }
-
- void dis_temp(uint t)
- {
- uint i,u,v;
- i=t/100;
- u=t%100/10;
- v=t%100%10;
- display(i,u,v);
- delay(500);
-
- }
- //////////////////////////////////////////////
- void warn(uint s,uchar led) //蜂鳴器報警聲音 ,s控制音調
- {
- uchar i;i=s;
-
- beep=0;
- P1=~(led);
- while(i--)
- {
- dis_temp(get_temp());
- }
- beep=1;
- P1=0XFF;
- i=s;
- while(i--)
- {
- delay(5);
- }
- }
- void deal(uint t)
- {
- uchar i;
- if((t>warn_l2)&&(t<=warn_l1)) //大于25度小于27度
- {
- warn(40,0x01);
-
- }
- else if(t<=warn_l2) //小于25度
- {
- warn(10,0x03);
- }
- else if((t=warn_h1)) //小于32度大于30度
- {
- warn(40,0x04);
- }
- else if(t>=warn_h2) //大于32度
- {
- warn(10,0x0c);
- }
- else
- {
- i=40;
- while(i--)
- {
- delay(5);
- }
- }
- }
-
-
-
-
- void main()
- {
- uchar i;
- while(1)
- {
- dsreset();
- tempchange();
- for(i=10;i>0;i--)
- {
- dis_temp(get_temp());}
- deal(temp);
-
-
-
- }
- }
復制代碼
|