版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)控制的溫度采集 與測(cè)量</p><p> 系 別: 電氣工程系 </p><p> 專 業(yè): 電氣自動(dòng)化 </p><p> 班 級(jí): 電30 </p><p> 姓 名 </p>
2、<p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 2011年 5 月 20 日</p><p><b> 摘 要</b></p><p> 近年來(lái),隨著大規(guī)模集成電路的發(fā)展,單片機(jī)繼續(xù)朝快速、高性能方向發(fā)展,從4位、8位單片機(jī)發(fā)展到16
3、位、32位單片機(jī)。單片機(jī)主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè),大到航天飛機(jī),小至日常生活中的冰箱、彩電,單片機(jī)都可以大顯其能。</p><p> 單片機(jī)技術(shù)與傳感與測(cè)量技術(shù)、信號(hào)與系統(tǒng)分析技術(shù)、電路設(shè)計(jì)技術(shù)、可編程邏輯應(yīng)用技術(shù)、微機(jī)接口技術(shù)、數(shù)據(jù)庫(kù)技術(shù)以及數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)操作系統(tǒng)、匯編語(yǔ)言程序設(shè)計(jì)、高級(jí)語(yǔ)言程序設(shè)計(jì)、軟件工程、數(shù)據(jù)網(wǎng)絡(luò)通信、數(shù)字信號(hào)處理、自動(dòng)控制、誤差分析、儀器儀表結(jié)構(gòu)設(shè)計(jì)和制造工藝等的結(jié)合,
4、使得單片機(jī)的應(yīng)用非常廣泛。同時(shí),單片機(jī)具有較強(qiáng)的管理功能。采用單片機(jī)對(duì)整個(gè)測(cè)量電路進(jìn)行管理和控制,使得整個(gè)系統(tǒng)智能化、功耗低、使用電子元件較少、內(nèi)部配線少、成本低,制造、安裝、調(diào)試及維修方便。</p><p> 本設(shè)計(jì)是基于單片機(jī)ATMAGE16設(shè)計(jì)的實(shí)時(shí)溫度采集儀,通過(guò)本次設(shè)計(jì),我成功的實(shí)現(xiàn)了利用單片機(jī)對(duì)溫度的采集和測(cè)量。</p><p><b> 關(guān)鍵詞</b>
5、;</p><p> 單片機(jī) ATMAGE16 DS18B20 ICCAVR</p><p><b> 目 錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 課題背景1</p><p> 1.2 設(shè)計(jì)目
6、的及系統(tǒng)功能1</p><p> 2 ATMAGE16特性1</p><p> 2.1 ATMAGE16產(chǎn)品特性1</p><p> 2.2 引腳配置1</p><p> 3 DS18B20的設(shè)計(jì)1</p><p> 3.1 總體通信流程及通信協(xié)議1</p><p>
7、; 3.2 DS18B20溫度測(cè)量軟件的設(shè)計(jì)1</p><p> 3.3 多機(jī)通信軟件的設(shè)計(jì)1</p><p> 3.4 DS18B20工作時(shí)序問(wèn)題1</p><p> 4 電路的設(shè)計(jì)1</p><p> 4.1 溫度測(cè)量電路的設(shè)計(jì)1</p><p> 4.2 串口通信電路的設(shè)計(jì)1&
8、lt;/p><p> 5 分布式溫度采集系統(tǒng)設(shè)計(jì)1</p><p> 6 ICCAVR制作環(huán)境及介紹1</p><p> 6.1 ICCAVR 介紹1</p><p> 6.2 ICCAVR 向?qū)?</p><p> 6.3 ICCAVR 的IDE 環(huán)境1</p>&l
9、t;p><b> 結(jié) 論1</b></p><p><b> 參考文獻(xiàn)1</b></p><p><b> 致 謝1</b></p><p> 附件1:總系統(tǒng)的原理圖如下:1</p><p> 附件2:?jiǎn)纹瑱C(jī)ATMAGE16控制DS18B20的程序:
10、1</p><p><b> 1 緒論</b></p><p> 自從1976年Intel公司推出第一批單片機(jī)以來(lái),80年代單片機(jī)技術(shù)進(jìn)入快速發(fā)展時(shí)期,近年來(lái),隨著大規(guī)模集成電路的發(fā)展,單片機(jī)繼續(xù)朝快速、高性能方向發(fā)展,從4位、8位單片機(jī)發(fā)展到16位、32位單片機(jī)。單片機(jī)主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè),大到航天飛機(jī),小至日常生活中的冰箱、彩電,單片機(jī)都
11、可以大顯其能。單片機(jī)在國(guó)內(nèi)的三大領(lǐng)域中應(yīng)用得十分廣泛:第一是家用電器業(yè),例如全自動(dòng)洗衣機(jī)、智能玩具;第二是通訊業(yè),包括電話、手機(jī)和BP機(jī)等等;第三是儀器儀表和計(jì)算機(jī)外設(shè)制造,例如軟盤、硬盤、收銀機(jī)、電表。除了上述傳統(tǒng)領(lǐng)域外,汽車、電子工業(yè)在國(guó)外也是單片機(jī)應(yīng)用十分廣泛的一個(gè)領(lǐng)域。它成本低、集成度高、功耗低、控制功能多能靈活的組裝成各種智能控制裝置,由它構(gòu)成的智能儀表解決了長(zhǎng)期以來(lái)測(cè)量?jī)x器中的誤差的修正、線性處理等問(wèn)題。單片機(jī)將微處理器、存
12、儲(chǔ)器、定時(shí)/計(jì)數(shù)器、I/O接口電路等集成在一個(gè)芯片上的大規(guī)模集成電路,本身即是一個(gè)小型化的微機(jī)系統(tǒng)。單片機(jī)技術(shù)與傳感與測(cè)量技術(shù)、信號(hào)與系統(tǒng)分析技術(shù)、電路設(shè)計(jì)技術(shù)、可編程邏輯應(yīng)用技術(shù)、微機(jī)接口技術(shù)、數(shù)據(jù)庫(kù)技術(shù)以及數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)操作系統(tǒng)、匯編語(yǔ)言程序設(shè)計(jì)、高級(jí)語(yǔ)言程</p><p> 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與
13、數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄象機(jī)、攝象機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開(kāi)單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。</p><p><b> 1.1 課題背景</b></p><p> 分布式溫度采集系統(tǒng)廣泛應(yīng)用在使用了中央空調(diào)的大型商場(chǎng)、廠
14、房、辦公大樓等大型建筑內(nèi)。本課題主要用溫度傳感器對(duì)環(huán)境溫度實(shí)施實(shí)時(shí)監(jiān)測(cè),各結(jié)點(diǎn)控制單元可將有關(guān)信息上傳給計(jì)算機(jī),本課題研究主要解決的問(wèn)題為分布式控制結(jié)構(gòu)設(shè)計(jì)、多單</p><p> 片機(jī)串行通信、溫度的采集與處理。</p><p> 本設(shè)計(jì)是基于單片機(jī)ATMAGE16設(shè)計(jì)的實(shí)時(shí)溫度采集儀,采用DS18B20可以采集多路溫度數(shù)據(jù)(本設(shè)計(jì)只用了2路),同時(shí)實(shí)時(shí)顯示所采集到的溫度值。在傳統(tǒng)的
15、溫度測(cè)量系統(tǒng)設(shè)計(jì)中,往往采用模擬技術(shù)進(jìn)行設(shè)計(jì),這樣就不可避免地遇到諸如引線誤差補(bǔ)償、多點(diǎn)測(cè)量中的切換誤差和信號(hào)調(diào)理電路的誤差等問(wèn)題;而其中某一環(huán)節(jié)處理不當(dāng),就可能造成整個(gè)系統(tǒng)性能的下降。隨著現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,特別是大規(guī)模集成電路設(shè)計(jì)技術(shù)的發(fā)展,微型化、集成化、數(shù)字化正成為傳感器發(fā)展的一個(gè)重要方向。美國(guó)Dallas半導(dǎo)體公司推出的數(shù)字溫度傳感器DSl8B20,具有獨(dú)特的單總線接口,僅需要占用一個(gè)通用I/O端口即可完成與微處理器的通信
16、;在-10~+85℃溫度范圍內(nèi)具有±O.01℃精度;用戶可編程設(shè)定9~12位的分辨率。以上特性使得DSl8B20非常適用于構(gòu)建高精度、多點(diǎn)溫度測(cè)量系統(tǒng)。</p><p> 1.2 設(shè)計(jì)目的及系統(tǒng)功能</p><p> 本設(shè)計(jì)的目的是以單片機(jī)為核心設(shè)計(jì)出一個(gè)分布式溫度采集系統(tǒng)。在傳統(tǒng)測(cè)量系統(tǒng)中,傳感器與計(jì)算機(jī)接口的連接是通過(guò)若干條導(dǎo)線連接。當(dāng)傳感器數(shù)量較多時(shí),尤其是信號(hào)線的長(zhǎng)
17、距離傳輸時(shí),相互容易產(chǎn)生干擾。一個(gè)室內(nèi)多點(diǎn)溫度測(cè)量中,系統(tǒng)的接線會(huì)非常多,導(dǎo)線往往不易鋪設(shè),使得測(cè)量工作非常困難。采用總線結(jié)構(gòu)數(shù)字式傳感器,配合單片機(jī)及PC機(jī)串口進(jìn)行長(zhǎng)距離數(shù)據(jù)通信,則可以很容易解決這個(gè)問(wèn)題,該系統(tǒng)最多可以檢測(cè)256 路溫度信號(hào),在室內(nèi)多點(diǎn)溫度測(cè)量控制中能達(dá)到很好的效果。通過(guò)本課題設(shè)計(jì),綜合運(yùn)用單片機(jī)及接口技術(shù)、微機(jī)原理、通信協(xié)議,鍛煉動(dòng)手操作能力,綜合運(yùn)用能力,學(xué)習(xí)論文的寫作方法和步驟。</p><
18、p> 設(shè)計(jì)的溫度控制系統(tǒng)有以下功能及特點(diǎn):</p><p> (a)實(shí)現(xiàn)在一條數(shù)據(jù)總線上接多個(gè)DS18B20器件;</p><p> (b)測(cè)溫范圍0℃~99℃;</p><p> (c)溫度顯示:采用2個(gè)4位數(shù)碼管,顯示采樣溫度值; 并在電腦上一同顯示;</p><p> (d)精度±0.01℃。</p>
19、;<p> 2 ATMAGE16特性</p><p> 本章介紹了ATMAGE16的產(chǎn)品特性和ATmega16的結(jié)構(gòu)。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16 的數(shù)據(jù)吞吐率高達(dá) 1MIPS MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。</p><p> 2.1 ATMAGE16產(chǎn)品特性</p><p> 1、
20、高性能、低功耗的 8 位 AVR 微處理器</p><p> 2、 先進(jìn)的RISC結(jié)構(gòu)</p><p> ?。╝)131 條指令</p><p> ?。╞)32 個(gè)8 位通用工作寄存器</p><p><b> ?。╟)全靜態(tài)工作</b></p><p> (d)工作于16 MHz 時(shí)性能高達(dá)
21、16 MIPS</p><p> (e)只需兩個(gè)時(shí)鐘周期的硬件乘法器</p><p> ?。╢)大多數(shù)指令執(zhí)行時(shí)間為單個(gè)時(shí)鐘周期</p><p> 3、 非易失性程序和數(shù)據(jù)存儲(chǔ)器</p><p> ?。╝)16K 字節(jié)的系統(tǒng)內(nèi)可編程 Flash擦寫壽命: 10,000 次</p><p> ?。╞) 具有獨(dú)立鎖定位
22、的可選Boot 代碼區(qū)通過(guò)片上Boot 程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程真正的同時(shí)讀寫操作</p><p> ?。╟)512 字節(jié)的EEPROM擦寫壽命: 100,000 次</p><p> (d)1K 字節(jié)的片內(nèi)SRAM</p><p> ?。╡)可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)用戶程序的加密</p><p> 4、 JTAG 接口( 與IEEE 114
23、9.1標(biāo)準(zhǔn)兼容 )</p><p> ?。╝)符合JTAG標(biāo)準(zhǔn)的邊界掃描功能</p><p> ?。╞)支持?jǐn)U展的片內(nèi)調(diào)試功能</p><p> ?。╟)通過(guò)JTAG接口實(shí)現(xiàn)對(duì) Flash、EEPROM、熔絲位和鎖定位的編程</p><p><b> 5、 外設(shè)特點(diǎn)</b></p><p>
24、(a)兩個(gè)具有獨(dú)立預(yù)分頻器和比較器功能的8 位定時(shí)器/計(jì)數(shù)</p><p> ?。╞)一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16 位定時(shí)器/計(jì)數(shù)</p><p> (c)具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器RTC</p><p><b> ?。╠)四通道PWM</b></p><p> (e)8路 10 位ADC8 個(gè)單端通道
25、TQFP 封裝的7 個(gè)差分通道2個(gè)具有可編程增</p><p> 益(1x, 10x, 或200x)的差分通道</p><p> (f)面向字節(jié)的兩線接口</p><p> ?。╣) 兩個(gè)可編程的串行USART</p><p> (h) 可工作于主機(jī)/從機(jī)模式 SPI串行接口</p><p> ?。╥) 具有獨(dú)立
26、片內(nèi)振蕩器的可編程看門狗定時(shí)器</p><p> ?。╦) 片內(nèi)模擬比較器</p><p> 6、 特殊的處理器特點(diǎn)</p><p> ?。╝)上電復(fù)位以及可編程的掉電檢測(cè)</p><p> (b)片內(nèi)經(jīng)過(guò)標(biāo)定的RC 振蕩器</p><p> ?。╟)片內(nèi)/片外中斷</p><p> (d
27、)6種睡眠模式 : 空 ADC噪聲抑制模式、省電模式、掉電模式、Standby 、式以擴(kuò)展的Standby 模式</p><p><b> 7、 I/O和封裝</b></p><p> (a)32 個(gè)可編程的I/O口</p><p> ?。╞)40 引腳PDIP封裝 , 44 引腳 TQFP 封裝,與 44 引腳MLF封裝</p>
28、;<p><b> 8、 工作電壓:</b></p><p> ?。╝)ATmega16L:2.7 - 5.5V</p><p> ?。╞)ATmega16:4.5 - 5.5V</p><p><b> 9、速度等級(jí)</b></p><p> ?。╝)0 - 8 MHz ATme
29、ga16L</p><p> ?。╞)0 - 16 MHz ATmega16</p><p> 10、 ATmega16L在 1 MHz, 3V, 25 C時(shí)的功耗</p><p> ?。╝)正常模式: 1.1 mA</p><p> ?。╞)空 : 0.35 mA</p><p> (c)掉電模式: < 1
30、 μA</p><p><b> 2.2 引腳配置</b></p><p> ATmega16是基于增強(qiáng)的AVRRISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16 的數(shù)據(jù)吞吐率高達(dá) 1MIPS MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。ATMAGE16引腳分布如圖2.1所示。</p>
31、<p> AVR 內(nèi)核具有豐富的指令集和 32 個(gè)通用工作寄存器。所有的寄存器都直接與算邏單元(ALU) 相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問(wèn)兩個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的 CISC微控制器最高至 10倍的數(shù)據(jù)吞吐率。ATmega16 有如下特點(diǎn) 16K字節(jié)的系統(tǒng)內(nèi)可編程Flash(具有同時(shí)讀寫的能力,即RWW),</p><p> 圖2.1 ATMAGE
32、16引腳分布</p><p> AVR 內(nèi)核具有豐富的指令集和 32 個(gè)通用工作寄存器。所有的寄存器都直接與算邏單元(ALU) 相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問(wèn)兩個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的 CISC微控制器最高至 10倍的數(shù)據(jù)吞吐率。ATmega16 有如下特點(diǎn) 16K字節(jié)的系統(tǒng)內(nèi)可編程Flash(具有同時(shí)讀寫的能力,即RWW),512 字節(jié) EEPROM,1K
33、字節(jié) SRAM,32 個(gè)通用I/O 口線,32 個(gè)通用工作寄存器,用于邊界掃描的 JTAG 接口,支持片內(nèi)調(diào)試與編程,三個(gè)具有比較模式的靈活的定時(shí)器/計(jì)數(shù)(T/C),片內(nèi)/外中斷,可編程 USART,有起始條件檢測(cè)</p><p> 器的通用串行接口,8路10位具有可選差分輸入級(jí)可編程增益 (TQFP 封裝 ) 的 ADC ,具有片內(nèi)振蕩器的可編程看門狗定時(shí)器,一個(gè) SPI串行端口,以及六個(gè)可以通過(guò)軟件進(jìn)行選擇
34、的省電模式。 工作于空閑模式時(shí) CPU 停止工作,而 USART、兩線接口、 A/D 轉(zhuǎn)換器、 SRAM、 T/C、 SPI 端口以及中斷系統(tǒng)繼續(xù)工作;掉電模式時(shí)晶體振蕩器停止振蕩,所有功能除了中斷和硬件復(fù)位之外都停止工作;在省電模式下,異步定時(shí)器繼續(xù)運(yùn)行,允許用戶保持一個(gè)時(shí)間基準(zhǔn),而其余功能模塊處于休眠狀態(tài);ADC噪聲抑制模式時(shí)終止CPU 和除了異步定時(shí)器與ADC以外所有 I/O 模塊的工作,以降低 ADC 轉(zhuǎn)換時(shí)的開(kāi)關(guān)噪聲; Sta
35、ndby 模式下只有晶體或諧振振蕩器運(yùn)行,其余功能模塊處于休眠狀態(tài),使得器件只消耗極少的電流,同時(shí)具有快速啟動(dòng)能力;擴(kuò)展 Standby 模式下則允許振蕩器和異步定時(shí)器繼續(xù)工作。本芯片是以 Atmel 高密度非易失性存儲(chǔ)器技術(shù)生產(chǎn)的。片內(nèi) ISP Flash 允許程序存儲(chǔ)器通過(guò) ISP 串行接口,或者通用編程器進(jìn)行編程,也可以通過(guò)運(yùn)行于 AVR 內(nèi)核之中的引導(dǎo)程序進(jìn)行編程。引導(dǎo)</p><p> 3 DS18B
36、20的設(shè)計(jì)</p><p> 本章介紹了系統(tǒng)軟件設(shè)計(jì),并具體介紹了實(shí)現(xiàn)和調(diào)試的方法,以及分布式溫度采集系統(tǒng)的通信流程和DS18B20溫度測(cè)量軟件的設(shè)計(jì)思路、DS18B20工作的時(shí)序問(wèn)題。</p><p> 3.1 總體通信流程及通信協(xié)議</p><p> 總體通信流程體現(xiàn)在PC機(jī),單片機(jī)主機(jī)及各從機(jī)的通信,信號(hào)接受及發(fā)送,這個(gè)設(shè)計(jì)中,通信協(xié)議是一個(gè)非常重要也
37、很復(fù)雜的部分,在由PC 機(jī)與單片機(jī)組成的系統(tǒng)中,常要涉及通信問(wèn)題,如果沒(méi)有統(tǒng)一的通信協(xié)議,PC機(jī)與單片機(jī)之間的信息傳遞就無(wú)法識(shí)別。</p><p> 通信協(xié)議是指通信各方事前約定規(guī)則,我們可以簡(jiǎn)單地理解為各計(jì)算機(jī)之間進(jìn)行相互會(huì)話所使用的共同語(yǔ)言.PC機(jī)與單片機(jī)在進(jìn)行通信時(shí),必須使用的通信協(xié)議。</p><p> 首先,在設(shè)計(jì)中自定義幾個(gè)數(shù)據(jù)通信協(xié)議,如下問(wèn)提到的“a”、“b”、“c”、
38、“d”、“g”、“h”。這些協(xié)議一旦定義,在后面的執(zhí)行過(guò)程中就代表了固定的含義,不再改變,PC機(jī)、單片機(jī)、從機(jī)都靠識(shí)別這個(gè)協(xié)議來(lái)執(zhí)行程序,發(fā)送一個(gè)字節(jié)的數(shù)據(jù),接受幾個(gè)字節(jié)的數(shù)據(jù),所有的數(shù)據(jù)協(xié)議全都建立在這2個(gè)操作方法上。</p><p> 本設(shè)計(jì)中自定義“a”為PC機(jī)與單片機(jī)主機(jī)間的數(shù)據(jù)協(xié)議,意思為要求主機(jī)發(fā)送一號(hào)從機(jī)的溫度給PC機(jī);</p><p> 自定義“b”為PC機(jī)與單片機(jī)主機(jī)
39、間的數(shù)據(jù)協(xié)議,意思為要求主機(jī)發(fā)送二號(hào)從機(jī)的溫度給PC機(jī);</p><p> 自定義“c”為從機(jī)與主機(jī)間的數(shù)據(jù)協(xié)議,它代表從機(jī)向主機(jī)發(fā)送完四位當(dāng)前采集的溫度,這里一號(hào)從機(jī)和二號(hào)從機(jī)采集的溫度,都定義為“c”;</p><p> 自定義“d”為PC機(jī)與單片機(jī)主機(jī)之間的數(shù)據(jù)協(xié)議,意思為開(kāi)始和完成命令的信號(hào);</p><p> 自定義“g”為一號(hào)從機(jī)和單片機(jī)主機(jī)之間的
40、數(shù)據(jù)協(xié)議,意思為主機(jī)表示要采集一號(hào)從機(jī)的溫度數(shù)據(jù),一號(hào)從機(jī)要求單片機(jī)主機(jī)準(zhǔn)備接收;</p><p> 自定義“h”為二號(hào)從機(jī)和單片機(jī)主機(jī)之間的數(shù)據(jù)協(xié)議,意思為主機(jī)表示要采集二號(hào)從機(jī)的溫度數(shù)據(jù),二號(hào)從機(jī)要求單片機(jī)主機(jī)準(zhǔn)備接收。</p><p><b> 具體流程如下:</b></p><p> 1、PC機(jī)向單片機(jī)主機(jī)發(fā)送“d”:</p
41、><p> 這步是流程的開(kāi)始,PC機(jī)向單片機(jī)主機(jī)發(fā)送數(shù)據(jù)協(xié)議,要求主機(jī)把接收的溫度發(fā)送給PC機(jī)顯示;</p><p> 2、單片機(jī)主機(jī)向一號(hào)從機(jī)發(fā)送“g”:</p><p> 單片機(jī)主機(jī)在接收到PC機(jī)發(fā)送的“d”信號(hào)后,會(huì)立即向一號(hào)從機(jī)發(fā)送“g”,要求一號(hào)從機(jī)采集溫度并且將溫度發(fā)回單片機(jī)主機(jī);</p><p> 3、一號(hào)從機(jī)回發(fā)“g”:&
42、lt;/p><p> 一號(hào)從機(jī)接收到單片機(jī)主機(jī)的命令后,會(huì)立即向單片機(jī)主機(jī)回發(fā)信號(hào),要求單片機(jī)主機(jī)做好接收準(zhǔn)備;</p><p> 4、向主機(jī)發(fā)送四位當(dāng)前采集的溫度,并回發(fā)發(fā)送完成標(biāo)記“c”;</p><p> 一號(hào)從機(jī)回發(fā)信號(hào)后,向主機(jī)發(fā)送四位采集的溫度,這個(gè)溫度在前文已提到標(biāo)記為“c”;</p><p> 5、主機(jī)發(fā)送“h”給2號(hào)從機(jī)
43、:</p><p> 主機(jī)在接收到一號(hào)從機(jī)發(fā)來(lái)的“c”命令后,會(huì)立刻發(fā)送“h”信號(hào)給二號(hào)從機(jī),表示要采集二號(hào)從機(jī)的數(shù)據(jù);</p><p> 6、2號(hào)從機(jī)回發(fā)“h”:</p><p> 二號(hào)從機(jī)接收到單片機(jī)主機(jī)的命令后,會(huì)立即向單片機(jī)主機(jī)回發(fā)信號(hào),要求單片機(jī)主機(jī)做好接收準(zhǔn)備; </p><p> 7、向主機(jī)發(fā)送四位當(dāng)前采集的溫度,并回發(fā)
44、發(fā)送完成標(biāo)記“c”:</p><p> 二號(hào)從機(jī)向單片機(jī)主機(jī)回發(fā)完信號(hào)后,向主機(jī)發(fā)送四位當(dāng)前采集的溫度,這個(gè)溫度標(biāo)記為“c”;</p><p> 8、主機(jī)發(fā)送“d”給PC機(jī):</p><p> 單片機(jī)主機(jī)在接收到二號(hào)從機(jī)發(fā)送來(lái)的信號(hào)后,立刻發(fā)送信號(hào)給PC機(jī),表示完成PC機(jī)的前一指令;</p><p> 9、PC發(fā)送“a”給主機(jī):<
45、;/p><p> PC機(jī)在接收到單片機(jī)主機(jī)發(fā)送的信號(hào)后,發(fā)送新一個(gè)指令給單片機(jī)主機(jī),要求單片機(jī)主機(jī)發(fā)送一號(hào)從機(jī)采集的溫度數(shù)據(jù);</p><p> 10、主機(jī)將一號(hào)從機(jī)溫度數(shù)據(jù)發(fā)送給PC機(jī):</p><p> 單片機(jī)主機(jī)接收到PC機(jī)的命令后將一號(hào)從機(jī)發(fā)送過(guò)來(lái)的四位當(dāng)前溫度數(shù)據(jù)轉(zhuǎn)換成ASCII碼后,發(fā)送給PC機(jī),因?yàn)镻C機(jī)只能讀取ASCII碼;</p>
46、<p> 11、PC機(jī)發(fā)送“b”給主機(jī):</p><p> PC機(jī)接收到單片機(jī)主機(jī)發(fā)送的即時(shí)溫度后會(huì)立即發(fā)送另一指令給單片機(jī)主機(jī),要求單片機(jī)主機(jī)發(fā)送二號(hào)從機(jī)采集的溫度數(shù)據(jù);</p><p> 12、主機(jī)將二號(hào)從機(jī)溫度數(shù)據(jù)發(fā)送給PC機(jī),發(fā)送完成后,返回(1):</p><p> 單片機(jī)主機(jī)接收到PC機(jī)的命令后將二號(hào)從機(jī)發(fā)送過(guò)來(lái)的四位當(dāng)前溫度數(shù)據(jù)同樣也
47、轉(zhuǎn)換成ASCII碼后,發(fā)送給PC機(jī)。此時(shí)一個(gè)完整過(guò)程結(jié)束,將返回(1)開(kāi)始另一輪采集。</p><p> 3.2 DS18B20溫度測(cè)量軟件的設(shè)計(jì)</p><p> 由于DS18B20 單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM 功能命令→發(fā)存儲(chǔ)器操作命令→處
48、理數(shù)據(jù)。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換的程序必須經(jīng)過(guò)3個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12MHz,根據(jù)DS18B20的初始化時(shí)序、寫時(shí)序和讀時(shí)序,分別編寫3個(gè)子程序:INIT為初始化子程序,WRITE 為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開(kāi)始。主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量溫度值,溫度測(cè)量每1s 進(jìn)行一次,流程圖
49、如圖3.1所示 。</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9個(gè)字節(jié),在讀出時(shí)需進(jìn)行CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫,其程序流程圖如圖3.2所示。</p><p> 從DS18B20讀取出的二進(jìn)制值必須先轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。因?yàn)镈S18B20的轉(zhuǎn)換精度為9~12 位可選,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0
50、.0625為步進(jìn)的,即溫度值為溫度寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。</p><p> 3.3 多機(jī)通信軟件的設(shè)計(jì)</p><p> ATMAGE16單片機(jī)有串行發(fā)送緩沖器/接收緩沖器(SBUF)、串行口控制寄存器(SCON)、特殊功能寄存器(PCON)。通過(guò)設(shè)置SCON可以有四種工作方式,其中工作方式2、3 適用于多機(jī)通信。在串行通信前,通過(guò)程序預(yù)先將各從
51、機(jī)串行口設(shè)置為方式2或方式3,并使SM2和REN(允許串行接收控制位)為1,允許串行口中斷。主機(jī)與從機(jī)通信時(shí),將SM2置0,準(zhǔn)備接收數(shù)據(jù),否則維持SM2為1,這樣在主機(jī)發(fā)送數(shù)據(jù)時(shí)(此時(shí)主機(jī)發(fā)送數(shù)據(jù)中第9 位為0),只有地址相符的從機(jī)可接收數(shù)據(jù),</p><p> 圖3.1 DS18B20溫度主程序流程圖 圖3.2 讀出溫度子程序流程圖</p><p> 其
52、余從機(jī)對(duì)數(shù)據(jù)信息不予理睬,從而可以實(shí)現(xiàn)多機(jī)通信集散型控制系統(tǒng)將各控制單元分散到現(xiàn)場(chǎng)各控制點(diǎn)。從機(jī)主程序和串行口中斷服務(wù)程序如圖3.3所示。</p><p> PC 機(jī)與單片機(jī)的串口通信中,ATMAGE16單片機(jī)的Pl.3和Pl.4口分別模擬串行通信的發(fā)送和接收端,其接口程序主要由發(fā)送子程序和接收子程序組成。通信速率9600bps,幀格式為N.8.l。發(fā)送時(shí),先發(fā)送一個(gè)起始位(低電平),接著 按低位在先的順序發(fā)
53、送8位數(shù)據(jù),最后發(fā)送停止位。接收時(shí),先判斷P1.4接收端口是否有起始低電平出現(xiàn),如有則按低位在先的順序接收8位數(shù),最后判斷P1.4 口是否有停止高電平出現(xiàn),如有則完成一個(gè)數(shù)據(jù)接收,否則繼續(xù)等待。其中軟件編寫要嚴(yán)格按照異步通信的時(shí)序進(jìn)行。</p><p> 圖3.3 從機(jī)主程序和串行口中斷服務(wù)程序</p><p> 3.4 DS18B20工作時(shí)序問(wèn)題</p><p&
54、gt; DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲(chǔ)器操作指令→數(shù)據(jù)傳輸。其工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序。 </p><p> 主機(jī)即單片機(jī)首先發(fā)480us---960us的低電平,進(jìn)行復(fù)位,然后釋放總線,之后總線被外部上拉電阻電阻抬高,大約等待15—60us之后,DS18B20發(fā)出60到240us的低電平信號(hào),以示存在,至此初始化結(jié)束。 寫“0“的時(shí)候,首先單片機(jī)發(fā)復(fù)位信號(hào),然
55、后發(fā)“0”于是低電平持續(xù)60us就完成了寫“0”寫“1”的時(shí)候首先單片機(jī)發(fā)復(fù)位信號(hào),持續(xù)時(shí)間大于1us小于15us然后發(fā)“1”持續(xù)50us以上即可。 讀時(shí)序也是主機(jī)先發(fā)低電平,然后在15us內(nèi)檢測(cè)連接DS18B20的數(shù)據(jù)線的引腳,從而讀得相應(yīng)值。</p><p><b> 4 電路的設(shè)計(jì)</b></p><p> 本章分析了分布式溫度采集系統(tǒng)的各主要功能模塊的設(shè)
56、計(jì)與實(shí)現(xiàn),具體包括溫度測(cè)量電路模塊和串口通信電路模塊。</p><p> 4.1 溫度測(cè)量電路的設(shè)計(jì)</p><p> 溫度測(cè)量采用DS18B20 數(shù)字式溫度傳感器。由DS18B20 構(gòu)成的智能溫度測(cè)量裝置由三部分組成:DS18B20 溫度傳感器、ATMAGE16、顯示模塊。產(chǎn)品的主要技術(shù)指標(biāo):①測(cè)量范圍:-55℃~+125℃,②測(cè)量精度:0.5℃,③反應(yīng)時(shí)間≤500ms。為了達(dá)到更
57、高的精度,則在對(duì)DSl8B20測(cè)溫原理進(jìn)行詳細(xì)分析的基礎(chǔ)上,采取直接讀取DSl8B20內(nèi)部暫存寄存器的方法,將DSl8B20 的測(cè)溫分辨率提高到0.01℃~0.1℃,DSl8B20內(nèi)部暫存寄存器的分布如表4-1所列,其中第7字節(jié)存放的是當(dāng)溫度寄存器停止增值時(shí)計(jì)數(shù)器l的計(jì)數(shù)剩余值,第8字節(jié)存放的是每度所對(duì)應(yīng)的計(jì)數(shù)值。這樣,就可以通過(guò)下面的方法獲得高分辨率的溫度測(cè)量結(jié)果。</p><p> 表4-1 DS18B
58、20內(nèi)部暫存器</p><p> 基于DS18B20的溫度測(cè)量裝置電路圖如圖4.1所示:</p><p> 圖4.1 溫度測(cè)量電路</p><p> 溫度傳感器DS18B20將被測(cè)環(huán)境溫度轉(zhuǎn)化成帶符號(hào)的數(shù)字信號(hào)(以十六位補(bǔ)碼形式,占兩個(gè)字節(jié)),傳感器可置于離裝置150米以內(nèi)的任何地方,輸出腳I/O直接與單片機(jī)的P1.1 相連,R1為上拉電阻,傳感器采用外部電源
59、供電。ATMAGE16 是整個(gè)裝置的控制核心,ATMAGE16內(nèi)帶1K字節(jié)的FlashROM,用戶程序存放在這里。顯示器模塊由四位一體的共陽(yáng)數(shù)碼管和4個(gè)9012組成。系統(tǒng)程序分傳感器控制程序和顯示器程序兩部分,傳感器控制程序是按照DS18B20的通信協(xié)議編制。系統(tǒng)的工作是在程序控制下,完成對(duì)傳感器的讀寫和對(duì)溫度的顯示。</p><p> 4.2 串口通信電路的設(shè)計(jì)</p><p>
60、為了增加單片機(jī)多機(jī)通信的距離,該部分電路采用RS232標(biāo)準(zhǔn)接口,通信距離可以達(dá)到15米;如果采用RS422 或是RS485 接口,通信距離會(huì)更遠(yuǎn)。多機(jī)通信接口原理圖見(jiàn)圖1 。在數(shù)據(jù)傳輸過(guò)程中采用的是RS232 電平,提高了抗干擾能力。需要在主機(jī)串行接口和從機(jī)串行接口進(jìn)行電平轉(zhuǎn)換:TTL-RS232-TTL。這都是用MAX232 接口芯片實(shí)現(xiàn)的,具體的電路如圖4.2所示。</p><p> 圖4.2 TTL-R
61、S232-TTL電平轉(zhuǎn)換電路</p><p> 通信電路是本設(shè)計(jì)的重要組成部分,負(fù)責(zé)溫度數(shù)據(jù)的采集和數(shù)據(jù)的上傳。包括單片機(jī)多機(jī)串口通信電路,PC 機(jī)與ATMAGE16的串口通信電路。其中主單片機(jī)ATMAGE16既要和從機(jī)通信,還要負(fù)責(zé)將數(shù)據(jù)通過(guò)串口發(fā)送到PC機(jī)上。而ATMAGE16 單片機(jī)只有一個(gè)串行通信口,這就需要用硬件或是軟件擴(kuò)展一個(gè)串行通信口。本設(shè)計(jì)采用一種用單片機(jī)普通I/O口和相應(yīng)軟件實(shí)現(xiàn)串行通信的方法
62、。</p><p> 5 分布式溫度采集系統(tǒng)設(shè)計(jì)</p><p> 數(shù)字式傳感器一般采用單總線技術(shù)(1-WIREBUS),即在單片機(jī)或計(jì)算機(jī)接口中只用一根導(dǎo)線(輸入/ 輸出信號(hào)線),美國(guó)Dallas公司最新推出的1-WireBus數(shù)字式溫度傳感器DS18B20,與傳統(tǒng)的溫度傳感器不同,它能夠直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式,可以分別在9
63、3.75ms 和750ms內(nèi)將溫度值轉(zhuǎn)化為9 位和12位的數(shù)字量,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃;為實(shí)現(xiàn)與PC機(jī)串口長(zhǎng)距離數(shù)據(jù)通信,系統(tǒng)采用了RS232 串行接口,通信距離可以達(dá)到15m,如果采用RS422或RS485串行接口可以達(dá)到1000m。串口通信由PC機(jī)與單片機(jī)的通信和單片機(jī)多機(jī)通信組成,每個(gè)從機(jī)負(fù)責(zé)溫度的測(cè)量然后通過(guò)多機(jī)通信把溫度數(shù)據(jù)發(fā)送到主單片機(jī)上,最后PC機(jī)通過(guò)VB程序控制串口把主
64、單片機(jī)上的所有溫度數(shù)據(jù)收集起來(lái)。系統(tǒng)框圖如圖5.1所示。</p><p><b> 圖5.1 系統(tǒng)框圖</b></p><p> 6 ICCAVR制作環(huán)境及介紹</p><p> 本章介紹了ICCAVR的制作環(huán)境,ICCAVR 中的文件類型及其文件的擴(kuò)展名、附注和擴(kuò)充,并介紹了IAR 或其它ANSI C 編譯系統(tǒng)的代碼轉(zhuǎn)換。&
65、lt;/p><p> 6.1 ICCAVR 介紹</p><p> 本節(jié)主要介紹了ICCAVR文件的基本特點(diǎn)、類型、擴(kuò)展名等。</p><p> 6.1.1 ImageCraft 的ICCAVR 介紹</p><p> ImageCraft 的ICCAVR 是一種使用符合ANSI 標(biāo)準(zhǔn)的C 語(yǔ)言來(lái)開(kāi)發(fā)微控制器(MCU)程序的一個(gè)工具,
66、它有以下幾個(gè)主要特點(diǎn):</p><p> ICCAVR 是一個(gè)綜合了編輯器和工程管理器的集成工作環(huán)境(IDE),其可在WINDOWS9X/NT 下工作。</p><p> 源文件全部被組織到工程之中,文件的編輯和工程的構(gòu)筑也在這個(gè)環(huán)境中完成。編譯錯(cuò)誤顯示在狀態(tài)窗口中,并且當(dāng)你用鼠標(biāo)單擊編譯錯(cuò)誤時(shí),光標(biāo)會(huì)自動(dòng)跳轉(zhuǎn)到編輯窗口中引起錯(cuò)誤的那一行。這個(gè)工程管理器還能直接產(chǎn)生您希望得到的可以直接
67、使用的INTEL HEX 格式文件,INTEL HEX 格式文件可被大多數(shù)的編程器所支持,用于下載程序到芯片中去。</p><p> ICCAVR 是一個(gè)32 位的程序,支持長(zhǎng)文件名。</p><p> 本論文并不介紹通用的C 語(yǔ)言語(yǔ)法知識(shí),僅介紹使用ICC AVR 所必須具備的知識(shí)。 </p><p> 6.1.2 ICCAVR 中的文件類型及其擴(kuò)展名&l
68、t;/p><p> 文件類型是由它們的擴(kuò)展名決定的,IDE 和編譯器可以使用以下幾種類型的文件。</p><p><b> 輸入文件:</b></p><p> .c 擴(kuò)展名----表示是C 語(yǔ)言源文件</p><p> .s 擴(kuò)展名----表示是匯編語(yǔ)言源文件</p><p> .h 擴(kuò)展
69、名----表示是C 語(yǔ)言的頭文件</p><p> .prj 擴(kuò)展名----表示是工程文件,這個(gè)文件保存由IDE 所創(chuàng)建和修改的一個(gè)工程的有</p><p><b> 關(guān)信息。</b></p><p> .a 擴(kuò)展名----庫(kù)文件,它可以由幾個(gè)庫(kù)封裝在一起。libcavr.a 是一個(gè)包含了標(biāo)準(zhǔn)C 的庫(kù)和AVR 特殊程序調(diào)用的基本庫(kù)。如果庫(kù)
70、被引用,鏈接器會(huì)將其鏈接到您的模塊或文件中。您也可以創(chuàng)建或修改一個(gè)符合你需要的庫(kù)。</p><p><b> 輸出文件</b></p><p> .s 對(duì)應(yīng)每個(gè)C 語(yǔ)言源文件,由編譯器在編譯時(shí)產(chǎn)生的匯編輸出文件。</p><p> .o 由匯編文件匯編產(chǎn)生的目標(biāo)文件,多個(gè)目標(biāo)文件可以鏈接成一個(gè)可執(zhí)行文件。</p><p
71、> .hex INTEL HEX 格式文件,其中包含了程序的機(jī)器代碼。</p><p> .eep INTEL HEX 格式文件,包含了EEPROM 的初始化數(shù)據(jù)。</p><p> .cof COFF 格式輸出文件,用于在ATMEL 的AvrStudio 環(huán)境下進(jìn)行程序調(diào)試。</p><p> .lst 列表文件,在這個(gè)文件中列舉出了目標(biāo)代碼對(duì)應(yīng)的最
72、終地址。</p><p> .mp 內(nèi)存映象文件 它包含了您程序中有關(guān)符號(hào)及其所占內(nèi)存大小的信息</p><p> .cmd NoICE 2.xx 調(diào)試命令文件。</p><p> .noi NoICE 3.xx 調(diào)試命令文件。</p><p> .dbg ImageCraft 調(diào)試命令文件。</p><p>
73、 6.1.3 附注和擴(kuò)充</p><p> #pragma (編譯附注)</p><p> 這個(gè)編譯器接受以下附注:</p><p> #pragma interrupt_handler <func1>:<vector number> <func2>:<vector> ...</p><p
74、> 這個(gè)附注必須在函數(shù)之前定義,它說(shuō)明函數(shù)func1、func2 是中斷操作函數(shù),所以編譯器在中斷操作函數(shù)中生成中斷返回指令reti 來(lái)代替普通返回指令ret ,并且保存和恢復(fù)函數(shù)所使用的全部寄存器;同樣編譯器根據(jù)中斷向量號(hào)vector number 生成中斷向量地址。</p><p> #pragma ctask <func1> <func2>...</p>&l
75、t;p> 這個(gè)附注指定了函數(shù)不生成揮發(fā)寄存器來(lái)保存和恢復(fù)代碼,它的典型應(yīng)用是在RTOS實(shí)時(shí)操作系統(tǒng)中讓RTOS 核直接管理寄存器。</p><p> #pragma text:<name></p><p> 改變代碼段名稱,使其與命令行選項(xiàng)相適應(yīng)。</p><p> #pragma data:<data></p>
76、<p> 改變數(shù)據(jù)段名稱,使其與命令行選項(xiàng)相適應(yīng)。這個(gè)附注在分配全局變量至EEPROM中時(shí)必須被使用。</p><p> #pragma abs_address:<address></p><p> 函數(shù)與全局?jǐn)?shù)據(jù)不使用浮動(dòng)定位(重定位),而是從<address>開(kāi)始分配絕對(duì)地址。這在訪問(wèn)中斷向量和其它硬件項(xiàng)目時(shí)特別有用。</p>&l
77、t;p> #pragma end_abs_address</p><p> 結(jié)束絕對(duì)定位,使目標(biāo)程序使用正常浮動(dòng)定位。</p><p><b> C++ 注釋</b></p><p> 如果你選擇了編譯擴(kuò)充(Project->Options->Compiler),你可以在你的源代碼中使用C ++的 // 類型的注釋。&
78、lt;/p><p><b> 二進(jìn)制常數(shù)</b></p><p> 如果你選擇了編譯擴(kuò)充(Project->Options->Compiler),你可以使用0b<1|0>* 來(lái)指定二進(jìn)制常數(shù),例如0b10101 等于十進(jìn)制數(shù)21。</p><p><b> 在線匯編</b></p>
79、<p> 你可以使用asm("string")函數(shù)來(lái)指定在線匯編代碼。</p><p> 6.1.4 代碼轉(zhuǎn)換</p><p> IAR 或其它ANSI C 編譯系統(tǒng)的代碼轉(zhuǎn)換</p><p> IAR C 編譯器作為應(yīng)用于AVR 的第一個(gè)C 編譯器,它有十分豐富的源代碼。當(dāng)你從IAR編譯系統(tǒng)轉(zhuǎn)換到ImageCraft 編譯系
80、統(tǒng)時(shí),絕大多數(shù)符合ANSI C標(biāo)準(zhǔn)的程序代碼不需要轉(zhuǎn)換,IAR C 中IO 寄存器的定義與ICCAVR 也是相同的。</p><p> 中斷操作描述,ICCAVR 使用pragma 附注描述中斷操作函數(shù),而IAR 引入了語(yǔ)法擴(kuò)充(interrupt 關(guān)鍵字),下面是一個(gè)對(duì)照:</p><p> 在 ICCAVR 中:</p><p> #pragma inte
81、rrupt_handler func:4 // 4 是這個(gè)中斷的向量號(hào),func 為中斷處理函數(shù)名稱,ICCAVR 可以使多個(gè)中斷向量共用一個(gè)中斷處理函數(shù)。</p><p><b> 在 IAR 中:</b></p><p> interrupt [vector_name] func() // vector_name 是某一個(gè)中斷向量的名稱,IAR C 的中斷向量
82、地址使用中斷名稱來(lái)代替,以增加程序的可讀性。</p><p><b> 擴(kuò)充關(guān)鍵字</b></p><p> IAR 引入flash 關(guān)鍵字將項(xiàng)目分配進(jìn)入程序存貯空間(FLASH 存貯器),ICCAVR 使用const 關(guān)鍵字來(lái)達(dá)到相同的目的。</p><p><b> 過(guò)程調(diào)用轉(zhuǎn)換</b></p>&
83、lt;p> 在兩個(gè)編譯系統(tǒng)之間函數(shù)參數(shù)傳遞使用的寄存器是不同的,這僅影響手工寫的匯編函數(shù)。</p><p> 在線匯編、宏等,IAR 不支持在線匯編符號(hào),而ICCAVR 支持在線匯編。</p><p> 6.2 ICCAVR 向?qū)?lt;/p><p> 自你啟動(dòng) IDE 后,首先從Project 菜單系統(tǒng)選擇Open 命令,進(jìn)入\icc\examples
84、.avr 目錄并且選擇并打開(kāi)“l(fā)ed”工程,工程管理器顯示在這個(gè)工程中只有一個(gè)文件led.c。 然后從Project 菜單中選擇Options 命令打開(kāi)工程編譯選項(xiàng),在"Target"標(biāo)號(hào)下選擇目標(biāo)處理器。然后從Project 菜單中選擇Make Project 命令,IDE 將調(diào)用編譯器編譯這個(gè)工程文件,并且在狀態(tài)窗口中顯示所有的信息。</p><p> 6.3 ICCAVR 的IDE
85、環(huán)境</p><p> 6.3.1 編譯一個(gè)單獨(dú)的文件</p><p> 正常建立一個(gè)輸出文件的次序是,你首先應(yīng)該建立一個(gè)工程文件并且定義屬于這個(gè)工程的所有文件。然而,我們有時(shí)也需要將一個(gè)文件單獨(dú)地編譯為目標(biāo)文件或最終的輸出文件。這時(shí)可以這樣操作:從IDE 菜單“File” 中選擇“Compile File...”命令,來(lái)執(zhí)行“to Object”和“to Output”中的任意一個(gè)
86、。當(dāng)你調(diào)用這個(gè)命令時(shí),文件應(yīng)該是打開(kāi)的并且在編輯窗口中可以編輯的。</p><p> 編譯一個(gè)文件為目標(biāo)文件(to Object),對(duì)檢查語(yǔ)法錯(cuò)誤和編譯一個(gè)新的啟動(dòng)文件是很有用的。編譯一個(gè)文件為輸出文件(to Output),對(duì)較小的并且是一個(gè)文件的程序較為有用。</p><p> 6.3.2 創(chuàng)建一個(gè)新的工程</p><p> 為創(chuàng)建一個(gè)新的工程,從菜單“
87、Project”中選擇“New”命令,IDE 會(huì)彈出一個(gè)對(duì)話框,在對(duì)話框中你可以指定工程的名稱,這也是你的輸出文件的名稱。如果你使用一些已經(jīng)建立的源文件,你可在菜單“Project”中選擇“AddFile(s) ”命令。</p><p> 另外,你可以在菜單“File”中選擇“New”命令來(lái)建立一個(gè)新的源文件來(lái)輸入你的代碼,你可以在菜單“File”中選擇“Save”或“Save As”命令來(lái)保存文件。然后你可以
88、象上面所述調(diào)用“AddFile(s)”命令將文件加入到工程中,也可在當(dāng)前編輯窗口中單擊鼠標(biāo)右鍵選擇“Add to Project”將文件加入已打開(kāi)的工程列表中。通常你輸出源文件在工程同一個(gè)目錄中,但也可不作這樣要求。</p><p> 工程的編譯選項(xiàng)使用菜單中 “Project”中的“Options”命令。</p><p> 6.3.3 工程管理</p><p&g
89、t; 工程管理允許你將多個(gè)文件組織進(jìn)同一個(gè)工程,而且定義它們的編譯選項(xiàng),這個(gè)特性允許你將工程分解成許多小的模塊。當(dāng)你處理工程構(gòu)筑時(shí),只有一個(gè)文件被修改和重新編譯,如果一個(gè)頭文件作了修改,當(dāng)你編譯包含這個(gè)頭文件的源文件時(shí),IDE 會(huì)自動(dòng)重新編譯已經(jīng)改變的頭文件。</p><p> 一個(gè)源文件可以寫成 C 或匯編格式的任意一種。C 文件必須使用“.c”擴(kuò)展名匯編文件必須使用“.s”擴(kuò)展名。你可以將任意文件放在工程
90、列表中,例如你可以將一個(gè)工程文檔文件放在工程管理窗口中,工程管理器在構(gòu)筑工程時(shí)對(duì)源文件以外的文件不予理睬。</p><p> 對(duì)目標(biāo)器件不同的工程,可以在編譯選項(xiàng)中設(shè)置有關(guān)參數(shù)。當(dāng)你新建一個(gè)工程時(shí),使用默認(rèn)的編譯選項(xiàng),你可以將現(xiàn)有編譯選項(xiàng)設(shè)置成默認(rèn)選項(xiàng),也可將默認(rèn)編譯選項(xiàng)裝入現(xiàn)有工程中。默認(rèn)編譯選項(xiàng)保存在default.prj 文件中。</p><p> 為避免你的工程目錄混亂,你可以
91、指定輸出文件和中間文件到一個(gè)指定的目錄,通常這個(gè)目錄是你的工程目錄的一個(gè)子目錄。</p><p> 6.3.4 編輯窗口</p><p> 編輯窗口是你與 IDE 交流信息的主要區(qū)域,在這個(gè)窗口中你可以修改相應(yīng)的文件。當(dāng)編譯存在錯(cuò)誤時(shí),用鼠標(biāo)單擊有關(guān)錯(cuò)誤信息時(shí),編輯器會(huì)自動(dòng)將光標(biāo)定位在錯(cuò)誤行的位置。</p><p> 6.3.5 應(yīng)用構(gòu)筑向?qū)?lt;/p&
92、gt;<p> 應(yīng)用構(gòu)筑向?qū)怯糜趧?chuàng)建外圍設(shè)備初始化代碼的一個(gè)圖形界面。你可以單擊工具條中的“Wizard”按鈕或菜單“Tools”中的“ApplicationBuilder”命令來(lái)調(diào)用它。</p><p> 應(yīng)用構(gòu)筑向?qū)褂镁幾g選項(xiàng)中指定的目標(biāo)MCU來(lái)產(chǎn)生相應(yīng)的選項(xiàng)和代碼。</p><p> 應(yīng)用構(gòu)筑向?qū)э@示目標(biāo) MCU 的每一個(gè)外圍設(shè)備子系統(tǒng),它的使用是很顯而易見(jiàn)的
93、。在這里你可以設(shè)置MCU 的所具有的中斷、內(nèi)存、定時(shí)器、IO 端口、UART 、SPI 和模擬量比較器等外圍設(shè)備,并產(chǎn)生相應(yīng)的代碼,如果你需要的話,還可產(chǎn)生main( )函數(shù)。</p><p> 6.3.6 終端仿真</p><p> IDE 有一個(gè)內(nèi)置的終端仿真器,注意它不包含任意一個(gè)ISP(在系統(tǒng)編程)功能,但它可以作為一個(gè)簡(jiǎn)單的終端,或許可以顯示你的目標(biāo)裝置的調(diào)試信息,也可下載
94、一個(gè)ASC碼文件。從 6.20 版本開(kāi)始IDE 加入了對(duì)ISP 的支持。</p><p><b> 結(jié) 論</b></p><p> ATMAGE16單片機(jī)體積小、重量輕、抗干擾能力強(qiáng)、對(duì)環(huán)境要求不高、價(jià)格低廉、可靠性高、靈活性好。即使是非電子計(jì)算機(jī)專業(yè)人員,通過(guò)學(xué)習(xí)一些專業(yè)基礎(chǔ)知識(shí)以后也能依靠自己的技術(shù)力量來(lái)開(kāi)發(fā)所希望的單片機(jī)應(yīng)用系統(tǒng)。在傳統(tǒng)的溫度測(cè)量系統(tǒng)中,
95、往往采用模擬的溫度傳感器進(jìn)行設(shè)計(jì),必須經(jīng)過(guò)A/D轉(zhuǎn)換后才可以被微處理器識(shí)別和處理。這樣的設(shè)計(jì)方法不僅對(duì)前端模擬信號(hào)處理電路提出了更高的要求,而且不具有數(shù)字通信和網(wǎng)絡(luò)功能。本設(shè)計(jì)文結(jié)合DSl8B20的新特性和現(xiàn)代溫度測(cè)量系統(tǒng)提出的新要求,提出了基于智能數(shù)字溫度傳感器DSl8820的高精度、分布式多點(diǎn)溫度測(cè)量系統(tǒng)設(shè)計(jì)方案。該方案具有安裝方便、數(shù)字化程度高、精度高、適應(yīng)性強(qiáng)等特點(diǎn),在多種溫度檢測(cè)中具有廣闊的應(yīng)用前景。經(jīng)過(guò)模塊化的電路測(cè)試、軟件
96、調(diào)試和系統(tǒng)組裝,測(cè)溫精度可以達(dá)到±0.01℃。設(shè)計(jì)出的多路遠(yuǎn)距離自動(dòng)化、智能化溫度采集系統(tǒng)可以廣泛應(yīng)用于工業(yè)控制領(lǐng)域。本次設(shè)計(jì)只給出2路從機(jī)采集,根據(jù)需要可以增加更多從機(jī)進(jìn)行溫度采集。</p><p><b> 參 考 文 獻(xiàn)</b></p><p> 1 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社.1999</p&
97、gt;<p> 2 李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社.1999</p><p> 3 劉守義.單片及應(yīng)用技術(shù).西安:西安電子科技大學(xué)出版社.2002</p><p> 4 潘新民.微型計(jì)算機(jī)與傳感技術(shù).北京:人民郵電出版社.1988</p><p> 5 辛友順等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).福州:福建科學(xué)技術(shù)出版社.2005&l
98、t;/p><p> 6 陳嘉慶.工業(yè)控制計(jì)算機(jī)應(yīng)用100例.北京:微計(jì)算機(jī)信息編輯部.2002</p><p> 7 王幸之.AT89系列單片機(jī)原理與接口技術(shù).北京:北京航空航天大學(xué)出版社.2004</p><p> 8 張 軍.AVR單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例.第一版.中國(guó)電力出版社</p><p> 9 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二
99、版).北京清華大學(xué)出版社.2005</p><p> 10馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第三版).北京:北京航空航天大學(xué)出版社.2003</p><p> 11夏路易.電路原理圖與電路板設(shè)計(jì)教程PROTEL99SE.北京:北京希望電子出版社</p><p><b> 致 謝</b></p><p> 在我
100、的論文收筆之際,首先,我要衷心感謝我的指導(dǎo)老師xx老師。在畢業(yè)設(shè)計(jì)期間,xx老師給予了我很大的幫助、鼓勵(lì)和支持,十分關(guān)心我的設(shè)計(jì)進(jìn)度,對(duì)畢業(yè)設(shè)計(jì)提出大量寶貴的意見(jiàn)和建議,在他的悉心指導(dǎo)和大力支持下,我的畢業(yè)課程設(shè)計(jì)得以順利完成。</p><p> 最后,再次向指導(dǎo)老師xx老師表示我最誠(chéng)摯的謝意。</p><p> 附件1:總系統(tǒng)的原理圖如下:</p><p>
101、 附件2:?jiǎn)纹瑱C(jī)ATMAGE16控制DS18B20的程序:</p><p> #include <iom16v.h></p><p> #include <macros.h></p><p> #define uchar unsigned char</p><p> #define ui
102、nt unsigned int</p><p> uchar Temp=0x00,Flag=0,Point=0;</p><p> const uchar DISCODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9</p><p> const uchar order[4]={
103、0x07,0x0b,0x0d,0x0e};</p><p> const uchar fuhao1[8]={0X81,0XF7,0XF7,0X87,0XF5,0XF5,0XF5,0X00};//正字</p><p> const uchar fuhao0[8]={0xf7,0xc7,0xeb,0x81,0xb5,0xb5,0xeb,0x9C};//負(fù)字</p><p
104、> #pragma interrupt_handler Timer0:10void Timer0(void)//每32ms掃描一次數(shù)碼管</p><p><b> {</b></p><p><b> uchar j;</b></p><p> for(j=0;j<8;j++)</p>
105、<p><b> {</b></p><p> PORTB=1<<j;</p><p> if(Flag)PORTD=fuhao1[j];</p><p> else PORTD=fuhao0[j];</p><p> DelayMS(1);</p><p> P
106、ORTB=0x00;</p><p> PORTD=0xff; </p><p><b> }</b></p><p> TCNT0=0x00;//重新開(kāi)始</p><p><b> }</b></p><p> void Dis_Init(void)&l
107、t;/p><p><b> {</b></p><p><b> uchar i;</b></p><p> DDRC=0xff;</p><p> DDRA=0xff;</p><p> DDRD=0xff;</p><p> PORTC=0
108、xf0;</p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> PORTA=DISCODE[9-i];</p><p> DelayMS(100);</p><p><b> }</b></p>
109、;<p> TIMSK=0x01;</p><p> TCNT0=0x00;</p><p> SREG=0x80;</p><p> TCCR0=0x04;//512分頻</p><p><b> }</b></p><p> void Dis_Data(uchar d
110、isdata)</p><p><b> {</b></p><p> char disbuf[4],i,j;</p><p> SREG=0x00;</p><p> disbuf[0] = disdata /100;</p><p> disbuf[1] = (disdata/10)
111、%10;</p><p> disbuf[2] = disdata%10;</p><p> disbuf[3] = Point;</p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p> PORTC = order[i];<
112、/p><p> PORTA = DISCODE[disbuf[i]];</p><p> if(i==2) PORTA|=0x80;//顯示小數(shù)點(diǎn)</p><p> DelayMS(2);</p><p> PORTA=0x00;</p><p> DelayMS(1);</p><p>
113、<b> }</b></p><p> SREG=0x80;</p><p><b> }</b></p><p> void gettemp(void)</p><p><b> {</b></p><p> char temph=0,te
114、mpl=0,TempL=0;</p><p> while(Check18B20());//驗(yàn)證初始化成功</p><p> Write18B20(0xcc);</p><p> Write18B20(0x44); //啟動(dòng)轉(zhuǎn)換</p><p> //DelayMS(500);
115、; //750MS</p><p> while(Check18B20());//成功</p><p> Write18B20(0xcc);</p><p> Write18B20(0xbe); //讀取溫度值</p><p> templ = Read18B20();</p><
116、;p> temph = Read18B20();</p><p> while(Check18B20());</p><p> Temp=(templ>>4)|(temph<<4);</p><p> TempL=templ&0x0c;//小數(shù)位</p><p> Point=(TempL>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣自動(dòng)化畢業(yè)論文---基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與仿真-電氣自動(dòng)化畢業(yè)論文
- 基于單片機(jī)的溫度測(cè)控系統(tǒng)設(shè)計(jì)【自動(dòng)化畢業(yè)論文】
- 畢業(yè)論文-基于atmage16單片機(jī)的控制的溫度采集與測(cè)量
- 電氣工程及其自動(dòng)化畢業(yè)論文基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)
- 電氣自動(dòng)化畢業(yè)論文基于單片機(jī)的自動(dòng)門控制系統(tǒng)設(shè)計(jì)
- 自動(dòng)化畢業(yè)論文基于單片機(jī)的智能溫度控制系統(tǒng)的設(shè)計(jì)
- 基于單片機(jī)的溫度采集系統(tǒng)畢業(yè)論文
- 電氣工程及其自動(dòng)化畢業(yè)論文基于單片機(jī)速度測(cè)量系統(tǒng)的設(shè)計(jì)
- 基于單片機(jī)控制的溫度采集與測(cè)量設(shè)計(jì)
- 基于單片機(jī)的溫度控制系統(tǒng)-電氣工程及其自動(dòng)化論文
- 電氣工程與自動(dòng)化畢業(yè)論文基于at89c52單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 電氣自動(dòng)化畢業(yè)論文----基于單片機(jī)的輸液滴速控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)控制的全自動(dòng)洗衣機(jī)-電氣自動(dòng)化職業(yè)學(xué)院畢業(yè)論文
- 基于單片機(jī)控制的溫度采集與測(cè)量設(shè)計(jì)
- 基于單片機(jī)的溫度測(cè)量系統(tǒng)-畢業(yè)論文
- 電氣自動(dòng)化畢業(yè)論文--基于單片機(jī)的輸液滴速控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文--基于單片機(jī)的溫度控制
- 工業(yè)電氣自動(dòng)化專業(yè)畢業(yè)論文(設(shè)計(jì))pc與單片機(jī)通信
- 電氣工程與自動(dòng)化畢業(yè)論文基于單片機(jī)的自動(dòng)往返小汽車的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論