单片机部分没改进,就是前几天做的这个
http://bbs.mydigit.cn/read.php?tid=650617单片机ADC0/1 分别接 TL431 和 被测电压, 接蓝牙模块 传出字符串 "AD0=0512 AD1=1023"
PC接蓝牙接收器,可用超级终端看到上述字符串
准备编程实现电压历史状态显示,想来编程量不大,就选VB6好了。用到的控件就是MSComm32.ocx, VB6精简版下需要注册该控件和提供授权。
然后是熟悉字符串的函数,picture控件描图。。。这样软硬结合不错,比单学习编程有意思
以下为全部PC程序,VB6精简版编译通过.
'Picture1 长宽 6000x10000 (控件属性里设定)
'MSComm1.RThreshold = 20 (控件属性里设定)
Public T As Double 'Time Axis
Public Vold As Double 'Previous V
Private Sub Form_Load()
MSComm1.CommPort = 6
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True 'MSComm32.ocx 控件初始化
Dim ComData As String '串口读到的字符串
Dim AD0, AD1 As Double '两个ADC的测量值
Dim V As Double '计算值
T = 0 '时间轴的初始值
End Sub
Private Sub MSComm1_OnComm() 'MSComm控件在串口有数据收发自动执行该子程序,不用定时或循环
Select Case MSComm1.CommEvent
Case comEvReceive '条件判断:串口数据接收
ComData = MSComm1.Input '获取字符串
AD0 = Mid(ComData, 5, 4) 'Mid函数,取字符串中间的数字,条件是数字在字符串中的位置固定
AD1 = Mid(ComData, 15, 4)
V = AD1 / AD0 * 2.5 '计算值 (2.5是 TL431的 测量值)
Text1.Text = ComData
Text2.Text = Len(ComData)
Text3.Text = AD0
Text4.Text = AD1
Text5.Text = V
Text6.Text = Format(V, "00.000") '控制精度,只显示小数点后3位
MSComm1.InBufferCount = 0
End Select
Picture1.ForeColor = RGB(0, 256, 0) '绿色波形,仿示波器
Picture1.Line (T, 6000 - Vold * 1000)-(T, 6000 - V * 1000) '连接两次线段形成连续波形
Picture1.Line (T, 6000 - V * 1000)-(T + 50, 6000 - V * 1000) '当前测量值画水平短线
Vold = V
If T = 0 Or T > 10000 Then
T = 0
Picture1.Cls '清除图片框内容
Picture1.ForeColor = RGB(0, 50, 0) '清屏后重画 浅绿色 标尺线, 颜色用RGB()函数表示
Picture1.Line (0, 1000)-(10000, 1000) '画线, 注意坐标 0,0 是左上角
Picture1.Line (0, 2000)-(10000, 2000)
Picture1.Line (0, 3000)-(10000, 3000)
Picture1.Line (0, 4000)-(10000, 4000)
Picture1.Line (0, 5000)-(10000, 5000)
End If
T = T + 50
End Sub