我想做一个基于VB6.0和51单片机的超声波液位计,单片机通过超声波测距模块测距,并通过URAT串口和上位机通讯,VB编写上位机程序,将液位值和曲线显示在上位机程序界面中。 因为本人VB初学,之前也没有上下位机通讯编程的经验,在CSDN和pudn上面下载的类似... 我想做一个基于VB6.0和51单片机的超声波液位计,单片机通过超声波测距模块测距,并通过URAT串口和上位机通讯,VB编写上位机程序,将液位值和曲线显示在上位机程序界面中。
因为本人VB初学,之前也没有上下位机通讯编程的经验,在CSDN和pudn上面下载的类似上下位机程序貌似都有些问题,烦请各位分享分享,有相关例程Z好,没有的话,Z简单的上下位机通讯测试程序也行,如果问题解决了,除了这30分外,我再多给几十分百来分也没问题,我的编程环境是VB6.0中文版和keil uvision3。单片机用STC89C52。。
文件比较大的话,Z好是工程文件包,可以发我邮箱里,thomas287@126.com和QQ:287153136。如果问题解决一定重谢,期待大虾的回复!
这个问题,不算什么问题,给你个思路,希望对你有帮助
网络上的人不是吃闲饭的,没人会给你非常满意的回复,只能给你思路,除非有人刚巧做过和你想要的一模一样的。
这个问题分两步考虑
1.MCU单片机进行超声波数据采集
2.MCU与PC机串口通讯
问题是
PC机用VB做曲线动态显示,视乎有些复杂,以前我也用VB做过动态曲线,比较复杂,至少我认为比较复杂(个人能力有限吧),我建议你动态显示用LabVIEW(以前我用的是L7.2免费版,几年没摸了)
基于单片机的超声波测距电路和程序以前也曾做过(指导本科生毕业设计),现在程序找不到了,不过,网上多的是,超声波测距程序现在非常成熟,down一个就OK了。
MCU还一个问题就是与串口通讯,初始化串口,就ok了
参考如下:
void Init_MCU(void)
{////串口初始化
SCON = 0x50 ;
TMOD &= 0x0F;
TMOD |= 0x20 ;
TH1 = 0xfE ; //Baud: fosc=11.0592MHz ,FD 9600 ;FE 14400
TR1 = 1 ; // 启动timer 1 run
TI = 1;
}//////////////////////////////////////
程序应用
直接printf("sample dat.= %f \n",dat); 具体情况具体定
如果不用上一句 改为
void MCU_TXD(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
程序很成熟,也很灵活,稍加修改,就很容易搞定,相信聪明的你,一看就明白!!
VB6.0编写串口接收程序,把我以前的程序给你参考一下,希望能有帮助
'//对数据实时读取
Sub MSComm1_OnComm()
Dim aa_input '数据暂时缓存
Dim tr_input
Select Case frmMain.MSComm1.CommEvent
Case comEvReceive
On Error Resume Next
tr_input = frmMain.MSComm1.Input
If tr_input = "" Then GoTo err1
aa_input = Format(Val(tr_input), "0") ' "#0.000")
txtMsg.Text = txtMsg.Text & aa_input & " "
Label4.Caption = "接收区:" & aa_input & " " & Hex(aa_input)
Label5.Caption = aa_input
err1:
Case Else
frmMain.MSComm1.InBufferCount = 0 '对缓存操作
End Select
End Sub
完整程序已发到你信箱,可以参考一下
mcu编程和VB6.0编程是我的强项,总算你找对了,嘿嘿,自乐一下
希望对你有帮助,有问题可以进一步交流