電氣自動化畢業(yè)論文18873_第1頁
電氣自動化畢業(yè)論文18873_第2頁
電氣自動化畢業(yè)論文18873_第3頁
電氣自動化畢業(yè)論文18873_第4頁
電氣自動化畢業(yè)論文18873_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、題 目:DS18B20溫度測量軟件的設(shè)計學(xué)生姓名: 指導(dǎo)教師: 答辯日期:近年來,隨著大規(guī)模集成電路的發(fā)展,單片機繼續(xù)朝快速、高性 能方向發(fā)展,從4位、8位單片機發(fā)展到16位、32位單片機。單片機主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè),大到航天飛機,小至日常生活中的冰箱、彩電,單片機都可以大顯其能。單片機技術(shù)與傳感與測量技術(shù)、信號與系統(tǒng)分析技術(shù)、電路設(shè)計技術(shù)、可編程邏輯 應(yīng)用技術(shù)、微機接口技術(shù)、數(shù)據(jù)庫技術(shù)以及數(shù)據(jù)結(jié)構(gòu)、計算機操作系 統(tǒng)、匯編語言程序設(shè)計、高級語言程序設(shè)計、軟件工程、數(shù)據(jù)網(wǎng)絡(luò)通 信、數(shù)字信號處理、自動控制、誤差分析、儀器儀表結(jié)構(gòu)設(shè)計和制造 工藝等的結(jié)合,使得單片機的應(yīng)用非常廣泛。

2、同時,單片機具有較強 的管理功能。采用單片機對整個測量電路進行管理和控制,使得整個 系統(tǒng)智能化、功耗低、使用電子元件較少、內(nèi)部配線少、成本低,制 造、安裝、調(diào)試及維修方便。 本設(shè)計是基于單片機 ATMAGE1設(shè)計的實時溫度采集儀,通過本次設(shè)計,我成功的實現(xiàn)了利用單片機對溫度 的采集和測量。1緒論31.11.21.31.41.51.61.71.81.9課題背景1.2 設(shè)計目的及系統(tǒng)功能 2 ATMAGE16特性 性2.1 ATMAGE16產(chǎn)品特性2.2 引腳配置3 DS18B2 0的設(shè)計3.1 總體通信流程及通信協(xié)議 ,3.2 DS18B20溫度測量軟件的設(shè)計3.3 多機通信軟件的設(shè)計 9911

3、.111.10 3.4 DS18B20工作時序問題131.11 4電路的設(shè)計141.12 4.1溫度測量電路的設(shè)計141.13 4.2串口通信電路的設(shè)計151.14 5分布式溫度采集系統(tǒng)設(shè)計181.15 6 ICCAVR制作環(huán)境及介紹191.16 6.1191.17 6.2221.18 6.3221.19 結(jié)241.20 參考文獻251.21ICCAVRICCAVRICCAVR介紹向?qū)У腎DE環(huán)境1緒論自從1976年Intel公司推出第一批單片機以來,80年代單片機 技術(shù)進入快速發(fā)展時期,近年來,隨著大規(guī)模集成電路的發(fā)展,單片 機繼續(xù)朝快速、高性能方向發(fā)展,從 4位、8位單片機發(fā)展到16位、

4、32位單片機。單片機主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè), 大到航天飛機,小至日常生活中的冰箱、彩電,單片機都可以大顯其 能。單片機在國內(nèi)的三大領(lǐng)域中應(yīng)用得十分廣泛: 第一是家用電器業(yè), 例如全自動洗衣機、智能玩具;第二是通訊業(yè),包括電話、手機和 BP機等等;第三是儀器儀表和計算機外設(shè)制造,例如軟盤、硬盤、 收銀機、電表。除了上述傳統(tǒng)領(lǐng)域外,汽車、電子工業(yè)在國外也是單 片機應(yīng)用十分廣泛的一個領(lǐng)域。它成本低、集成度高、功耗低、控制 功能多能靈活的組裝成各種智能控制裝置,由它構(gòu)成的智能儀表解決了長期以來測量儀器中的誤差的修正、 線性處理等問題。單片機將微 處理器、存儲器、定時/計數(shù)器、I/O接口

5、電路等集成在一個芯片上 的大規(guī)模集成電路,本身即是一個小型化的微機系統(tǒng)。單片機技術(shù)與 傳感與測量技術(shù)、信號與系統(tǒng)分析技術(shù)、電路設(shè)計技術(shù)、可編程邏輯 應(yīng)用技術(shù)、微機接口技術(shù)、數(shù)據(jù)庫技術(shù)以及數(shù)據(jù)結(jié)構(gòu)、計算機操作系 統(tǒng)、匯編語言程序設(shè)計、高級語言程序設(shè)計、軟件工程、數(shù)據(jù)網(wǎng)絡(luò)通 信、數(shù)字信號處理、自動控制、誤差分析、儀器儀表結(jié)構(gòu)設(shè)計和制造 工藝等的結(jié)合,使得單片機的應(yīng)用非常廣泛。同時,單片機具有較強 的管理功能。采用單片機對整個測量電路進行管理和控制,使得整個 系統(tǒng)智能化、功耗低、使用電子元件較少、內(nèi)部配線少、成本低,制 造、安裝、調(diào)試及維修方便。目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)

6、域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛 機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過 程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎 車的安全保障系統(tǒng),錄象機、攝象機、全自動洗衣機的控制,以及程 控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng) 域的機器人、智能儀表、醫(yī)療器械了。1.1 課題背景分布式溫度采集系統(tǒng)廣泛應(yīng)用在使用了中央空調(diào)的大型商場、廠房、辦公大樓等大型建筑內(nèi)。本課題主要用溫度傳感器對環(huán)境溫度實 施實時監(jiān)測,各結(jié)點控制單元可將有關(guān)信息上傳給計算機,本課題研究主要解決的問題為分布式控制結(jié)構(gòu)設(shè)計、多單片機串行通信、溫度的采集與處理。本設(shè)計是基

7、于單片機 ATMAGE1設(shè)計的實時溫度采集儀,采用 DS18B20可以采集多路溫度數(shù)據(jù)(本設(shè)計只用了 2路),同時實時顯示 所采集到的溫度值。在傳統(tǒng)的溫度測量系統(tǒng)設(shè)計中,往往采用模擬技 術(shù)進行設(shè)計,這樣就不可避免地遇到諸如引線誤差補償、多點測量中的切換誤差和信號調(diào)理電路的誤差等問題;而其中某一環(huán)節(jié)處理不當(dāng),就可能造成整個系統(tǒng)性能的下降。隨著現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展, 特別是大規(guī)模集成電路設(shè)計技術(shù)的發(fā)展,微型化、集成化、數(shù)字化正 成為傳感器發(fā)展的一個重要方向。美國 Dallas半導(dǎo)體公司推出的數(shù) 字溫度傳感器DSI8B20,具有獨特的單總線接口,僅需要占用一個通 用I/O端口即可完成與微處理器的通

8、信;在-10+85C溫度范圍內(nèi)具 有士 O.O1C精度;用戶可編程設(shè)定912位的分辨率。以上特性使得 DSI8B20非常適用于構(gòu)建高精度、多點溫度測量系統(tǒng)。1.2 設(shè)計目的及系統(tǒng)功能本設(shè)計的目的是以單片機為核心設(shè)計出一個分布式溫度采集系 統(tǒng)。在傳統(tǒng)測量系統(tǒng)中,傳感器與計算機接口的連接是通過若干條導(dǎo) 線連接。當(dāng)傳感器數(shù)量較多時,尤其是信號線的長距離傳輸時,相互 容易產(chǎn)生干擾。一個室內(nèi)多點溫度測量中,系統(tǒng)的接線會非常多,導(dǎo) 線往往不易鋪設(shè),使得測量工作非常困難。采用總線結(jié)構(gòu)數(shù)字式傳感 器,配合單片機及PC機串口進行長距離數(shù)據(jù)通信,則可以很容易解 決這個問題,該系統(tǒng)最多可以檢測 256路溫度信號,在

9、室內(nèi)多點溫 度測量控制中能達到很好的效果。 通過本課題設(shè)計,綜合運用單片機 及接口技術(shù)、微機原理、通信協(xié)議,鍛煉動手操作能力,綜合運用能 力,學(xué)習(xí)論文的寫作方法和步驟。設(shè)計的溫度控制系統(tǒng)有以下功能及特點:(a)實現(xiàn)在一條數(shù)據(jù)總線上接多個 DS18B2(器件;(b) 測溫范圍0C99C;(C) 溫度顯示:采用2個4位數(shù)碼管,顯示采樣溫度值;并在電腦上一同顯示;(d) 精度士 0.01C。2 ATMAGE16 特性本章介紹了 ATMAGE1的產(chǎn)品特性和ATmega16的結(jié)構(gòu)。由于其先 進的指令集以及單時鐘周期指令執(zhí)行時間, ATmega16的數(shù)據(jù)吞吐率 高達1MIPS MHz從而可以緩減系統(tǒng)在功耗

10、和處理速度之間的矛盾。2.1 ATMAGE16產(chǎn)品特性1、高性能、低功耗的8位AVR微處理器2、先進的RISC結(jié)構(gòu)131條指令32個8位通用工作寄存器全靜態(tài)工作工作于16 MHz時性能高達16 MIPS只需兩個時鐘周期的硬件乘法器 大多數(shù)指令執(zhí)行時間為單個時鐘周期(a)(b)(c)(d)(e)(f)3、非易失性程序和數(shù)據(jù)存儲器(a) 16K字節(jié)的系統(tǒng)內(nèi)可編程Flash擦寫壽命:10,000 次(b) 具有獨立鎖定位的可選Boot代碼區(qū)通過片上Boot程序?qū)崿F(xiàn) 系統(tǒng)內(nèi)編程真正的同時讀寫操作(C) 512字節(jié)的EEPR0擦寫壽命:100,000 次(d) 1K字節(jié)的片內(nèi)SRAM(e) 可以對鎖定位

11、進行編程以實現(xiàn)用戶程序的加密4、JTAG 接口(與 IEEE 1149.1 標(biāo)準(zhǔn)兼容)(a) 符合JTAG標(biāo)準(zhǔn)的邊界掃描功能(b) 支持擴展的片內(nèi)調(diào)試功能(C)通過JTAG接 口實現(xiàn)對Flash、EEPROM熔絲位和鎖定位的編程5、外設(shè)特點兩個具有獨立預(yù)分頻器和比較器功能的8位定時器/計數(shù)一個具有預(yù)分頻器、比較功能和捕捉功能的16位定時器/計數(shù)具有獨立振蕩器的實時計數(shù)器 RTC四通道PWM(a)(b)(c)(d)面向字節(jié)的兩線接口兩個可編程的串行USART可工作于主機/從機模式SPI串行接口 具有獨立片內(nèi)振蕩器的可編程看門狗定時器 片內(nèi)模擬比較器(e)8路10位ADC8個單端通道TQFP封裝的

12、7個差分通道2個具 有可編程增益(1x, 10x,或200x)的差分通道(f)(g)(h)(i )6、特殊的處理器特點(a)(b)(c)(d)(j ) 上電復(fù)位以及可編程的掉電檢測 片內(nèi)經(jīng)過標(biāo)定的RC振蕩器 片內(nèi)/片外中斷空ADC噪聲抑制模式、省電模式、掉電模式、6種睡眠模式:Standby、模式I/O 口式以擴展的Standby7、I/O和封裝(a)32個可編程的(b)40引腳PDIP封裝,44引腳TQFP封裝,與44引腳MLF封裝& 工作電壓:(a)ATmega16L 2.7 - 5.5V(b)ATmega16 4.5 - 5.5V9、速度等級(a)0 - 8 MHz ATmega

13、16L(b)0 - 16 MHz ATmega1610、ATmega16L在 1 MHz, 3V, 25 C 時的功耗(a)正常模式:1.1 mA(b)空:0.35 mA(c)掉電模式:1 卩A 2.2引腳配置ATmega16是基于增強的AVRRISC吉構(gòu)的低功耗8位CMOS 微控制器。由于其先進的指令集以及單時鐘周期指令執(zhí)行時間,ATmega16的數(shù)據(jù)吞吐率高達1MIPS MHz,從而可以緩減系統(tǒng)在功耗 和處理速度之間的矛盾。ATMAGE1引腳分布如圖2.1所示。AVR內(nèi) 核具有豐富的指令集和32個通用工作寄存器。所有的寄存器都直接 與算邏單元(ALU)相連接,使得一條指令可以在一個時鐘周期

14、內(nèi)同時 訪問兩個獨立的寄存器。這種結(jié)構(gòu)大大提咼了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吞吐率。ATmega16有如下 特點16K字節(jié)的系統(tǒng)內(nèi)可編程Flash(具有同時讀寫的能力,即RWV, 圖2.1 ATMAGE1引腳分布AVR內(nèi)核具有豐富的指令集和32個通用 工作寄存器。所有的寄存器都直接與算邏單元(ALU)相連接,使得一 條指令可以在一個時鐘周期內(nèi)同時訪問兩個獨立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吞吐率。ATmega16有如下特點16K字節(jié)的系統(tǒng)內(nèi)可編程 Flash(具有同時讀寫的能力,即 RWVV) 512字節(jié)E

15、EPROM 1K字節(jié) SRAM 32個通用I/O 口線,32個通用工作寄存器,用于邊界掃描 的JTAG接口,支持片內(nèi)調(diào)試與編程,三個具有比較模式的靈活的定 時器/計數(shù)(T/C),片內(nèi)/外中斷,可編程USART有起始條件檢測器的 通用串行接口,8路10位具有可選差分輸入級可編程增益 (TQF P封 裝)的ADC,具有片內(nèi)振蕩器的可編程看門狗定時器,一個SPI串行端口,以及六個可以通過軟件進行選擇的省電模式。工作于空閑模式時CPU停止工作,而USART兩線接口、A/D轉(zhuǎn)換器、SRAM T/C、SPI端口以及中斷系統(tǒng)繼續(xù) 工作;掉電模式時晶體振蕩器停止振蕩,所有功能除了中斷和硬件復(fù) 位之外都停止工作

16、;在省電模式下,異步定時器繼續(xù)運行,允許用戶 保持一個時間基準(zhǔn),而其余功能模塊處于休眠狀態(tài);ADC噪聲抑制模式時終止CPU和除了異步定時器與ADC以外所有I/O 模塊的工作, 以降低ADC轉(zhuǎn)換時的開關(guān)噪聲;Standby模式下只有晶體或諧振振 蕩器運行,其余功能模塊處于休眠狀態(tài),使得器件只消耗極少的電流, 同時具有快速啟動能力;擴展 Standby模式下則允許振蕩器和異步 定時器繼續(xù)工作。本芯片是以 Atmel高密度非易失性存儲器技術(shù)生 產(chǎn)的。片內(nèi)ISP Flash允許程序存儲器通過ISP串行接口,或者通 用編程器進行編程,也可以通過運行于 AVR內(nèi)核之中的引導(dǎo)程序進 行編程。引導(dǎo)程序可以使用

17、任意接口將應(yīng)用程序下載到應(yīng)用Flash存儲區(qū)(ApplicationFlash Memory)。在更新應(yīng)用Flash存儲區(qū)時引導(dǎo) Flash區(qū)(Boot Flash Memory)的程序繼續(xù)運行,實現(xiàn)了 RWW操作。 通過8位RISC CPU與系統(tǒng)內(nèi)可編程的Flash集成在一個芯片內(nèi), ATmega16成為一個功能強大的單片機,為許多嵌入式控制應(yīng)用提供 了靈活而低成本的解決方案。3 DS18B2 0的設(shè)計本章介紹了系統(tǒng)軟件設(shè)計,并具體介紹了實現(xiàn)和調(diào)試的方法,及分布式溫度采集系統(tǒng)的通信流程和 DS18B20溫度測量軟件的設(shè)計 思路、DS18B2(工作的時序問題。3.1 總體通信流程及通信協(xié)議總體

18、通信流程體現(xiàn)在 PC機,單片機主機及各從機的通信,信號 接受及發(fā)送,這個設(shè)計中,通信協(xié)議是一個非常重要也很復(fù)雜的部分, 在由PC機與單片機組成的系統(tǒng)中,常要涉及通信問題,如果沒有統(tǒng) 一的通信協(xié)議,PC機與單片機之間的信息傳遞就無法識別。通信協(xié)議是指通信各方事前約定規(guī)則,我們可以簡單地理解 為各計算機之間進行相互會話所使用的共同語言.PC機與單片機在進 行通信時,必須使用的通信協(xié)議。首先,在設(shè)計中自定義幾個數(shù)據(jù)通信協(xié)議,如下問提到的“ a”、“b”、“C”、“d”、“g”、“h”。這些協(xié)議 一旦定義,在后面的執(zhí)行過程中就代表了固定的含義,不再改變,PC機、單片機、從機都靠識別這個協(xié)議來執(zhí)行程序,

19、發(fā)送一個字節(jié)的數(shù) 據(jù),接受幾個字節(jié)的數(shù)據(jù),所有的數(shù)據(jù)協(xié)議全都建立在這2個操作方 法上。本設(shè)計中自定義“ a”為PC機與單片機主機間的數(shù)據(jù)協(xié)議, 意思為要求主機發(fā)送一號從機的溫度給 PC機;自定義“b”為PC機 與單片機主機間的數(shù)據(jù)協(xié)議,意思為要求主機發(fā)送二號從機的溫度給 PC機;自定義“ C”為從機與主機間的數(shù)據(jù)協(xié)議,它代表從機向主 機發(fā)送完四位當(dāng)前采集的溫度,這里一號從機和二號從機采集的溫 度,都定義為“ C”;自定義“d”為PC機與單片機主機之間的數(shù)據(jù) 協(xié)議,意思為開始和完成命令的信號;自定義“g”為一號從機和單片機主機之間的數(shù)據(jù)協(xié)議,意 思為主機表示要采集一號從機的溫度數(shù)據(jù),一號從機要求

20、單片機主機 準(zhǔn)備接收;自定義“ h”為二號從機和單片機主機之間的數(shù)據(jù)協(xié)議, 意思為主機表示要采集二號從機的溫度數(shù)據(jù),二號從機要求單片機主 機準(zhǔn)備接收。具體流程如下:1、PC機向單片機主機發(fā)送“ d”:這步是流程的開始,PC機向單 片機主機發(fā)送數(shù)據(jù)協(xié)議,要求主機把接收的溫度發(fā)送給PC機顯示;2、單片機主機向一號從機發(fā)送“ g”:單片機主機在接收到PC機發(fā)送的“d”信號后,會立即向一號從 機發(fā)送“ g”,要求一號從機采集溫度并且將溫度發(fā)回單片機主機;3、一號從機回發(fā)“ g”:一號從機接收到單片機主機的命令后,會立即向單片機主機回發(fā) 信號,要求單片機主機做好接收準(zhǔn)備;4、向主機發(fā)送四位當(dāng)前采集的溫度

21、,并回發(fā)發(fā)送完成標(biāo)記“ C”; 一號從機回發(fā)信號后,向主機發(fā)送四位采集的溫度,這個溫度在前文已提到標(biāo)記為“ C”;5、主機發(fā)送“ h”給2號從機:主機在接收到一號從機發(fā)來的“ C”命令后,會立刻發(fā)送“ h”信 號給二號從機,表示要采集二號從機的數(shù)據(jù);6、2號從機回發(fā)“ h” :二號從機接收到單片機主機的命令后,會立即向單片機主機回發(fā) 信號,要求單片機主機做好接收準(zhǔn)備;7、向主機發(fā)送四位當(dāng)前采集的溫度,并回發(fā)發(fā)送完成標(biāo)記“ C”: 二號從機向單片機主機回發(fā)完信號后,向主機發(fā)送四位當(dāng)前采集的溫度,這個溫度標(biāo)記為“ C”;&主機發(fā)送“ d”給pca:單片機主機在接收到二號從機發(fā)送來的信號后,

22、立刻發(fā)送信號給 PC機,表示完成PC機的前一指令;9、PC發(fā)送“a”給主機:PC機在接收到單片機主機發(fā)送的信號后,發(fā)送新一個指令給單 片機主機,要求單片機主機發(fā)送一號從機采集的溫度數(shù)據(jù);10、主機將一號從機溫度數(shù)據(jù)發(fā)送給 PC機:單片機主機接收到PC機的命令后將一號從機發(fā)送過來的四位當(dāng) 前溫度數(shù)據(jù)轉(zhuǎn)換成ASCII碼后,發(fā)送給PC機,因為PC機只能讀取 ASCII 碼;11、PC機發(fā)送“ b”給主機:PC機接收到單片機主機發(fā)送的即 時溫度后會立即發(fā)送另一指令給單片機主機,要求單片機主機發(fā)送二 號從機采集的溫度數(shù)據(jù);12、主機將二號從機溫度數(shù)據(jù)發(fā)送給 PC機,發(fā)送完成后,返回(1):單片機主機接收

23、到PC機的命令后將二號從機發(fā)送過來的四位當(dāng) 前溫度數(shù)據(jù)同樣也轉(zhuǎn)換成ASCII碼后,發(fā)送給PC機。此時一個完整 過程結(jié)束,將返回(1)開始另一輪采集。3.2 DS18B20主機控制DS18B20ROM操作指令、存12MHz根據(jù)溫度測量軟件的設(shè)計由于DS18B20單線通信功能是分時完成的,它 有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20勺各種操 作必須按協(xié)議進行。操作協(xié)議為:初始化 DS18B20(發(fā)復(fù)位脈沖)7 發(fā)ROM功能命令7發(fā)存儲器操作命令7處理數(shù)據(jù)。 完成溫度轉(zhuǎn)換的程序必須經(jīng)過 3個步驟:初始化、 儲器操作指令。假設(shè)單片機系統(tǒng)所用的晶振頻率為DS18B2啲初始化時序、寫時序

24、和讀時序,分別編寫3個子程序:INIT 為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù) 據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始。主程序的主要功能是負 責(zé)溫度的實時顯示、讀出并處理DS18B20勺測量溫度值,溫度測量每 1s進行一次,流程圖如圖3.1所示。讀出溫度子程序的主要功能 是讀出RAM中的9個字節(jié),在讀出時需進行 CRC校驗,校驗有錯時 不進行溫度數(shù)據(jù)的改寫,其程序流程圖如圖3.2所示。從DS18B20讀取出的二進制值必須先轉(zhuǎn)換成十進制值,才能用于字符的顯示。因為DS18B20勺轉(zhuǎn)換精度為912位可選,為了提高精度采用12位。 在采用12位轉(zhuǎn)換精度時,溫度寄存器里的值

25、是以 0.0625為步進的, 即溫度值為溫度寄存器里的二進制值乘以0.0625,就是實際的十進制溫度值。3.3 多機通信軟件的設(shè)計ATMAGE1單片機有串行發(fā)送緩沖器/接收緩沖器(SBUF)、串行 口控制寄存器(SCON)特殊功能寄存器(PCON。通過設(shè)置scor可以 有四種工作方式,其中工作方式2、3適用于多機通信。在串行通信 前,通過程序預(yù)先將各從機串行口設(shè)置為方式2或方式3,并使SM2和REN允許串行接收控制位)為1,允許串行口中斷。主機與從機通 信時,將SM2置 0,準(zhǔn)備接收數(shù)據(jù),否則維持 SM2為1,這樣在主機 發(fā)送數(shù)據(jù)時(此時主機發(fā)送數(shù)據(jù)中第9位為0),只有地址相符的從機 可接收數(shù)

26、據(jù),圖3.1 DS18B20溫度主程序流程圖3.2讀出溫度子程序流程圖其余從機對數(shù)據(jù)信息不予理睬,從而可以實現(xiàn)多機通信集散型控 制系統(tǒng)將各控制單元分散到現(xiàn)場各控制點。從機主程序和串行口中斷服務(wù)程序如圖3.3所示。PC機與單片機的串口通信中,ATMAGE16 單片機的Pl.3和Pl.4 口分別模擬串行通信的發(fā)送和接收端,其接口 程序主要由發(fā)送子程序和接收子程序組成。通信速率9600b ps,幀格式為N.8.I。發(fā)送時,先發(fā)送一個起始位(低電平),接著 按低位在先的順序發(fā)送8位數(shù)據(jù),最后發(fā)送停止位。接收時,先判斷 P1.4接 收端口是否有起始低電平出現(xiàn),如有則按低位在先的順序接收8位數(shù),最后判斷P

27、1.4 口是否有停止高電平出現(xiàn),如有則完成一個數(shù)據(jù) 接收,否則繼續(xù)等待。其中軟件編寫要嚴格按照異步通信的時序進行。 圖3.3從機主程序和串行口中斷服務(wù)程序 3.4 DS18B20工作時序 問題DS18B20的一線工作協(xié)議流程是:初始化7 ROM操作指令7存儲 器操作指令7數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時 序。主機即單片機首先發(fā)480US-960US的低電平,進行復(fù)位,然后釋放總線,之后總線被外部上拉電阻電阻抬高,大約等待15 60us 之后,DS18B20發(fā)出60到240US的低電平信號,以示存在,至此初 始化結(jié)束。 寫“ 0 “的時候,首先單片機發(fā)復(fù)位信號,然后發(fā)“ 0” 于

28、是低電平持續(xù)60us就完成了寫“ 0”寫“ 1”的時候首先單片機發(fā) 復(fù)位信號,持續(xù)時間大于1us小于15us然后發(fā)“ 1”持續(xù)50us以上 即可。讀時序也是主機先發(fā)低電平,然后在15us內(nèi)檢測連接DS18B20 的數(shù)據(jù)線的引腳,從而讀得相應(yīng)值。電路的設(shè)計本章分析了分布式溫度采集系統(tǒng)的各主要功能模塊的設(shè)計與實現(xiàn),4.1具體包括溫度測量電路模塊和串口通信電路模塊。溫度測量電路的設(shè)計溫度測量采用DS18B20數(shù)字式溫度傳感器。由 DS18B20構(gòu)成的 智能溫度測量裝置由三部分組成:DS18B20溫度傳感器、ATMAGE16顯示模塊。產(chǎn)品的主要技術(shù)指標(biāo):測量范圍:-55 C+125C,測量精度:0.5

29、 C,反應(yīng)時間W 500ms為了達到更高的精度,則在 對DSI8B20測溫原理進行詳細分析的基礎(chǔ)上,采取直接讀取 DSI8B20 內(nèi)部暫存寄存器的方法,將 DSI8B20的測溫分辨率提高到0.01C 0.1 C, DSI8B20內(nèi)部暫存寄存器的分布如表4-1所列,其中第7字 節(jié)存放的是當(dāng)溫度寄存器停止增值時計數(shù)器l的計數(shù)剩余值,第8字節(jié)存放的是每度所對應(yīng)的計數(shù)值。 這樣,就可以通過下面的方法獲得 高分辨率的溫度測量結(jié)果。表4-1 DS18B20內(nèi)部暫存器 序號 寄存器名稱作用序號寄存器名稱0溫度低字節(jié)以16位補碼形式 存放4、5保存字節(jié)1、2 1溫度高字節(jié)6計數(shù)器余值2 TH/用戶 字節(jié)1存放

30、溫度上限7計數(shù)器/ C 3 HL/用戶字節(jié)2存放溫度下限 8 CRC基于DS18B2啲溫度測量裝置電路圖如圖 4.1所示:圖4.1溫 度測量電路 溫度傳感器DS18B20將被測環(huán)境溫度轉(zhuǎn)化成帶符號的數(shù)字信號(以十六位補碼形式,占兩個字節(jié)),傳感器可置于離裝置150 米以內(nèi)的任何地方,輸出腳I/O直接與單片機的P1.1相連,R1為上 拉電阻,傳感器采用外部電源供電。ATMAGE1是整個裝置的控制核心,ATMAGE1內(nèi)帶1K字節(jié)的FlashROM用戶程序存放在這里。顯示 器模塊由四位一體的共陽數(shù)碼管和 4個9012組成。系統(tǒng)程序分傳感 器控制程序和顯示器程序兩部分,傳感器控制程序是按照DS18B2

31、0的 通信協(xié)議編制。系統(tǒng)的工作是在程序控制下,完成對傳感器的讀寫和 對溫度的顯示。4.2 串口通信電路的設(shè)計為了增加單片機多機通信的距離,該部分電路采用RS232標(biāo)準(zhǔn)接 口,通信距離可以達到15米;如果采用RS422或是RS485接口,通 信距離會更遠。多機通信接口原理圖見圖1。在數(shù)據(jù)傳輸過程中采用的是RS232電平,提高了抗干擾能力。需要在主機串行接口和從 機串行接口進行電平轉(zhuǎn)換: TTL-RS232-TTL這都是用 MAX232接口 芯片實現(xiàn)的,具體的電路如圖 4.2所示。圖4.2 TTL-RS232-TTL電 平轉(zhuǎn)換電路 通信電路是本設(shè)計的重要組成部分,負責(zé)溫度數(shù)據(jù)的采 集和數(shù)據(jù)的上傳。

32、包括單片機多機串口通信電路,PC機與ATMAGE16的串口通信電路。其中主單片機ATMAGE1既要和從機通信,還要負責(zé) 將數(shù)據(jù)通過串口發(fā)送到 PC機上。而ATMAGE1單片機只有一個串行 通信口,這就需要用硬件或是軟件擴展一個串行通信口。本設(shè)計采用一種用單片機普通I/O 口和相應(yīng)軟件實現(xiàn)串行通信的方法。5分布式溫度采集系統(tǒng)設(shè)計 分布式溫度采集系統(tǒng)設(shè)計數(shù)字式傳感器一般采用單總線技術(shù)(1-WIREBUS,即在單片機或計算機接口中只用一根導(dǎo)線(輸入 /輸 出信號線),美國Dallas公司最新推出的1-WireBus數(shù)字式溫度傳感 器DS18B20與傳統(tǒng)的溫度傳感器不同,它能夠直接讀出被測溫度, 并且

33、可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方0.5 C、0.25 C、0.125 C和式,可以分別在93.75ms和750ms內(nèi)將溫度值轉(zhuǎn)化為9位和12位的 數(shù)字量,對應(yīng)的可分辨溫度分別為0.0625 C;為實現(xiàn)與PC機串口長距離數(shù)據(jù)通信,系統(tǒng)采用了 RS232串 行接口,通信距離可以達到15m如果采用RS422或 RS485串行接口 可以達到1000m串口通信由PC機與單片機的通信和單片機多機通 信組成,每個從機負責(zé)溫度的測量然后通過多機通信把溫度數(shù)據(jù)發(fā)送 到主單片機上,最后PC機通過VB程序控制串口把主單片機上的所有 溫度數(shù)據(jù)收集起來。系統(tǒng)框圖如圖 5.1所示。5.1系統(tǒng)框圖6

34、ICCAVR制作環(huán)境及介紹本章介紹了 ICCAVR勺制作環(huán)境,ICCAVR中的文件類型及其文件 的擴展名、附注和擴充,并介紹了 IAR或其它ANSI C編譯系統(tǒng)的代 碼轉(zhuǎn)換。6.1 ICCAVR介紹本節(jié)主要介紹了 ICCAVR文件的基本特 點、類型、擴展名等。6.1.1 ImageCraft 的 ICCAVR介紹 ImageCraft 的 ICCAVR是一種 使用符合ANSI標(biāo)準(zhǔn)的C語言來開發(fā)微控制器(MCU程序的一個工具, 它有以下幾個主要特點:ICCAVR是一個綜合了編輯器和工程管理器 的集成工作環(huán)境(IDE),其可在 WIND0WS9X/N下工作。 源文件全 部被組織到工程之中,文件的編

35、輯和工程的構(gòu)筑也在這個環(huán)境中完成。編譯錯誤顯示在狀態(tài)窗口中,并且當(dāng)你用鼠標(biāo)單擊編譯錯誤時, 光標(biāo)會自動跳轉(zhuǎn)到編輯窗口中引起錯誤的那一行。這個工程管理器還能直接產(chǎn)生您希望得到的可以直接使用的INTEL HEX格式文件,INTELHEX格式文件可被大多數(shù)的編程器所支持,用于下載程序到芯 片中去。ICCAVR是一個32位的程序,支持長文件名。本論文并不介紹通用的C語言語法知識,僅介紹使用ICC AVR所必須具備的 知識。6.1.2 ICCAVR中的文件類型及其擴展名文件類型是由它們的擴展名決定的,IDE和編譯器可以使用以下幾種 類型的文件。輸入文件:.c擴展名-表示是C語言源文件.s擴展名-表示是匯

36、編語言源文件.h擴展名 表示是C語言的頭文件.prj擴展名-表示是工程文件,這個文件保存由IDE所創(chuàng)建和修 改的一個工程 的有關(guān)信息。.a擴展名-庫文件,它可以由幾個庫圭寸裝在一起。libcavr.a 是 一個包含了標(biāo)準(zhǔn)C的庫和AVR特殊程序調(diào)用的基本庫。如果庫被引 用,鏈接器會將其鏈接到您的模塊或文件中。您也可以創(chuàng)建或修改一個符合你需要的庫。輸出文件S對應(yīng)每個C語言源文件,由編譯器在編譯時產(chǎn)生的匯編輸出文件。 .0由匯編文件匯編產(chǎn)生的目標(biāo)文件,多個目標(biāo)文件可以鏈接成一個 可執(zhí)行文件。hex INTEL HEX格式文件,其中包含了程序的機器代碼。.eep INTEL HEX 格式文件,包含了

37、EEPR0啲初始化數(shù)據(jù)。.cof COFF格式輸出文件,用于在 ATMEL的AvrStudio 環(huán)境下進行 程序調(diào)試。.lst列表文件,在這個文件中列舉出了目標(biāo)代碼對應(yīng)的最終地址。它包含了您程序中有關(guān)符號及其所占內(nèi)存大小的.mp內(nèi)存映象文件調(diào)試命令文件。 調(diào)試命令文件。 調(diào)試命令文件。信息.cmd NoICE 2.xx.noi NoICE 3.xx.dbg ImageCraft6.1.3 附注和擴充#pragma (編譯附注)<fun c1>:<vectornu mber>這個編譯器接受以下附注:#p ragmainterrup t_ha ndler<fun c2

38、>:<vector> .這個附注必須在函數(shù)之前定義,它說明函數(shù)fund、func2是中斷操作函數(shù),所以編譯器在中斷操作函數(shù)中生成中斷返回指令reti來代替普通返回指令ret ,并且保存和恢復(fù)函數(shù)所使用的全部寄存器; 同樣編譯器根據(jù)中斷向量號vector number生成中斷向量地址。#p ragma ctask <fun c1> <fun c2>.這個附注指定了函數(shù)不生成揮發(fā)寄存器來保存和恢復(fù)代碼,它的典型應(yīng)用是在RTOS實時操作系統(tǒng)中讓RTOS核直接管理寄存器。#pragma text:<name> 改變代碼段 名稱,使其與命令行選項相適

39、應(yīng)。#p ragma data:<data> 改變數(shù)據(jù) 段名稱,使其與命令行選項相適應(yīng)。這個附注在分配全局變量至EEP ROIM 時必須被使用。 #p ragma abs_address:<address> 函數(shù)與 全局數(shù)據(jù)不使用浮動定位(重定位),而是從<address>開始分配絕對 地址。這在訪問中斷向量和其它硬件項目時特別有用。#pragmaend_abs_address結(jié)束絕對定位,使目標(biāo)程序使用正常浮動 定位。C+注釋如果你選擇了編譯擴充(Project->Options->Compiler),你可以在你的源代碼中使用 C+的/類型的注

40、釋。二進制常數(shù) 如果你選擇了編譯擴充(P roject->O ption s->Co mp iler),你可以使用0bv1|0>*來指定二進制常數(shù),例如 OblOIOI等于十進制數(shù)21。 在線匯編 你可以使用asm("string")函數(shù)來指定在線匯編代碼。6.1.4 代碼轉(zhuǎn)換IAR或其它ANSI C編譯系統(tǒng)的代碼轉(zhuǎn)換IAR C編譯器作為應(yīng)用于AVR的第一個C編譯器,它有十分豐富的 源代碼。當(dāng)你從IAR編譯系統(tǒng)轉(zhuǎn)換到ImageCraft編譯系統(tǒng)時,絕大 多數(shù)符合ANSI C標(biāo)準(zhǔn)的程序代碼不需要轉(zhuǎn)換,IAR C中IO寄存器 的定義與ICCAVR也是相同的。中

41、斷操作描述,ICCAVR使用Pragma附注描述中斷操作函數(shù), 而IAR引入了語法擴充(interrupt關(guān)鍵字),下面是一個對照: 在ICCAVR 中:#p ragma in terru pt_ha ndler fun c:4 / 4是這個中斷在 lAR 中:interrupt vector_namelAR C的中斷向的向量號,func為中斷處理函數(shù)名稱,ICCAVR可以使多個中斷向量 共用一個中斷處理函數(shù)。fun c() / vector_name是某一個中斷向量的名稱,量地址使用中斷名稱來代替,以增加程序的可讀性。擴充關(guān)鍵字IAR 引入flash關(guān)鍵字將項目分配進入程序存貯空間(FLAS

42、H存貯器), ICCAVR使用const關(guān)鍵字來達到相同的目的。過程調(diào)用轉(zhuǎn)換在兩個編譯系統(tǒng)之間函數(shù)參數(shù)傳遞使用的寄存器是不同的,這僅影響手工寫的匯編函數(shù)。在線匯編、宏等,IAR不支持在線匯編符號,而ICCAVR 支持在線匯編。6.2 ICCAVR 向?qū)?自你啟動IDE后,首先從Project 菜單系統(tǒng)選擇 Open命令,進入iccexamples.avr目錄并且選擇并打開“l(fā)ed ”工程,工程管理器顯示在這個工程中只有一個 文件led.c。然后從Project菜單中選擇Options命令打開工程編 譯選項,在"Target"標(biāo)號下選擇目標(biāo)處理器。然后從Project菜單中選

43、擇Make Project命令,IDE將調(diào)用編譯器編譯這個工程文件, 并且在狀態(tài)窗口中顯示所有的信息。6.3 ICCAVR 的 IDE 環(huán)境631 編譯一個單獨的文件正常建立一個輸出文件的次序是,你首先應(yīng)該建立一個工程文件并且 定義屬于這個工程的所有文件。然而,我們有時也需要將一個文件單 獨地編譯為目標(biāo)文件或最終的輸出文件。這時可以這樣操作:從IDE菜單 “File ” 中選擇 “Compile File. ” 命令,來執(zhí)行 “to Object ” 和“ to Out put ”中的任意一個。當(dāng)你調(diào)用這個命令時,文件應(yīng)該是打開的并且在編輯窗口中可以編輯的。編譯一個文件為目標(biāo)文件(toObje

44、ct),對檢查語法錯誤和編譯一個新的啟動文件是很有用的。編 譯一個文件為輸出文件(to Out put),對較小的并且是一個文件的程 序較為有用。632 創(chuàng)建一個新的工程為創(chuàng)建一個新的工程,從菜單“Project ”中選擇“NeW命令,IDE會 彈出一個對話框,在對話框中你可以指定工程的名稱, 這也是你的輸 出文件的名稱。如果你使用一些已經(jīng)建立的源文件,你可在菜單“Project ”中選擇“AddFile(s) ”命令。另外,你可以在菜單“File ” 中選擇“ New”命令來建立一個新的源文件來輸入你的代碼,你可以 在菜單“ File ”中選擇“ Save”或“ Save As”命令來保存文

45、件。然 后你可以象上面所述調(diào)用“ AddFile(s) ”命令將文件加入到工程中, 也可在當(dāng)前編輯窗口中單擊鼠標(biāo)右鍵選擇“ Add to Project ”將文件 加入已打開的工程列表中。通常你輸出源文件在工程同一個目錄中, 但也可不作這樣要求。工程的編譯選項使用菜單中“Project ”中的 “Options ” 命令。633 工程管理工程管理允許你將多個文件組織進同一個工程,而且定義它們的編譯 選項,這個特性允許你將工程分解成許多小的模塊。當(dāng)你處理工程構(gòu)筑時,只有一個文件被修改和重新編譯,如果一個頭文件作了修改, 當(dāng)你編譯包含這個頭文件的源文件時,IDE會自動重新編譯已經(jīng)改變 的頭文件。一個源文件可以寫成C或匯編格式的任意一種。C文件 必須使用“ .c ”擴展名匯編文件必須使用“ .S”擴展名。你可以將任 意文件放在工程列表中,例如你可以將一個工程文檔文件放在工程管 理窗口中,工程管理器在構(gòu)筑工程

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論