摘 要:本文介紹了一種實用的溫度數(shù)據(jù)采集系統(tǒng),在采集系統(tǒng)實現(xiàn)上,采用了性價比較好的AT89C51單片機為主的采集電路,將更多的任務(wù)由軟件實現(xiàn),從而減小了單片機采集電路的體積,實現(xiàn)盡可能的系統(tǒng)最小化。該系統(tǒng)以AT89C51單片機為核心,實現(xiàn)了對溫度信號的采集、放大、A/D轉(zhuǎn)換以及顯示。在信息轉(zhuǎn)送PC機問題上,采用串口中斷,利用新型轉(zhuǎn)換芯片MAX232。另外,PC機采用VB編程,VB提供了強大功能的通信控件Mscomm,該控件可設(shè)置串行通信的數(shù)據(jù)發(fā)送和接收,對串口狀態(tài)及串口通信的信息格式和協(xié)議進(jìn)行設(shè)置。
關(guān)鍵詞:單片機;PC機;RS-232串行接口;轉(zhuǎn)換芯片MAX232
中圖分類號:TP274 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-7712 (2014) 02-0000-02
溫度數(shù)據(jù)采集系統(tǒng)是一種以單片機為基礎(chǔ),通過串行通信與上位機進(jìn)行數(shù)據(jù)傳輸,達(dá)到對溫度的采集與監(jiān)控。它已廣泛地應(yīng)用到測量、監(jiān)測、控制、診斷、科學(xué)試驗等各個領(lǐng)域中。近二十年來,溫度數(shù)據(jù)采集技術(shù)由于采用了微機等一系列新技術(shù),得到了飛速的發(fā)展,在形式上由原來的專用的測試儀器到現(xiàn)在的使用微機的虛擬儀器;采集的分辨率從4位、8位到現(xiàn)在的24位分辨率;采集的速率從幾KPS到現(xiàn)在最高速率已達(dá)2GPS,記錄設(shè)備從原來的手記、紙帶的模擬或數(shù)字記錄到磁帶記錄,到現(xiàn)在的硬盤記錄、磁光盤記錄。所有這些都是不斷地采用新技術(shù)的結(jié)果,所以溫度數(shù)據(jù)采集系統(tǒng)能夠使我們的工作更方便更有效的進(jìn)行,對工業(yè)的發(fā)展起到顯著的作用[1]。
本文主要的工作就是以單片機為核心,利用串口通訊的知識,實現(xiàn)對溫度數(shù)據(jù)的采集和監(jiān)控。串行端口的溫度數(shù)據(jù)采集系統(tǒng)主要由下位機系統(tǒng)和上位機系統(tǒng)兩部分組成。下位機系統(tǒng)完成的主要功能是用溫度傳感器把溫度值信號變換成0~5V的模擬信號,然后再經(jīng)過信號調(diào)理,放大,A/D轉(zhuǎn)換將其轉(zhuǎn)換為數(shù)據(jù)信號,通過串口向上位機傳送。上位機系統(tǒng)主要完成向各下位機發(fā)出召測命令,并把接收來的數(shù)據(jù)進(jìn)行處理,最后通過VB語言對Mscomm控件進(jìn)行編程實現(xiàn)智能儀表的集中監(jiān)測[2]。
一、系統(tǒng)總體設(shè)計
溫度數(shù)據(jù)采集系統(tǒng)原理框圖如圖1所示。溫度傳感器輸出的模擬信號經(jīng)信號調(diào)理電路后被放大,再由A/D轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字量,傳送給單片機,并在LED上進(jìn)行顯示。同時數(shù)據(jù)可通過RS-232串行接口傳送到上位機,通過系統(tǒng)圖形用戶界面來達(dá)到對溫度的采集與監(jiān)控。
在溫度數(shù)據(jù)采集系統(tǒng)實現(xiàn)上,采用了性價比較好的89C51單片機為主的采集電路,且將一些任務(wù)由軟件實現(xiàn),這樣可以用更少的端口實現(xiàn)數(shù)據(jù)外存儲,解決了單片機外擴(kuò)存儲器線路復(fù)雜問題,從而減小了單片機采集電路的體積,實現(xiàn)盡可能的系統(tǒng)最小化,以便于攜帶。在信息轉(zhuǎn)送PC機問題上,采用串口中斷,利用轉(zhuǎn)換芯片MAX232,使得TTL電平到RS232電平的轉(zhuǎn)換電路更加簡單實用,單片機采集系統(tǒng)的體積相應(yīng)減小[3]。
二、系統(tǒng)硬件設(shè)計
(一)單片機的選擇。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案[4]。
(二)系統(tǒng)采集模塊
1.ADC0808簡介:經(jīng)過信號調(diào)理電路輸出的電信號,己經(jīng)是0~5V的標(biāo)準(zhǔn)信號,而且這些信號與溫度具有良好的線性關(guān)系,因此輸出的不同電壓信號可以代表不同溫度。為了使各項溫度數(shù)值能夠顯示,必須先把信號調(diào)理電路輸出的標(biāo)準(zhǔn)模擬信號轉(zhuǎn)化成數(shù)字信號,以便送入單片機進(jìn)行數(shù)據(jù)處理與運算,使經(jīng)過單片機處理后的數(shù)據(jù)與實際測量的溫度相對應(yīng)。
2.A/D轉(zhuǎn)換電路及擴(kuò)展:AT89C51單片機芯片內(nèi)部集成了諸如定時器、串行口等功能部件,但是在應(yīng)用系統(tǒng)中,很多時候片內(nèi)資源不夠用。這時就需要在單片機芯片外部擴(kuò)展必要的存儲器以及其他一些I/O端口,才能滿足實際需要。本設(shè)計采用可編程I/O接口芯片Intel 8255A進(jìn)行端口擴(kuò)展[5]。
3.通訊電路:在串行數(shù)據(jù)傳輸過程中,由于傳輸距離、現(xiàn)場狀況等諸多因素可能引起信息的出錯,也可能使傳輸?shù)臄?shù)據(jù)發(fā)生位錯誤,在數(shù)據(jù)通信時發(fā)生無法預(yù)測的錯誤。為了使系統(tǒng)能夠可靠、穩(wěn)定地通信,在通信時采用數(shù)據(jù)校驗的方法進(jìn)行糾錯。通信協(xié)議采用基本的RS - 232,用CRC校驗,提供單片機串行通信的數(shù)據(jù)可靠性。
三、下位機軟件設(shè)計
溫度數(shù)據(jù)采集系統(tǒng)的設(shè)計除了硬件電路以外,還需要軟件的設(shè)計,這樣整個系統(tǒng)才能夠按照要求很好的執(zhí)行,所以軟件設(shè)計也是很重要的。本設(shè)計中選用的單片機語言主要是匯編語言。下位機程序采用模塊化結(jié)構(gòu),匯編語言編寫。軟件設(shè)計主要包括2個部分:一是溫度數(shù)據(jù)的采樣、A/D轉(zhuǎn)換、鍵盤處理和LED顯示;二是下位機與上位機之間的通訊,通訊的目的僅在于將數(shù)據(jù)上傳到PC機中,程序設(shè)計采用的是查詢法。
(一)主程序設(shè)計。溫度數(shù)據(jù)采集系統(tǒng)的設(shè)計除了硬件電路以外,還需要軟件的設(shè)計,這樣整個系統(tǒng)才能夠按照要求很好的執(zhí)行,所以軟件設(shè)計也是很重要的。本設(shè)計中選用的單片機語言主要是匯編語言。
下位機程序采用模塊化結(jié)構(gòu),匯編語言編寫。軟件設(shè)計主要包括2個部分:一是溫度數(shù)據(jù)的采樣、A/D轉(zhuǎn)換、鍵盤處理和LED顯示;二是下位機與上位機之間的通訊,通訊的目的僅在于將數(shù)據(jù)上傳到PC機中,程序設(shè)計采用的是查詢法。單片機在上電初始化后,首先進(jìn)行各功能部件的初始化,主要包括對主機CPU等芯片進(jìn)行模式和初始狀態(tài)的設(shè)置,即對中斷的初始化、串口的初始化、液晶、時鐘芯片和數(shù)據(jù)存儲器等的初始化。單片機主程序完成的功能就是響應(yīng)按鍵、刷新顯示,數(shù)據(jù)采集,存儲及與上位機通訊,通過判斷工作方式控制字,完成相應(yīng)的功能[6]。
(二)系統(tǒng)子程序設(shè)計
1.A/D轉(zhuǎn)換子程序設(shè)計。A/D轉(zhuǎn)換子程序用來控制對ADC0809模擬輸入電壓的模數(shù)轉(zhuǎn)換,并將對應(yīng)的數(shù)值移入70H內(nèi)存單元。
2.BCD轉(zhuǎn)換子程序設(shè)計。由于ADC0808是一個8位精度的A/D轉(zhuǎn)換器,它最終轉(zhuǎn)換成的數(shù)字量結(jié)果都是0~255的整數(shù)值,因此,必須把它們轉(zhuǎn)換成代表實際溫度信號的數(shù)值。由于被測溫度的實際值與傳感器輸出信號以及信號調(diào)理后的信號均有良好的線性關(guān)系。
這里的整數(shù)值是指經(jīng)過A/D轉(zhuǎn)換后的數(shù)字量,實際參數(shù)值由整數(shù)部分和小數(shù)部分組成,而且都是二進(jìn)制數(shù)。然后,分別對上式計算的結(jié)果,即實際壓力值的整數(shù)部分和小數(shù)部分進(jìn)行BCD碼轉(zhuǎn)換,再把代表實際溫度值的這些BCD碼存入單片機內(nèi)對應(yīng)的RAM單元,以便在LED顯示子程序中直接取出BCD碼,在LED上顯示十進(jìn)制數(shù)值。
3.LED顯示子程序設(shè)計。本設(shè)計采用四個LED顯示溫度數(shù)據(jù)。顯示子程序采用動態(tài)掃描法實現(xiàn)四位數(shù)碼管的數(shù)值顯示。測量所得的轉(zhuǎn)換數(shù)據(jù)存放在70H內(nèi)存單元中,測量數(shù)據(jù)在顯示時需轉(zhuǎn)換成十進(jìn)制BCD碼放在71H~74H單元中[7]。
四、上位機軟件設(shè)計
(一)VB及其常用控件Mscomm的編程方法。Visual Basic(簡稱VB)是一種在窗口操作平臺上的視覺開發(fā)工具,使得開發(fā)更方便快捷。VB提供了串行通信控件,讓開發(fā)者可以方便快捷地開發(fā)串行通信程序。利用計算機進(jìn)行串口通訊是自動化將來發(fā)展的一種方向。
串口通訊作為一種古老而又靈活的通訊方式,被廣泛地應(yīng)用于PC間的通訊以及PC和單片機之間的通訊之中。提到串口通訊的編程,人們往往立刻想到C、匯編等對系統(tǒng)底層操作支持較好的編程語言以及大串繁瑣的代碼。VB開發(fā)串口通信程序常用的方法是利用VB本身提供的控件Mscomm來實現(xiàn),該控件隱藏了大部分串口通信的底層運行過程和許多煩瑣的處理過程,將串口封裝起來,容易操作與實現(xiàn)。同時支持查詢方法和事件驅(qū)動通訊的機制。
(二)系統(tǒng)圖形用戶界面設(shè)計。利用VB中的Mscomm控件進(jìn)行串口通信是一種方便和快捷的方式,主要利用該控件的Input方法從串口中讀取數(shù)據(jù),利用Output方法向串口寫數(shù)據(jù)。在自動化過程中,從串口讀寫數(shù)據(jù)是最基礎(chǔ)的工作,利用VB可以非常方便和快速地從串口中讀取數(shù)據(jù),而且VB界面比較友好,因此利用VB編寫自動化控制程序是非常方便和有效的。
為了更方便地實時了解數(shù)據(jù)采集的情況,我們把從單片機讀來的數(shù)據(jù)分別賦給數(shù)組,然后描繪出波形曲線。
1.計算機的串行通訊程序。首先開啟一個VB項目,并在窗體上安排一個Mscomm控件,作為串行通訊的信道。按下F4調(diào)出屬性窗口,變量Comport屬性位2,另外將Rthreshold屬性設(shè)置為1,意思就是只要外界傳送任何字符串,隨即引發(fā)事件。設(shè)置一個Picturebox對象,把由單片機傳送來的數(shù)據(jù)以線條方式繪制在此圖片框控件上。按下F4調(diào)出屬性窗口,其Name屬性改為“Graph1”。
Mscomm控件支持以文本和二進(jìn)制格式傳輸數(shù)據(jù),由于下位機是單片機,處理二進(jìn)制數(shù)據(jù)較為方便,因此本例中以二進(jìn)制格式發(fā)送和接收數(shù)據(jù),定義兩個Byte類型的動態(tài)數(shù)組來存放和接收數(shù)據(jù),在接收數(shù)據(jù)時采用事件驅(qū)動法,當(dāng)接收緩沖區(qū)有Rthreshold個數(shù)據(jù)時,引起OnComm事件。
2.單片機的串行通訊程序。80C51單片機從外部采集到的一組數(shù)據(jù),存在片內(nèi)RAM20H~3DH區(qū)域,要求將這個數(shù)據(jù)塊傳送給PC機,為了保證傳送的正確,傳送前由單片機先向PC發(fā)送數(shù)據(jù)#55H,PC機接收到后,向單片機回送數(shù)據(jù)#0AAH,經(jīng)檢驗正確后,單片機才開始向PC機傳送數(shù)據(jù)。
參考文獻(xiàn)
[1]李麗敏,張玲玉,解浩.單片機溫度測控系統(tǒng)設(shè)計[J].佳木斯大學(xué)學(xué)報,2008(01).
[2]李曉妮.單片機溫度控制系統(tǒng)的設(shè)計[J].九江學(xué)院學(xué)報,2005(03).
[3]洪家平.WINDOWS環(huán)境下PC機與單片機的通信[J].微計算機信息,2005(03).
[4]劉興生,孫延明,龔祝平.制陶窯爐的溫度數(shù)據(jù)采集系統(tǒng)[J].機電工程技術(shù),2006(08).
[5]陳杰,黃鴻.傳感器與檢測技術(shù)[M].北京:高等教育出版社,2002.
[6]劉華俊.最新傳感器應(yīng)用設(shè)計與制造[M].北京:中國科學(xué)技術(shù)文獻(xiàn)出版社,2006.
[7]趙曉安,趙秀平.計算機硬件技術(shù)基礎(chǔ)教程-MCS-51單片機原理及應(yīng)用[M].天津:天津大學(xué)出版社,2006.
[作者簡介]韓春樂(1988.01-),男,天津人,控制工程碩士在讀,從事計算機管理與控制綜合自動化研究。