




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 PAGE31 / NUMPAGES32目 錄TOC o 1-3 h u HYPERLINK l _Toc442 1.1背景和意義 PAGEREF _Toc442 1 HYPERLINK l _Toc10247 1.2 國外現狀 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)設計 PAGEREF _Toc24973 10 HYPERLINK l _Toc32637 3.1 功能要求 PAGEREF _Toc32637 10 HYPERLINK l _Toc19349 3.2 總體設計方案 PA
3、GEREF _Toc19349 10 HYPERLINK l _Toc16901 3.3 系統(tǒng)軟件設計 PAGEREF _Toc16901 11 HYPERLINK l _Toc10559 3.3.1 PC與單片機串口通信 PAGEREF _Toc10559 11 HYPERLINK l _Toc17375 3.3.2上位機軟件設計 PAGEREF _Toc17375 12 HYPERLINK l _Toc13125 4程序設計 PAGEREF _Toc13125 17 HYPERLINK l _Toc22194 4.1上位機程序 PAGEREF _Toc22194 17 HYPERLINK
4、l _Toc18746 5 結 論 PAGEREF _Toc18746 20 HYPERLINK l _Toc1575 附錄 上位機程序 PAGEREF _Toc1575 21 HYPERLINK l _Toc20735 參考文獻 PAGEREF _Toc20735 33 HYPERLINK l _Toc28174 致 PAGEREF _Toc28174 351引 言1.1背景和意義 近年來,隨著大規(guī)模集成電路的發(fā)展,單片機繼續(xù)炒快速、高性能方向發(fā)展,從4位、8位單片機發(fā)展到16位、32位單片機。單片機主要用于控制,它的的應用領域遍與各行各業(yè),大到航天飛機,小至日常生活中的冰箱、彩電,單片機都
5、可以大顯其能。單片機在家用電器業(yè)中應用的十分廣泛:例如全自動洗衣機,智能玩具;除了上述傳統(tǒng)領域外,汽車、電子工業(yè)在國外也是單片機應用十分廣泛的一個領域,它成本低、集成度高、功耗低、控制功能多、能靈活的組裝成各種智能控制裝置,由它構成的智能儀表解決了長期以來測量儀器中的誤差的修正、線性處理等問題11。傳統(tǒng)靠人工控制和測量的溫度、濕度、液位等信號的測壓、力控系統(tǒng),外圍電路比較復雜,測量精度較低,分辨力不高,需進行溫度校準(非線性校準、溫度補償、傳感器標定等);且它們的體積較大、使用不夠方便,更重要的是參數的設定需要有其它儀表的參與,外界設備多,成本高,因為越來越適應不了社會的要求。在對多類型、多通
6、道信號同時進行監(jiān)測和控制中,傳統(tǒng)的測控系統(tǒng)能力有限9。傳統(tǒng)的溫度測量方法有很多種:酒精溫度計、水銀溫度計、熱電偶、熱電阻、熱敏電阻、輻射高溫計等1。酒精、煤油溫度計常用與室溫的測量,也用于實驗室中一些液體或實驗室溫度的測量。水銀常用于體溫計,由于熔點比較高,所以不適合低溫環(huán)境。熱電偶測溫的原理是:將兩條不同的金屬線的一端連接在一起并加熱,在兩線之間會有一個與溫度成正比的熱離子電壓產生。但在惡劣的環(huán)境中,熱電偶的質量可能會受影響;由于水是溶解物質所以也會引起問題。溫度過高熱電偶金屬可能會熔化,從而改變成分,并且影響讀數。熱電阻是一種電阻與溫度成正比的溫度傳感器。輻射高溫計是非接觸型溫度傳感器,它
7、可以探測到來自被測物得紅外輻射并將輻射轉換成與溫度成正比的電壓或電流。所以這種方式比較適合一些非接觸的場合。但是如何將計算機與各種設施、設備結合,簡化人工操作并實現自動控制,滿足社會的需求,成為一個很迫切的問題。隨著時代的發(fā)展,科技的進步,各種復雜的場合對溫度的測量也是提出了不同的要求,在某些場合要求能夠實時監(jiān)控溫度值,并且能夠將大量的溫度數據保存起來,并進行集中處理,計算機的出現是的大量溫度數據的保存與處理成為了可能,但是傳統(tǒng)的酒精或煤油溫度計等卻無法將溫度數據傳遞給計算機,所以便出現了各自各樣的電子溫度傳感器,而現在大量采用的是溫敏電阻加AD轉換的方法,采集溫度雖然方便,但是精度不夠,而且
8、電路復雜,并不適用與多點測溫,本課題正是針對這種狀況而設計的,采用了精確的溫度傳感器,并且能夠通過單片機實時采集溫度傳送給電腦,用于實現溫度的遠程控制。而且可以利用電腦的優(yōu)勢存儲大量的溫度數據和實現對溫度數據的處理。溫度檢測是現代檢測技術的重要組成部分,在保證產品質量、節(jié)約能源和安全生產等方面起著關鍵的作用,隨著科學技術的發(fā)展,有單片機集成電路構成的溫度傳感器的種類越來越多,測量的精度越來越高,響應時間越來越短,因其使用方便、無需變換電路等特點已經得到了廣發(fā)的應用,例如:以前常用的AD590和LM35等,一級現在得到廣發(fā)應用的DS1820、DS1821和DS1620等。本次畢業(yè)設計正式為了完成
9、溫度采集而設計的,而且用了前不久美國DALLAS公司生產的可租網數字式溫度傳感器DS1820,可以說與人們的日常生活是息息相關的,具有很大的現實意義2-3。1.2 國外現狀 現在比較常用的普通測溫方法就是利用一些液體的熱脹原理制作的,比如說煤油溫度計,酒精溫度計以與水銀溫度計等,這些原始的測溫方法成本比較低,但是測溫精度也很低,不適合用于一些需要高精度測溫的情況,而且通過電子裝置自動采集溫度不太方便,也有一些電子測溫采用的時溫敏電阻加AD轉換的方法,采集溫度雖然方便,但是精度不夠,本課題正是針對這種狀況而設計的,采用了精確的溫度傳感器,并且能夠通過單片機的優(yōu)勢存儲大量的溫度數據和實現對溫度數據
10、的處理13-16。1.3目的和容新型數字化、網絡化傳感器在工程中的應用具有極其重要的意義。這類傳感器是各種參量送入計算機系統(tǒng),進行智能監(jiān)測、控制的最前端。隨著科技的發(fā)展,數字化。網絡化傳感器應用日益廣泛,以其傳統(tǒng)方式不可比擬的優(yōu)勢漸漸成為技術的趨勢和主流。本次設計的目的就是以數字傳感器DS1820作為前端,采集溫度經過單片機處理后,在采用串口通信,把溫度顯示在VB編輯的計算機界面上,實現與計算機的通信。本系統(tǒng)的設計主要為軟件的設計,軟件部分分為五大部分:讀取DS180的部數據部分、單片機對溫度的處理部分、PC顯示部分、串口通信部分、VB界面部分。2主要器件介紹2.1 AT89C51 簡介AT8
11、9C51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM FlashProgrammable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦出100次。該器件采用ATMEL高密度非易失存儲器制造書制造,與工業(yè)標準的MSC-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。2.1.1 主要特性與MCS-51兼
12、容4k字節(jié)可編程閃爍存儲器壽命:100寫/擦循環(huán)數據保留時間:10年全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定128*8位部RAM32可編程I/O線兩個12位定時器/計數器5個中斷源可編程串行通道低功率的閑置和掉電模式片振蕩器和時鐘電路2.1.2 AT89C51管腳說明圖2.1 AT89C51 管腳圖VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為HYPERLINK :/baike.baidu /view/1410710.htm高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的
13、第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2
14、口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當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(外部數據存儲器寫選通) P3.7 /RD(外部數據存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 /RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 /ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部
16、輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。注意加密方式1時,/EA將部鎖定為RESET;當/
17、EA端保持高電平時,此間部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入與部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。2.2 DS1820簡介 DALLAS最新單線HYPERLINK :/baike.baidu /view/1945329.htm數字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經濟 Dallas 半導體公司的數字化溫度傳感器DS1820是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為HYPERLINK :/baik
18、e.baidu /view/2847149.htm測量系統(tǒng)的構建引入全新概念。DS18B20、 DS1822 “一線總線”數字化溫度傳感器 同DS1820一樣,DS18B20也 支持“一線總線”接口,測量溫度圍為 -55C+125C,在-10+85C圍,精度為0.5C。DS1822的精度較差為 2C 。現場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類HYPERLINK :/baike.baidu /view/3300539.htm消費電子產品等。與前一代產品不同,新的產品支持3V5.5V的電壓圍,使系統(tǒng)設計更
19、靈活、方便。而且新一代產品更便宜,體積更小。 DS18B20、 DS1822 的特性 DS18B20可以程序設定912位的分辨率,精度為0.5C。可選更小的封裝方式,更寬的電壓適用圍。分辨率設定,與用戶設定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產品中最好的!性能價格比也非常出色! DS1822與 DS18B20HYPERLINK :/baike.baidu /view/37.htm軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數的EEPROM,精度降低為2C,適用于對性能要求不高,成本控制嚴格的應用,是經濟型產品。 繼“一線總線
20、”的早期產品后,DS1820開辟了溫度傳感器技術的新概念。DS18B20和DS1822使電壓、特性與封裝有更多的選擇,讓我們可以構建適合自己的經濟的測溫系統(tǒng)。 2.2.1 DS18B20的部結構圖2.2 DS1820部結構圖DS18B20部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下: DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28
21、H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的HYPERLINK :/baike.baidu /view/575295.htm循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不一樣,這樣就可以實現一根總線上掛接多個DS18B20的目的。 DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625/LSB形式表達,其中S為符號位。 2.2.2 DS18B20引腳定義(1)DQ為數字信號輸入/輸出端; (2)GND為電源地; (3)VDD為外接供電電源
22、輸入端(在寄生電源接線方式時接地)。 圖2.3 DS1820引腳圖 2.2.3 DS18B20的主要特性(1)適應電壓圍更寬,電壓圍:3.05.5V,在寄生電源方式下可由數 據線供電。 (2)獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。 (3)DS18B20支持多點組網功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現組網多點測溫。 (4)DS18B20在使用中不需要任何外圍元件,全部 傳感元件與轉換電路集成在形如一只三極管的集成電路。 (5)溫圍55+125,在-10+85時精度為0.5。 (6)可編程的分辨率為912位,對
23、應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫。 (7)在9位分辨率時最多在 93.75ms把溫度轉換為數字,12位分辨率時最多在750ms把溫度值轉換為數字,速度更快。 (8)測量結果直接輸出數字溫度信號,以一 線總線串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。 (9負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀, 但不能正常工作。 3系統(tǒng)設計3.1 功能要求設計一個基于VB6.0的數據采集系統(tǒng)。用單片機系統(tǒng)接收溫度傳感器的溫度數據,并在PC上顯示當前溫度值,可測溫圍-55-125攝氏度,精度0.1攝氏度。使用VB6.0編寫上位機程序
24、,接收溫度數據并儲存在數據庫中;接收數據時,要求能同步畫出溫度變化曲線;要求系統(tǒng)可查詢歷史溫度信息。基于VB6.0的數據采集系統(tǒng)在設計時主要應該滿足如下功能指標:測量溫度,并在PC機上顯示當前溫度;可測溫圍-55-125攝氏度,精度0.1攝氏度;每秒給上位機接受溫度數據;上位機接收溫度數據,并將數據、接收數據時間以與測溫批次等信息存儲到數據庫中;測溫批次可以自動生成也可手動輸入;接收溫度數據時,同步畫出溫度變化的曲線;可按批次以與測溫時間查詢溫度數據;將上位機軟件打包,生成安裝文件。3.2 總體設計方案溫度計電路設計總體設計方框圖如圖3.1,控制器采用單片機89C51,溫度傳感器采用DS182
25、0,以串口傳送數據實現溫度顯示通過串口與上位機PC通訊,把數據傳送給上位機,并用VB編寫的圖形界面把溫度的變化曲線顯示出來,并通過數據庫存儲,可查詢歷史溫度記錄。 圖3.1 溫度計電路總體設計方案主控制器:單片機AT89C51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產品的設計使用系統(tǒng)可用二節(jié)電池。溫度傳感器:采用DS1820溫度傳感器,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現912位的數字值讀數方式。PC實時顯示界面:顯示實時溫度數據變化曲線的界面,采用VB6.0編輯,在程序使用VB6.0的通用串口控件MSCOMM來對發(fā)送
26、到串口的數據進行采集處理。上位機定義好通信協(xié)議和波特率。3.3 系統(tǒng)軟件設計3.3.1 PC與單片機串口通信目前,在許多單片機應用系統(tǒng)中,上、下位機分工明確,作為下位機核心器件的單片機往往只負責數據的采集和通信,而上位機通常以基于圖形界面的Windows系統(tǒng)為操作平臺。為便于查詢和保存數據,還需要數據庫的支持,這種應用的核心是數據通信,它包括單片機和上位機之間、客戶端和服務器之間以與客戶端和客戶端之間的通信,而單片機和上位機之間數據通信則是整個系統(tǒng)的基礎。單片機和PC的通信是通過單片機的串口和PC串口之間的硬件連接實現的。線路說明,如圖3.2所示,數據通信的硬件上采用三線制,將單片機和PC串口
27、的3個引腳(RXD、TXD、GND)分別連在一起,即將PC和單片機的發(fā)送數據線TXD與接收數據RXD交叉連接,兩者的地線GND直接相連,而其他信號線如握手信號線均不用,采用軟件握手的方式,這樣既可以實現預定的任務又可以簡化電路設計。但由于單片機的TTL邏輯電平和RS-232C的電氣特性完全不同,RS-232C的邏輯0電平規(guī)定為+3+15V之間,邏輯1電平為315V之間,因此,在將PC和單片機的RXD和TXD交叉連接時必須進行電平轉換,這里使用的是MAX232電平轉換芯片。PC與單片機串口通信線路圖如下圖3.2所示。圖3.2 PC與單片機串口通信線路3.3.2上位機軟件設計上位機是應用VB進行編
28、寫的。它把下位機傳送上來是兩字節(jié)的十六進制數據進行解碼顯示出來當點擊采集溫度時,上位機向下位機發(fā)送采集溫度命令字符“1”,當下位機接受到命令時,向上位機發(fā)送數據。使用VB6.0編寫上位機程序,接收溫度數據并儲存在數據庫中;接收數據時,能同步畫出溫度變化的曲線,系統(tǒng)可查詢歷史溫度信息。具體在上位機程序里面體現出來,下圖為上位機工作流程圖。圖3.3 上位機工作流程圖數據采集實時程序設計思路:本程序設計使用VB6.0的通用串口控件MSComm來對發(fā)送到串口的數據進行采集處理。VB6.0的MSComm通信控件提供了一系列標準通信命令接口,它允許簡歷串口連接,可以連接到其他通信設備,還可以發(fā)送命令,進行
29、數據交換以與監(jiān)視和響應在通信過程中可能發(fā)生的各種錯誤和事件,從而可以用它創(chuàng)建全雙工、事件驅動的、高效實用的通信程序。一般說來,計算機都有一個或多個串行端口,它們依次為Com1、Com2、這些串口還提供了外部設備與PC進行數據傳輸和通信通道,這些串口在CPU和外設之間充當解釋器的角色。基本屬性與描述如下:Commport 設置或返回通信端口。Settings 以字符的形式設置或返回波特頻率、奇偶校驗、數據位和停止位。PortOpen 設置或返回通信端口的狀態(tài),也可以打開和關閉端口。Input 返回和刪除接收緩沖區(qū)中的字符。Output 將字符穿寫入發(fā)送緩沖區(qū)。CommEevent屬性為通信事件活
30、錯誤返回下列值之一,在該控件的對象庫中也可以找到這些常量。你只有首先要確定mscomm控件在system目錄下并且該控件已經被windows注冊,程序才能正常運行。 有數據向串口發(fā)過來時,程序可以將數據接收到,接收的數據是字符型的,那么數據轉化為數字型的,再將這個數據的大小作為畫圖的某一個點的縱坐標,橫坐標為數據的序號,將這些用線連起來就是一個曲線圖了,這個就是圖形顯示基本原理。查看原來的數據的原理也是這樣的,不同的地方就是,數據是從文件中來,同樣的也是將多個數據分成一個一個的,然后一個數據的大小就是畫圖的為一個點的縱坐標,橫坐標同樣為數據的序號,再將這些點用線連起來就是曲線圖。圖形能移動的原
31、理就是我們首先改變的只是數據,圖形并沒有變化,但圖形的形式是由這些數據來確定的,當數據發(fā)生變化后,我們通過刷新顯示區(qū)來變化的。VB編寫的實時顯示界面如圖3.4 所示,點擊查詢可查詢歷史溫度信息。圖3.4 實時溫度曲線顯示與查詢圖串口的波特率,串口號都采用下拉選擇的方式,在使用中可根據的情況選擇讀串口數據的原理是,只要在有數據向串口發(fā)數據來時,計算機就會自動將其數據寫到一個特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了。此外為了保存和查詢歷史溫度數據還要在VB中設計建立連接到Access數據庫的控件,Data控件是Visual Basic6.0中的一個置數據控件,可以通過設置Data控
32、件的connect、DatabaseName、RecordSource屬性實現對數據庫的連接和訪問。建立的數據庫文件和VB中創(chuàng)建的工程文件必須放在同一目錄下。 4程序設計4.1上位機程序在上位機VB程序的編寫中,最重要的是串口的初始化程序的接受觸發(fā)程序的設計,本設計使用VB6.0的通用串口控件MSComm來對發(fā)送到串口的數據進行采集處理。主要方法如下:串口設置:MSComm SetSettings(“波特率,校驗方式,數據位數,停止為數”)串口數據:MSComm InputMode(輸入模式設定)具體程序設計如下: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ā)現此串口或被占用,49,溫度采集系統(tǒng)Case ElseMsgBox沒有發(fā)現此串口或被占用,49,溫度采集系統(tǒng)End Selecterr.ClearEnd Sub 在VB程序中設置為串口1,輸入模式為二進制,且接收和發(fā)送一個字符就會觸發(fā)MSComml的OnComm接收觸發(fā)事件。波特率設置為9600,可以根據具體設計情況更改波特率的大小,但要與下位機的一致。程序中還編寫了錯誤處理程序,當串口被占用時會轉去執(zhí)行err程序,出現系統(tǒng)報錯。 接收觸發(fā)事件的處理,當每發(fā)送一次指令時,就會觸發(fā)OnComm事件,并返回數據串,通過計算獲取溫度測量值并顯示出來,具體設計程序如下: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讀取儀表返回數據串 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程序中,接收到的數據暫存在Inbyte()中,buffer為溫度數據緩存,接收到的數據按16進制的格式放入緩沖中,便于之后的數據處理。此外程序還添加了接收溫度數據的判定,接收到的溫度數據應為兩字節(jié),且低位在前,當接收到的數據不是兩字節(jié)時,表示接收錯誤,跳出此程序。為了在VB界面能夠顯示當前的溫度值,需要將采集的兩字節(jié)溫度數據轉化為十進制測量數據,轉化程序如下: 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 保存數據 Data_save (datatemp(num)此外,本VB程序還做了一定的功能擴展,能夠顯示歷史溫度的最大值和最小值以與平均值,還可通過下拉方式選擇合適的波特率、串口和采樣間隔時間。采集的溫度數據還通過Data控件存入數據庫中。在設計過程中可以用
38、虛擬串口和串口調試助手對所設計的程序進行仿真,看是否達到設計要求。整個VB界面與數據庫程序的編寫見附錄所示。5 結 論隨著科技的發(fā)展,在各個領域都要用到數據采集系統(tǒng),其中就包括最普遍的溫度的數據采集。傳統(tǒng)的溫度采集方法費時且精度較差,而如今各個行業(yè)對溫度數據的要求越來越高,如科研實驗室,因此新型的數字溫度計大量出現,其中最普遍的是使用傳感器和單片機組成采集電路就可以獲得較高的精度要求。在這種背景下,選擇基于VB6.0的數據采集系統(tǒng)這個課題具有很大的現實意義,用VB編寫上位機程序,在PC上通過圖形界面就能控制下位機即單片機采集溫度數據信號,設計直觀大方,使用DS18B20高靈敏度的溫度傳感器采集
39、溫度數據,再用AT89C51處理數據,在PC界面顯示當前溫度,并且可以通過串口向上位機傳送數據,顯示實時溫度曲線和把數據存入數據庫中,方便查詢歷史溫度記錄。讀數方便,測量圍廣,測溫準確。硬件電路較簡單,所以軟件設計較復雜,DS18B20只有一個數據口,所以它的讀寫程序對時序有很高的要求。在整個采集系統(tǒng)中,包括溫度采集程序串口通信程序,和上位機的程序,數據庫等等兒個部分,為了避免干擾,當上位機VB界面點擊“采集溫度”時,向下位機發(fā)送特定字符,當下位機識別正確字符,才將溫度數據傳送給上位機。在設計過程中,對整個系統(tǒng)硬件和軟件的分析,采用模塊化程序設計的方法,流程圖分析設計思路,將系統(tǒng)分成幾個模塊,
40、最終進行整合,從而實現了基于VB6.0的數據采集系統(tǒng)的設計。在畢業(yè)設計的過程中,針對所要設計的課題,我更加系統(tǒng)的學習了VB6.0語言和C語言,能夠較熟練的運用偉福、PROTEUS和VB6.0等設計軟件,使我了解了測溫的原理和相關領域的知識。就個人而言,在這次畢業(yè)設計鍛煉了個人意志以與在克服困難的毅力,培養(yǎng)了我在一定的壓力下進行研究和設計的心理素質,獨立處理問題的能路,提高了我查找運用各種參考資料以與與其他人溝通交流解決問題的能力。此外,整個設計過程中由于指導老師的幫助下,開拓了我的思維,提高了將所學知識學以致用的能力。附錄 上位機程序X定義窗體級變量在顯示、繪圖、報警等過程中使用Dim dat
41、atemp(200) As Single / 用于存儲溫度采樣值Dim num As Integera /用于存儲采樣值個數Dim counter As Integer /采樣個數計數器 Dim mark As Boolean, /暫停標志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 /接收個數判斷Timer1 Enabled=False /接收完畢Shpstate.EiIIColor= &H80FF&Exit SubEnd If讀取儀表返回數據串Select Case.MSComml mEventCase comEvReceiveCount=MSCommI.InBufferCount /接收溫度數據個數,兩字節(jié),低位在前Inbyte=MSComml.Input /接收溫度數據If enunt 2
43、ThenExit Sub /不是兩字節(jié),表示接收錯誤,跳出程序counter= counter+ 1 /基數器加1For i=LBound(lnbyte) To UBound(Inbyte) /把接收的數據安十六進制格式放入緩沖中buffer =buffer +Hex(lnbyte(i)Next iEnd Select獲取十進制測量數據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保存數據Data_save (datatemp(num)獲取十六進制測量數據 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進制顯示.保留一位小數 Num=num + 1 Call cal / 調用計算極值、平均值子程序 Call draw /調用繪曲線過程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 /設置線寬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重新采集數據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 /數據表格初始化End Sub數據表格初始化Public Sub tabinit()Grid.Cols=2 /兩列Grid.Rows=Txttimes.Text+1
49、/Rows的值必須至少比FixedRows的值大一Grid.ColWidth(0)=650 /設置表格寬度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ā)送采集標志每隔xms向儀表發(fā)送讀數據命令串每臺儀表有一個儀表號,PC機通過儀表號來識別網上的
50、多臺儀表程序中儀表號(即地址代號)要與儀表設定值一致,否則不能返回數據。Private Sub Timert_Timer()Dim a as VariantA=1MSComml.0utput=a /發(fā)送開始標志End Sub卸載窗體Private Sub Cmdquit_ClickOIf MSComm1.Port0pen =True Then MSComm 1.Port0pen = False/關閉串口Unload Me /卸載窗體EndEnd Sub串口設置Sub setCom()On Error GoTo err:MSComml mport=Val(Mid(Txtcom.Text, 4,
51、1) /設置串口MSComml.Settings =TxtBaudRate.Text & ,n,8,2 /設置波特率IfMSComml.PortOpen=False Then MSComml.PortOpen=True /打開串口Timerl.Enabled=True /開定時器Shpstate.FillColor= &HFF&Exit Suberr:Select Case err.NumberCase comPortAlready0pen /如果串口已經打開,則提示MsgBox沒有發(fā)現此串口或被占用,41, 溫度采集系統(tǒng),Case ElseMsgBox 沒有發(fā)現此串口或被占用,49, N度采
52、集系統(tǒng)End SelectShpstate.FillColor=&H808080 /填充停止狀態(tài)Timerl.Enabled=False /關閉定時器CmdStart.Caption =開始采集CmdStop.Enabled=FalsePicturel.ClsCall renew /初始化表格Call ScaleSys /建立坐標系err ClearEnd Sub建立圖像坐標系Sub ScateSys() /坐標系Picturel.AutoRedraw=True /自動重繪有效Picturel.DrawWidth= 1 /線寬1個像素Picturel.ScaleMode=vbPixels /像
53、素為單位Picturel.Scale (0, 125)-(200,-50) /坐標系Picturel.DrawStyle=vbDot /點線橫坐標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)縱坐標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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程資料主管培訓
- 一年級信息技術上冊 信息和信息處理工具教學設計 人教新課標版
- 六年級英語下冊 Unit 1 A family outing第2課時教學設計 湘少版
- 人教部編版六年級上冊書湖陰先生壁教學設計
- 人教版小學數學四年級上冊教學教案設計歸納總結6
- 一世龍門-【2022年暑假預習】云名著《世說新語》之“德行”卷
- 全國人教版初中信息技術八年級上冊第二單元第10課《設置循環(huán)播放的背景音樂》教學設計
- 人教版 (新課標)必修3&4Unit 2 Working the land教案及反思
- 九年級體育 技巧 足球教學設計2
- 人美版七年級下冊5.色彩的調和教學設計
- 壓力管道設計與審批人員考試題電子版-5
- 護理組長經驗交流
- 2024年10月自考00341公文寫作與處理試題及答案
- 第二單元 第八課 巧用藍牙做工具 說課稿2024-2025學年人教版(2024)初中信息科技八年級上冊
- 腰椎小關節(jié)紊亂癥的護理
- 《新時代提升基層治理能力的根本路徑》課件
- 剩余工程轉讓協(xié)議書
- 老年慢病常見意外與防范
- 【公開課課件】《農業(yè)區(qū)位因素及其變化》
- 2024屆清華大學強基計劃數學學科筆試試題(附答案)
- (必會)軍隊文職(數學1)近年考試真題題庫(含答案解析)
評論
0/150
提交評論