904953410基于VB6.0的溫度數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)論文(單片機(jī)控制)_第1頁(yè)
904953410基于VB6.0的溫度數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)論文(單片機(jī)控制)_第2頁(yè)
904953410基于VB6.0的溫度數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)論文(單片機(jī)控制)_第3頁(yè)
904953410基于VB6.0的溫度數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)論文(單片機(jī)控制)_第4頁(yè)
904953410基于VB6.0的溫度數(shù)據(jù)采集系統(tǒng)畢業(yè)設(shè)計(jì)論文(單片機(jī)控制)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、設(shè)計(jì)設(shè)計(jì) 題目:題目: 基于基于 vb6.0vb6.0 的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì) 系系 部:部: 電子與通信工程系電子與通信工程系 專專 業(yè):業(yè): 電氣工程及其自動(dòng)化電氣工程及其自動(dòng)化 目目 錄錄第一部分 設(shè)計(jì)說明書一、設(shè)計(jì)說明書第二部分 外文資料翻譯一、外文資料原文二、外文資料翻譯第三部分 過程管理資料一、 畢業(yè)設(shè)計(jì)課題任務(wù)書二、 本科畢業(yè)設(shè)計(jì)開題報(bào)告三、 本科畢業(yè)設(shè)計(jì)中期報(bào)告四、 畢業(yè)設(shè)計(jì)指導(dǎo)教師評(píng)閱表五、 畢業(yè)設(shè)計(jì)評(píng)閱教師評(píng)閱表六、 畢業(yè)設(shè)計(jì)答辯評(píng)審表基于 vb6.0 的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)系 (部):電子與通信工程系 專 業(yè):電氣工程及其自動(dòng)化 i摘 要溫度是一種被廣泛應(yīng)用于生

2、產(chǎn)和生活的重要的物理量。針對(duì)與不同的應(yīng)用領(lǐng)域,生產(chǎn)和研制適當(dāng)?shù)臏y(cè)溫系統(tǒng)是十分必要的。本文設(shè)計(jì)的是近距離溫度檢測(cè)系統(tǒng)。該系統(tǒng)涵蓋了傳感器技術(shù),信息處理技術(shù),計(jì)算機(jī)通信技術(shù)等幾個(gè)方面的技術(shù)。此技術(shù)主要包括:傳感器,模數(shù)轉(zhuǎn)換,單片機(jī)與 pc 機(jī)接口,串行通訊,vb 等部分。整個(gè)測(cè)溫系統(tǒng)以數(shù)據(jù)采集原理為主要理論依據(jù),將傳感器 ds18b20 所測(cè)的溫度轉(zhuǎn)換成為電信號(hào),再由單片機(jī)對(duì)其進(jìn)行量化編碼,轉(zhuǎn)化為十六進(jìn)制數(shù)據(jù),為單片機(jī)與微機(jī)進(jìn)行通訊打下了基礎(chǔ)。根據(jù)串行通訊原理,設(shè)計(jì)了單片機(jī)與 pc 機(jī)的接口電路,建立了單片機(jī)與 pc 機(jī)之間的串行通訊協(xié)議,并利用 vb6.0 對(duì)測(cè)溫系統(tǒng)實(shí)現(xiàn)了對(duì)象化操作將采集到的溫

3、度信號(hào)編碼進(jìn)行接受和描述,將其直接顯示在可視的界面當(dāng)中。該測(cè)溫系統(tǒng)具有實(shí)時(shí)存儲(chǔ)功能,便于對(duì)信號(hào)進(jìn)行分析和處理。在本設(shè)計(jì)中,我們?yōu)榱四軐?shí)現(xiàn)人機(jī)的對(duì)話及及時(shí)知道系統(tǒng)的運(yùn)行狀況,我們給本系統(tǒng)增加了報(bào)警功能。在對(duì)實(shí)測(cè)信號(hào)進(jìn)行分析的過程中發(fā)現(xiàn),實(shí)測(cè)信號(hào)編碼與理論上的信號(hào)編碼基本呈線形關(guān)系,這說明了系統(tǒng)具有很高的精確度和穩(wěn)定性。完成了對(duì)每個(gè)通道的實(shí)測(cè)信號(hào)編碼值與溫度的實(shí)時(shí)曲線的繪制,如果再實(shí)現(xiàn)對(duì)各個(gè)通道建立獨(dú)立的數(shù)據(jù)庫(kù),即可達(dá)到對(duì)每個(gè)通道的溫度標(biāo)定的目的。關(guān)鍵詞:溫度,編碼,單片機(jī),實(shí)時(shí)曲線,ds18b20,vb6.0 iiabstract temperature is a very important

4、physical quantity which used in production and life .for the different applications, it is necessary to produce the proper system of measuring temperature. in this article i will discuss the system of measuring close quarters temperature.this system involves sensor technic, information processing te

5、chnic, communication technic and so on .the design mainly includes the sensor part , analog-digital conversion ,the interface between the microcontroller and pc ,serial communication and so on .the main theoretical base is theory of data collection . the temperature signals measured by 18b20 sensors

6、 transform to the voltage signals .the single chip transforms the voltage code to 16m code which is the basic of communication .i design the interface circuit between the single chip and pc .the temperature signals are received and described by vb and then displayed on the screen .all the signals ca

7、n be real-time memory in order to analyze them .form the result the metrical signals and the theoretical signals have the linearity relation .the result indicates that the has high precision and stability we can draw the curve of temperature value and the code and establish the database ,form which

8、we can get the real temperature of the different objects. keywords: temperature ,coding ,microcontroller ,current curve,18b20,vb6.0 iii目 錄摘摘 要要 .i iabstractabstract .iiii第第 1 1 章章 緒論緒論.1 11.1 at89c51 簡(jiǎn)介 .21.2 ds18b20 傳感器簡(jiǎn)介 .5第第 2 2 章章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) .9 92.1 功能與設(shè)計(jì)方案.92.1.1 功能要求.92.1.2 設(shè)計(jì)方案.92.2 設(shè)計(jì)中所需要的器件.1

9、12.3 系統(tǒng)硬件設(shè)計(jì) .122.4 系統(tǒng)軟件設(shè)計(jì).132.4.1 下位機(jī)軟件設(shè)計(jì).132.4.2 上位機(jī)軟件設(shè)計(jì).16第 3 章 程序設(shè)計(jì).193.1 下位機(jī)程序 .193.2 上位機(jī)程序 .22第第 4 4 章章 結(jié)論結(jié)論 .2525參考文獻(xiàn)參考文獻(xiàn) .2626iv致致 謝謝 .2727附錄附錄 1 1 下位機(jī)程序下位機(jī)程序 .2828附錄附錄 2 2 上位機(jī)程序上位機(jī)程序.3434 1第第 1 1 章章 緒論緒論隨著科學(xué)技術(shù)的迅猛發(fā)展,電子學(xué)的發(fā)展也越來越快,帶動(dòng)了大批相關(guān)產(chǎn)業(yè)的發(fā)展,其應(yīng)用的范圍也越來越廣泛。如今,計(jì)算機(jī)的使用領(lǐng)域已經(jīng)擴(kuò)展到了各行各業(yè),甚至介入個(gè)人家庭。在這種形式下,對(duì)

10、于計(jì)算機(jī)的認(rèn)識(shí)是勢(shì)在必得的,而且使用微機(jī)已經(jīng)成為了當(dāng)代人的一種基本技能。所以對(duì)于我們來說,僅僅會(huì)使用微機(jī)是遠(yuǎn)遠(yuǎn)不夠的,要想適應(yīng)當(dāng)今社會(huì)的需要,我們就必須能夠設(shè)計(jì)出基于 pc 技術(shù)的新的電子儀器,以滿足社會(huì)更高層次的需求。近年來,單片機(jī)發(fā)展十分迅速,一個(gè)以微機(jī)應(yīng)用為主的新技術(shù)革命浪潮正在蓬勃興起,單片機(jī)已經(jīng)滲透到工業(yè),農(nóng)業(yè),國(guó)防,科研及日常生活等各個(gè)領(lǐng)域。傳統(tǒng)的溫度采集的方法不僅費(fèi)時(shí),而且精度差,滿足不了各行業(yè)對(duì)于溫度數(shù)據(jù)高精度,設(shè)備高可靠性的需求。單片機(jī)的出現(xiàn)使得溫度數(shù)據(jù)的采集和處理得到了很好的解決。選擇適當(dāng)?shù)膯纹瑱C(jī)和溫度傳感器及前端處理電路,可以獲得較高精度的測(cè)量。不但方便快捷,成本低廉,省

11、事省力,而且大幅度提高了測(cè)量精度1。本文介紹了一種利用單片機(jī)實(shí)現(xiàn)溫度數(shù)據(jù)的采集和處理的一種設(shè)計(jì)方法。其中涉及了傳感器,數(shù)據(jù)采集,單片機(jī)數(shù)據(jù)處理,單片機(jī)和 pc 機(jī)通訊 vb 等一系列相關(guān)理論。本文就如何將溫度這一連續(xù)的物理量轉(zhuǎn)換成模擬的電壓信號(hào),再將電壓信號(hào)通過單片機(jī)編碼轉(zhuǎn)換成數(shù)字信號(hào)這一過程,進(jìn)行了闡述和分析。并且增加了報(bào)警電路。同時(shí)在通過軟件進(jìn)行溫度補(bǔ)償和數(shù)據(jù)處理方面,也作為了具體介紹。在硬件電路設(shè)計(jì)方面,從電路的簡(jiǎn)單,可靠數(shù)字化,低成本等角度出發(fā),設(shè)計(jì)者采用了硬件濾波軟件補(bǔ)償兩方面入手,使得設(shè)計(jì)達(dá)到所需精度要求,具有較高的性能價(jià)格比。21.1 at89c51 簡(jiǎn)介at89c51 是一種帶

12、 4k 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomflash programmable and erasable read only memory)的低電壓,高性能 cmos8 位微處理器,俗稱單片機(jī)。at89c2051 是一種帶 2k 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除 100 次。該器件采用 atmel 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 mcs-51 指令集和輸出管腳相兼容。由于將多功能 8位 cpu 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel 的 at89c51 是一種高效微控制器,at89c2051 是它的一種精簡(jiǎn)版本。at89c5

13、1 單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 圖 1.1 at89c51 管腳圖主要特性:與 mcs-51 兼容 4k 字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000 寫/擦循環(huán)數(shù)據(jù)保留時(shí)間:10 年全靜態(tài)工作:0hz-24hz三級(jí)程序存儲(chǔ)器鎖定128*8 位內(nèi)部 ram32 可編程 i/o 線兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器35 個(gè)中斷源 可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路 管腳說明: vcc:供電電壓。 gnd:接地。 p0 口:p0 口為一個(gè) 8 位漏級(jí)開路雙向 i/o 口,每腳可吸收 8ttl 門電流。當(dāng) p1 口的管腳第一次寫 1 時(shí),被定義為高阻輸入。p0

14、 能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在 fiash 編程時(shí),p0 口作為原碼輸入口,當(dāng) fiash 進(jìn)行校驗(yàn)時(shí),p0 輸出原碼,此時(shí) p0 外部必須被拉高。 p1 口:p1 口是一個(gè)內(nèi)部提供上拉電阻的 8 位雙向 i/o 口,p1 口緩沖器能接收輸出4ttl 門電流。p1 口管腳寫入 1 后,被內(nèi)部上拉為高,可用作輸入,p1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在 flash 編程和校驗(yàn)時(shí),p1 口作為第八位地址接收。 p2 口:p2 口為一個(gè)內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 口緩沖器可接收,輸出 4個(gè) ttl 門電流,當(dāng) p2

15、口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2 口當(dāng)用于外部程序存儲(chǔ)器或 16 位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),p2 口輸出其特殊功能寄存器的內(nèi)容。p2 口在 flash 編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3 口:p3 口管腳是 8 個(gè)帶內(nèi)部上拉電阻的雙向 i/o 口,可接收輸出 4 個(gè) ttl 門電流。當(dāng) p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為

16、低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。p3 口也可作為 at89c51 的一些特殊功能口,如下表所示:口管腳 備選功能p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷 0)p3.3 /int1(外部中斷 1)p3.4 t0(記時(shí)器 0 外部輸入)p3.5 t1(記時(shí)器 1 外部輸入)4p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器寫選通)p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)p3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持 rst 腳兩個(gè)機(jī)器周期的高電平時(shí)間。ale/prog:當(dāng)訪問外部存儲(chǔ)器時(shí),地

17、址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在 flash 編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的 1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè) ale 脈沖。如想禁止 ale 的輸出可在 sfr8eh 地址上置 0。此時(shí), ale 只有在執(zhí)行 movx,movc 指令是 ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài) ale 禁止,置位無(wú)效。 /psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen 有效。但在訪

18、問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen 信號(hào)將不出現(xiàn)。 /ea/vpp:當(dāng)/ea 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式 1 時(shí),/ea 將內(nèi)部鎖定為 reset;當(dāng)/ea 端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在 flash 編程期間,此引腳也用于施加 12v 編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。振蕩器特性: xtal1 和 xtal2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)

19、動(dòng)器件,xtal2 應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除: 整個(gè) perom 陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持 ale管腳處于低電平 10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,at89c51 設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,cpu 停止工作。但 ram,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存 ram 的內(nèi)容并且凍結(jié)振蕩器,禁止

20、所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止2。51.2 ds18b20 傳感器簡(jiǎn)介 ds18b20 溫度傳感器是美國(guó) dallas 半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn) 912 位的數(shù)字值讀數(shù)方式。ds18b20 的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè) ds18b20 可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無(wú)須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為 3.05.5;零待機(jī)功耗;溫度以 9 或 12 位數(shù)字;用戶可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)

21、警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; ds18b20 采用腳 pr35 封裝或 8 腳 soic 封裝,其內(nèi)部結(jié)構(gòu)框圖如圖 1.2 所示。 圖 1.2 ds18b20 內(nèi)部結(jié)構(gòu)圖i/oc64 位rom和單線接口高速緩存存儲(chǔ)器與控制邏輯溫度傳感器高溫觸發(fā)器 th低溫觸發(fā)器 tl配置寄存器8 位 crc 發(fā)生器vdd664 位 rom 的結(jié)構(gòu)開始 8 位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有 48 位,最后 8 位是前面 56 位的 crc 檢驗(yàn)碼,這也是多個(gè) ds18b20 可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器和,可通過軟件寫入戶

22、報(bào)警上下限。ds18b20 溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存和一個(gè)非易失性的可電擦除的 eeram。高速暫存 ram 的結(jié)構(gòu)為 8 字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖 1.3 所示。頭 2 個(gè)字節(jié)包含測(cè)得的溫度信息,第 3 和第 4 字節(jié) th 和 tl 的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第 5 個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20 工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖 3 所示。低 5 位一直為,是工作模式位,用于設(shè)置 ds18b20 在工作模式還是在測(cè)試模式,ds18b20 出廠時(shí)該位被設(shè)置為 0,用戶要去改動(dòng),r1

23、 和 r0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。tm r11r01111.圖 1.3 ds18b20 字節(jié)定義由表 1.1 可見,ds18b20 溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。 表 1.1 ds18b20 溫度轉(zhuǎn)換時(shí)間表溫度 lsb溫度 msbth 用戶字節(jié) 1tl 用戶字節(jié)2配置寄存器保留保留保留crcr0r1000101119101112分辨率/位 溫度最大轉(zhuǎn)向時(shí)間/ms93.75187.5375750.7高速暫存的第 6、7、8 字節(jié)保留未用,表現(xiàn)為全邏輯 1。第 9 字節(jié)讀出前面所有字節(jié)的 crc 碼

24、,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng) ds18b20 接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以 16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第 1、2 字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以 0.0625lsb 形式表示。當(dāng)符號(hào)位 s=0 時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位 s=1 時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表 2 是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表 1.2一部分溫度對(duì)應(yīng)值表溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101

25、000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90h8ds18b20 完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與 ram

26、 中的 th、tl 字節(jié)內(nèi)容作比較。若 tth 或 ttl,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只 ds18b20 同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在 64 位 rom 的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(crc) 。主機(jī) rom 前 56 位來計(jì)算 crc 值,并和存入 ds18b20 的 crc 值作比較,以判斷主機(jī)收到的 rom 數(shù)據(jù)是否正確。ds18b20 的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器 1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器 2

27、的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),ds18b20 就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器 1、溫度寄存器中,計(jì)數(shù)器 1 和溫度寄存器被預(yù)置在55所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器 1 對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器 1的預(yù)置值減到 0 時(shí),溫度寄存器的值將加 1,減法計(jì)數(shù)器 1 的預(yù)置將重新被裝入,減法計(jì)數(shù)器重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到 0 時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就

28、是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測(cè)溫度值。另外,由于 ds18b20 單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì) ds18b20 的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā) rom 功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)3。9第第 2 章章 系統(tǒng)設(shè)計(jì)2.1 功能與設(shè)計(jì)方案2.1.1 功能要求設(shè)計(jì)一個(gè)基于 visual basic 6.0 的數(shù)據(jù)采集系統(tǒng)。用單片機(jī)系統(tǒng)接收溫度傳感器的溫度數(shù)據(jù),并在數(shù)碼管上顯示當(dāng)前溫度值,可測(cè)溫范圍55-125 攝氏度,精度 0.1 攝氏度

29、。 使用 vb6.0 編寫上位機(jī)程序,接收溫度數(shù)據(jù)并儲(chǔ)存在數(shù)據(jù)庫(kù)中;接收數(shù)據(jù)時(shí),要求能同步畫出溫度變化的曲線;要求系統(tǒng)可查詢歷史溫度信息?;?vb6.0 的數(shù)據(jù)采集系統(tǒng)在設(shè)計(jì)時(shí)主要應(yīng)該滿足如下功能指標(biāo):1測(cè)量溫度,并在數(shù)碼管上顯示當(dāng)前溫度值;2可測(cè)溫范圍55-125 攝氏度,精度 0.1 攝氏度;3每秒給上位機(jī)傳送一次溫度數(shù)據(jù);4上位機(jī)接收溫度數(shù)據(jù),并將數(shù)據(jù)、接收數(shù)據(jù)時(shí)間以及測(cè)溫批次等信息存儲(chǔ)到數(shù)據(jù)庫(kù)中;5測(cè)溫批次可以自動(dòng)生成也可手動(dòng)輸入;6接收溫度數(shù)據(jù)時(shí),同步畫出溫度變化的曲線;7可按批次以及測(cè)溫時(shí)間查詢溫度數(shù)據(jù);8將上位機(jī)軟件打包,生成安裝文件。2.1.2 設(shè)計(jì)方案 方案論

30、證方案一:由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨10被測(cè)溫度變化的電壓或電流采集過來,進(jìn)行 a/d 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來,這種設(shè)計(jì)需要用到 a/d 轉(zhuǎn)換電路,感溫電路比較麻煩。方案二 :進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器 ds18b20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。 總體設(shè)計(jì)框圖溫度計(jì)

31、電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖 1 所示,控制器采用單片機(jī) at89c51,溫度傳感器采用 ds18b20,用 8 位 led 數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示并通過串口與上位機(jī) pc 通訊,把數(shù)據(jù)傳送給上位機(jī),并用 vb 編寫的圖形界面把溫度的變化曲線顯示出來,并通過數(shù)據(jù)庫(kù)存儲(chǔ),可查詢歷史溫度記錄。 圖 2.1 總體設(shè)計(jì)框圖主控制器單片機(jī) at89c51 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。顯示電路顯示電路采用 8 位共陽(yáng)極 led 數(shù)碼管,從 p0 口輸出段碼,p2 口為 led 的位選信號(hào)。單片機(jī)l

32、ed 顯 示溫 度 傳 感 器復(fù)位電路時(shí)鐘振蕩蜂鳴器p c11溫度傳感器采用 ds18b20 溫度傳感器,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn) 912 位的數(shù)字值讀數(shù)方式。pc 實(shí)時(shí)顯示界面顯示實(shí)時(shí)溫度數(shù)據(jù)變化曲線的界面,采用 vb6.0 編輯,在程序使用 vb6.0 的通用串口控件 mscomm 來對(duì)發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。上下位機(jī)定義好通信協(xié)議和波特率。2.2 設(shè)計(jì)中所需要的器件1、 單片機(jī):at89c51 一塊;2、 溫度傳感器:ds18b20 一塊;3、8位共陽(yáng)極數(shù)碼管 一塊;4、 30pf電容一個(gè),開關(guān)一個(gè),蜂鳴器一個(gè);5、 10k電阻 2個(gè)、5k的電阻排

33、;6、 串行通信線。122.3 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,報(bào)警電路,單片機(jī)主板電路等,如圖 2.2 所示。13 圖 2.2 設(shè)計(jì)原理圖溫度傳感器的數(shù)據(jù)線接單片機(jī)的 p3.3 口,單片機(jī)通過反復(fù)讀寫 p3.3 口的狀態(tài)采集數(shù)據(jù),不過硬件簡(jiǎn)單,軟件肯定復(fù)雜,讀寫時(shí)都有嚴(yán)格的時(shí)序要求。顯示電路采用 8 個(gè)共陽(yáng)極的 led 顯示,顯示代碼由 p0 口發(fā)送,當(dāng)使用 p0 口時(shí)需要接上拉電阻,p2 口的邏輯狀態(tài)作位選線信號(hào),達(dá)到分時(shí)選通的目的,當(dāng)相應(yīng)口為高電平時(shí) led 才能顯示相應(yīng)代碼。實(shí)際使用中只用到七個(gè) led,最后 2 個(gè)用來顯示攝氏度符號(hào),第二個(gè)用來顯示

34、溫度的正負(fù),當(dāng)溫度為負(fù)時(shí),顯示“”號(hào),為正時(shí)不顯示,同樣由軟件可以實(shí)現(xiàn),當(dāng)百位為零時(shí),百位不顯示,百位十位為零時(shí),百位十位都不顯示,這樣設(shè)計(jì)方便觀察,更加直觀。此外還接有蜂鳴器,當(dāng) ds18b20 不能正常工作時(shí)可以達(dá)到報(bào)警的目的。最后還要實(shí)現(xiàn)單片機(jī)與上位機(jī)通信的功能,所以要連接好串口,以便能向上位機(jī)發(fā)送或接受數(shù)據(jù)。按健復(fù)位電路是最簡(jiǎn)單的手動(dòng)復(fù)位,使用比較方便,在程序跑飛時(shí),可以手動(dòng)復(fù)位,這樣就不用在重起單片機(jī)電源,就可以實(shí)現(xiàn)復(fù)位。2.4 系統(tǒng)軟件設(shè)計(jì)2.4.1 下位機(jī)軟件設(shè)計(jì)系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。 主程

35、序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理 ds18b20 的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每 1s 進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖 2.3 所示。14 圖 2.3 主程序流程圖 圖 2.4 讀溫度流程圖 讀出溫度子程序讀出溫度子程序的主要功能是讀出 ram 中的 9 字節(jié),在讀出時(shí)需進(jìn)行 crc 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 2.4 所示。 計(jì)算溫度子程序初始化調(diào)用顯示子程序1s 到?初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令的法國(guó)風(fēng)格 法國(guó) nynyy發(fā) ds18b20 復(fù)位命令發(fā)跳

36、過 rom 命令發(fā)讀取溫度命令讀取操作,crc 校驗(yàn)9 字節(jié)完?crc 校驗(yàn)正?確?移入溫度暫存器結(jié)束nny15發(fā) ds18b20 復(fù)位命令發(fā)跳過 rom 命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束計(jì)算溫度子程序?qū)?ram 中讀取值進(jìn)行轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖 2.5 所示。圖 2.5 計(jì)算溫度流程圖 圖 2.6 溫度轉(zhuǎn)換流程圖 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用 12 位分辨率時(shí)轉(zhuǎn)換時(shí)間約為 750ms,在本程序設(shè)計(jì)中采用 1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成,如圖 2.6 所示。.1.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷

37、新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為 0 時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖 2.7 所示。 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度值 計(jì)算整數(shù)位溫度值 結(jié)束置“+”標(biāo)志ny溫度數(shù)據(jù)移入顯示寄存器十位數(shù) 0?百位數(shù) 0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào)) 結(jié)束nnyy16圖 2.7 顯示數(shù)據(jù)刷新流程圖 2.4.2 上位機(jī)軟件設(shè)計(jì)上位機(jī)是應(yīng)用 vb 進(jìn)行編寫的,它把下位機(jī)傳送上來是兩字節(jié)的十六進(jìn)制數(shù)據(jù)進(jìn)行解碼顯示出來。當(dāng)點(diǎn)擊采集溫度時(shí),上位機(jī)向下位機(jī)發(fā)送采集溫度命令字符“1” ,當(dāng)下位機(jī)接受到命令時(shí),向上位機(jī)發(fā)送數(shù)據(jù)。使用 vb

38、6.0 編寫上位機(jī)程序,接收溫度數(shù)據(jù)并儲(chǔ)存在數(shù)據(jù)庫(kù)中;接收數(shù)據(jù)時(shí),能同步畫出溫度變化的曲線,系統(tǒng)可查詢歷史溫度信息。具體在上下位機(jī)程序里面體現(xiàn)出來。下圖 2.8 為上位機(jī)工作流程圖。17圖 2.8 上位機(jī)工作流程圖數(shù)據(jù)采集實(shí)時(shí)顯示程序設(shè)計(jì)思路:本程序使用 vb6.0 的通用串口控件 mscomm 來對(duì)發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。vb6.0 的 mscomm 通信控件提供了一系列標(biāo)準(zhǔn)通信命令的接口,它允許建立串口連接,可以連接到其他通信設(shè)備(如 modem) 還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過程中可能發(fā)生的各種錯(cuò)誤和事件,從而可以用它創(chuàng)建全雙工 、事件驅(qū)動(dòng)的、高效實(shí)用的通信程序

39、。一般說來,計(jì)算機(jī)都有一個(gè)或多個(gè)串行端口,它們依次為 com1、com2、,這些串口還提供了外部設(shè)備與 pc 進(jìn)行數(shù)據(jù)傳輸和通信的通道。這些串口在 cpu 和外設(shè)之間充當(dāng)解釋器的角色?;緦傩耘c描述如下:屬性 描述commport 設(shè)置或返回通信端口號(hào)settings 以字符串的形式設(shè)置或返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位portopen 設(shè)置或返回通信端口的狀態(tài)。也可以打開和關(guān)閉端口input 返回和刪除接收緩沖區(qū)中的字符18output 將字符串寫入發(fā)送緩沖區(qū) commevent 屬性為通信事件或錯(cuò)誤返回下列值之一,在該控件的對(duì)象庫(kù)中也可以找到這些常量。你只首先要確定一個(gè) mscomm

40、控件在 system 目錄下并且該控件已經(jīng)被 windows 注冊(cè),程序才能正常運(yùn)行。有數(shù)據(jù)向串口發(fā)過來時(shí),程序可以將數(shù)據(jù)接收到,接收的數(shù)據(jù)是字符型的,那么將數(shù)據(jù)轉(zhuǎn)化為數(shù)字型的,再將這個(gè)數(shù)據(jù)的大小作為畫圖的某一個(gè)點(diǎn)的縱坐標(biāo),橫坐標(biāo)為數(shù)據(jù)的序號(hào).將這些點(diǎn)用線連起來就是一個(gè)曲線圖了,這個(gè)就是圖形顯示基本原理。查看原來的數(shù)據(jù)的原理也是這樣的,不同的地方就是,數(shù)據(jù)是從文件中來,同樣的也是將多個(gè)數(shù)據(jù)分成一個(gè)一個(gè)的,然后這一個(gè)數(shù)據(jù)的大小就是畫圖的某一個(gè)點(diǎn)的縱坐標(biāo),橫坐標(biāo)同樣為數(shù)據(jù)的序號(hào),再將這些點(diǎn)用線連起來就是曲線圖。圖形能移動(dòng)的原理,是我們首先改變的只是數(shù)據(jù),圖形并沒有變,但圖形的形式是由這些數(shù)據(jù)來確定

41、的,當(dāng)數(shù)據(jù)發(fā)生變化后,我們通過刷新顯示區(qū)來變化的。vb 編寫的實(shí)時(shí)顯示界面如圖 2.9 所示,點(diǎn)擊查詢可查詢歷史溫度信息。19圖 2.9 實(shí)時(shí)溫度曲線顯示及查詢圖串口的波特率,串口號(hào)都采用下拉選擇的方式,在使用中可跟據(jù)情況選擇讀串口數(shù)據(jù)的原理是,只要當(dāng)有數(shù)據(jù)向串口發(fā)數(shù)據(jù)來時(shí),計(jì)算機(jī)就會(huì)自動(dòng)將其數(shù)據(jù)寫到一個(gè)特定的緩沖區(qū),我們只要寫程序去讀那個(gè)特定的緩沖區(qū)就可以了。此外為了保存和查詢歷史溫度數(shù)據(jù)還要在 vb 中設(shè)計(jì)建立連接到 access 數(shù)據(jù)庫(kù)的控件,data 控件是 visual basic 6.0 中的一個(gè)內(nèi)置數(shù)據(jù)控件,可以通過設(shè)置 data 控件的 connect、databasename

42、、recordsource 屬性實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的連接和訪問。建立的數(shù)據(jù)庫(kù)庫(kù)文件和 vb 中創(chuàng)建的工程文件必須放在放在同一目錄下5。第第 3 章章 程序設(shè)計(jì)程序設(shè)計(jì)3.1 下位機(jī)程序下位機(jī)程序的編寫主要使用 c 語(yǔ)言進(jìn)行編寫,可讀性要比匯編語(yǔ)言好很多。其中包括 ds18b20 的測(cè)溫模塊,顯示模塊和串口通信模塊,當(dāng)上位機(jī)向下位機(jī)發(fā)送讀溫度指令時(shí),單片機(jī)才會(huì)將所測(cè)得的數(shù)據(jù)傳給上位機(jī)。溫度采集系統(tǒng)的主程序設(shè)計(jì)如下:void main(void)20uchar receive; init(); while(1) read_temperature(); if (flash=0) disp_temperat

43、ure(); else p2 = 0 x00; if (ri) ri = 0;receive = sbuf;if (receive = s) send_char(); 主程序?yàn)橐粺o(wú)限循環(huán),單片機(jī)不斷從 ds18b20 的數(shù)據(jù)口采集數(shù)據(jù)信號(hào),用 flash標(biāo)志 ds18b20 是否正常,當(dāng) flash=1 時(shí)表示 ds18b20 不正常,就由軟件設(shè)置及時(shí)關(guān)閉led 顯示并由蜂鳴器報(bào)警。當(dāng)一幀數(shù)據(jù)采集完畢即 ri 接受中斷標(biāo)志位為 1,判斷下位機(jī)是否接受到來自上位機(jī)的字符“1”對(duì)應(yīng)的 asc 碼 49 時(shí)接收到時(shí)才開始將采集到的數(shù)據(jù)發(fā)送給上位機(jī)進(jìn)行處理,ri 標(biāo)志位必須由軟件清零。在串口通信模塊中

44、,baudrate 的在程序初始化時(shí)已經(jīng)定義為 9600b/s,晶振頻率也已設(shè)定好。波特率的產(chǎn)生用定時(shí)器產(chǎn)生,在設(shè)置時(shí)選擇定時(shí)器 1,并將它的設(shè)為工作方式2,8 位的常數(shù)自動(dòng)重新裝載的定時(shí)器,這種工作方式可以省去用戶軟件中重裝初值的程序,簡(jiǎn)化定時(shí)初值的計(jì)算方法,可以相當(dāng)精確的確定定時(shí)時(shí)間。計(jì)算出定時(shí)器的初21值之后,在設(shè)定串行口的工作方式,在這里令scon=0x50,即 scon 各位中,sm0=0,sm1=1,ren=1,其他控制字為 0,選擇為工作方式 1,8 位異步收發(fā)。令 tcon 中的 tr1=1,啟動(dòng)定時(shí)器,并禁止其他中斷。程序設(shè)計(jì)內(nèi)容如下所示:void init(void)ea

45、= 1; tmod = 0 x20;th1=(unsigned char)(256 - (xtal / (32l * 12l * baudrate);tl1=(unsigned char)(256 - (xtal / (32l * 12l * baudrate); scon = 0 x50;pcon &= 0 x00;tr1 = 1;ie = 0 x00;此外,在顯示模塊中,小數(shù)位的轉(zhuǎn)化才用了一定的技巧,由于實(shí)際顯示中只要求顯示一位小數(shù),而 ds18b20 每一位的轉(zhuǎn)化溫度為 0.0625lsb,當(dāng)每一位變化時(shí),第一位小數(shù)只有 16 種狀態(tài),我們只需一一算出放在一個(gè)數(shù)組中,通過查表指令即可獲取

46、第一位小數(shù)的十進(jìn)制值。由于每一位變化為 0.0625lsb,通過移位操作,即可獲得一個(gè)新的關(guān)于溫度整數(shù)部分的數(shù)據(jù),部分設(shè)計(jì)顯示轉(zhuǎn)化程序如下:display4=temp_data0&0 x0f;display0=ditabdisplay4; display4=(temp_data0&0 xf0)4)|(temp_data1&0 x0f)7) flag_zf=1; temp_data1=!( temp_data1) temp_data0=!( temp_data0);temp_data0= temp_data0+1;if(temp_data0=0) temp_data1= temp_data1+1

47、;else flag_zf=0 其中 temp_data1 為溫度數(shù)據(jù)的高八位,temp_data0為溫度數(shù)據(jù)的低八位,flag_zf=1 表示溫度為負(fù),進(jìn)行相應(yīng)轉(zhuǎn)化再執(zhí)行上面的顯示轉(zhuǎn)化程序,為正則直接執(zhí)行顯示轉(zhuǎn)化程序里的內(nèi)容。其他延時(shí)子程序以及 ds18b20 的讀寫子程序,可見附錄 1 的完整的 ds18b20 溫度采集系統(tǒng)程序設(shè)計(jì),在這里不做詳細(xì)介紹了。3.2 上位機(jī)程序 在上位機(jī) vb 程序的編寫中,最重要的是串口的初始化程序和接收觸發(fā)程序的設(shè)計(jì)。本程序使用 vb6.0 的通用串口控件 mscomm 來對(duì)發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。主要使用方法如下:串口設(shè)置:mscomm.setse

48、ttings(“波特率,校驗(yàn)方式,數(shù)據(jù)位數(shù),停止位數(shù)”)串口數(shù)據(jù):mscomm. inputmode(輸入模式設(shè)定)其具體程序設(shè)計(jì)如下:private sub form_load()23on error goto err: mscomm1.commport = 1 mscomm1.inputmode = cominputmodebinary mscomm1.rthreshold = 1 mscomm1.sthreshold = 1 mscomm1.settings = 9600,n,8,2 call tabinit call scalesys if mscomm1.portopen = fal

49、se then mscomm1.portopen = true mark = true cmdstop.enabled = false exit suberr: select case err.number case comportalreadyopen msgbox 沒有發(fā)現(xiàn)此串口或被占用, 49, 溫度采集系統(tǒng) case else msgbox 沒有發(fā)現(xiàn)此串口或被占用, 49, 溫度采集系統(tǒng) end select err.clear end sub在 vb 程序中設(shè)置為串口 1,輸入模式為二進(jìn)制,且接收和發(fā)送一個(gè)字符就會(huì)觸發(fā)mscomm1 的 oncomm 接收觸發(fā)事件。波特率設(shè)置為 96

50、00,可以根據(jù)具體設(shè)計(jì)情況更改波特率的大小,但要與下位機(jī)的一致。程序中還編寫了錯(cuò)誤處理程序,當(dāng)串口被占用時(shí)會(huì)轉(zhuǎn)去執(zhí)行 err 程序,出現(xiàn)系統(tǒng)報(bào)錯(cuò)。24接收觸發(fā)事件的處理,當(dāng)每發(fā)送一次指令時(shí),就會(huì)觸發(fā) oncomm 事件,并返回?cái)?shù)據(jù)串,通過計(jì)算獲取溫度測(cè)量值并顯示出來,具體設(shè)計(jì)程序如下:private sub mscomm1_oncomm() dim inbyte() as byte dim buffer as string dim datatemp2a, datatemp2b as string dim datatemp2 as string dim count as integer 讀取儀表

51、返回?cái)?shù)據(jù)串 select case mscomm1.commevent case comevreceive count = mscomm1.inbuffercount inbyte = mscomm1.input if count 2 then exit sub counter = counter + 1 for i = lbound(inbyte) to ubound(inbyte) buffer = buffer + hex(inbyte(i) next i end select程序中,接收到的數(shù)據(jù)暫存在 inbyte()中,buffer 為溫度數(shù)據(jù)緩存,接收到的數(shù)據(jù)按 16 進(jìn)制的格式放

52、入緩沖中,便于之后的數(shù)據(jù)處理。此外程序還添加了接收溫度數(shù)據(jù)的判定,接收到的溫度數(shù)據(jù)應(yīng)為兩字節(jié),且低位在前,當(dāng)接收到的數(shù)據(jù)不是兩字節(jié)時(shí),表示接收錯(cuò)誤,跳出此程序。為了在 vb 界面能夠顯示當(dāng)前的溫度值,需要將采集的兩字節(jié)溫度數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制測(cè)量數(shù)據(jù),轉(zhuǎn)化程序如下:if len(trim(mid(buffer, 1, 2) = 1 then datatemp(num) = val(&h & mid(buffer, 3, 3) & str(0) & mid(buffer, 1, 2) * 0.062525 elsedatatemp(num) = val(&h & mid(buffer, 3, 3)

53、& mid(buffer, 1, 2) * 0.0625 end if 保存數(shù)據(jù) data_save (datatemp(num)此外,本 vb 程序還做了一定的功能擴(kuò)展,能夠顯示歷史溫度的最大值和最小值以及平均值,還可通過下拉方式選擇合適的波特率、串口和采樣間隔時(shí)間。采集的溫度數(shù)據(jù)還通過 data 控件存入數(shù)據(jù)庫(kù)中。在設(shè)計(jì)過程中可以用虛擬串口和串口調(diào)試助手對(duì)所設(shè)計(jì)的 vb 程序進(jìn)行仿真,看是否達(dá)到設(shè)計(jì)要求。整個(gè) vb 界面及數(shù)據(jù)庫(kù)程序的編寫見附錄 2 所示。第第 4 4 章章 結(jié)論結(jié)論 隨著科技的發(fā)展,在各個(gè)領(lǐng)域都要用到數(shù)據(jù)采集系統(tǒng),其中就包括最普遍的溫度的數(shù)據(jù)采集。傳統(tǒng)的溫度采集方法費(fèi)時(shí)且

54、精度較差,而如今各個(gè)行業(yè)對(duì)溫度數(shù)據(jù)的要求越來越高,如科研實(shí)驗(yàn)室,因此新型的數(shù)字溫度計(jì)大量出現(xiàn),其中最普遍的是使用傳感器和單片機(jī)組成采集電路就可以 獲得較高的精度要求。在這種背景下,選擇基于 vb6.0 的數(shù)據(jù)采集系統(tǒng)這個(gè)課題具有很大的現(xiàn)實(shí)意義,用 vb 編寫上位機(jī)程序,在 pc 上通過圖形界面就能控制下位機(jī)即單片機(jī)采集溫度數(shù)據(jù)信號(hào),設(shè)計(jì)直觀大方,使用 ds18b20 高靈敏度的溫度傳感器采集溫度數(shù)據(jù),再用26at89c51 處理數(shù)據(jù),由 7 位共陽(yáng)極的 led 數(shù)碼管顯示當(dāng)前溫度,并且可以通過串口向上位機(jī)傳送數(shù)據(jù),顯示實(shí)時(shí)溫度曲線和把數(shù)據(jù)存入數(shù)據(jù)庫(kù)中,方便查詢歷史溫度記錄。讀數(shù)方便,測(cè)量范圍廣

55、,測(cè)溫準(zhǔn)確。硬件電路較簡(jiǎn)單,所以軟件設(shè)計(jì)較復(fù)雜,ds18b20 只有一個(gè)數(shù)據(jù)口,所以它的讀寫程序?qū)r(shí)序有很高的要求。在整個(gè)采集系統(tǒng)中,包括溫度采集程序,串口通信程序,和上位機(jī) vb 的程序,數(shù)據(jù)庫(kù)等等幾個(gè)部分,為了避免干擾,當(dāng)上位機(jī) vb 界面點(diǎn)擊“采集溫度”時(shí),向下位機(jī)發(fā)送特定字符,當(dāng)下位機(jī)識(shí)別正確字符,才將溫度數(shù)據(jù)傳送給上位機(jī)。此外在設(shè)計(jì)要求的基礎(chǔ)上,還做了一定程度的功能擴(kuò)展,使用蜂鳴器來判斷溫度傳感器是否工作正常,并且在圖形界面上可以顯示歷史平均溫度,最大溫度,最小溫度??梢赃x擇串口和波特率滿足不同要求,設(shè)置采集間隔時(shí)間,顯示不同時(shí)間范圍的溫度滿足不同場(chǎng)合的測(cè)溫要求。硬件簡(jiǎn)單,成本也低。

56、在設(shè)計(jì)過程中,對(duì)整個(gè)系統(tǒng)硬件和軟件的分析,采用模塊化程序設(shè)計(jì)的方法,流程圖分析設(shè)計(jì)思路,將系統(tǒng)分成幾個(gè)模塊,最終進(jìn)行整合,從而實(shí)現(xiàn)了基于 vb6.0 的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。在畢業(yè)設(shè)計(jì)的過程中,針對(duì)所要設(shè)計(jì)的課題,我更加系統(tǒng)的學(xué)習(xí)了 vb6.0 語(yǔ)言和c 語(yǔ)言,能夠較熟練的運(yùn)用偉福、proteus 和 vb6.0 等設(shè)計(jì)軟件,使我了解了測(cè)溫的原理和相關(guān)領(lǐng)域的知識(shí)。就個(gè)人而言,在這次畢業(yè)設(shè)計(jì)鍛煉了個(gè)人意志以及在克服困難的毅力,培養(yǎng)了我在一定的壓力下進(jìn)行研究和設(shè)計(jì)的心理素質(zhì),獨(dú)立處理問題的能路,提高了我查找運(yùn)用各種參考資料以及與其他人溝通交流解決問題的能力。此外,整個(gè)設(shè)計(jì)過程中由于指導(dǎo)老師的幫助下,

57、開拓了我的思維,提高了將所學(xué)知識(shí)學(xué)以致用的能力。參考文獻(xiàn)1 黃仁欣單片機(jī)原理及應(yīng)用技術(shù)m 北京:清華大學(xué)出版社,2005:56-622 馬忠梅,籍順心等單片機(jī)的 c 語(yǔ)言應(yīng)用程序設(shè)計(jì)m 北京:航空航天大學(xué)出版社,2001:98-1013 劉文濤visual basic + access 數(shù)據(jù)庫(kù)開發(fā)與實(shí)例m 北京:清華大學(xué)出版社,2006:27 32-34,51-534 李敏業(yè), 王穎visual basic + access 完全解析m 北京:人民郵電出版社,2006: 102-1105 占維, 劉偉vb6.0 數(shù)據(jù)庫(kù)實(shí)用編程 100 例m 北京:中國(guó)鐵道出版社,2004: 120-1256

58、張靖武, 周靈彬單片機(jī)系統(tǒng)的 proteus 設(shè)計(jì)與仿真m 北京:電子工業(yè)出版社,2007:96-105致 謝本學(xué)位論文是在我的指導(dǎo)老師謝明華的耐心指導(dǎo)下完成的。從論文開題時(shí)就給予了許多中肯意見,使我在之后的設(shè)計(jì)過程中能夠少走彎路,事半功倍。同時(shí)也感謝長(zhǎng)沙學(xué)院能夠提供如此的師資力量和實(shí)驗(yàn)室研究條件。謝老師始終都給予了細(xì)心的指導(dǎo)和很大支持,解答了我在設(shè)計(jì)過程中很多的疑惑,在論文的選題、研究理論、框架結(jié)構(gòu)、數(shù)據(jù)整理,直至撰寫、修改和定稿等各個(gè)環(huán)節(jié)均嚴(yán)格把關(guān),并投入了大量的時(shí)間和精力。謝老師治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,為我營(yíng)造了一種良好的設(shè)計(jì)氛圍。在跟隨謝老28師學(xué)習(xí)的過程中,豐富了自己的理論知識(shí)和學(xué)術(shù)思想

59、。很慶幸這些年來我遇到了許多恩師益友,無(wú)論在學(xué)習(xí)上、生活上還是工作上都給予了我無(wú)私的幫助和熱心的照顧,讓我在許多方面都有所成長(zhǎng)。感恩之情難以用語(yǔ)言量度,謹(jǐn)對(duì)多年來給予我關(guān)心與支持的良師益友和親人們致以最誠(chéng)摯的謝意! 學(xué)生簽名:日 期:長(zhǎng)沙學(xué)院畢業(yè)設(shè)計(jì)29附錄 1 下位機(jī)程序/* ds18b20 溫度采集系統(tǒng)程序 通過 dd18b20 讀取溫度,數(shù)碼管顯示溫度值,并由串口傳送到上位機(jī)再執(zhí)行相應(yīng)操作。*/#include #define xtal 11059200 / cup晶振頻率#define baudrate 9600 / 通信波特率#define uchar unsigned char#d

60、efine uint unsigned intsbit dq = p33; / 定義 ds18b20 端口 dq sbit beep = p37;unsigned char presence ;unsigned char code leddata1 =0 x40,0 x79,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78,0 x00,0 x10,0 xff;unsigned char code leddata = 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x90,0 xff;unsigned cha

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論