基于單片機(jī)的高精度稱重系統(tǒng)的研制
2.2 上位機(jī)軟件編程
本系統(tǒng)采用MSComm控件實(shí)現(xiàn)VB與單片機(jī)之間的數(shù)據(jù)交換,具有程序?qū)崿F(xiàn)簡(jiǎn)便,程序模塊化,工作可靠等優(yōu)點(diǎn),并能滿足多數(shù)情況下的工控要求。使用MSComm控件主要是通過(guò)事件來(lái)處理串行口的交互??丶腛nComm事件負(fù)責(zé)捕獲或處理這些通訊事件和通訊錯(cuò)誤。
2.2.1 MSCOMM屬性設(shè)置
MSComml.CommPort=1 '設(shè)置端口1
MSComml.Settings="2400,N,8,1" '2400 b/s,無(wú)校驗(yàn),8位數(shù)據(jù)位,1位停止位
MSComml.InputLen=1 '一次從緩沖區(qū)中接收一個(gè)字節(jié)
MSComml.InBufferSize=1024 '接口收緩沖區(qū)大小
MSComml.PortOpen=Ture '打開端口
MSComml.Rthreshold=1 '接收一個(gè)字節(jié)觸發(fā)一次ONCOMM事件
2.2.2 ONCOMM事件響應(yīng)程序
Private Sub MSComml_OnComm()
Dim buffer As Variant '由緩沖區(qū)接收到的數(shù)據(jù)用Variant格式接收
Dim arr()As Byte '定義二進(jìn)制數(shù)組
Dim i As Integer
Dim receivester As string '定義輸出到接收文本框中的字符變量
'下段程序是comEvReceive事件觸發(fā)后,將數(shù)據(jù)存入相應(yīng)的數(shù)組,并在接收文本框中顯示
Select Case MSComml.CommEvent CasecomEvReceive buffer=MSComml.Inpute
arr=buffer接收緩沖區(qū)內(nèi)數(shù)據(jù)variant變量?jī)?nèi)
arr=buffer '轉(zhuǎn)換為二進(jìn)制數(shù)并送入相應(yīng)數(shù)組
For i=1to8
receivester arr(i)
Text1.Text=Text1.Text&receiverstr&"."
'在接收框中顯示文本
Next i
End Select
End Sub
3 結(jié)束語(yǔ)
本重量測(cè)量系統(tǒng),充分發(fā)揮了AT89S52單片機(jī)強(qiáng)大的控制能力和計(jì)算機(jī)的數(shù)據(jù)處理能力,通過(guò)稱重傳感器和24位分辨率的A/D轉(zhuǎn)換器實(shí)現(xiàn)了對(duì)重量的高精度測(cè)量。系統(tǒng)在電子秤的實(shí)際應(yīng)用中收到了滿意的效果。
參考文獻(xiàn):
[1].AT89S52datasheethttp://www.dzsc.com/datasheet/AT89S52_970343.html.
[2].AD7714datasheethttp://www.dzsc.com/datasheet/AD7714_249868.html.
[3].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[4].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[5].MAX232datasheethttp://www.dzsc.com/datasheet/MAX232_1074207.html.
[6].ISD1400datasheethttp://www.dzsc.com/datasheet/ISD1400_409579.html.
評(píng)論