劉 健,龐興龍
LIU Jian1, PANG Xing-long2
(1.北華航天工業學院 機械工程系,廊坊 065000 2.廊坊市環境保護局,廊坊 065000)
糧食儲備直接影響著國家的經濟。檢測糧倉溫度,及時發現溫度變化進行調整,以減少糧食損失是糧倉管理的重點。傳統的通過人工使用溫度計測量后再用設備加熱、降溫等來控制溫度的方法,速度慢、準確度低,不易及時發現溫度變化而會導致糧食大面積的變質,損失很大。隨著計算機的普及和單片機功能的不斷強大,由于操作簡單、測量準確、價格低廉等優點而備受關注,被帶入到控制檢測行業中,推動了這一行業的改造、更新替換。本文就是利用單片機和PC機實現自動控制糧倉溫度,大大提高了溫度技術指標,具有廣闊的發展前景。
本設計的下位機采用單片機AT89S51八位機作為微處理單元控制,采集糧倉溫度。溫度通過轉換保存到P1口。上位機選擇PC機最合適,上下位機通過串口進行聯絡,下位機傳送采集數據給上位機,上位機接收后,分析、處理并發送命令給下位機,實現人機交互。其中上位機選用VB6.0為開發軟件,利用MSComm控件實現和下位機的通信,充分發揮兩者的優點。又因為單片機和PC的串口電平不同,需要通過MAX232芯片轉換單片機電平,整個設計的系統結構圖如圖1所示。

圖1 系統結構圖
單片機是溫度檢測系統的核心部分,因此選擇單片機至關重要。目前國內MCS-51系列單片機是主流,它性價比高、技術成熟,迅速占領了市場。
單片機是把主要零件都集成到一塊芯片,縮短了數據的傳送距離,加快速度,可靠性更高,抗干擾能力強。在測控系統中,AT89S51低價,I/O口又多,程序空間大,是最理想的選擇。AT89S51是高性能、低功耗,CMOS8位的單片機,含有4Kbytes可編程的Flash只讀程序存儲器,它兼容標準8051指令系統及引腳。它既可以在線編程也通用8位微處理器在芯片中,被靈活地用在各種控制領域里。圖2為AT89S51引腳圖。
各引腳功能說明:
VCC:電源+5V輸入。
VSS:電源地端。
XTAL1:系統時鐘的反相放大器輸入端。
XTAL2:時鐘的反相放大器輸出端。
RESET:復位。重置引腳,對引腳電平提升到高電平并保持兩個機器周期以上。

圖2 AT89S51引腳圖
EA/Vpp:外部訪問。引腳接低電平后,系統用外部程序代碼執行。
ALE/PROG:地址鎖存器啟用信號。觸發外部8位鎖存器,將地址總線(A0~A7)鎖入。輸出時鐘或定時。:啟用程序儲存,利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM。
PORT0(P0.0~P0.7):端口0是一個8位雙向I/O口, P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O口(P1、P2、P3)內部有一提升電路,P0在做I/O時推動8個LS的TTL負載。編程時,p0口接收指令,校驗時輸出指令字節,外接上拉電阻。
PORT1(P1.0~P1.7):和端口0一樣,輸出緩沖器推動4個TTL負載。
PORT2(P2.0~P2.7):P2除了當一般I/O口外,如果AT89S51擴充外接程序存儲器或數據存儲器時,也提供地址總線的高字節A8~A15,這時P2不能當I/O口用。
PORT3(P3.0~P3.7):P3除了具有一般雙向I/O端口外,還多工具有特殊功能,如串行口通信、外部中斷控制、外部數據的讀取或寫入控制等。
P3.0:RXD,串行輸入。
P3.1:TXD,串行輸出。
P3.2:INT0,外部中斷0輸入。
P3.3:INT1,外部中斷1輸入。
P3.4:T0,計時計數器0輸入。
P3.5:T1,計時計數器1輸入。
P3.6:WR:寫入外部數據存儲器。
P3.7:RD,讀取信號。
Max232是一種把電腦的串行口rs232信號電平(-10,+10v)轉換為單片機所用到的TTL信號點平(0,+5)的芯片。由于單片機和PC機串口的工作電平不一致,就需要MAX232芯片把下位機的電平轉換成PC機的RS 232電平。圖3為max232引腳圖。
Max232芯片的內部結構分三部分:
第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,供給串口RS-232電平。
第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。
其中第一數據通道是13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)。第二數據通道是8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)。
TTL/CMOS數據從T1IN、T2IN輸入轉換成RS-232數據從T1OUT、T2OUT口送到電腦; RS-232數據從R1IN、R2IN輸入轉換成TTL/CMOS數據后從R1OUT、R2OUT輸出。
第三部分是供電。15腳DNG、16腳VCC(+5v)。

圖3 max232引腳圖
通過前兩部分介紹,可以得到如圖4的單片機和串口連通圖。圖中通過MAX232芯片轉換電平實現PC機和AT89S51串行通信,采用PC機和標準插座連通。MAX232電平轉換,將單片機TXD端輸出的TTL電平轉換成PC機的RS-232C標準電平,由MAX232的14引腳通過9針接口送到PC機; PC機輸出的標準電平,從 MAX232的13引腳輸入轉換成TTL電平,由單片機的RXD端負責接收。

圖4 單片機和串口連通
Visual Basic 是由微軟公司開發的事件驅動編程語言。VB源于BASIC編程語言。它擁有圖形界面和快速應用開發系統,連接數據庫方便,它提供串口通信控件,開發串行通信程序很方便。本文選擇VB為上位機軟件開發平臺,選擇MSComm控件完成上下位機通信。上位機的圖形顯示、處理等優點和下位機的實時數據采集都能充分體現。MSComm控件只要用戶編寫很少量的代碼就能實現通信軟件的開發。
MSComm控件是串行ActiveX控件,通過串口發送和接收數據,提供串行功能給應用程序。MSComm控件的具備如下特性:
1)CommPort屬性設置通信端口。CommPort屬性值設成1~16任意數(默認1)。
2)Settings屬性設置初始化參數。字符串形式返回4個參數。格式:“BBBB,P,D,S”。
3)Portopen屬性設置通信串口的開關狀態,True時打開串口; False時關閉串口,并清空接收和發送緩沖區。
4)Input屬性讀取數據從緩沖區。
5)Output屬性寫入數據向緩沖區。
6)InputMode屬性讀取或設置讀取數據格式, InputMode=O表示格式為文字;InputMode=1為二進制。
上位機主要任務是數據的接收和處理、發送控制命令、計算和顯示等功能。其程序分為:設計界面、初始化、數據通信和數據處理。
上位機通信程序分為數據的發送和接收,分別寫在兩個Click事件下。上位機發送命令程序代碼:
Private Sub cmdstart_Click()
Dim outdata(1)As Byte
Outdata(1)=&AA
Buf = “ ”
Buf=MSComm1.input
MSComm1.output=outdata
End sub
上位機接收命令程序代碼:
Private sub cmdreceive_click()
Dim inbuf() as byte
Inbuf=MSComm1.input
Num=Ubound(inbuf)
Redim indata(0 To num) As Integer
For i=0 to num
Indata(i)=inbuf(i)
Next i
Fot j=0 To num
MSFlexGrid1.Col=0
MSFlexGrid1.row=j+1
M S F l e x G r i d 1 .Text=FormatMYM(indata(j).”0.0”)
Next j
End sub
本文從硬件和軟件兩方面闡述了糧倉溫度的測控系統。該系統以單片機AT89S51芯片為核心部件,配合了Max232電平轉換實現和上位機PC機的連接和傳輸數據。選擇了Visual Basic的MSComm控件來實現軟件方面上下位機的通信。該系統成本低、操作簡單、性能穩定,非常適合需要隨時對溫度監測的糧倉使用。
[1] 賈好來.MCS-51單片機原理及應用[M].北京:機械工業出版社,2006.
[2] 李玉峰.倪虹霞.MCS-51系列單片機原理與接口技術[M].北京:人民郵電出版社,2004.
[3] 高峰.單片微型計算機與接口技術[M].北京:科學出版社,2003.
[4] 林海軍,楊進寶,汪魯才,楊艷華. 基于復合RBFNN的數字溫度傳感器誤差補償方法[J].傳感技術學報,2011,(02).
[5] 李自菊,雷正保,曾雁.基于制動系統的CST電控系統智能設計[J].交通科學與工程,2010,(02).