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