基于單片機的溫度采集軟件系統(tǒng)設(shè)計說明_第1頁
基于單片機的溫度采集軟件系統(tǒng)設(shè)計說明_第2頁
基于單片機的溫度采集軟件系統(tǒng)設(shè)計說明_第3頁
基于單片機的溫度采集軟件系統(tǒng)設(shè)計說明_第4頁
基于單片機的溫度采集軟件系統(tǒng)設(shè)計說明_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 PAGE31 / NUMPAGES32目 錄TOC o 1-3 h u HYPERLINK l _Toc442 1.1背景和意義 PAGEREF _Toc442 1 HYPERLINK l _Toc10247 1.2 國外現(xiàn)狀 PAGEREF _Toc10247 2 HYPERLINK l _Toc29764 1.3目的和容 PAGEREF _Toc29764 2 HYPERLINK l _Toc10386 2主要器件介紹 PAGEREF _Toc10386 4 HYPERLINK l _Toc32067 2.1 AT89C51 簡介 PAGEREF _Toc32067 4 HYPERLIN

2、K l _Toc13396 2.1.1 主要特性: PAGEREF _Toc13396 4 HYPERLINK l _Toc4583 2.1.2 AT89C51管腳說明 PAGEREF _Toc4583 5 HYPERLINK l _Toc19015 2.2.2 DS18B20引腳定義 PAGEREF _Toc19015 8 HYPERLINK l _Toc24973 3系統(tǒng)設(shè)計 PAGEREF _Toc24973 10 HYPERLINK l _Toc32637 3.1 功能要求 PAGEREF _Toc32637 10 HYPERLINK l _Toc19349 3.2 總體設(shè)計方案 PA

3、GEREF _Toc19349 10 HYPERLINK l _Toc16901 3.3 系統(tǒng)軟件設(shè)計 PAGEREF _Toc16901 11 HYPERLINK l _Toc10559 3.3.1 PC與單片機串口通信 PAGEREF _Toc10559 11 HYPERLINK l _Toc17375 3.3.2上位機軟件設(shè)計 PAGEREF _Toc17375 12 HYPERLINK l _Toc13125 4程序設(shè)計 PAGEREF _Toc13125 17 HYPERLINK l _Toc22194 4.1上位機程序 PAGEREF _Toc22194 17 HYPERLINK

4、l _Toc18746 5 結(jié) 論 PAGEREF _Toc18746 20 HYPERLINK l _Toc1575 附錄 上位機程序 PAGEREF _Toc1575 21 HYPERLINK l _Toc20735 參考文獻(xiàn) PAGEREF _Toc20735 33 HYPERLINK l _Toc28174 致 PAGEREF _Toc28174 351引 言1.1背景和意義 近年來,隨著大規(guī)模集成電路的發(fā)展,單片機繼續(xù)炒快速、高性能方向發(fā)展,從4位、8位單片機發(fā)展到16位、32位單片機。單片機主要用于控制,它的的應(yīng)用領(lǐng)域遍與各行各業(yè),大到航天飛機,小至日常生活中的冰箱、彩電,單片機都

5、可以大顯其能。單片機在家用電器業(yè)中應(yīng)用的十分廣泛:例如全自動洗衣機,智能玩具;除了上述傳統(tǒng)領(lǐng)域外,汽車、電子工業(yè)在國外也是單片機應(yīng)用十分廣泛的一個領(lǐng)域,它成本低、集成度高、功耗低、控制功能多、能靈活的組裝成各種智能控制裝置,由它構(gòu)成的智能儀表解決了長期以來測量儀器中的誤差的修正、線性處理等問題11。傳統(tǒng)靠人工控制和測量的溫度、濕度、液位等信號的測壓、力控系統(tǒng),外圍電路比較復(fù)雜,測量精度較低,分辨力不高,需進(jìn)行溫度校準(zhǔn)(非線性校準(zhǔn)、溫度補償、傳感器標(biāo)定等);且它們的體積較大、使用不夠方便,更重要的是參數(shù)的設(shè)定需要有其它儀表的參與,外界設(shè)備多,成本高,因為越來越適應(yīng)不了社會的要求。在對多類型、多通

6、道信號同時進(jìn)行監(jiān)測和控制中,傳統(tǒng)的測控系統(tǒng)能力有限9。傳統(tǒng)的溫度測量方法有很多種:酒精溫度計、水銀溫度計、熱電偶、熱電阻、熱敏電阻、輻射高溫計等1。酒精、煤油溫度計常用與室溫的測量,也用于實驗室中一些液體或?qū)嶒炇覝囟鹊臏y量。水銀常用于體溫計,由于熔點比較高,所以不適合低溫環(huán)境。熱電偶測溫的原理是:將兩條不同的金屬線的一端連接在一起并加熱,在兩線之間會有一個與溫度成正比的熱離子電壓產(chǎn)生。但在惡劣的環(huán)境中,熱電偶的質(zhì)量可能會受影響;由于水是溶解物質(zhì)所以也會引起問題。溫度過高熱電偶金屬可能會熔化,從而改變成分,并且影響讀數(shù)。熱電阻是一種電阻與溫度成正比的溫度傳感器。輻射高溫計是非接觸型溫度傳感器,它

7、可以探測到來自被測物得紅外輻射并將輻射轉(zhuǎn)換成與溫度成正比的電壓或電流。所以這種方式比較適合一些非接觸的場合。但是如何將計算機與各種設(shè)施、設(shè)備結(jié)合,簡化人工操作并實現(xiàn)自動控制,滿足社會的需求,成為一個很迫切的問題。隨著時代的發(fā)展,科技的進(jìn)步,各種復(fù)雜的場合對溫度的測量也是提出了不同的要求,在某些場合要求能夠?qū)崟r監(jiān)控溫度值,并且能夠?qū)⒋罅康臏囟葦?shù)據(jù)保存起來,并進(jìn)行集中處理,計算機的出現(xiàn)是的大量溫度數(shù)據(jù)的保存與處理成為了可能,但是傳統(tǒng)的酒精或煤油溫度計等卻無法將溫度數(shù)據(jù)傳遞給計算機,所以便出現(xiàn)了各自各樣的電子溫度傳感器,而現(xiàn)在大量采用的是溫敏電阻加AD轉(zhuǎn)換的方法,采集溫度雖然方便,但是精度不夠,而且

8、電路復(fù)雜,并不適用與多點測溫,本課題正是針對這種狀況而設(shè)計的,采用了精確的溫度傳感器,并且能夠通過單片機實時采集溫度傳送給電腦,用于實現(xiàn)溫度的遠(yuǎn)程控制。而且可以利用電腦的優(yōu)勢存儲大量的溫度數(shù)據(jù)和實現(xiàn)對溫度數(shù)據(jù)的處理。溫度檢測是現(xiàn)代檢測技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節(jié)約能源和安全生產(chǎn)等方面起著關(guān)鍵的作用,隨著科學(xué)技術(shù)的發(fā)展,有單片機集成電路構(gòu)成的溫度傳感器的種類越來越多,測量的精度越來越高,響應(yīng)時間越來越短,因其使用方便、無需變換電路等特點已經(jīng)得到了廣發(fā)的應(yīng)用,例如:以前常用的AD590和LM35等,一級現(xiàn)在得到廣發(fā)應(yīng)用的DS1820、DS1821和DS1620等。本次畢業(yè)設(shè)計正式為了完成

9、溫度采集而設(shè)計的,而且用了前不久美國DALLAS公司生產(chǎn)的可租網(wǎng)數(shù)字式溫度傳感器DS1820,可以說與人們的日常生活是息息相關(guān)的,具有很大的現(xiàn)實意義2-3。1.2 國外現(xiàn)狀 現(xiàn)在比較常用的普通測溫方法就是利用一些液體的熱脹原理制作的,比如說煤油溫度計,酒精溫度計以與水銀溫度計等,這些原始的測溫方法成本比較低,但是測溫精度也很低,不適合用于一些需要高精度測溫的情況,而且通過電子裝置自動采集溫度不太方便,也有一些電子測溫采用的時溫敏電阻加AD轉(zhuǎn)換的方法,采集溫度雖然方便,但是精度不夠,本課題正是針對這種狀況而設(shè)計的,采用了精確的溫度傳感器,并且能夠通過單片機的優(yōu)勢存儲大量的溫度數(shù)據(jù)和實現(xiàn)對溫度數(shù)據(jù)

10、的處理13-16。1.3目的和容新型數(shù)字化、網(wǎng)絡(luò)化傳感器在工程中的應(yīng)用具有極其重要的意義。這類傳感器是各種參量送入計算機系統(tǒng),進(jìn)行智能監(jiān)測、控制的最前端。隨著科技的發(fā)展,數(shù)字化。網(wǎng)絡(luò)化傳感器應(yīng)用日益廣泛,以其傳統(tǒng)方式不可比擬的優(yōu)勢漸漸成為技術(shù)的趨勢和主流。本次設(shè)計的目的就是以數(shù)字傳感器DS1820作為前端,采集溫度經(jīng)過單片機處理后,在采用串口通信,把溫度顯示在VB編輯的計算機界面上,實現(xiàn)與計算機的通信。本系統(tǒng)的設(shè)計主要為軟件的設(shè)計,軟件部分分為五大部分:讀取DS180的部數(shù)據(jù)部分、單片機對溫度的處理部分、PC顯示部分、串口通信部分、VB界面部分。2主要器件介紹2.1 AT89C51 簡介AT8

11、9C51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM FlashProgrammable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復(fù)擦出100次。該器件采用ATMEL高密度非易失存儲器制造書制造,與工業(yè)標(biāo)準(zhǔn)的MSC-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。2.1.1 主要特性與MCS-51兼

12、容4k字節(jié)可編程閃爍存儲器壽命:100寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定128*8位部RAM32可編程I/O線兩個12位定時器/計數(shù)器5個中斷源可編程串行通道低功率的閑置和掉電模式片振蕩器和時鐘電路2.1.2 AT89C51管腳說明圖2.1 AT89C51 管腳圖VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為HYPERLINK :/baike.baidu /view/1410710.htm高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的

13、第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2

14、口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能: P3.0 RXD(串行輸入口) P3.1 TXD(

15、串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 /RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。 /ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部

16、輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。注意加密方式1時,/EA將部鎖定為RESET;當(dāng)/

17、EA端保持高電平時,此間部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入與部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。2.2 DS1820簡介 DALLAS最新單線HYPERLINK :/baike.baidu /view/1945329.htm數(shù)字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì) Dallas 半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟(jì)的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為HYPERLINK :/baik

18、e.baidu /view/2847149.htm測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、 DS1822 “一線總線”數(shù)字化溫度傳感器 同DS1820一樣,DS18B20也 支持“一線總線”接口,測量溫度圍為 -55C+125C,在-10+85C圍,精度為0.5C。DS1822的精度較差為 2C 。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類HYPERLINK :/baike.baidu /view/3300539.htm消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V5.5V的電壓圍,使系統(tǒng)設(shè)計更

19、靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20、 DS1822 的特性 DS18B20可以程序設(shè)定912位的分辨率,精度為0.5C??蛇x更小的封裝方式,更寬的電壓適用圍。分辨率設(shè)定,與用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色! DS1822與 DS18B20HYPERLINK :/baike.baidu /view/37.htm軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為2C,適用于對性能要求不高,成本控制嚴(yán)格的應(yīng)用,是經(jīng)濟(jì)型產(chǎn)品。 繼“一線總線

20、”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20和DS1822使電壓、特性與封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟(jì)的測溫系統(tǒng)。 2.2.1 DS18B20的部結(jié)構(gòu)圖2.2 DS1820部結(jié)構(gòu)圖DS18B20部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下: DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28

21、H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的HYPERLINK :/baike.baidu /view/575295.htm循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不一樣,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進(jìn)制補碼讀數(shù)形式提供,以0.0625/LSB形式表達(dá),其中S為符號位。 2.2.2 DS18B20引腳定義(1)DQ為數(shù)字信號輸入/輸出端; (2)GND為電源地; (3)VDD為外接供電電源

22、輸入端(在寄生電源接線方式時接地)。 圖2.3 DS1820引腳圖 2.2.3 DS18B20的主要特性(1)適應(yīng)電壓圍更寬,電壓圍:3.05.5V,在寄生電源方式下可由數(shù) 據(jù)線供電。 (2)獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。 (3)DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。 (4)DS18B20在使用中不需要任何外圍元件,全部 傳感元件與轉(zhuǎn)換電路集成在形如一只三極管的集成電路。 (5)溫圍55+125,在-10+85時精度為0.5。 (6)可編程的分辨率為912位,對

23、應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫。 (7)在9位分辨率時最多在 93.75ms把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms把溫度值轉(zhuǎn)換為數(shù)字,速度更快。 (8)測量結(jié)果直接輸出數(shù)字溫度信號,以一 線總線串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。 (9負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀, 但不能正常工作。 3系統(tǒng)設(shè)計3.1 功能要求設(shè)計一個基于VB6.0的數(shù)據(jù)采集系統(tǒng)。用單片機系統(tǒng)接收溫度傳感器的溫度數(shù)據(jù),并在PC上顯示當(dāng)前溫度值,可測溫圍-55-125攝氏度,精度0.1攝氏度。使用VB6.0編寫上位機程序

24、,接收溫度數(shù)據(jù)并儲存在數(shù)據(jù)庫中;接收數(shù)據(jù)時,要求能同步畫出溫度變化曲線;要求系統(tǒng)可查詢歷史溫度信息?;赩B6.0的數(shù)據(jù)采集系統(tǒng)在設(shè)計時主要應(yīng)該滿足如下功能指標(biāo):測量溫度,并在PC機上顯示當(dāng)前溫度;可測溫圍-55-125攝氏度,精度0.1攝氏度;每秒給上位機接受溫度數(shù)據(jù);上位機接收溫度數(shù)據(jù),并將數(shù)據(jù)、接收數(shù)據(jù)時間以與測溫批次等信息存儲到數(shù)據(jù)庫中;測溫批次可以自動生成也可手動輸入;接收溫度數(shù)據(jù)時,同步畫出溫度變化的曲線;可按批次以與測溫時間查詢溫度數(shù)據(jù);將上位機軟件打包,生成安裝文件。3.2 總體設(shè)計方案溫度計電路設(shè)計總體設(shè)計方框圖如圖3.1,控制器采用單片機89C51,溫度傳感器采用DS182

25、0,以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示通過串口與上位機PC通訊,把數(shù)據(jù)傳送給上位機,并用VB編寫的圖形界面把溫度的變化曲線顯示出來,并通過數(shù)據(jù)庫存儲,可查詢歷史溫度記錄。 圖3.1 溫度計電路總體設(shè)計方案主控制器:單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池。溫度傳感器:采用DS1820溫度傳感器,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。PC實時顯示界面:顯示實時溫度數(shù)據(jù)變化曲線的界面,采用VB6.0編輯,在程序使用VB6.0的通用串口控件MSCOMM來對發(fā)送

26、到串口的數(shù)據(jù)進(jìn)行采集處理。上位機定義好通信協(xié)議和波特率。3.3 系統(tǒng)軟件設(shè)計3.3.1 PC與單片機串口通信目前,在許多單片機應(yīng)用系統(tǒng)中,上、下位機分工明確,作為下位機核心器件的單片機往往只負(fù)責(zé)數(shù)據(jù)的采集和通信,而上位機通常以基于圖形界面的Windows系統(tǒng)為操作平臺。為便于查詢和保存數(shù)據(jù),還需要數(shù)據(jù)庫的支持,這種應(yīng)用的核心是數(shù)據(jù)通信,它包括單片機和上位機之間、客戶端和服務(wù)器之間以與客戶端和客戶端之間的通信,而單片機和上位機之間數(shù)據(jù)通信則是整個系統(tǒng)的基礎(chǔ)。單片機和PC的通信是通過單片機的串口和PC串口之間的硬件連接實現(xiàn)的。線路說明,如圖3.2所示,數(shù)據(jù)通信的硬件上采用三線制,將單片機和PC串口

27、的3個引腳(RXD、TXD、GND)分別連在一起,即將PC和單片機的發(fā)送數(shù)據(jù)線TXD與接收數(shù)據(jù)RXD交叉連接,兩者的地線GND直接相連,而其他信號線如握手信號線均不用,采用軟件握手的方式,這樣既可以實現(xiàn)預(yù)定的任務(wù)又可以簡化電路設(shè)計。但由于單片機的TTL邏輯電平和RS-232C的電氣特性完全不同,RS-232C的邏輯0電平規(guī)定為+3+15V之間,邏輯1電平為315V之間,因此,在將PC和單片機的RXD和TXD交叉連接時必須進(jìn)行電平轉(zhuǎn)換,這里使用的是MAX232電平轉(zhuǎn)換芯片。PC與單片機串口通信線路圖如下圖3.2所示。圖3.2 PC與單片機串口通信線路3.3.2上位機軟件設(shè)計上位機是應(yīng)用VB進(jìn)行編

28、寫的。它把下位機傳送上來是兩字節(jié)的十六進(jìn)制數(shù)據(jù)進(jìn)行解碼顯示出來當(dāng)點擊采集溫度時,上位機向下位機發(fā)送采集溫度命令字符“1”,當(dāng)下位機接受到命令時,向上位機發(fā)送數(shù)據(jù)。使用VB6.0編寫上位機程序,接收溫度數(shù)據(jù)并儲存在數(shù)據(jù)庫中;接收數(shù)據(jù)時,能同步畫出溫度變化的曲線,系統(tǒng)可查詢歷史溫度信息。具體在上位機程序里面體現(xiàn)出來,下圖為上位機工作流程圖。圖3.3 上位機工作流程圖數(shù)據(jù)采集實時程序設(shè)計思路:本程序設(shè)計使用VB6.0的通用串口控件MSComm來對發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。VB6.0的MSComm通信控件提供了一系列標(biāo)準(zhǔn)通信命令接口,它允許簡歷串口連接,可以連接到其他通信設(shè)備,還可以發(fā)送命令,進(jìn)行

29、數(shù)據(jù)交換以與監(jiān)視和響應(yīng)在通信過程中可能發(fā)生的各種錯誤和事件,從而可以用它創(chuàng)建全雙工、事件驅(qū)動的、高效實用的通信程序。一般說來,計算機都有一個或多個串行端口,它們依次為Com1、Com2、這些串口還提供了外部設(shè)備與PC進(jìn)行數(shù)據(jù)傳輸和通信通道,這些串口在CPU和外設(shè)之間充當(dāng)解釋器的角色?;緦傩耘c描述如下:Commport 設(shè)置或返回通信端口。Settings 以字符的形式設(shè)置或返回波特頻率、奇偶校驗、數(shù)據(jù)位和停止位。PortOpen 設(shè)置或返回通信端口的狀態(tài),也可以打開和關(guān)閉端口。Input 返回和刪除接收緩沖區(qū)中的字符。Output 將字符穿寫入發(fā)送緩沖區(qū)。CommEevent屬性為通信事件活

30、錯誤返回下列值之一,在該控件的對象庫中也可以找到這些常量。你只有首先要確定mscomm控件在system目錄下并且該控件已經(jīng)被windows注冊,程序才能正常運行。 有數(shù)據(jù)向串口發(fā)過來時,程序可以將數(shù)據(jù)接收到,接收的數(shù)據(jù)是字符型的,那么數(shù)據(jù)轉(zhuǎn)化為數(shù)字型的,再將這個數(shù)據(jù)的大小作為畫圖的某一個點的縱坐標(biāo),橫坐標(biāo)為數(shù)據(jù)的序號,將這些用線連起來就是一個曲線圖了,這個就是圖形顯示基本原理。查看原來的數(shù)據(jù)的原理也是這樣的,不同的地方就是,數(shù)據(jù)是從文件中來,同樣的也是將多個數(shù)據(jù)分成一個一個的,然后一個數(shù)據(jù)的大小就是畫圖的為一個點的縱坐標(biāo),橫坐標(biāo)同樣為數(shù)據(jù)的序號,再將這些點用線連起來就是曲線圖。圖形能移動的原

31、理就是我們首先改變的只是數(shù)據(jù),圖形并沒有變化,但圖形的形式是由這些數(shù)據(jù)來確定的,當(dāng)數(shù)據(jù)發(fā)生變化后,我們通過刷新顯示區(qū)來變化的。VB編寫的實時顯示界面如圖3.4 所示,點擊查詢可查詢歷史溫度信息。圖3.4 實時溫度曲線顯示與查詢圖串口的波特率,串口號都采用下拉選擇的方式,在使用中可根據(jù)的情況選擇讀串口數(shù)據(jù)的原理是,只要在有數(shù)據(jù)向串口發(fā)數(shù)據(jù)來時,計算機就會自動將其數(shù)據(jù)寫到一個特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了。此外為了保存和查詢歷史溫度數(shù)據(jù)還要在VB中設(shè)計建立連接到Access數(shù)據(jù)庫的控件,Data控件是Visual Basic6.0中的一個置數(shù)據(jù)控件,可以通過設(shè)置Data控

32、件的connect、DatabaseName、RecordSource屬性實現(xiàn)對數(shù)據(jù)庫的連接和訪問。建立的數(shù)據(jù)庫文件和VB中創(chuàng)建的工程文件必須放在同一目錄下。 4程序設(shè)計4.1上位機程序在上位機VB程序的編寫中,最重要的是串口的初始化程序的接受觸發(fā)程序的設(shè)計,本設(shè)計使用VB6.0的通用串口控件MSComm來對發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。主要方法如下:串口設(shè)置:MSComm SetSettings(“波特率,校驗方式,數(shù)據(jù)位數(shù),停止為數(shù)”)串口數(shù)據(jù):MSComm InputMode(輸入模式設(shè)定)具體程序設(shè)計如下:Private Sub Form_Load()On Error GoTo err

33、:MSComm1 mport= IMSComm1.InputMode =eomInputModeBinaryMSComm1.RThreclrold = IMSComm1.SThreshold= IMSComm1.Settings = 9600,n,8,2Call tabinitCall ScaleSysIf MSComml.PortOpen=False Then MSComml.PortOpen=True mark = TrueCmdStop.Enabled=FalseExit Suberr: Select Case err.Number Case comPortAlreadyOpen Msg

34、Box沒有發(fā)現(xiàn)此串口或被占用,49,溫度采集系統(tǒng)Case ElseMsgBox沒有發(fā)現(xiàn)此串口或被占用,49,溫度采集系統(tǒng)End Selecterr.ClearEnd Sub 在VB程序中設(shè)置為串口1,輸入模式為二進(jìn)制,且接收和發(fā)送一個字符就會觸發(fā)MSComml的OnComm接收觸發(fā)事件。波特率設(shè)置為9600,可以根據(jù)具體設(shè)計情況更改波特率的大小,但要與下位機的一致。程序中還編寫了錯誤處理程序,當(dāng)串口被占用時會轉(zhuǎn)去執(zhí)行err程序,出現(xiàn)系統(tǒng)報錯。 接收觸發(fā)事件的處理,當(dāng)每發(fā)送一次指令時,就會觸發(fā)OnComm事件,并返回數(shù)據(jù)串,通過計算獲取溫度測量值并顯示出來,具體設(shè)計程序如下:Private Su

35、b MSComml_OnComm() Dim Inbyte() As Byte Dim buffer As String Dim datatemp2a, datatemp2b As String Dim datatemp2 As String Dim countAs Integer讀取儀表返回數(shù)據(jù)串 Select Case MSComm l mEvent Case comEvReceive count = MSComm1.InBufferCount Inbyte = MSComml.Input If count 2 Then Exit Sub counter = counter + 1 For

36、 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)制的格式放入緩沖中,便于之后的數(shù)據(jù)處理。此外程序還添加了接收溫度數(shù)據(jù)的判定,接收到的溫度數(shù)據(jù)應(yīng)為兩字節(jié),且低位在前,當(dāng)接收到的數(shù)據(jù)不是兩字節(jié)時,表示接收錯誤,跳出此程序。為了在VB界面能夠顯示當(dāng)前的溫度值,需要將采集的兩字節(jié)溫度數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制測量數(shù)據(jù),轉(zhuǎn)化程序如下: If Len(Trim(Mid(buffer, 1, 2) =

37、 1 Then datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Str(0) & Mid(buffer, 1, 2) * 0.0625Else datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Mid(buffer, 1, 2) * 0.0625End If 保存數(shù)據(jù) Data_save (datatemp(num)此外,本VB程序還做了一定的功能擴展,能夠顯示歷史溫度的最大值和最小值以與平均值,還可通過下拉方式選擇合適的波特率、串口和采樣間隔時間。采集的溫度數(shù)據(jù)還通過Data控件存入數(shù)據(jù)庫中。在設(shè)計過程中可以用

38、虛擬串口和串口調(diào)試助手對所設(shè)計的程序進(jìn)行仿真,看是否達(dá)到設(shè)計要求。整個VB界面與數(shù)據(jù)庫程序的編寫見附錄所示。5 結(jié) 論隨著科技的發(fā)展,在各個領(lǐng)域都要用到數(shù)據(jù)采集系統(tǒng),其中就包括最普遍的溫度的數(shù)據(jù)采集。傳統(tǒng)的溫度采集方法費時且精度較差,而如今各個行業(yè)對溫度數(shù)據(jù)的要求越來越高,如科研實驗室,因此新型的數(shù)字溫度計大量出現(xiàn),其中最普遍的是使用傳感器和單片機組成采集電路就可以獲得較高的精度要求。在這種背景下,選擇基于VB6.0的數(shù)據(jù)采集系統(tǒng)這個課題具有很大的現(xiàn)實意義,用VB編寫上位機程序,在PC上通過圖形界面就能控制下位機即單片機采集溫度數(shù)據(jù)信號,設(shè)計直觀大方,使用DS18B20高靈敏度的溫度傳感器采集

39、溫度數(shù)據(jù),再用AT89C51處理數(shù)據(jù),在PC界面顯示當(dāng)前溫度,并且可以通過串口向上位機傳送數(shù)據(jù),顯示實時溫度曲線和把數(shù)據(jù)存入數(shù)據(jù)庫中,方便查詢歷史溫度記錄。讀數(shù)方便,測量圍廣,測溫準(zhǔn)確。硬件電路較簡單,所以軟件設(shè)計較復(fù)雜,DS18B20只有一個數(shù)據(jù)口,所以它的讀寫程序?qū)r序有很高的要求。在整個采集系統(tǒng)中,包括溫度采集程序串口通信程序,和上位機的程序,數(shù)據(jù)庫等等兒個部分,為了避免干擾,當(dāng)上位機VB界面點擊“采集溫度”時,向下位機發(fā)送特定字符,當(dāng)下位機識別正確字符,才將溫度數(shù)據(jù)傳送給上位機。在設(shè)計過程中,對整個系統(tǒng)硬件和軟件的分析,采用模塊化程序設(shè)計的方法,流程圖分析設(shè)計思路,將系統(tǒng)分成幾個模塊,

40、最終進(jìn)行整合,從而實現(xiàn)了基于VB6.0的數(shù)據(jù)采集系統(tǒng)的設(shè)計。在畢業(yè)設(shè)計的過程中,針對所要設(shè)計的課題,我更加系統(tǒng)的學(xué)習(xí)了VB6.0語言和C語言,能夠較熟練的運用偉福、PROTEUS和VB6.0等設(shè)計軟件,使我了解了測溫的原理和相關(guān)領(lǐng)域的知識。就個人而言,在這次畢業(yè)設(shè)計鍛煉了個人意志以與在克服困難的毅力,培養(yǎng)了我在一定的壓力下進(jìn)行研究和設(shè)計的心理素質(zhì),獨立處理問題的能路,提高了我查找運用各種參考資料以與與其他人溝通交流解決問題的能力。此外,整個設(shè)計過程中由于指導(dǎo)老師的幫助下,開拓了我的思維,提高了將所學(xué)知識學(xué)以致用的能力。附錄 上位機程序X定義窗體級變量在顯示、繪圖、報警等過程中使用Dim dat

41、atemp(200) As Single / 用于存儲溫度采樣值Dim num As Integera /用于存儲采樣值個數(shù)Dim counter As Integer /采樣個數(shù)計數(shù)器 Dim mark As Boolean, /暫停標(biāo)志Dim strSql As StringPrivate Sub cmd_Search_lick() strSql=select *from TblWD Where t=1 Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseClient Rs.Open strSql, Db, adOpenKeyset,

42、 adLockReadOnly If Rs, RecnrdCm,nt 200) Or (Txttimes 60) Or (Txulme Txttimes.Text一1 Then /接收個數(shù)判斷Timer1 Enabled=False /接收完畢Shpstate.EiIIColor= &H80FF&Exit SubEnd If讀取儀表返回數(shù)據(jù)串Select Case.MSComml mEventCase comEvReceiveCount=MSCommI.InBufferCount /接收溫度數(shù)據(jù)個數(shù),兩字節(jié),低位在前Inbyte=MSComml.Input /接收溫度數(shù)據(jù)If enunt 2

43、ThenExit Sub /不是兩字節(jié),表示接收錯誤,跳出程序counter= counter+ 1 /基數(shù)器加1For i=LBound(lnbyte) To UBound(Inbyte) /把接收的數(shù)據(jù)安十六進(jìn)制格式放入緩沖中buffer =buffer +Hex(lnbyte(i)Next iEnd Select獲取十進(jìn)制測量數(shù)據(jù)If Len(Trim(Mid(buffer, 1, 2)=1 Then datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Str(0) & Mid(buffer 1, 2) * 0.0625Else datatemp(n

44、um) = Val(&H & Mid(buffer, 3, 3) & Mid(buffer, 1, 2) * 0.0625End If保存數(shù)據(jù)Data_save (datatemp(num)獲取十六進(jìn)制測量數(shù)據(jù) If Len(Trim(Mid(buffer, 1, 2) = 1 Then datatemp2a=Str(0) &Trim(Mid(buffer, 1, 2)Else datatemp2a=Mid(buffer, 1, 2)End IfIf Len(Trim(Mid(buffer, 4, 2) = 1 Then datatemp2b=Str(0) & Trim(Mid(buffer,

45、 3, 2)Else datatemp2b=Mid(buffer, 4,2)End Ifdatatemp2 = datatemp2a & & datatemp2b顯示測量溫度值 If counter=num + 1 Then If datatemp(num) 0 Then不能顯示零度,別的正常 Grid.Col=1: Grid.Row=num+ 1 Grid.Text=Format$(datatemp(num), 0.0) If counter 13 Then Grid.TopRow=counter-12控制滾動條的滾動 TempText=Format$(datatemp(num), 0.0)

46、 /10進(jìn)制顯示.保留一位小數(shù) Num=num + 1 Call cal / 調(diào)用計算極值、平均值子程序 Call draw /調(diào)用繪曲線過程End If End Sub統(tǒng)計計算計算極值、平均值Sub cal() On Error GoTo err Sum =0 Max = datatemp(0): Min = Max For i=O To num-1 If daratemp(i) =Max Then Max=datatemp(i) If daratemp(i) =Min Then Min=daratemp(i) Sum =Sum + datatemp(i)Next iaver =Sum /n

47、umMaxText.Text=Format$(Max.0.0)MinText.Text=Format$(Min.0.0)AverText.Text=Format$(aver.0.0)err:End Sub溫度曲線繪制繪制溫度實時變化曲線Private Sub draw()Picturel.DtawWidh=2 /設(shè)置線寬Picture1 .DrawStyle = vbSolidFori=1 To num-1X1 =(i1): Y1=datatemp(i-1)X2=i: Y2=datatemp(i)Picture1.Line (XI, Yl)-(X2, Y2), QBColor(0) /繪制溫度

48、曲線Next iEnd Sub重新采集數(shù)據(jù)Private Sub renew()If num = 0 Then Fxit SuhAverTexrText=:AverText.Text=MinText.Text=MaxText.Text=Grid ClearPictuel.ClsCall ScaleSysFor i =O To num-1datatemp(i) = 0Next inum=0counter=0Call tabinit /數(shù)據(jù)表格初始化End Sub數(shù)據(jù)表格初始化Public Sub tabinit()Grid.Cols=2 /兩列Grid.Rows=Txttimes.Text+1

49、/Rows的值必須至少比FixedRows的值大一Grid.ColWidth(0)=650 /設(shè)置表格寬度Grid.CoIWidth(1) = 850Grid Col=0For i = 1 To Txttimes.TextGrid.Row = iGrid.Text= +Str$(i)Next iGrid.Row=0Grid.Col=0: Grid.Text=序號Grid.Col二1:Grid.Text=溫度值Grid.TopRow = 1 /置在第一頁Grid.LeftCol = 1End Sub定時發(fā)送采集標(biāo)志每隔xms向儀表發(fā)送讀數(shù)據(jù)命令串每臺儀表有一個儀表號,PC機通過儀表號來識別網(wǎng)上的

50、多臺儀表程序中儀表號(即地址代號)要與儀表設(shè)定值一致,否則不能返回數(shù)據(jù)。Private Sub Timert_Timer()Dim a as VariantA=1MSComml.0utput=a /發(fā)送開始標(biāo)志End Sub卸載窗體Private Sub Cmdquit_ClickOIf MSComm1.Port0pen =True Then MSComm 1.Port0pen = False/關(guān)閉串口Unload Me /卸載窗體EndEnd Sub串口設(shè)置Sub setCom()On Error GoTo err:MSComml mport=Val(Mid(Txtcom.Text, 4,

51、1) /設(shè)置串口MSComml.Settings =TxtBaudRate.Text & ,n,8,2 /設(shè)置波特率IfMSComml.PortOpen=False Then MSComml.PortOpen=True /打開串口Timerl.Enabled=True /開定時器Shpstate.FillColor= &HFF&Exit Suberr:Select Case err.NumberCase comPortAlready0pen /如果串口已經(jīng)打開,則提示MsgBox沒有發(fā)現(xiàn)此串口或被占用,41, 溫度采集系統(tǒng),Case ElseMsgBox 沒有發(fā)現(xiàn)此串口或被占用,49, N度采

52、集系統(tǒng)End SelectShpstate.FillColor=&H808080 /填充停止?fàn)顟B(tài)Timerl.Enabled=False /關(guān)閉定時器CmdStart.Caption =開始采集CmdStop.Enabled=FalsePicturel.ClsCall renew /初始化表格Call ScaleSys /建立坐標(biāo)系err ClearEnd Sub建立圖像坐標(biāo)系Sub ScateSys() /坐標(biāo)系Picturel.AutoRedraw=True /自動重繪有效Picturel.DrawWidth= 1 /線寬1個像素Picturel.ScaleMode=vbPixels /像

53、素為單位Picturel.Scale (0, 125)-(200,-50) /坐標(biāo)系Picturel.DrawStyle=vbDot /點線橫坐標(biāo)Picwrel.Line (0, 0)-(200, 0), RGB(130, 130, 130)Picturcl.Linc (0, 25)-(200, 25), RGB(130, 130, 130)Plcturel.Line (0, 50)-(200, 50), RGB(130, 130, 190)Picturel.Line (0, 75)-(200, 75), RGB(130, 130, 130)Picturel.Line (0, 100)-(200, 100), RGB(130, 130, 130)Picturel.Line (0,-25)-(200,-25), RGB(130, 130, 130)縱坐標(biāo)Plemrel.Line (25,125)-(25,-50), RGB(130 130 130)Picturel.Line (50,125)-(50,-50),RGB(130, 130, 130)Picturel.Line (7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論