VB上位机与单片机

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB 上位机与单片机

转速测量系统

通过单片机采集转速数据,通过USB口发送到PC,并产生曲线图。

单片机程序:

//---------------------串口初始化

----------------------------

voidinitSerial()

{

TMOD=0x20;

//定时器1置为方式2

TH1=0xfd;

TL1=0xfd;

//设置波特率位9600

SCON=0x50; //设定串行口工作方式

PCON&=0x00; //波特率不倍增

TR1=1;

REN=1;

SM0=0;

SM1=1;

EA=1;

ES=1;

}

//---------------------------发送程序

--------------------------------------------- voidsend_char(void)

//传送十六位的蝯转速数据,低位在前

{

unsignedi=0;

while(i;199Then

'接收个数判断

Callrenew

'接收完毕

EndIf

'读取仪表返回数据串

mEvent

CasecomEvReceive

Inbyte=MSComm1.Input

'接收转速数据

Fori=LBound(Inbyte)ToUBound(Inbyte) '把接收的数据安十六进制格式放入缓冲中

buffer=buffer+Hex(Inbyte(i))+Chr(32)

Nexti

EndSelect

'获取十进制测量数据

IfLen(Trim(Mid(buffer,1,2)))=1Then

datazhuansu(num)=Val("&H"&Mid(buffer,3, 3)&Str("0")&Mid(buffer,1,2))*0.0625

Else

datazhuansu(num)=Val("&H"&Mid(buffer,3, 3)&Mid(buffer,1,2))*0.0625

EndIf

'获取十六进制测量数据

IfLen(Trim(Mid(buffer,1,2)))=1Then

datasu2a=Str("0")&Trim(Mid(buffer,1,2))

Else

datasu2a=Mid(buffer,1,2)

EndIf

IfLen(Trim(Mid(buffer,4,2)))=1Then

datasu2b=Str("0")&Trim(Mid(buffer,3,2)) Else

datasu2b=Mid(buffer,4,2)

EndIf

datasu2=datasu2a&""&datasu2b

'显示测量转速值

Ifdatazhuansu(num);0Then

zhuansuText=datasu2

Calldraw

'调用绘曲线过程

EndIf

EndSub

'----------------------------------------------- '

转速曲线绘制

'----------------------------------------------- '绘制转速实时变化曲线

PrivateSubdraw()

Picture1.DrawWidth=2

'设置线宽

Picture1.DrawStyle=vbSolid

Fori=1Tonum-1

X1=(i-1):Y1=datazhuansu(i-1)

X2=i:Y2=datazhuansu(i)

Picture1.Line(X1,Y1)-(X2,Y2),QBColor(0) '绘制转速曲线

Nexti

EndSub

'----------------------------------------------- '

刷新绘图区

'----------------------------------------------- PrivateSubrenew()

Ifnum=0ThenExitSub

zhuansuText.Text="":

Picture1.Cls

CallScaleSys

Fori=0Tonum-1

datazhuansu(i)=0

Nexti

num=0

Counter=0

EndSub

'----------------------------------------------- '

定时发送采集标志

'----------------------------------------------- '每隔xms向仪表发送读数据命令串

'每台仪表有一个仪表号,PC机通过仪表号来识别网上

的多台仪表

'程序中仪表号(即地址代号)要与仪表设定值一致,否则不能返回数据。

PrivateSubTimer1_Timer()

MSComm1.Output="s"

'发送开始标志

EndSub

'----------------------------------------------- '

卸载窗体

'----------------------------------------------- PrivateSubCmdquit_Click()

UnloadMe

'卸载窗体

EndSub

'-----------------------------------------------

相关文档
最新文档