畢業設計范文基于AT89C51的智能溫度預警系統的設計說明_第1頁
畢業設計范文基于AT89C51的智能溫度預警系統的設計說明_第2頁
畢業設計范文基于AT89C51的智能溫度預警系統的設計說明_第3頁
畢業設計范文基于AT89C51的智能溫度預警系統的設計說明_第4頁
畢業設計范文基于AT89C51的智能溫度預警系統的設計說明_第5頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、I / 54畢業設計(論文)課 題 名 稱 基于 AT89C51 的智能溫度預警系統的設計學 生 姓 名 萌學 號 0741227037系、年級專業信息工程系 07 級通信工程指 導 教 師何海浪職 稱講 師2011 年 5 月 25 日I / 54摘 要本設計系統地介紹了基于AT89C51 的智能溫度預警系統的組成、設計方案、電路原理、程序設計以與系統仿真過程。DS18B20多點溫度測量系統是以AT89C51單片機作為控制核心,數字溫度傳感DS18B20為控制對象,運用C語言編程實現系統的各種功能。該系統由單片機最小系統、傳感器電路、報警電路、LCD顯示電路、行列式鍵盤電路、電源電路六大部分

2、組成。借助PROTEUS軟件,實現了系統電路設計和仿真。它適用于電力工業、煤礦、森林、火災、高層建筑等場所,還可以用于環境惡劣的工業控制現場。通過DS18B20的單總線技術,系統實現了對遠程環境的溫度測量與監控。關鍵詞:DS18B20;仿真;測量系統;PROTEUS;單片機AbstractAbstractThe design systematically introduced the composition,the design, the circuit theory, the program design and the system simulation process of the mu

3、ltipoint temperature measurement system which based on the AT89C51.The AT89C51intelligence temperature measurement system, the AT89C51 MCU as its control core, digital temperature sensing DS18B20 as its control target, use the C-language programming system to realize the functions. The system compos

4、ed of six major components, which are the smallest MCU system, the sensor circuit, the alarm circuits, the LCD display circuit, the keyboard, the power circuit. The system realizes the circuit design and simulation with PROTEUS software. It applies to the power industry, coal, forest, fire, high-ris

5、e buildings and other places, it can also applies toindustrial control field with the bad environment. Throughthe monobus technology of the DS18B20,the systemachieves the measurement and monitoring of the long-range environmental temperature. KeyKey wordswords: DS18B20;simulation;measurement system;

6、PROTEUS;MCUII / 54III / 54目 錄摘要 IABSTRACTII第 1 章緒論 11.1 課題來源 11.2 課題研究的目的意義 11.3 國外現狀與水平 11.4 課題研究容 2第 2 章統方案設計 32.1 基于模擬溫度傳感器的設計方案 32.2 基于數字溫度傳感器的設計方案 42.3 方案論證 4第 3 章電路設計 63.1 工作原理 63.2 DS18B20 與單片機接口技術 73.3 鍵盤電路設計 133.4 顯示電路設計 143.5 報警電路設計 153.6 電源電路設計 16第 4 章程序設計 184.1 系統資源分配 184.2 系統流程設計 184.3

7、程序設計 24第 5 章系統仿真 345.1 PROTEUS 仿真環境介紹 345.2 原理圖繪制 355.3 程序加載 355.4 系統仿真 365.5 仿真結果分析 39第 6 章 PCB 板設計 406.1 PCB 板設計 40IV / 546.2 PCB 板制作方法 42總結 45參考文獻 46附錄 47致 521 / 54第 1 章 緒 論1.1 課題來源溫度是國際單位制七個基本量之一,與人類的生活環境息息相關。它是一種在生產、科研、生活中需要測量和控制的重要物理量,同時也是一種最基本的環境參數。在實驗研究和工業生產中,在機械、電力、化工、生物、冶金、農業、實驗等行業和人們的家居生活

8、里經常需要對環境溫度進行檢測和控制。例如,汽車發動機氣缸的溫度必須保持在一定的圍;在合適溫度微生物的新代才能正常進行。許多化學反應在不同的溫度下會生成不同的反應物;溫度過高,糧倉的糧食就會霉爛變質,電子設備的工作效率會降,低使用壽命會縮短,飯菜會變餿。由此可見,研究溫度測量工具有著極其重要的實用價值。隨著現代嵌入式技術和傳感器技術的發展,作為各種信息的采集、處理、傳輸的功能器件,溫度傳感器的作用日益突出,成為自動檢測、自動控制系統和計量測試中不可缺少的重要技術工具,其應用已遍與工農業生產和日常生活的各個領域。本課題結合現在嵌入式技術和傳感技術設計的智能溫度預警系統就是滿足生產生活中人們對溫度測

9、量的需求。1.2 課題研究的目的意義隨著科學技術的高速發展,科技的進步帶動了傳感技術的發展,自動控制設備的性能和性價比發生了巨大的變化,新世紀是嵌入式技術迅猛發展的時代,傳感技術也成為當今科技的主流之一,被廣泛地應用于生產和生活中。基于 AT89C51 的智能溫度預警系統的設計,其目的在于:(1)掌握數字溫度傳感器 AT89C51 單片機的工作原理、和使用方法,利用 C 語言編寫單片機程序。(2)掌握數字溫度傳感器 DS18B20 的工作原理、和使用方法,利用 C51 對系統進行編程。(3)本課題綜合了現代嵌入式技術和傳感器技術專業領域方面的知識,可全面提高學生的理論水平和動手能力。1.3 國

10、外現狀與水平傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器被廣泛用于工農業生產、科學研究和生活等領域,數量高居各種傳感器之首。溫度傳感器的發展大致經2 / 54歷了以下三個階段:傳統的分立式溫度傳感器(含敏感元件);模擬集成溫度傳感器;數字溫度傳感器。目前,溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性與安全性、開發虛擬傳感器和網絡傳感器、研制單片測溫系統等高科技的方向迅速發展,同時具有抑制串模干擾能力強、分辨力高、線性度好、成本低等優點。隨著我國四個現代化和經濟發展,我國在科技和生產各領域都取得了飛速的發展和進步,發展以溫度傳感器為載體的溫度測量技術具有重大意義。1.4 課題研究容

11、本設計研究的主要容如下:(1)本設計以 AT89C51 單片機為控制系統,來實現對溫度的監測、處理等功能。在廣泛查閱溫度檢測控制理論和方法、測溫技術和溫度控制技術等資料的基礎上,根據不同的控制要求與應用領域完成對系統方案的總體設計。(2)在比較各元器件的特點和功能后,選擇合適的元器件。(3)設計硬件系統。設計主要包括:溫度傳感器采集溫度數據、單片機處理溫度數據、LCD 顯示溫度、鍵盤設置參數、報警電路等模塊。(4)設計軟件系統。本以 C 語言為設計語言,用 Source Insight 軟件編輯代碼,采用 Keil 軟件編譯程序。本設計的重點分為軟件和硬件兩個方面。其中硬件開發的難點在于各種元

12、器件的選擇和使用。軟件開發的難點在于溫度傳感器的時序。第 2 章 統方案設計2.1 基于模擬溫度傳感器的設計方案該方案由 AD590 模擬溫度傳感器、運算放大器、AD 轉換器、51 單片機、鍵盤、液晶顯示屏、集成功率放大器、報警器組成,如圖 2.1 所示。本方案采用 AD590 模擬溫度傳感器檢測溫度,傳感器將測量的溫度變換轉換成變化的電流,再通過模擬電路將電流的變化轉換成電壓的變化,使用運算放大器將信號進行適當的放大,最后通過 AD 轉換器將模擬信號轉換成數字信號,傳送給AT89C51。AT89C51 將溫度值進行處理之后用液晶顯示屏顯示 ,有報警信號時,信號通過集成功放放大,傳給報警器。3

13、 / 54圖 2.1 基于模擬溫度傳感器的設計方案本方案使用的測溫元件的性能指標如下:(1)模擬溫度傳感器的測溫圍為55+150。(2)模擬溫度傳感器的電源電壓圍為 4V30V,電源電壓可在 4V6V 圍變化,電流 變化 1mA,相當于溫度變化 1K。模擬溫度傳感器可以承受 44V 正向電壓和 20V反向電壓,因而器件反接也不會被損壞。(3) 輸出電阻為 710MW。 (4) 精度高,模擬溫度傳感器共有 I、J、K、L、M 五檔,其中 M 檔精度最高,在55+150圍,非線性誤差為0.3。集成溫度傳感器具有線性好、精度適中、靈敏度高、體積小、使用方便、溫度測量圍廣等優點,得到廣泛應用。集成溫度

14、傳感器的輸出形式分為電壓輸出和電流輸出兩種。電壓輸出型的靈敏度一般為10mV/K,溫度 0時輸出為 0,溫度 25時輸出 2.982V。電流輸出型的靈敏度一般為 1mA/K。2.2 基于數字溫度傳感器的設計方案該方案以數字溫度傳感器 DS18B20 為溫度測量元件,使用 AT89C51 單片機作為單 片 機AD590AD590LCD顯示電路集成功放報警器44鍵盤AD590AD590運算放大器多路選擇器A/D轉換4 / 54控制核心,使用 4 個 DS18B20 進行溫度檢測,通過 44 鍵盤設置正常溫度的最大值,采用 12864 液晶顯示電路,使用 LM386 作為功率放大器報警電路中的喇叭。

15、 圖 2.2 基于數字溫度傳感器的設計方案本課題采用 DS18B20 數字溫度傳感器作為測為測溫元件,它具有如下特點:(1) 測量溫度圍在55C 到125C 之間。(2)每個 DS18B2 都有唯一的 ID。(3)912 位分辨率可調。(4) 只要一個端口即可通信。(5) 實際應用中不需要外部接任何元器件即可實現測溫。(6)部有溫度上、下限告警設置。2.3 方案論證本設計要求測溫圍為-20+80,精度為 0.5,測量的點數為 4。采用 LCD顯示,顯示數據每秒刷新 1 次。綜合分析數字溫度傳感器和模擬溫度傳感器的性能指標,以上兩個方案都能實現設計的需求。方案一采用了 DS18B20 數字溫度傳

16、感器。它能在現場采集溫度數據,直接將溫度物理量轉換為數字信號并以總線方式傳送到單片機,再由單片機進行數據處理,并且可根據實際要求通過簡單的編程實現 9-12 位的數字式讀取方式,因而使用數字溫度傳感器可使系統結構更加簡單,可靠性更高,大大提高系統的抗干擾能力。數字溫度傳感器體積小、經濟、使用方便靈活、測試精度高、較高的性能價格比,有CRC 校驗,系統簡明直觀,適合于惡劣環境的現場溫度測量,如: 測溫類消費電子產品、環境控制設備或過程控制等。單 片 機DS18B20DS18B20LCD顯示電路集成功放報警器44鍵盤DS18B20DS18B205 / 54方案二采用 AD590 模擬溫度傳感器,轉

17、換結果需要經過 AD 轉換器和運算放大器。它雖然成本低,控制簡單,但是后續電路復雜,而且需要進行溫度標定。AD590 集成溫度傳感器輸出為電流,且輸出信號較弱,所以需要后續放大與 A/D 轉換電路。如采用普通運放則精度難以保證,而測量放大器價格較高,這樣會使系統成本升高。方案一程序設計稍微復雜一些,使用有大量的資料可以查詢,該方案完全可行,經濟上也有很大的優勢,同時體現了技術的先進性。綜上所述,本設計采用方案一進行系統設計。第 3 章 電路設計3.1 工作原理基于 AT89C51 的智能溫度預警系統以 AT89C51 為控制芯片,以 Keil 軟件為系統開發平臺,用 C51 進行程序設計,以

18、PROTEUS 作為仿真軟件。系統主要由傳感器電路、單片機最小系統、鍵盤電路、液晶顯示電路、報警電路、電源電路組成,系統原理圖如圖 3.1 所示。S1S5S9S13S2S6S10S14S3S7S11S15S4S8S12S1612593U274LS21Y 112MC230pFC330pFC110uFR210K+5VVSS1VDD2VO3RS4R/W5E6RET17VEE18LEDA19LEDK20DB07DB18DB29DB310DB411DB512DB613DB714CS115CS216J1LCM_128_64123456789RP11KR110KR410KR310K+5VC410uF+5V+

19、5V2351864U1LM386C5100nC647nLS18GNDR510k+5P3.4P3.4CS1CS2ERWRSRWECS1CS2RSP3.2P3.2L0L1L2L3H0H1H2H3H0H1H2H3L0L1L2L3P210kR610C8220uP110kC710uVCC1GND3DQ2U3DS18B20VCC1GND3DQ2U4DS18B20VCC1GND3DQ2U5DS18B20VCC1GND3DQ2U6DS18B20R7RES2+5VP1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9P3.0/RXD10P3.1/TXD11P3.2/IN

20、TO12P3.3/INT113P3.4/TO14P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728RSEN29ALE/PROG30VPP/EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VDD40IC?AT89C51H0H1H2H36 / 54圖 3.1 系統原理圖DS18B20 數字溫度傳感器,每個 DS18B20 有自己的序列號,因此本系統可以在一根總線上掛接了 4 個 DS18B20,通過 CRC

21、 校驗,對各個 DS18B20 的 ROM 進行尋址,地址符合的 DS18B20 數字溫度傳感器才作出響應,接收主機的命令,向主機發送轉換的溫度。采用這種尋址技術,單片機使用一個 IO 口即能實現對四點環境的溫度數據進行采集,使系統硬件電路更加簡單,系統更加穩定。它的輸入/輸出采用數字量,以單總線技術,接收主機發送的命令,根據 DS18B20 部的協議進行相應的處理,將轉換的溫度以串口發送給主機。主機按照通信協議用一個 IO 口(P1.7)模擬 DS18B20的時序,發送命令(初始化命令、ROM 命令、RAM 命令)給 DS18B20,轉換完成之后單片機讀取溫度值,在部進行相應的數值處理,用

22、12864LCD 顯示各點的溫度。在系統啟動的時候,可以通過 44 鍵盤設置各點溫度的上限值,當某點的實際溫度超過設置值時,報警器開始報警,液晶顯示該傳感器的路數、設置溫度值、實際溫度值以與路數和該路的狀態,從面實現了對各點溫度的測量和實時監控。3.2DS18B20 與單片機接口技術3.2.1 DS18B20 的引腳功能DS18B20 的引腳功能描述見表 3.1。表 3.1DS18B20 引腳功能描述序號名稱引腳功能描述1GND地信號2DQ數字輸入輸出引腳,開漏單總線接口引腳,當使用寄生電源時,可向電源提供電源3VDD可選擇的 VDD 引腳,當工作于寄生電源時,該引腳必須接地3.2.2 DS1

23、8B20 與單片機接口電路如圖 3.2 所示,為單片機和 DS18B20 的接口電路。DS18B20 只有三個引腳,一個接地,一個接電源,一個數字輸入輸出引腳接單片機的 P1.7 口,電源與數字輸入輸出腳間需要接一個 4.7K 的電阻。 DS18B20 單 片 機P1.7VDDGNDDQ4.7K7 / 54圖 3.2 DS18B20 與單片機接口電路3.2.3 溫度寄存器格式和溫度/數據對應關系DS18B20 溫度寄存器如表 3.2 所示。寄存器有 16 位,高 5 位為符號位,低 13 位為數據位。當寄存器高 5 位為 1 時,表示溫度為負,否則為正。表 3.2 溫度寄存器格式bit7 bi

24、t6 bit5 bit4 bit3 bit2 bit1 bit0LS ByteBbit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8MS Byte如果測得的溫度大于 0,只要將測到的數值乘于 0.0625 即可得到實際溫度;如果溫度小于 0,測得的數值需要取反加 1 再乘 0.0625,即可得到實際的溫度值。如表 3.3 所示,是 DS18B20 的溫度與數據的對應關系。表 3.3 溫度/數據的關系232221202-12-22-32-4SSSSS262524溫度輸出(2 進制)輸出(16 進制)+1250000 0111 1101 000007D0H+8

25、50000 0101 0101 00000550H+20.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH25.06251110 1110 0110 1111EE6FH8 / 543.2.4 單片機對 DS18B20 的控制方法DS18B20 采用嚴格的單總線通信協議,以保證數據的完整性。該協議定義了幾種

26、信號類型:復位脈沖、應答脈沖、寫 0、寫 1、讀 0 和讀 1。除了應答脈沖所有這些信號都由主機發出同步信號。總線上傳輸的所有數據和命令都是以字節為單位,且低位在前,高位在后。(1)初始化序列:復位脈沖和應答脈沖在初始化過程中,主機通過拉低單總線至少 480s,以產生復位脈沖(TX)。然 后主機釋放總線并進入接收(RX)模式。當總線被釋放后,5k 的上拉電阻將單總線拉高。DS18B20 檢測到這個上升沿后,延時 15s60s,通過拉低總線 60s240s產生應答脈沖。初始化脈沖如圖 3.3 所示。圖 3.3 DS18B20 初始化時序DS18B20 的初始化應答 C 語言程序如下所示:bit

27、resetpulse(void)DQ=0;delay600us(); DQ=1;delay60us();return(DQ); DS18B20 的初始化 C 語言程序如下所示: void Ds18b20_Init(void)-551111 1110 1001 0000FE90H至少480us至少480us主機初始化主機初應答Presence pulse60-240us9 / 54while(1)if(!resetpulse() /收到 ds18b20 的應答信號DQ=1;delay600us(); /延時 240usbreak;else resetpulse(); /否則再發復位信號(2)DS

28、18B20 的讀寫控制在寫時序期間,主機向 DS18B20 寫入數據;而在讀時序期間,主機讀入來自DS18B20 的數據。在每一個時序,總線只能傳輸一位數據。讀/寫時序如圖 3.4 所示。 DS18B20 寫時序DS18B20 存在兩種寫時序:“寫 1”和“寫 0” 。主機在寫 1 時序時向 DS18B20圖 3.4 DS18B20 讀寫時序主機寫”0”時序主機寫”1時序主機讀”0”時序主機讀”1時序30us15us15us15us15us30us30us15us15us15us15us30us10 / 54寫入邏輯 1,而在寫 0 時序向 DS18B20 寫入邏輯 0。所有寫時序至少需要 6

29、0s,且在兩次寫時序之間至少需要 1s 的恢復時間。兩種寫時序均以主機拉低總線開始。寫 1 時序:主機拉低總線后,必須在 15s 釋放總線,然后由上拉電阻將總線拉至高電平。寫0時序:主機拉低總線后,必須在整個時序期間保持低電平(至少60s) 。在寫時序開始后的 15s60s 期間,DS18B20 采樣總線的狀態。如果總線為高電平,則邏輯 1 被寫入 DS18B20;如果總線為低電平,則邏輯 0 被寫入 DS18B20。 時序DS18B20 只能在主機發出讀時序時才能向主機傳送數據。所以主機在發出讀數據命令后,必須馬上產生讀時序,以便 DS18B20 能夠傳送數據。所有讀時序至少60s,且在兩次

30、獨立的讀時序之間至少需要 1s 的恢復時間。每次讀時序由主機發起,拉低總線至少 1s。在主機發起讀時序之后,DS18B20開始在總線上傳送 1 或 0。若 DS18B20 發送 1,則保持總線為高電平;若發送 0,則拉低總線。當傳送 0 時,DS18B20 在該時序結束時釋放總線,再由上拉電阻將總線拉回空閑高電平狀態。DS18B20 發出的數據在讀時序下降沿起始后的 15s 有效,因此主機必須在讀時序開始后的 15s 釋放總線,并且采樣總線狀態。 DS18B20 寫命令子程序如下:void ds18b20_writecommand(uchar command)uchar i;for(i=0;i

31、8;i+)if(command & 0 x01)=0)DQ=0;delay60us();_nop_();_nop_();_nop_();_nop_();_nop_();11 / 54_nop_();DQ=1;_nop_();_nop_(); else DQ=0;_nop_();_nop_(); DQ=1;delay60us(); _nop_();_nop_();_nop_();_nop_();command=_cror_(command,1); DS18B20 讀溫度子程序如下:uchar Ds18b20_Readdata(void) uchar readdata; uchar i;

32、for(i=0;i8;i+) DQ=0; _nop_(); _nop_(); _nop_();12 / 54DQ=1; if(DQ=0) readdata=readdata&0 x7f; delay60us(); elsereaddata=readdata|0 x80;delay60us();if(i7)readdata=_cror_(readdata,1); return readdata; DS18B20 的命令序列根據 DS18B20 的通訊協議,主機(單片機)控制 DS18B20 完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對 DS18B20 進行復位操作,復位成功后發送一

33、條ROM 指令,最后發送 RAM 指令,這樣才能對 DS18B20 進行預定的操作。ROM 命令通過每個器件 64-bit 的 ROM 碼,使主機指定某一特定器件(如果有多個器件掛在總線上)與之進行通信。DS18B20 的 ROM 如表 3.4 所示,每個 ROM 命令都是 8 bit 長。表 3.4 DS18B20 ROM 命令指令協議功能讀 ROM33H讀 DS18B20 中的編碼(即 64 位地址)符合 ROM55H發出此命令后,接著發出 64 位 ROM 編碼,訪問單總線上與該編碼相對應的 DS18B20,使之作出響應,為下一步對該 DS18B20 的讀寫作準備搜索 ROM0F0H用于

34、確定掛接在同一總線上 DS18B20 的個數和識別 64 位 ROM 地址,為操作各器件作好準備跳過 ROM0CCH忽略 64 位 ROM 地址,直接向 DS18B20 溫度轉換命令,適用于單個DS18B20 工作告警搜索命令0ECH執行后,只有溫度超過報警值上限或下限的 DS18B20 才做出響應13 / 54溫度轉換44H啟動 DS18B20 進行溫度轉換,轉換時間最長為 500ms(典型為200ms),結果豐入部 9 字節 RAM 中讀暫存器BEH讀部 RAM 中 9 字節的容寫暫存器4EH發出向部 RAM 的第 3、4 字節寫上、下溫度數據命令,緊該溫度命令之后,傳達兩字節的數據復制暫

35、存器48H將 RAM 中第 3、4 字容復制到 E2PROM 中重調 E2PROM0B8H將 E2PROM 中容恢復到 RAM 中的第 3、4 字節讀供電方式0B4H讀 DS18B20 的供電模式,寄生供電時 DS18B20 發送“0” ,外部供電時 DS18B20 發送“1”3.3 鍵盤電路設計3.3.1 行列式鍵盤與單片機接口電路根據本設計需要,本系統采用了 44 鍵盤實現對溫度值和功能鍵的設定。行列式鍵盤與單片機的接口電路如圖 3.5 所示,H0-H3 為行線,接單片機 P2 口的高 4 位,L0-L3 為列線,接單片機 P2 口的低 4 位。初始化時鍵盤行線為高電平,列線為低電平。鍵盤

36、的行線接 4 輸入與門,4 輸入與門的輸出接單片機的外部中斷 0 引腳 P3.2 口。當有鍵按下時,將產生中斷,在中斷程序里對按鍵進行掃描,得到按鍵的鍵值。圖 3.5 44 鍵盤結構3.3.2 鍵盤面板鍵盤面板如圖 3.6 所示,本系統使用的鍵盤有 10 數字鍵,5 個功能按鍵。在系統啟動時,先按“設置”鍵,然0213設置確認右移左移重新設置98764514 / 54后按相應的數字鍵,按“左移”或者“右移”鍵改變其他溫度的值。按“確認”鍵之后系統正式啟動。系統在運行過程之中可以通過按“重新設置”鍵,對溫度重新進行設置。 圖 3.6 鍵盤面板 3.4 顯示電路設計3.4.1 LCD 引腳分布與功

37、能(1) 12864 液晶顯示屏共有 20 個引腳,其引腳名稱與引腳編號的對應關系如圖 3.7 所示:圖 3.7 12864 液晶顯示模塊引腳分布圖(2)引腳功能如表 3.5 所示:表 3.5 12864 液晶顯示模塊引腳功能引腳符 號引 腳 功 能引腳符 號引 腳 功 能1VSS電源地15CS1CS1=1 芯片選擇左邊 64*64 點2VDD電源正+5V16CS2CS2=1 芯片選擇右邊 64*64 點3VO液晶顯示驅動電源17/RST復位(低電平有效)4RSH:數據輸入;L:指令碼輸入18VEELCD 驅動負電源5R/WH:數據讀取;L:數據寫入19A背光電源(+)6E使能信號。20K背光

38、電源(-)7-14DB0-DB7數據線有些型號的模塊 19、20 腳為空腳3.4.2 單片機與圖形液晶的接口電路 LCD 與單片機的接口電路如圖 3.8 所示:單片機對 LCD 的控制方法將在下一章中詳細介紹。1234567891011121314151617181920VSSVDDVORSR/WEDB0DB7DB6DB5DB4DB3DB2DB1CS1CS2 /RSTVEEAK15 / 543.5 報警電路設計本系統設計中有報警器,使用 LM386 作為報警器的功率放大器,如圖 3.9 所示。LM386 是一種音頻集成功放,具有自身功耗低、電壓增益可調整、電源電壓圍大、外接元件少和總諧波失真小

39、等優點,廣泛應用于錄音機和收音機之中。LM386的輸入端接單片機的引腳 P3.4,輸出端接揚聲器。當實際溫度超過設置的溫度值時,單片機引腳輸出一定頻率的信號,信號經過音頻功放放大之后,發出報警聲。圖 3.8 LCD 與單片機的接口電路圖 3.9 LM386 功放電路16 / 543.6 電源電路設計電源是整個系統的能量來源,它直接關系到系統能否運行。在本系統中單片機、液晶顯示、報警等電路需要 5V 的電源,因此電路中選用穩壓芯片 7805,其最大輸出電流為 1.5A,能夠滿足系統的要求,其電路如圖 3.10 所示。圖 3.10 電源電路第 4 章 程序設計4.1 系統資源分配4.1.1 系統硬

40、件資源分配本系統電路連接與硬件資源分配如圖 4.1 所示。采用 AT89C51 單片機作為核心器件,DS18B20 作為溫度測量裝置,通過 AT89C51 的 P1.7 口將溫度值送入單片機處理,利用 12864LCD 顯示器和 44 鍵盤作為人機接口。圖 4.1 系統硬件資源分配4.1.2 系統軟件資源分配P0.0P0.712864LCD顯示模塊P3.4P3.3報警器P3.5P3.7344鍵盤P2.0P2.3P2.4P2.744L0L3H0H3P3.2/INT0AT89C51P1.7四輸入與門DS18B20P3.0P3.1217 / 54本系統采用了 C 語言進行程序設計,系統自動為各個變量

41、分配存區域。用戶可以將變量定義在 DATA 區、IDATA 區、PDATA 區、XDATA 區,常量定義在 CODE 區。用C 語言寫較復雜的程序時,要特別注意使用的存不能超過單片機 RAM。4.2 系統流程設計4.2.1 主程序流程設計主程序先對系統資源進行初始化,調用 LCD 顯示子程序,顯示啟動畫面。然后進入鍵盤設置界面。當設置鍵按下后,開始設置各點的溫度,設置完之后,如果確認鍵按下,則系統開始工作。首先調用 DS18B20 初始化子程序,再發送 ROM 命令,讀取DS18B20 轉換的溫度值。當讀取的溫度大于設置的溫度值時,報警器開始報警,LCD 顯示溫度的實際值、設置值、路數、狀態。

42、接下來對第二、三、四路溫度進行采集,處理,顯示。主程序流程如圖 4.2 所示:18 / 54圖 4.2 主程序流程4.2.2DS18B20程序流程設計初始化設置鍵按下?設置各點溫度確認鍵按下?YN讀取溫度值溫度值高于設置值調用LCD顯示報警YN初始化命令發送ROM命令匹配第一路讀取溫度值溫度值高于設置值調用LCD顯示報警YN初始化命令發送ROM命令匹配第二路讀取溫度值溫度值高于設置值調用LCD顯示報警YN初始化命令發送ROM命令匹配第三路讀取溫度值溫度值高于設置值調用LCD顯示報警YN初始化命令發送ROM命令匹配第四路開始19 / 54由上一章單片機對 DS18B20 的控制方法,設計出如下程

43、序流程: 圖 4.3 寫命令子程序流程圖 圖 4.4 DS18B20 復位子程序流程圖 圖 4.5 DS18B20 讀溫度子程序流程圖 4.2.3 顯示程序流程DQ置1DQ置0延時573微秒DQ置1延時,等待DS18B20響應DQ=0?初始化成功返回DQ初始化不成功YNi=8置DQ0DQ=DAT&0X01DQ置1DQ右移一位i-i=0返回YNi=8DAT右移一位DQ置0DQ置1DQ=1DAT=DAT|0X80讀完8位?NYNY返回DAT20 / 54顯示是實現人機對話的重要部分,在這里選用 12864LCD 顯示器,可實現對漢字、字符和圖片的顯示, LCD 的引腳功能在上面已經做了說明

44、,下面是其相關指令的介紹。(1) 讀取狀態字當 R/W=1,D/I=0 時,在 E 信號為高的作用下,狀態分別輸出到數據總線上。狀態字是了解模塊當前工作狀態的唯一的信息渠道,在每次對模塊操作之前,都要讀出狀態字,判斷 BUSY 是否為“0” 。若不為“0” ,則單片機需要等待,直至 BUSY =0為止。(2)顯示開關設置 D/IR/WDB7DB6DB5DB4DB3DB2DB1DB0000011111DD=1:開顯示;D=0 關顯示。(3)顯示起始行設置D/IR/WDB7DB6DB5DB4DB3DB2DB1DB00011顯示起始行(063)指令表中 DB5DBO 為顯示起始行的地址,取值在 03

45、FH(164 行)圍,它規定了顯示屏上最頂一行所對應的顯示存儲器的行地址。(4)頁面地址設置 D/IR/WDB7DB6DB5DB4DB3DB2DB1DB00010111Page(07)頁面地址是 DDRAM 的行地址,8 行為一頁,DDRAM 共 64 行即 8 頁,DB2-DB0 表示 0-7 頁。(5)列地址設置 D/IR/WDB7DB6DB5DB4DB3DB2DB1DB00001Y address(063)列地址是 DDRAM 的列地址。共 64 列,DB5-DB0 取不同值得到 0-3FH(1-64) ,代表某一頁面上的某一單元地址,列地址計數器在每一次讀寫數據后它將自動加一。(6)寫

46、顯示數據 D/IR/WDB7DB6DB5DB4DB3DB2DB1DB001BUSY0ONOFFRST000021 / 54D/IR/WDB7DB6DB5DB4DB3DB2DB1DB010顯 示 數 據該操作將 8 位數據寫入先前已確定的顯示存儲器的單元。操作完成后列地址計數器自動加一。 (7)讀顯示數據 D/IR/WDB7DB6DB5DB4DB3DB2DB1DB011顯 示 數 據該操作將 12864 模塊中的 DDRAM 存儲器對應單位中的容讀出,然后列地址計數器自動加一。先使用軟件對要顯示漢字進行取模,取出來存入程序中的數組中。漢字是 16*16的,使用 LCD 顯示漢字時,先調用寫指令子

47、程序設定漢字的起始頁地址和起始列地址,再調用寫數據子程序寫入漢字的 16 列,然后頁地址加 1,重新設置起始列地址,調用寫指令子程序設定起始頁地址和起始列地址,再調用寫數據子程序寫入漢字的底下的 16 列。根據上面指令結合字符、漢字、圖片顯示原理,設計出顯示子程序流程如圖4.6 所示。 圖 4.6 顯示子程序流程圖i=0調用寫數據子程序i=16?i=i+1NY寫入頁地址寫入起始列地址j=j+1j=2?頁地址加1結束N調用寫數據子程序i=16?i=i+1NY寫入起始頁地址寫入起始列地址結束i=0調用寫數據子程序i=128?i=i+1NY寫入頁地址寫入起始列地址j=j+1j=8?頁地址加1結束Nj

48、=0i=0j=0b) 寫16*16漢字子程序流程圖a) 寫8*16字符子程序流程圖c) 寫圖片子程序流程圖22 / 544.2.4 鍵盤程序程序流程鍵盤中斷程序是用來設在系統起動時各環境溫度的上限值,其程序流程圖如圖4.7 所示:圖 4.7 鍵盤程序流程讀P2口高四位數據到ROWROW與LINE相與為KEYP2口低四位置1讀P2口低四位數據到LINEKEY=0XEE ?KEY=0XEB ?KEY=0XED ?KEY=0XE7 ?KEY=0XDE ?KEY=0XDD ?KEY=0XDB ?KEY=0XD7 ?KEY=0XBD ?KEY=0XBE ?KEY=0XBB ?KEY=0XB7 ?KEY=

49、0X7E ?KEY=0X7D ?KEY=0X7B ?KEY=0X77 ?數字鍵0數字鍵1數字鍵2數字鍵3數字鍵4數字鍵5數字鍵6數字鍵7數字鍵8數字鍵9設置功能鍵確認功能鍵左移功能鍵右移功能鍵重新設置功能鍵RETIYNNNNNNNNNNNNNNNYYYYYYYYYYYYYYYP2口高四位置1N23 / 544.3 程序設計4.3.1 主程序設計系統主程序如下所示:void main(void) uchar i; P2=0XF0; IT0=1; TMOD=0 x01; TH0=0 xff; TL0=0 xff; ET0=1; PT0=1; EA=1; Init_lcd(); Clr_Scr();

50、 Display_ini(); delay(1500); EX0=1;out: Clr_Scr(); display1(); delay(1000); while(!flag2) KeyInput(); flag2=0; Clr_Scr(); while(1) 24 / 54if(flag4=1) flag4=0; goto out; Ds18b20_Init(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44);delay(250);match_rom(ds18b20_num1); ds18b20_writecommand(0

51、 xbe); for(i=0;inum0) flag7=1;else if(zhen_temp0num1) flag7=1; else if(zhen_temp1num2) flag7=1; else if(zhen_temp2num3) flag7=1;else flag7=0; goto next; flag5=0; next: display2(0); delay(1000); if(flag4=1) flag4=0; goto out; Ds18b20_Init(); ds18b20_writecommand(0 xcc);26 / 54 ds18b20_writecommand(0

52、x44);delay(250);match_rom(ds18b20_num2); ds18b20_writecommand(0 xbe); for(i=0;inum4) flag7=1;else if(zhen_temp0num1) flag7=1; else if(zhen_temp1num6)flag7=1; else if(zhen_temp2num7)flag7=1; else flag7=0; goto next1; next1: Clr_Scr(); display2(1); delay(1000); if(flag4=1) flag4=0; goto out; Ds18b20_I

53、nit(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44); delay(250);match_rom(ds18b20_num3); ds18b20_writecommand(0 xbe); for(i=0;inum8) flag7=1;else if(zhen_temp0num9) flag7=1;else if(zhen_temp1num10)flag7=1; else if(zhen_temp2num11)flag7=1; else flag7=0; goto next2; next2: Clr_Scr(); displ

54、ay2(2);29 / 54 delay(1000); if(flag4=1) flag4=0; goto out; Ds18b20_Init(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44);delay(250);match_rom(ds18b20_num4); ds18b20_writecommand(0 xbe); for(i=0;inum12) flag7=1;else if(zhen_temp0num13) flag7=1; else if(zhen_temp1num14)flag7=1; else if(zhen

55、_temp2num15)flag7=1;else flag7=0; goto next3; next3: Clr_Scr(); display2(3); delay(1000);4.3.2 子程序設計(1)LCD 圖片顯示子程序void Disp_Img (unsigned char code *img) unsigned char j,k; for(k=0;k8;k+)31 / 54 left();Delay(10); write_(Page_Add+k); write_(Col_Add+0); for(j=0;j64;j+) write_data(imgk*128+j); right();

56、 write_(Page_Add+k); write_(Col_Add+0); for(j=0;j64;j+) write_data(imgk*128+64+j); (2)LCD 寫 16*16 漢字子程序void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk) unsigned char j=0,i=0;for(j=0;j2;j+)write_(Page_Add+pag+j);write_(Col_Add+col);for(i=0;i16;i+) write_data(hzk16*j+i);32 / 54(3

57、)LCD 寫 8*16 數字子程序void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk) unsigned char j=0, i=0;for(j=0;j2;j+)write_(Page_Add+pag+j);write_(Col_Add+col);for(i=0;iNew Project,在彈出的對話框中輸入工程的名字,點擊保存;選擇 ATMEL 公司的 AT89C51 單片機。35 / 54圖 5.2 系統電路原理圖(2)在 Source Group 1 上點擊右鍵,選擇“Add Files

58、 to Group Source Group 1 ” ,把所有的源文件加進來。(3)點擊 Project-Build target 或者使用快捷鍵 F9,編譯工程。當 Output Windows 中提示“0 Error”時,則程序編譯成功,生成可執行文件 1.HEX。5.3.2 程序加載在編輯環境中雙擊 AT89C51,在彈出的對話框中將編譯生成可執行文件 1.HEX加載進芯片中,設單片機的時鐘工作頻率為 12MHZ。5.4 系統仿真點擊全速運行按鈕,將出現如下仿真結果:(1)系統的啟動在系統的啟動過程之中,液晶將會顯示學院的圖標,以與學院的校訓“明德 求真 共生 超越” ,畢業設計課題等。

59、在每副圖片的切換過程之中,揚聲器都會發滴”的聲音。(2)溫度值的設定系統中必須對四個不同環境的正常溫度的上限值進行設定,當環境的實際溫度超過設定的這個上限值時,系統將會報警。設置溫度時,先點“設置”鍵,然后點擊鍵盤上的按鍵輸入溫度值;如果溫度值設置完畢,點擊“確認鍵” ,則系統啟動成功并開始對各個環境的溫度進行測量。在設置過程之中可以通過“左移”或者“右移”按鍵對各個溫度值進行設定,如圖 5.3 和圖 5.4 所示。36 / 54圖 5.3 設置溫度界面 圖 5.4 設置各個環境的溫度(3)系統運行系統運行之后,DS18B20 開始對環境進行測量,將環境的實際的溫度顯示在液晶屏上,同時液晶顯示

60、屏還顯示環境溫度的路數、事先設置的溫度的上限值和狀態。當實際溫度值低于或者等于設置溫度值時,將顯示“ 正常” ,否則將顯示“報警”,圖 5.5 第 1 路仿真結果 圖 5.6 第 2 路仿真結果 同時報警器開始報警。在系統運行過程之中,如果需要重新對溫度值進行設定,則點擊“重新設置”按鍵,重新設置各個環境溫度的上限值。在 PROTEUS 仿真過程之中,可以通過調節 DS18B20 的面板上的“”或者“” ,改變 DS18B20 測量的實際溫度。系統仿真結果如圖 5.5、圖 5.6 、圖 5.7 、圖 5.8 、圖 5.9 所示。圖 5.7 第 3 路仿真結果 圖 5.8 第 4 路仿真結果圖 5.9 系統仿真結果3

溫馨提示

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

評論

0/150

提交評論