已閱讀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)介
設(shè)計(jì)設(shè)計(jì) 題題目:目: 基于基于 vb6.0 的數(shù)據(jù)采集系的數(shù)據(jù)采集系統(tǒng)設(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)用于生產(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ì)象化操作將采集到的溫度 信號(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 ii abstract temperature is a very important 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 technic, 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 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 can 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 we can get the real temperature of the different objects. keywords: temperature ,coding ,microcontroller ,current curve,18b20,vb6.0 iii 目 錄 摘摘 要要 i i abstractabstract iiii 第第 1 1 章章 緒論緒論1 1 1.1 at89c51 簡(jiǎn)介 2 1.2 ds18b20 傳感器簡(jiǎn)介 5 第第 2 2 章章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 9 9 2.1 功能與設(shè)計(jì)方案9 2.1.1 功能要求9 2.1.2 設(shè)計(jì)方案9 2.2 設(shè)計(jì)中所需要的器件.11 2.3 系統(tǒng)硬件設(shè)計(jì) 12 2.4 系統(tǒng)軟件設(shè)計(jì).13 2.4.1 下位機(jī)軟件設(shè)計(jì)13 2.4.2 上位機(jī)軟件設(shè)計(jì).16 第 3 章 程序設(shè)計(jì).19 3.1 下位機(jī)程序 19 3.2 上位機(jī)程序 22 第第 4 4 章章 結(jié)論結(jié)論 2525 參考文獻(xiàn)參考文獻(xiàn) 2626 iv 致致 謝謝 2727 附錄附錄 1 1 下位機(jī)程序下位機(jī)程序 2828 附錄附錄 2 2 上位機(jī)程序上位機(jī)程序3434 1 第第 1 1 章章 緒論緒論 隨著科學(xué)技術(shù)的迅猛發(fā)展,電子學(xué)的發(fā)展也越來(lái)越快,帶動(dòng)了大批相關(guān)產(chǎn)業(yè)的發(fā) 展,其應(yīng)用的范圍也越來(lái)越廣泛。如今,計(jì)算機(jī)的使用領(lǐng)域已經(jīng)擴(kuò)展到了各行各業(yè), 甚至介入個(gè)人家庭。在這種形式下,對(duì)于計(jì)算機(jī)的認(rèn)識(shí)是勢(shì)在必得的,而且使用微機(jī) 已經(jīng)成為了當(dāng)代人的一種基本技能。所以對(duì)于我們來(lái)說,僅僅會(huì)使用微機(jī)是遠(yuǎn)遠(yuǎn)不夠 的,要想適應(yīng)當(dāng)今社會(huì)的需要,我們就必須能夠設(shè)計(jì)出基于 pc 技術(shù)的新的電子儀器, 以滿足社會(huì)更高層次的需求。 近年來(lái),單片機(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è)量。不但方便快捷, 成本低廉,省事省力,而且大幅度提高了測(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à)格比。 2 1.1 at89c51 簡(jiǎn)介 at89c51 是一種帶 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)版本。at89c51 單片機(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)部 ram 32 可編程 i/o 線 兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器 3 5 個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 管腳說明: vcc:供電電壓。 gnd:接地。 p0 口:p0 口為一個(gè) 8 位漏級(jí)開路雙向 i/o 口,每腳可吸收 8ttl 門電流。當(dāng) p1 口 的管腳第一次寫 1 時(shí),被定義為高阻輸入。p0 能夠用于外部程序數(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 口被寫“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)部上拉為高電平,并用作輸入。作為輸入,由于 外部下拉為低電平,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 外部輸入) 4 p3.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í),地址鎖存允許的輸出電平用于鎖存地址的地位字節(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 有效。但在訪問外部數(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:來(lái)自反向振蕩器的輸出。 振蕩器特性: xtal1 和 xtal2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振 蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2 應(yīng)不接。有 余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何 要求,但必須保證脈沖的高低電平要求的寬度。 芯片擦除: 整個(gè) perom 陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持 ale 管腳處于低電平 10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空 存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 此外,at89c51 設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可 選的掉電模式。在閑置模式下,cpu 停止工作。但 ram,定時(shí)器,計(jì)數(shù)器,串口和中斷 系統(tǒng)仍在工作。在掉電模式下,保存 ram 的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片 功能,直到下一個(gè)硬件復(fù)位為止2。 5 1.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)警條件)的器件; 負(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/o c 64 位 rom 和 單 線 接 口 高 速 緩 存 存儲(chǔ)器與控制邏輯 溫度傳感器 高溫觸發(fā)器 th 低溫觸發(fā)器 tl 配置寄存器 8 位 crc 發(fā)生器 vdd 6 64 位 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ā)器和,可通過軟件寫入戶報(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 和 r0 決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。 tm r1 1r01111 . . 圖 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 溫度 msb th 用戶字 節(jié) 1 tl 用戶字節(jié) 2 配置寄存器 保留 保留 保留 crc r0r1 0 0 0 1 0 1 1 1 9 10 11 12 分辨率/位 溫度最大轉(zhuǎn)向時(shí)間/ms 93.75 187.5 375 750 . . 7 高速暫存的第 6、7、8 字節(jié)保留未用,表現(xiàn)為全邏輯 1。第 9 字節(jié)讀出前面 所有字節(jié)的 crc 碼,可用來(lái)檢驗(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 0000 07d0h +850000 0101 0101 0000 0550h +25.06250000 0001 1001 0000 0191h +10.1250000 0000 1010 0001 00a2h +0.50000 0000 0000 0010 0008h 00000 0000 0000 1000 0000h -0.51111 1111 1111 0000 fff8h -10.1251111 1111 0101 1110 ff5eh -25.06251111 1110 0110 1111 fe6fh -551111 1100 1001 0000 fc90h 8 ds18b20 完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與 ram 中的 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 位 來(lái)計(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 的脈沖輸入。器件中還有一個(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ù)振蕩器來(lái)決定,每次測(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ù)值就是所測(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 攝 氏度。 使用 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ì)方案 方案論證 方案一: 由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨 10 被測(cè)溫度變化的電壓或電流采集過來(lái),進(jìn)行 a/d 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的 處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(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ì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖 1 所示,控制器采用單片機(jī) at89c51,溫度 傳感器采用 ds18b20,用 8 位 led 數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示并通過串口與 上位機(jī) pc 通訊,把數(shù)據(jù)傳送給上位機(jī),并用 vb 編寫的圖形界面把溫度的變化曲線顯 示出來(lái),并通過數(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ī) led 顯 示溫 度 傳 感 器 復(fù)位電路 時(shí)鐘振蕩 蜂鳴器 p c 11 溫度傳感器 采用 ds18b20 溫度傳感器,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn) 單的編程實(shí)現(xiàn) 912 位的數(shù)字值讀數(shù)方式。 pc 實(shí)時(shí)顯示界面 顯示實(shí)時(shí)溫度數(shù)據(jù)變化曲線的界面,采用 vb6.0 編輯,在程序使用 vb6.0 的通用 串口控件 mscomm 來(lái)對(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的電阻排; 6、 串行通信線。 12 2.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è)用來(lái)顯示攝氏 度符號(hào),第二個(gè)用來(lái)顯示溫度的正負(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ù)刷新子程序等。 主程序 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理 ds18b20 的測(cè)量的當(dāng)前溫 度值,溫度測(cè)量每 1s 進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程 見圖 2.3 所示。 14 圖 23 主程序流程圖 圖 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ó) n y n y y 發(fā) ds18b20 復(fù)位命令 發(fā)跳過 rom 命令 發(fā)讀取溫度命令 讀取操作,crc 校驗(yàn) 9 字節(jié)完? crc 校驗(yàn)正? 確? 移入溫度暫存器 結(jié)束 n n y 15 發(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ù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為 0 時(shí) 將符號(hào)顯示位移入下一位。程序流程圖如圖 2.7 所示。 開始 溫度零下? 溫度值取補(bǔ)碼置“” 標(biāo)志 計(jì)算小數(shù)位溫度值 計(jì)算整數(shù)位溫度值 結(jié)束 置“+”標(biāo) 志 n y 溫度數(shù)據(jù)移入顯示寄存器 十位數(shù) 0? 百位數(shù) 0? 十位數(shù)顯示符號(hào)百 位數(shù)不顯示 百位數(shù)顯示數(shù)據(jù) (不顯示符號(hào)) 結(jié)束 n n y y 16 圖 2.7 顯示數(shù)據(jù)刷新流程圖 2.4.2 上位機(jī)軟件設(shè)計(jì) 上位機(jī)是應(yīng)用 vb 進(jìn)行編寫的,它把下位機(jī)傳送上來(lái)是兩字節(jié)的十六進(jìn)制數(shù)據(jù)進(jìn) 行解碼顯示出來(lái)。 當(dāng)點(diǎn)擊采集溫度時(shí),上位機(jī)向下位機(jī)發(fā)送采集溫度命令字符“1” ,當(dāng)下位機(jī)接受 到命令時(shí),向上位機(jī)發(fā)送數(shù)據(jù)。 使用 vb6.0 編寫上位機(jī)程序,接收溫度數(shù)據(jù)并儲(chǔ)存在數(shù)據(jù)庫(kù)中;接收數(shù)據(jù)時(shí),能 同步畫出溫度變化的曲線,系統(tǒng)可查詢歷史溫度信息。 具體在上下位機(jī)程序里面體現(xiàn)出來(lái)。下圖 2.8 為上位機(jī)工作流程圖。 17 圖 2.8 上位機(jī)工作流程圖 數(shù)據(jù)采集實(shí)時(shí)顯示程序設(shè)計(jì)思路: 本程序使用 vb6.0 的通用串口控件 mscomm 來(lái)對(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í)用的通信程序。一般說來(lái),計(jì)算機(jī)都有一個(gè)或多個(gè)串行端口,它們 依次為 com1、com2、,這些串口還提供了外部設(shè)備與 pc 進(jìn)行數(shù)據(jù)傳輸和通信的 通道。這些串口在 cpu 和外設(shè)之間充當(dāng)解釋器的角色。 基本屬性與描述如下: 屬性 描述 commport 設(shè)置或返回通信端口號(hào) settings 以字符串的形式設(shè)置或返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位 portopen 設(shè)置或返回通信端口的狀態(tài)。也可以打開和關(guān)閉端口 input 返回和刪除接收緩沖區(qū)中的字符 18 output 將字符串寫入發(fā)送緩沖區(qū) commevent 屬性為通信事件或錯(cuò)誤返回下列值之一,在該控件的對(duì)象庫(kù)中也可以 找到這些常量。 你只首先要確定一個(gè) mscomm 控件在 system 目錄下并且該控件已經(jīng)被 windows 注 冊(cè),程序才能正常運(yùn)行。 有數(shù)據(jù)向串口發(fā)過來(lái)時(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)用線連起來(lái)就是一個(gè)曲線圖了,這個(gè)就是圖形顯示基本原理。查看原來(lái)的數(shù) 據(jù)的原理也是這樣的,不同的地方就是,數(shù)據(jù)是從文件中來(lái),同樣的也是將多個(gè)數(shù)據(jù)分成一 個(gè)一個(gè)的,然后這一個(gè)數(shù)據(jù)的大小就是畫圖的某一個(gè)點(diǎn)的縱坐標(biāo),橫坐標(biāo)同樣為數(shù)據(jù)的序 號(hào),再將這些點(diǎn)用線連起來(lái)就是曲線圖。圖形能移動(dòng)的原理,是我們首先改變的只是數(shù)據(jù), 圖形并沒有變,但圖形的形式是由這些數(shù)據(jù)來(lái)確定的,當(dāng)數(shù)據(jù)發(fā)生變化后,我們通過刷新顯 示區(qū)來(lái)變化的。vb 編寫的實(shí)時(shí)顯示界面如圖 2.9 所示,點(diǎn)擊查詢可查詢歷史溫度信息。 19 圖 2.9 實(shí)時(shí)溫度曲線顯示及查詢圖 串口的波特率,串口號(hào)都采用下拉選擇的方式,在使用中可跟據(jù)情況選擇讀串口 數(shù)據(jù)的原理是,只要當(dāng)有數(shù)據(jù)向串口發(fā)數(shù)據(jù)來(lái)時(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、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) 20 uchar receive; init(); while(1) read_temperature(); if (flash=0) disp_temperature(); else p2 = 0x00; 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ī)是否接受到來(lái)自上位機(jī)的字符“1”對(duì)應(yīng)的 asc 碼 49 時(shí)接收到時(shí)才開始將采集到的 數(shù)據(jù)發(fā)送給上位機(jī)進(jìn)行處理,ri 標(biāo)志位必須由軟件清零。 在串口通信模塊中,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 = 1; tmod = 0x20; th1=(unsigned char)(256 - (xtal / (32l * 12l * baudrate); tl1=(unsigned char)(256 - (xtal / (32l * 12l * baudrate); scon = 0x50; pcon tr1 = 1; ie = 0x00; 此外,在顯示模塊中,小數(shù)位的轉(zhuǎn)化才用了一定的技巧,由于實(shí)際顯示中只要求 顯示一位小數(shù),而 ds18b20 每一位的轉(zhuǎn)化溫度為 0.0625lsb,當(dāng)每一位變化時(shí), 第一位小數(shù)只有 16 種狀態(tài),我們只需一一算出放在一個(gè)數(shù)組中,通過查表指令即可獲 取第一位小數(shù)的十進(jìn)制值。由于每一位變化為 0.0625lsb,通過移位操作,即可獲 得一個(gè)新的關(guān)于溫度整數(shù)部分的數(shù)據(jù),部分設(shè)計(jì)顯示轉(zhuǎn)化程序如下: display4=temp_data0 display0=ditabdisplay4; display4=(temp_data0 temp_data1=!( temp_data1) temp_data0=!( temp_data0); temp_data0= temp_data0+1; if(temp_data0=0) temp_data1= temp_data1+1; 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 來(lái)對(duì)發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處 理。主要使用方法如下: 串口設(shè)置:mscomm.setsettings(“波特率,校驗(yàn)方式,數(shù)據(jù)位數(shù),停止位數(shù)”) 串口數(shù)據(jù):mscomm. inputmode(輸入模式設(shè)定) 其具體程序設(shè)計(jì)如下: private sub form_load() 23 on 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 = false then mscomm1.portopen = true mark = true cmdstop.enabled = false exit sub err: 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è)置為 9600,可以根據(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è)量值并顯示出來(lái),具體設(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 讀取儀表返回?cái)?shù)據(jù)串 select case mscomm1.commevent case comevreceive count = mscomm1.inbuffercount inbyte = mscomm1.input if count 0; i-) dq = 0; / 給脈沖信號(hào) dat = 1; dq = 1; / 給脈沖信號(hào) if(dq) dat |= 0x80; delay(4); return (dat); /*/ void writeonechar(unsigned char dat)/ 寫一個(gè)字節(jié) unsigned char i = 0; for (i = 8; i 0; i-) 長(zhǎng)沙學(xué)院畢業(yè)設(shè)計(jì) 31 dq = 0; dq = dat delay(5); dq = 1; dat=1; /*/ void read_temperature(void)/ 讀取溫度 init_ds18b20(); if(presence=1) beep(); flash=1; / ds18b20 不正常,蜂鳴器報(bào)警 else flash=0; writeonechar(0xcc); / 跳過讀序號(hào)列號(hào)的操作 writeonechar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 init_ds18b20(); writeonechar(0xcc); / 跳過讀序號(hào)列號(hào)的操作 writeonechar(0xbe); / 讀取溫度寄存器 temp_data0 = readonechar(); / 溫度低 8 位 temp_data1 = readonechar(); / 溫度高 8 位 /*/ void disp_temperature()/ 顯示溫度 unsigned char n=0; if(temp_data17) /當(dāng)溫度高八位中的高五位全為 o flag_zf=1; / 所測(cè)溫度為負(fù)時(shí),要進(jìn)行轉(zhuǎn)換 temp_data1=!( temp_data1); temp_data0=!( temp_data0); temp_data0= temp_data0+1; 長(zhǎng)沙學(xué)院畢業(yè)設(shè)計(jì) 32 if(temp_data0=0) temp_data1= temp_data1+1; else flag_zf=0 /判斷測(cè)得的溫度數(shù)據(jù)是正還是負(fù),如果為正,不做任何 /理 display4=temp_data0 display0=ditabdisplay4; / 查表得小數(shù)位的值 display4=(temp_data0persist security info=false;data source=“ “ _ 下面的語(yǔ)句是連接 sqlserver 數(shù)據(jù)庫(kù)的. set db = new adodb.connection db.open iconcstr frmmain.show exit sub errp: msgbox (“數(shù)據(jù)庫(kù)訪問失敗,或者數(shù)據(jù)庫(kù)不存在,請(qǐng)選擇有效的數(shù)據(jù)庫(kù)文件!“) 長(zhǎng)沙學(xué)院畢業(yè)設(shè)計(jì) 49 end sub 2009 屆屆 本科生畢業(yè)設(shè)計(jì)資料本科生畢業(yè)設(shè)計(jì)資料 第二部分第二部分 外文外文資資料翻料翻譯譯 - 2 - microcontroller a microcontroller (also microcontroller unit, mcu or c) is a small computer on a single integrated circuit consisting of a relatively simple cpu combined with support functions such as a crystal oscillator, timers, watchdog, serial and analog i/o etc. program memory in the form of nor flash or otp rom is also often included on chip, as well as a typically small, rea
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:接受美學(xué)視野下的卞之琳莎學(xué)研究
- 課題申報(bào)參考:教育強(qiáng)國(guó)進(jìn)程中高校繼續(xù)教育高質(zhì)量發(fā)展的保障機(jī)制和推進(jìn)路徑研究
- 2025版房地產(chǎn)銷售代理授權(quán)委托合同3篇
- 二零二五年度物流倉(cāng)儲(chǔ)中心臨時(shí)搬運(yùn)工勞動(dòng)合同書4篇
- 2025版學(xué)校游泳池配套設(shè)施租賃與管理承包合同示范2篇
- 二零二五版藝術(shù)品拍賣師傭金分成合同3篇
- 個(gè)性化離婚合同與起訴狀套裝2024版版B版
- 二零二五年度健康管理與養(yǎng)老服務(wù)業(yè)合作協(xié)議3篇
- 二零二五年度圖書封面及插圖設(shè)計(jì)合同4篇
- 2025年度停薪留職勞動(dòng)合同范本創(chuàng)業(yè)支持版
- 山東鐵投集團(tuán)招聘筆試沖刺題2025
- 真需求-打開商業(yè)世界的萬(wàn)能鑰匙
- 2025年天津市政集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- GB/T 44953-2024雷電災(zāi)害調(diào)查技術(shù)規(guī)范
- 2024-2025學(xué)年度第一學(xué)期三年級(jí)語(yǔ)文寒假作業(yè)第三天
- 2024年列車員技能競(jìng)賽理論考試題庫(kù)500題(含答案)
- 心律失常介入治療
- 6S精益實(shí)戰(zhàn)手冊(cè)
- 展會(huì)場(chǎng)館保潔管理服務(wù)方案
- 監(jiān)理從業(yè)水平培訓(xùn)課件
- 廣東省惠州市實(shí)驗(yàn)中學(xué)2025屆物理高二第一學(xué)期期末綜合測(cè)試試題含解析
評(píng)論
0/150
提交評(píng)論