【優秀畢業設計】基于AT89C51單片機的多點溫度檢測系統的設計_第1頁
【優秀畢業設計】基于AT89C51單片機的多點溫度檢測系統的設計_第2頁
【優秀畢業設計】基于AT89C51單片機的多點溫度檢測系統的設計_第3頁
【優秀畢業設計】基于AT89C51單片機的多點溫度檢測系統的設計_第4頁
【優秀畢業設計】基于AT89C51單片機的多點溫度檢測系統的設計_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、南 京 理 工 大 學 畢業設計說明書(論文) 作作 者者:孫露 學學 號:號: 104910252060 教教研研室室:機電教研室 專專 業業:機電一體化工程 題題 目目:多點溫度檢測系統的設計 指導者:指導者: 謝聰謝聰 工程師工程師 評閱者:評閱者: 2012 年 5 月 中中文文摘摘要要 本設計系統地介紹了基于 ds18b20 的多點溫度測量系統的組成、設計方案、 電路原理、程序設計以及系統仿真過程。ds18b20 多點溫度測量系統是以 at89c51 單片機作為控制核心,智能溫度傳感 ds18b20 為控制對象,運用匯編 語言編程實現系統的各種功能。 該系統由單片機最小系統、傳感器電

2、路、報警電路、lcd 顯示電路、行列 式鍵盤電路、電源電路六大部分組成。借助 proteus 軟件,實現了系統電路設 計和仿真。它適用于電力工業、煤礦、森林、火災、高層建筑等場所,還可以 用于環境惡劣的工業控制現場。通過 ds18b20 的單總線技術,實現對遠程環境 的溫度測量與監控。 關鍵詞 ds18b20, 仿真, 測量系統, proteus 英英 文文摘摘要要 title multi-point temperature detection system design abstract this system introduced on the ds18b20 multi-point te

3、mperature measurement system components, design, circuit theory, program design and product development process. ds18b20 multi-point temperature measurement system is controlled by the core at89c51 scm , smart temperature sensing ds18b20 targets for the control, and is used of edit collected materia

4、ls language programming system functions. the system is the smallest mcu system, sensor circuit, alarm circuits, lcd display circuit, the five major determinant keyboard circuit components. the system is constituted from proteus software, and the system design and simulation, and the eventual adopti

5、on of hardware verification six big part. it is applicable to electric power industry, coal mine, forest, a fire, key figures building etc. place, return can used for environment bad of industry control the spot. ds18b20 through a single bus technology, to achieve the long-range environmental temper

6、ature measurement and monitoring. key words ds18b20, simulation, measurement system,proteus 目 錄 1 緒論.1 1.1 課題設計背景 .1 1.2 課題研究的目的意義 .1 1.3 國內外現狀及水平 .2 1.4 課題研究內容 .2 2 2 系統的需求分析與總體方案論證.4 2.1 基于模擬溫度傳感器設計方案 .4 2.2 基于數字溫度傳感器設計方案 .5 2.3 方案論證 .5 3 電路設計.7 3.1 工作原理.7 3.2 ds18b20 與單片機接口技術.8 3.2.1 ds18b20 的引腳功

7、能 .8 3.2.2 ds18b20 與單片機接口電路 .8 3.2.3 溫度寄存器格式和溫度/數據對應關系.9 3.2.4 單片機對 ds18b20 的控制方法.10 3.3 鍵盤電路設計 .13 3.3.1 行列式鍵盤與單片機接口電路.13 3.3.2 鍵盤面板.13 3.4 顯示電路設計.14 3.4.1 lcd 引腳分布及功能 .14 3.4.2 單片機與圖形液晶的接口電路 .15 3.5 報警電路設計 .16 3.6 電源電路設計 .17 4 程序設計.18 4.1 系統資源分配 .18 4.1.1 系統硬件資源分配.18 4.1.2 系統軟件資源分配.18 4.2 系統流程設計 .

8、18 4.2.1 主程序流程設計 .18 4.2.2 ds18b20 程序流程設計 .20 4.2.3 顯示程序流程.21 4.2.4 鍵盤程序程序流程.22 4.3 程序設計 .24 4.3.1 主程序設計.24 5 系統仿真.25 5.1 proteus 仿真環境介紹 .25 5.2 原理圖繪制.26 5.3 程序加載.27 5.3.1 程序編譯.27 5.3.2 程序加載.27 5.4 系統仿真 .28 5.5 仿真結果分析 .33 結束語.34 致 謝.35 參考文獻.36 附錄一.38 附錄二.39 1 1 緒論緒論 1.11.1 課題課題設計背景設計背景 溫度是一個和人們生活環境有

9、著密切關系的物理量,也是一種在生產、科研、 生活中需要測量和控制的重要物理量,是國際單位制七個基本量之一,同時它也是 一種最基本的環境參數。人民的生活與環境溫度息息相關,物理、化學、生物等學 科都離不開溫度。在工業生產和實驗研究中,在電力、化工、石油、冶金、機械制 造、大型倉儲室、實驗室、農場塑料大棚甚至人們的居室里經常需要對環境溫度進 行檢測,并根據實際的要求對環境溫度進行控制。比如,發電廠鍋爐的溫度必須控 制在一定的范圍之內;許多化學反應的工藝過程必須在適當的溫度下才能正常進行。 煉油過程中,原油必須在不同的溫度和壓力條件下進行分流才能得到汽油、柴油、 煤油等產品;沒有合適的溫度環境,許多

10、電子設備不能正常工作,糧倉的儲糧就會 變質霉爛,酒類的品質就沒有保障。可見,研究溫度的測量具有重要的理論意義和 推廣價值。 隨著現代計算機和自動化技術的發展,作為各種信息的感知、采集、轉換、傳 輸相處理的功能器件,溫度傳感器的作用日益突出,成為自動檢測、自動控制系統 和計量測試中不可缺少的重要技術工具,其應用已遍及工農業生產和日常生活的各 個領域。本設計就是為了滿足人們在生活生產中對溫度測量系統方面的需求。 本設計要求系統測量的溫度的點數為 4 個,測量精度為 0.1,測溫范圍為 -55+128。采用液晶顯示溫度值和路數,顯示格式為:溫度的符號位,整數部分,小 數部分,最后一位顯示。顯示數據每

11、一秒刷新一次。 1.21.2 課題研究的目的意義課題研究的目的意義 21 世紀科學技術的發展日新月異,科技的進步帶動了測量技術的發展,現代控 制設備的性能和結構發生了巨大的變化,我們已經進入了高速發展的信息時代,測 量技術也成為當今科技的主流之一,被廣泛地應用于生產的各個領域。對于本次設 計,其目的在于: (1)掌握數字溫度傳感器 ds18b20 的原理、性能、使用特點和方法,利用 c51 對系統進行編程。 (2)本課題綜合了現代測控、電子信息、計算機技術專業領域方方面面的知識, 具有綜合性、科學性、代表性,可全面檢驗和促進學生的理論素養和工作能力。 (3) 本課題的研究可以使學生更好地掌握基

12、于單片機應用系統的分析與設計 方法,培養創新意識、協作精神和理論聯系實際的學風,提高電子產品研發素質、 增強針對實際應用進行控制系統設計制作的能力。 1.31.3 國內外現狀及水平國內外現狀及水平 傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器被廣泛用于工農業生 產、科學研究和生活等領域,數量高居各種傳感器之首。溫度傳感器的發展大致經 歷了以下三個階段:傳統的分立式溫度傳感器(含敏感元件);模擬集成溫度傳感器 控制器;數字溫度傳感器。目前,國際上新型溫度傳感器正從模擬式向數字式、由 集成化向智能化、網絡化的方向發展,同時具有抑制串模干擾能力強、分辨力高、 線性度好、成本低等優點。隨著我國四

13、個現代化和經濟發展,我國在科技和生產各 領域都取得了飛速的發展和進步,發展以溫度傳感器為載體的溫度測量技術具有重 大意義。 ds18b20 是美國 dallas 公司生產的單總線數字溫度傳感器,可把溫度信號直接 轉換成串行數字信號供微機處理,而且可以在一條總線上掛接任意多個 ds18b20 芯片,構 成多點溫度檢測系統無需任何外加硬件(單總線數字溫度傳感器 ds18b20 及其在 單片機系統的應用 ) 。 單總線數字溫度傳感器,具有微型化、低功耗、高性能、抗干擾能力強、易于與 微控制器接口優點,適合于各種溫度測控系統(數字溫度傳感器 ds18b20 及其應用 ) 。以 ds18b20 為例,介

14、紹數字式溫度傳感器的功能特點及由 ds18b20 組成的溫度測 控網絡系統的設計。 隨著社會的發展、農業生產也進人了工廠化、數字化時代,人們開始“使用人工 設施、人工控制環境因素,使植物獲得最適宜的生長條件,從而延長生產季節,獲得最 佳產出”,由此“工廠化農業”應運而生并被廣泛接受(單總線溫度傳感器 ds18b20 及其在溫室系統中的應用 ) 。 我國是一個人口眾多的農業大國 ,糧食生產、需求與儲備量很大 ,糧食在儲備 的過程中常因糧食的濕度過大而升溫發熱 ,又由于檢測手段的落后造成溫檢系統錯 報或漏報 ,從而導致糧食大量的腐爛變質 ,給國家帶來巨大的損失。這就對糧情檢 測系統提出了較高的要求

15、(一種基于單線數字溫度傳感器 ds18b20 的儲糧溫度檢 測系統的設計 ) 。而基于 ds18b20 設計的溫度檢測系統就可以實現這一需求。 1.41.4 課題研究內容課題研究內容 本設計研究的主要內容如下: (1)在廣泛查閱溫度檢測控制理論和方法、測溫技術和溫度控制技術等資料的 基礎上,根據不同的控制要求及應用領域完成對系統方案的總體設計。本設計采用 以 at89c51 為核心的單片機系統,來實現對溫度的檢測、報警等功能。 (2)研究比較各相關元器件的功能與特點,選擇合適的元器件。 (3)系統硬件設計。系統硬件設計主要包括:溫度檢測、單片機數據采集處理、 顯示、鍵盤設定、報警電路等部分。

16、(4)系統軟件設計。本課題采用匯編語言,利用 keil 編譯器進行編程及調試。 主要研究 ds18b20 與單片機的通信協議、時序及一些通用程序等。 本設計的難點分為硬件和軟件兩個方面。其中硬件開發的難點在于各種元器件 的選擇和使用,如各種電阻、電容等的選擇。軟件開發的難點在于 ds18b20 的時序, 如果時序不正確,將無法讀出正確的溫度值,對系統產生很大的影響。 2 2 系統的需求分析與總體方案論證 2.12.1 基于模擬溫度傳感器設計方案基于模擬溫度傳感器設計方案 該方案由單片機、模擬溫度傳感器 ad590、運算放大器、ad 轉換器、44 鍵盤、lcd 顯示電路、集成功率放大器、報警器組

17、成,如圖 2.1 所示。 本方案采用模擬溫度傳感器 ad590 作為測溫元件,傳感器將測量的溫度變 換轉換成電流的變化,再通過電路轉換成電壓的變化,使用運算放大器交將信 號進行適當的放大,最后通過模數轉換器將模擬信號轉換成數字信號,傳給給 單片機,單片機將溫度值進行處理之后用 lcd 顯示 ,當溫度值超過設置值時, 系統開始報警。 單片機 模擬溫度傳感器 模擬溫度傳感器 lcd顯示電路 集 成 功 放 報 警 器 44鍵盤 模擬傳感器 ad590 模擬溫度傳感器 模擬溫度傳感器 運 算 放 大 器 多 路 選 擇 器 a/d 轉 換 圖 2.1 基于模擬溫度傳感器的測量系統方案 本方案使用的測

18、溫元件的性能指標如下: (1)ad590 的測溫范圍為55+150。 (2)ad590 的電源電壓范圍為 4v30v,電源電壓可在 4v6v 范圍變化, 電流 變化 1ma,相當于溫度變化 1k。ad590 可以承受 44v 正向電壓和 20v 反向 電壓,因而器件反接也不會被損壞。 (3)輸出電阻為 710mw。 (4)精度高,ad590 共有 i、j、k、l、m 五檔,其中 m 檔精度最高,在 55+150范圍內,非線性誤差為0.3。 集成溫度傳感器具有線性好、精度適中、靈敏度高、體積小、使用方便, 溫度測量范圍廣等優點,得到廣泛應用。集成溫度傳感器的輸出形式分為電壓 輸出和電流輸出兩種。

19、電壓輸出型的靈敏度一般為 10mv/k,溫度 0時輸出為 0,溫度 25時輸出 2.982v。電流輸出型的靈敏度一般為 1ma/k。 2.22.2 基于數字溫度傳感器設計方案基于數字溫度傳感器設計方案 該方案使用了 at89c51 單片機作為控制核心,以智能溫度傳感器 ds18b20 為 溫度測量元件,采用多個溫度傳感器對各點溫度進行檢測,通過 44 鍵盤模塊 對正常溫度進行設置顯示電路采用 12864 lcd 模塊,使用 lm386 作為報警電 路中的功率放大器。 圖 2.2 基于數字溫度傳感器測量系統方案 本課題采用數字溫度傳感器 ds18b20 作為測為測溫元件,它具有如下特點: (1)

20、只要求一個端口即可實現通信。 (2)在 ds18b20 中的每個器件上都有獨一無二的序列號。 (3)實際應用中不需要外部任何元器件即可實現測溫。 (4)測量溫度范圍在55到128之間。 (5)數字溫度計的分辨率用戶可以從 9 位到 12 位選擇。 (6)內部有溫度上、下限告警設置。 2.32.3 方案論證方案論證 本設計要求測量的點數為 4,測溫范圍為-55+128,精度為 0.1。 采用液晶顯示,同時顯示路數和溫度,每秒刷新 1 次顯示數據。 綜合模擬溫度傳感器和數字溫度傳感器的性能指標,以上兩個方案都能達 到設計的要求。 方案一采用模擬溫度傳感器 ad590,轉換結果需要經過運算放大器和

21、ad 轉 換器傳送給處理器。它控制雖然簡單,成本低,但是后續電路復雜,且需要進 單 片 機 溫度傳感器 溫度傳感器 lcd 顯示電路 集 成 功 放 報 警 器 44鍵盤 溫度傳感器 ds18b20 溫度傳感器 溫度傳感器 行溫度標定,集成溫度傳感器 ad590 輸出為電流信號,且輸出信號較弱,所以需 要后續放大及 a/d 轉換電路,如采用普通運放則精度難以保證,而測量放大器 價格較高,這樣會使系統成本升高。 方案二采用了數字溫度傳感器 ds18b20,改變了傳統溫度測試方法。它能 在現場采集溫度數據,直接將溫度物理量變換為數字信號并以總線方式傳送到 單片機進行數據處理,并且可根據實際要求通過

22、簡單的編程實現 9-12 位的數字 式讀數方式,因而使用 ds18b20 可使系統結構更趨簡單,可靠性更高,大大提 高系統的抗干擾能力。ds18b20 體積小、經濟、使用方便靈活,測試精度高, 較高的性能價格比,有 crc 校驗,系統簡明直觀。適合于惡劣環境的現場溫度 測試,如:環境控制、設備或過程控制、測溫類消費電子產品等。 方案二程序設計稍微復雜一些,但在畢業設計期間我用 ds18b20 做過溫度 計,也調試過 lcd,并且已經用 proteus 實現了系統的仿真。因此,該方案完 全具有可行性,同時體現了技術的先進性,經濟上也有很大的優勢。 綜上所述,本課題采用方案二對系統進行設計。 3

23、3 電路設計電路設計 3.13.1 工作原理工作原理 基于 ds18b20 多點溫度測量系統以 at89c51 為核心器件,以 keil 為系統開 發平臺,用匯編語言進行程序設計,以 proteus 作為仿真軟件設計而成的。系 統主要由傳感器電路、液晶顯示電路、鍵盤電路、報警電路、電源電路組成, 系統原理圖如圖 3.1 所示。 圖 3.1 系統原理圖 ds18b20 是數字溫度傳感器,它的輸入/輸出采用數字量,以單總線技術, 接收主機發送的命令,根據 ds18b20 內部的協議進行相應的處理,將轉換的溫 度以串口發送給主機。主機按照通信協議用一個 io 口模擬 ds18b20 的時序,發 送命

24、令(初始化命令、rom 命令、ram 命令)給 ds18b20,轉換完成之后讀取溫 度值,在內部進行相應的數值處理,用圖形液晶模塊顯示各點的溫度。在系統 啟動之時,可以通過 44 鍵盤設置各點溫度的上限值,當某點溫度超過設置值 時,報警器開始報警,液晶顯示該傳感器的路數、設置溫度值、實際溫度值, 從而實現了對各點溫度的實時監控。 每個 ds18b20 有自己的序列號,因此本系統可以在一根總線上掛接了 4 個 ds18b20,通過 crc 校驗,對各個 ds18b20 的 rom 進行尋址,地址符合的 ds18b20 才作出響應,接收主機的命令,向主機發送轉換的溫度。采用這種 ds18b20 尋

25、址技術,使系統硬件電路更加簡單。 3.23.2 ds18b20ds18b20 與單片機接口技術與單片機接口技術 3.2.13.2.1 ds18b20ds18b20 的引腳功能的引腳功能 ds18b20 的引腳功能描述見表 3.1。 表 3.1ds18b20 引腳功能描述 序號名稱引腳功能描述 1gnd地信號 2dq數字輸入輸出引腳,開漏單總線接口引腳,當使用寄生 電源時,可向電源提供電源 3vdd可選擇的 vdd 引腳,當工作于寄生電源時,該引腳必須 接地 3.2.23.2.2 ds18b20ds18b20 與單片機接口與單片機接口電路電路 如圖 3.2 所示,為單片機與 ds18b20 的接

26、口電路。ds18b20 只有三個引腳, 一個接地,一個接電源,一個數字輸入輸出引腳接單片機的 p1.7 口,電源與數 字輸入輸出腳間需要接一個 4.7k 的電阻。 圖 3.2 ds18b20 與單片機接口電路 3.2.33.2.3 溫度寄存器格式和溫度溫度寄存器格式和溫度/ /數據對應關系數據對應關系 ds18b20 溫度寄存器如表 3.2 所示。其寄存器有 16 位,高 5 位為符號位,低 13 位為數據位。當寄存器高 5 位為 1 時,表示溫度為負,否則為正。 表 3.2 溫度寄存器格式 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ls byte 表 3

27、.3 溫度/數據的關系 b bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ms byte 如果測得的溫度大于 0,只要將測到的數值乘于 0.0625 即可得到實際溫度; 如果溫度小于 0,測得的數值需要取反加 1 再乘 0.0625,即可得到實際的溫度 值。如表 3.3 所示,是 ds18b20 的溫度與數據的對應關系。 232221202-12-22-32-4 sssss262524 ds18b20 單 片 機 p1.7 vdd gnd dq 4.7k 3.2.43.2.4 單片機對單片機對 ds18b20ds18b20 的控制方法的控制方法 d

28、s18b20 采用嚴格的單總線通信協議,以保證數據的完整性。該協議定義 了 幾種信號類型:復位脈沖、應答脈沖、寫 0、寫 1、讀 0 和讀 1。除了應答脈沖 所有 這些信號都由主機發出同步信號。總線上傳輸的所有數據和命令都是以字 節為單位。且低位在前,高位在后。 (1)初始化序列:復位脈沖和應答脈沖 在初始化過程中,主機通過拉低單總線至少 480s,以產生復位脈沖(tx), 然 后主機釋放總線并進入接收(rx)模式。當總線被釋放后,5k 的上拉電阻將單 總線拉高。ds18b20 檢測到這個上升沿后,延時 15s60s,通過拉低總線 60s240s 產生應答脈沖。初始化脈沖如圖 3.3 所示。

29、溫度輸出(2 進制)輸出(16 進制) +1250000 0111 1101 000007d0h +850000 0101 0101 00000550h +20.06250000 0001 1001 00010191h +10.1250000 0000 1010 001000a2h +0.50000 0000 0000 10000008h 00000 0000 0000 00000000h -0.51111 1111 1111 1000fff8h -10.1251111 1111 0101 1110ff5eh 25.06251110 1110 0110 1111ee6fh -551111 11

30、10 1001 0000fe90h 圖 3.3 ds18b20 初始化時序 (2)ds18b20 的讀寫控制 在寫時序期間,主機向 ds18b20 寫入數據;而在讀時序期間,主機讀入來自 ds18b20 的數據。在每一個時序,總線只能傳輸一位數據。讀/寫時序如圖 3.4 所示。 ds18b20 寫時序 ds18b20 存在兩種寫時序:“寫 1”和“寫 0” 。主機在寫 1 時序向 ds18b20 圖 3.4 ds18b20 讀寫時序 寫入邏輯 1,而在寫 0 時序向 ds18b20 寫入邏輯 0。所有寫時序至少需要 60s,且在兩次寫時序之間至少需要 1s 的恢復時間。兩種寫時序均以主機拉 低

31、總線開始。 產生寫 1 時序:主機拉低總線后,必須在 15s 內釋放總線,然后由上拉電 阻將總線拉至高電平。產生寫 0 時序:主機拉低總線后,必須在整個時序期間 至少480us至少480us 主機初始化 主機初應答 presence pulse 60-240us 主機寫”0”時序 主機寫”1時序 主機讀”0”時序 主機讀”1時序 30us15us15us15us15us30us 30us15us15us15us15us30us 保持低電平(至少 60s) 。 在寫時序開始后的 15s60s 期間,ds18b20 采樣總線的狀態。如果總線 為高電平,則邏輯 1 被寫入 ds18b20;如果總線為

32、低電平,則邏輯 0 被寫入 ds18b20。 讀時序 ds18b20 只能在主機發出讀時序時才能向主機傳送數據。所以主機在發出 讀數據命令后,必須馬上產生讀時序,以便 ds18b20 能夠傳送數據。所有讀時 序至少 60s,且在兩次獨立的讀時序之間至少需要 1s 的恢復時間。 每次讀時序由主機發起,拉低總線至少 1s。在主機發起讀時序之后, ds18b20 開始在總線上傳送 1 或 0。若 ds18b20 發送 1,則保持總線為高電平; 若發送 0,則拉低總線。當傳送 0 時,ds18b20 在該時序結束時釋放總線,再由 上拉電阻將總線拉回空閑高電平狀態。ds18b20 發出的數據在讀時序下降

33、沿起 始后的 15s 內有效,因此主機必須在讀時序開始后的 15s 內釋放總線,并且 采樣總線狀態。 ds18b20 的命令序列 根據 ds18b20 的通訊協議,主機(單片機)控制 ds18b20 完成溫度轉換必 須經過三個步驟:每一次讀寫之前都要對 ds18b20 進行復位操作,復位成功后 發送一條 rom 指令,最后發送 ram 指令,這樣才能對 ds18b20 進行預定的操作。 rom 命令通過每個器件 64-bit 的 rom 碼,使主機指定某一特定器件(如果 有多個器件掛在總線上)與之進行通信。ds18b20 的 rom 如表 3.4 所示,每個 rom 命令都是 8 bit 長。

34、 表 3.4 ds18b20 rom 命令 指令協議功能 讀 rom 33h 讀 ds18b20 中的編碼(即 64 位地址) 符合 rom 55h 發出此命令后,接著發出 64 位 rom 編碼,訪問單總線上 與該編碼相對應的 ds18b20,使之作出響應,為下一步對 該 ds18b20 的讀寫作準備 搜索 rom 0f0h 用于確定掛接在同一總線上 ds18b20 的個數和識別 64 位 rom 地址,為操作各器件作好準備 跳過 rom 0cch 忽略 64 位 rom 地址,直接向 ds18b20 溫度轉換命令,適 用于單個 ds18b20 工作 告警搜索命 令 0ech 執行后,只有溫

35、度超過廟宇值上限或下限的片子才做出響 應 溫度轉換 44h 啟動 ds18b20 進行溫度轉換,轉換時間最長為 500ms(典 型為 200ms),結果豐入內部 9 字節 ram 中 讀暫存器 beh 讀內部 ram 中 9 字節的內容 寫暫存器 4eh 發出向內部 ram 的第 3、4 字節寫上、下溫度數據命令, 緊該溫度命令之后,傳達兩字節的數據 復制暫存 器 48h 將 ram 中第 3、4 字內容復制到 e2prom 中 重調 e2prom 0b8h 將 e2prom 中內容恢復到 ram 中的第 3、4 字節 讀供電方式 0b4h 讀 ds18b20 的供電模式,寄生供電時 ds18

36、b20 發送“0” , 外部供電時 ds18b20 發送“1” 3.33.3 鍵盤電路設計鍵盤電路設計 3.3.13.3.1 行列式鍵盤與單片機接口電路行列式鍵盤與單片機接口電路 根據本設計需要,本系統采用了 44 鍵盤實現對溫度值和功能鍵的設定。 行列式鍵盤與單片機的接口電路如圖 3.5 所示,h0-h3 為行線,接單片機 p2 口的高 4 位,l0-l3 為列線,接單片機 p2 口的低 4 位。初始化時鍵盤行線為 高電 平,列線為低電平。鍵盤的行線接 4 輸入與門,4 輸入與門的輸出接單片機的 外部中斷 0 引腳 p3.2 口。當有鍵按下時,將產生中斷,在中斷程序里對按鍵進 行 掃描,得到

37、按鍵的鍵值。 圖 3.5 44 鍵盤結構 3.3.23.3.2 鍵盤面板鍵盤面板 鍵盤面板如圖 3.6 所示,本系統使用的鍵盤有 10 數字鍵,5 個功能按鍵。 在系統啟動時,先按“設置”鍵,然后按相應的數字鍵,按“左移”或者“右 移”鍵改變其他溫度的值。按“確認”鍵之后系統正式啟動。系統在運行過程 之中可以通過按“重新設置”鍵,對溫度重新進行設置。 圖 3.6 鍵盤面板 3.43.4 顯示電路設計顯示電路設計 3.4.13.4.1 lcdlcd 引腳分布及功能引腳分布及功能 (1) 12864 液晶顯示屏共有 20 個引腳,其引腳名稱及引腳編號的對應關 系如圖 3.7 所示: 圖 3.7 1

38、2864 液晶顯示模塊引腳分布圖 1234567891011121314151617181920 vssvddvorsr/wedb0db7db6db5db4db3db2db1cs1cs2 /rstveeak 0213 設置 確認 右移左移 重新 設置 98 7645 (2)引腳功能如表 3.5 所示: 表 3.5 12864 液晶顯示模塊引腳功能 引腳符 號引 腳 功 能引腳符 號引 腳 功 能 1vss 電源地 15cs1 cs1=1 芯片選擇左邊 64*64 點 2vdd 電源正+5v 16cs2 cs2=1 芯片選擇右邊 64*64 點 3vo 液晶顯示驅動電源 17/rst 復位(低電

39、平有效) 4rs h:數據輸入; l:指令碼輸入 18vee lcd 驅動負電源 5r/w h:數據讀取; l:數據寫入 19a 背光電源(+) 6e使能信號。20k 背光電源(-) 7-14db0-db7 數據線有些型號的模塊 19、20 腳為空腳 3.4.23.4.2 單片機與圖形液晶的接口電路單片機與圖形液晶的接口電路 lcd 與單片機的接口電路如圖 3.8 所示: 單片機對 lcd 的控制方法將在下一章中詳細介紹。 圖 3.8 lcd 與單片機的接口電路 3.53.5 報警電路設計報警電路設計 本系統設計中有報警器,使用 lm386 作為報警器的功率放大器,如圖 3.9 所示。 lm3

40、86 是一種音頻集成功放,具有自身功耗低、電壓增益可調整、電源電 壓范圍大、外接元件少和總諧波失真小等優點,廣泛應用于錄音機和收音機之 中。 lm386 的輸入端接單片機的引腳 p3.4,輸出端接揚聲器。當實際溫度超過 設置的溫度值時,單片機引腳輸出一定頻率的信號,信號經過音頻功放放大之 后,發出報警聲。 圖 3.9 lm386 功放電路 3.63.6 電源電路設計電源電路設計 電源是整個系統的能量來源,它直接關系到系統能否運行。在本系統中單 片機、液晶顯示、報警等電路需要 5v 的電源,因此電路中選用穩壓芯片 7805,其最大輸出電流為 1.5a,能夠滿足系統的要求,其電路如圖 3.10 所

41、示。 圖 3.10 電源電路 4 4 程序設計程序設計 4.14.1 系統資源分配系統資源分配 4.1.14.1.1 系統硬件資源分配系統硬件資源分配 本系統電路連接及硬件資源分配如圖 4.1 所示。采用 at89c51 單片機作為 核心器件,ds18b20 作為溫度測量裝置,通過 at89c51 的 p1.7 口將溫度值送入 單片機處理,利用 12864lcd 顯示器和 44 鍵盤作為人機接口。 圖 4.1 系統硬件資源分配 4.1.24.1.2 系統軟件資源分配系統軟件資源分配 本系統采用了匯編語言進行程序設計,系統自動為各個變量分配內存區域。 用戶可以將變量定義在 data 區、idat

42、a 區、pdata 區、xdata 區,常量定義在 code 區。 4.24.2 系統流程設計系統流程設計 4.2.14.2.1 主程序流程設計主程序流程設計 主程序先對系統資源進行初始化,調用 lcd 顯示子程序,顯示啟動畫面。然 后進入鍵盤設置界面。當設置鍵按下后,開始設置各點的溫度,設置完之后, 如果確認鍵按下,則系統開始工作。首先調用 ds18b20 初始化子程序,再發送 rom 命令,讀取 ds18b20 轉換的溫度值。當讀取的溫度大于設置的溫度值時,報 警器開始報警,lcd 顯示溫度的實際值、設置值、路數、狀態。接下來對第二、 三、四路溫度進行采集,處理,顯示。 p0.0p0.7

43、12864lcd 顯示模塊 p3.4 p3.3 報警器 p3.5p3.7 3 44鍵盤 p2.0p2.3 p2.4p2.7 4 4 l0l3 h0h3 p3.2/int0 at89c51 p1.7 四輸入與門 ds18b20 p3.0p3.1 2 主程序流程如圖4.2所示: 圖 4.2 主程序流程 初始化 設置鍵按下? 設置各點溫度 確認鍵按下? y n 讀取溫度值 溫度值高于設置值 調用lcd顯示 報警 y n 初始化命令 發送rom命令 匹配第一路 讀取溫度值 溫度值高于設置值 調用lcd顯示 報警 y n 初始化命令 發送rom命令 匹配第二路 讀取溫度值 溫度值高于設置值 調用lcd顯

44、示 報警 y n 初始化命令 發送rom命令 匹配第三路 讀取溫度值 溫度值高于設置值 調用lcd顯示 報警 y n 初始化命令 發送rom命令 匹配第四路 開始 4.2.24.2.2 ds18b20ds18b20 程序流程設計程序流程設計 由上一章單片機對 ds18b20 的控制方法,設計出如下程序流程: 圖 4.3 寫命令子程序流程圖 圖 4.4 ds18b20 復位子程序流程 圖 圖 4.5 ds18b20 讀溫度子程序流程圖 dq置1 dq置0 延時573微秒 dq置1 延時,等待ds18b20響應 dq=0? 初始化成功 返回dq 初始化不成功 yn i=8 置dq0 dq=dat處

45、理后的八位符號值溫度度存放單元 templ data 25h ;實時溫度低八位存放單元 temph data 26h ;實時溫度高八位存放單元 temp_th data 27h ;高溫報警值存放單元 temp_tl data 28h ;低溫報警值存放單元 temphc data 29h ;百位和十位 bcd 碼存放單元 templc data 2ah ;個位和小數 bcd 碼存放單元 lcd_x equ 2fh ;lcd 地址變量 lcd_rs equ p1.0 ;lcd rs 端 lcd_rw equ p1.1 ;lcd rw 端 lcd_en equ p1.2 ;lcd en 端 flag

46、1 equ 20h.0 ;ds18b20 存在標志位 flag2 equ 20h.2 ;負數標志位 flag3 equ 20h.3 ;負數時,十位為零(滅 0 顯示標志位) flag4 equ 20h.4 ;正數時,百位為零、十位也為零(滅 0 顯 示標志位) flag5 equ 20h.1 ;負溫度下限標志位 flag6 equ 21h.0 ;按鍵 1 操作標志位 flag7 equ 21h.1 ;按鍵 2 操作標志位 flag8 equ 21h.2 ;按鍵 3 操作標志位 flag9 equ 21h.3 ;按鍵 4 操作標志位 date_line equ p3.7 ;ds18b20 總線

47、;* org 0000h jmp main main: mov sp,#60h mov a,#00h mov r0,#20h ;將 20h-2fh 單元清零 mov r1,#10h clear: mov r0,a inc r0 djnz r1,clear call set_lcd call re_18b20 mov temp_th,#50h ;設置溫度上限報警值為 80 度 mov temp_tl,#14h ;設置溫度下限報警值為 20 度 setb flag5 ;flag5=0 正溫度下限,flag5=1 負溫度下限 start: call reset ;18b20 復位子程序 jnb fl

48、ag1,start1 ;ds1820 不存在 call menu_ok call read_e2 ;溫度報警值拷貝到暫存器 jmp start2 start1: call menu_error call temp_bj ;顯示溫度標記 jmp $ start2: call reset jnb flag1,start1 ;ds1820 不存在 mov a,#0cch ; 跳過 rom 匹配 call write mov a,#44h ; 發出溫度轉換命令 call write ;* ;由單片機向單總線發送四個 ds18b20 的 rom 序列號 call delay lcall reset mo

49、v a,#55h lcall write mov a,#28h lcall write mov a,#24h lcall write mov a,#0c5h lcall write mov a,#39h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#05fh lcall write mov a,#0beh lcall write lcall read mov 74h,templ mov 75h,temph lcall reset mov a,#55h lcall w

50、rite mov a,#28h lcall write mov a,#30h lcall write mov a,#0c5h lcall write mov a,#0b8h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#08eh lcall write mov a,#0beh lcall write lcall read mov 76h,templ mov 77h,temph lcall reset mov a,#55h lcall write mov a,#28h

51、 lcall write mov a,#31h lcall write mov a,#0c5h lcall write mov a,#0b8h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#0b9h lcall write mov a,#0beh lcall write lcall read mov 78h,templ mov 79h,temph lcall reset mov a,#55h lcall write mov a,#28h lcall write mo

52、v a,#32h lcall write mov a,#0c5h lcall write mov a,#0b8h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#00h lcall write mov a,#0e0h lcall write mov a,#0beh lcall write lcall read mov 7ah,templ mov 7bh,temph lcall reset ;* ;2*2 鍵盤 ;* smkey: mov p2,#030h mov a,p2 anl a,#0f0h cjne a,#

53、030h,hkey sjmp j_00 hkey: call clr_2line ;先對 lcd 第二行進行清屏 lcall delay10 mov a,p2 anl a,#0f0h mov b,a cjne a,#030h,wkey sjmp j_00 wkey: mov p2,#03h mov a,p2 anl a,#0fh orl a,b jb acc.0,banwe4 jmp banwe5 banwe4: jb acc.4,xuanze4 jmp xuanze3 banwe5: jb acc.5, xuanze1 jmp xuanze2 ;* jmp j_00 xuanze1: set

54、b flag6 clr flag7 clr flag8 clr flag9 jmp j_00 xuanze2: setb flag7 clr flag6 clr flag8 clr flag9 jmp j_00 xuanze3: setb flag8 clr flag7 clr flag6 clr flag9 jmp j_00 xuanze4: setb flag9 clr flag7 clr flag8 clr flag6 j_00:nop jb flag6 ,temph11 jb flag7 ,temph22 jb flag8 ,temph33 jb flag9 ,temph44 jmp

55、st_00 ;* temph11: mov dptr,#t_1 ;指針指到顯示消息“temp:” mov a,#2 ;顯示在第二行 call lcd_print ;調字符串顯示子程序 mov templ,74h ;把從 ds18b20 讀出的初始溫度低八位送 templ mov temph,75h ;把從 ds18b20 讀出的初始溫度高八位送 temph lcall start3 ;調溫度轉換、顯示子程序 jmp st_00 ;回到 start2,重新發出溫度轉換命令 temph22: mov dptr,#t_2 ;指針指到顯示消息“temp:” mov a,#2 ;顯示在第二行 call

56、lcd_print mov templ,76h mov temph,77h lcall start3 jmp st_00 temph33: mov dptr,#t_3 ;指針指到顯示消息“temp:” mov a,#2 ;顯示在第二行 call lcd_print mov templ,78h mov temph,79h lcall start3 jmp st_00 temph44: mov dptr,#t_4 ;指針指到顯示消息“temp:” mov a,#2 ;顯示在第二行 call lcd_print mov templ,7ah mov temph,7bh lcall start3 jmp

57、 st_00 st_00: jmp start2 ;* start3: call convtemp ;把從 ds18b20 讀到的初始溫度轉換組合成兩 個字節的 bcd 碼 call dispbcd ;把溫度折分成單個 bcd 碼并設滅零顯示標志位 call temp_comp ;顯示溫度比較結果符號 call temp_bj ;顯示溫度標記 call lcd_disp ;顯示溫度百位、十位、個位、小數點及小數位 還有符號 ret ;*; set_lcd: ;對 lcd 做初始化設置及測試 clr lcd_en call init_lcd ;初始化 lcd call store_data ;將

58、自定義字符存入 lcd 的 cgram ret init_lcd: ;8 位 i/o 控制 lcd 接口初始化 mov a,#38h ;雙列顯示,字形 5*7 點陣 call wcom call delay1 mov a,#0eh call wcom call delay1 mov a,#38h ;雙列顯示,字形 5*7 點陣 call wcom call delay1 mov a,#0ch ;開顯示,顯示光標,光標不閃爍 call wcom call delay1 mov a,#01h ;清除 lcd 顯示屏 call wcom call delay1 ret ;* wcom: ;以 8 位

59、控制方式將命令寫至 lcd mov p0,a ;寫入命令 clr lcd_rs ;rs=l,rw=l,d0-d7=指令碼,e=高脈沖 clr lcd_rw setb lcd_en acall delay1 clr lcd_en ret ;* wdata: ;以 8 位控制方式將數據寫至 lcd mov p0,a ;寫入數據 setb lcd_rs clr lcd_rw setb lcd_en call de clr lcd_en call de ret de: mov r7,#250 djnz r7,$ ret ;* delay: mov r0,#100 del2:mov r1,#100 de

60、l3:djnz r1,del3 djnz r0,del2 ret delay10: mov r6,#20h q6:mov r5,#0bbh q5:djnz r5,q5 djnz r6,q6 ret delay1: ;延時 5ms mov r6,#25 dl2:mov r7,#100 djnz r7,$ djnz r6,dl2 ret ;* store_data: mov a,#40h call wcom mov r2,#08h mov dptr,#d_data mov r3,#00h s_data: mov a,r3 movc a,a+dptr call wdata ;寫入數據 inc r3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論