用VB设计一段单片机与上位机通讯的程序的一些问题

qq_23728007 2018-05-28 11:04:36
打算用VB编写一段程序 实现将单片机的采集到的数据每8个数上传一次 上位机将这8个数的数值分别显示出来并分别绘制成曲线
现只能采集一个数的 且没有单片机的通讯程序 求大神们补充改进下

Dim T As Variant
Dim c As Variant
Dim Y As Integer
Dim Y1 As Integer
Private Declare Sub Sleep Lib "kernel32 " (ByVal dwMilliseconds As Long) 'API,用sleep实现延时
'延时函数
Function delay(number)
Call Sleep(number)
DoEvents
End Function

Private Sub Combo1_Click() '选择端口
If Combo1.Text = "COM1" Then
MSComm1.CommPort = 1
ElseIf Combo1.Text = "COM2" Then
MSComm1.CommPort = 2
ElseIf Combo1.Text = "COM3" Then
MSComm1.CommPort = 3
ElseIf Combo1.Text = "COM4" Then
MSComm1.CommPort = 4
ElseIf Combo1.Text = "COM5" Then
MSComm1.CommPort = 5
ElseIf Combo1.Text = "COM6" Then
MSComm1.CommPort = 6
ElseIf Combo1.Text = "COM7" Then
MSComm1.CommPort = 7
Else
MSComm1.CommPort = 8
End If
End Sub

Private Sub Command3_Click() '停止采集
Timer2.Enabled = False
MSComm1.PortOpen = False
Command2.Caption = "打开串口"
End Sub

Private Sub Form_Load() '初始化
MSComm1.Settings = "9600,N,8,1" '默认值为“9600,N,8,1”,意为“串口通信速度为9600Baud,无校验,每次数据为8个Bit,停止位为1个Bit”。
MSComm1.InputMode = 0 '表示以文本(ASCII)方式取回数据
MSComm1.RThreshold = 1 '每接收1个字节就产生一个OnComm 事件(接受事件)
MSComm1.SThreshold = 0 '数据传输事件不会产生 OnComm 事件(发送事件)
MSComm1.InBufferSize = 1024 '接受缓冲区大小
MSComm1.OutBufferSize = 512 '发送缓冲区大小
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空发送缓冲区
Combo1.AddItem "COM1"
Combo1.AddItem "COM2"
Combo1.AddItem "COM3"
Combo1.AddItem "COM4"
Combo1.AddItem "COM5"
Combo1.AddItem "COM6"
Combo1.AddItem "COM7"
Combo1.AddItem "COM8"

Picture1.Scale (-50, 1150)-(1150, -80)
Command1.Caption = "采集数据" '命名
Command2.Caption = "打开串口"
Timer1.Interval = 1000 '实时时钟的采集频率间隔
Timer2.Interval = 25 '
Timer2.Enabled = False '停止Timer2
End Sub

Private Sub Command2_Click()
If Command2.Caption = "打开串口" Then
MSComm1.PortOpen = True
Command2.Caption = "关闭串口"
ElseIf Command2.Caption = "关闭串口" Then
MSComm1.PortOpen = False
Command2.Caption = "打开串口"
End If
End Sub


Private Sub MSComm1_OnComm() '触发事件
If MSComm1.InBufferCount > 0 Then
Text3.Text = MSComm1.Input '从缓冲区返回并删除字符。将串行输入寄存器的数据读出,并清除寄存器中已读取的数据。
c = Val(Text3.Text)
delay (50)
End If
End Sub

Private Sub draw()

Picture1.FontSize = "15" '设置字体大小
Picture1.DrawWidth = 3
Picture1.ForeColor = QBColor(0)
Picture1.Cls

Picture1.Line (0, 0)-(0, 1024) '纵坐标
Picture1.Line (-10, 1012)-(0, 1024) '纵坐标箭头及y值
Picture1.Line (10, 1012)-(-0, 1024)
Picture1.PSet (10, 1024)
Picture1.Print "热流值"

Picture1.Line (0, 0)-(1024, 0) '横坐标
Picture1.Line (1012, 10)-(1024, 0) '横坐标箭头及x值
Picture1.Line (1012, -10)-(1024, 0)
Picture1.PSet (1024, -10)
Picture1.Print "时间"

Picture1.DrawWidth = 4
Picture1.FontSize = 8
For Y = 0 To 1024 Step 8 '在横轴上对输入采样的步进值
Next Y

For Y1 = 0 To 1024 Step 50 '在纵轴上所显示文字的步进值
Picture1.PSet (0, Y1)
Picture1.Print (Y1)
Next Y1
T = 0
Timer2.Enabled = True
End Sub

Private Sub Picture1_MouseDOWN(Button As Integer, Shift As Integer, B As Single, A As Single) '"光标线读数"
Text1.Text = B
Text2.Text = A
End Sub
Private Sub Command1_Click() '开始采集
Call draw
End Sub

Private Sub Text1_Change()

End Sub

Private Sub Timer2_Timer() '画图
Picture1.DrawWidth = 2
Picture1.PSet (T, c), QBColor(13) 'PSet在图片框上绘制像素点,并指定颜色。n
T = T + 5 '在横轴上的步进值
If T > 1024 Then '如果在横轴上的像素点大于1024,则重新开始绘制
Call draw
End If
End Sub

Private Sub Timer1_Timer() '显示时间
Text4.Text = CStr(Time$())
End Sub
...全文
2065 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sichuanwww 2018-05-29
  • 打赏
  • 举报
回复
笨狗先飞 2018-05-28
  • 打赏
  • 举报
回复
没有通讯协议来保障通讯数据的话,通讯质量很糟糕的,程序时不时会出个错

Private Sub MSComm1_OnComm()     '触发事件
    If MSComm1.InBufferCount > 0 Then
    Text3.Text = MSComm1.Input '从缓冲区返回并删除字符。将串行输入寄存器的数据读出,并清除寄存器中已读取的数据。
    c = Val(Text3.Text)
    delay (50) '<== 这个delay函数除了拖慢电脑速度,完全没有意义
    End If
End Sub
'=================================
Private Sub MSComm1_OnComm()
    Dim C As Long, Data() As Byte
    Select Case MSComm1.CommEvent
        Case comEvReceive
            Do
                C = MSComm1.InBufferCount
                Sleep 10
            Loop Until C = MSComm1.InBufferCount
            Data = MSComm1.Input
           '一般接收代码需要这样处理,虽然你收到的是asc字符,但是最好用一个数组来接收,然后转成string,ascii值在128~254的符号用字符串来接收是可能丢失的
          Text3.text=strconv(Data,vbUnicode )'<=接收的这样可以直接转成字符串了,中间其实少了对数组的处理,这个需要自己把握。
        Case Else
    End Select
End Sub
zdingyun 2018-05-28
  • 打赏
  • 举报
回复
没有单片机通信协议,编写VB上位机程序是无法完成的。先用以下代码来接收单片机的全部数据到Text3文本框,再根据接收的内容来改写VB代码。
Private Sub MSComm_OnComm()
    Select Case MSComm1.CommEvent
        Case 2
        strjieshou = strjieshou & MSComm1.Input '从缓冲区返回并删除字符。将串行输入寄存器的数据读出,并清除寄存器中已读取的数据
    End Select
    Text3 = strjieshou
End Sub
以上代码基于单片机发送ASCII字符。
51单片工作实例随书光盘这里面有各种程序 本书是以单片工程应用实例为重点的技术书,在简述了51单片的软硬件基础之后,重点通过一系列工程应用实例,详细介绍了单片的软硬件开发和调试方法,包括自制单片编程器的方法,单片的串口通信、定时/计数器、键盘输入、led和lcd显示器等内外资源的使用和编程,在汇编程序中调用c程序的方法。实例中使用了很多当前流行的单片智能外围芯片,包括实时钟、数字温度传感器、dds波形发生器、无线数传模块、fm收音和usb接口芯片等。书中用一章专题介绍了这些芯片所采用的单总线、iic总线、spi总线和usb总线等新型总线技术的原理;两个实例中还详细讲解了单片与上位rs232串口通信的高级语言编程方法以及用ijsb接口通信的方法。 本书附带光盘,内有实例程序的源代码。实例中所用的器材,取材容易,适合读者自己动手来做,特别适合电子技术类专业的大学生作为动手实践的教材,弥补他们在就业时缺乏实践经验的不足。本书涉及了电子工程应用的诸多方面,可作为各类单片应用开发工程师的参考书。 折叠编辑本段目录 第1章 c51系列单片的硬件结构 1.1 at89c51单片 1.1.1 at89c51单片的内部结构 1.1.2 at89c51单片的封装和引脚 1.1.3 at89c51单片的存储器 1.1.4 at89c51单片定时/计数器 1.1.5 at89c51单片的串口 1.1.6 at89c51单片的中断 1.1.7 at89c51单片的时钟电路和时序 1.1.8 at89c51的工作方式 1.1.9 at89c51的程序封锁位 1.2 at89c2051单片 1.3 stc51单片 1.3.1 stc51单片的特点 1.3.2 典型代表型号性能简介 1.3.3 stc51单片的编程 第2章 c51单片的指令系统和汇编语言程序设计 2.1 指令组成 2.2 寻址方式 2.3 指令说明 . 2.4 汇编语言程序设计 2.4.1 汇编语言程序的格式 2.4.2 伪指令 2.4.3 汇编语言程序示例 2.5 集成开发环境μvision2 2.5.1 μvision2的窗口界面和功能 2.5.2 创建项目 2.5.3 调试 第3章 单片的总线扩展 3.1 并行总线的扩展 3.1.1 用锁存器扩展并行口 3.1.2 用三态门扩展并行口 3.1.3 用串行口扩展并行口 3.2 iic总线 3.2.1 iic总线的工作原理 3.2.2 iic总线的工作时序 3.2.3 iic总线的数据传送格式 3.2.4 iic总线的寻址方式 3.2.5 在mcs-51单片中软件模拟iic总线的方法 3.3 dallas公司的单总线 3.3.1 硬件结构和连接 3.3.2 单总线的工作原理 3.3.3 单总线通信协议 3.3.4 单总线命令编程 3.4 spi总线 3.4.1 spi总线的接口信号 3.4.2 spi总线的工作原理 3.4.3 spi总线在8051单片系统中的应用 3.5 usb总线 3.5.1 usb系统硬件 3.5.2 usb系统的软件设计 第4章 采用led显示的电子钟 4.1 数字钟的硬件组成 4.2 实时钟电路pcf8563简介 4.2.1 pcf8563的封装和引脚功能 4.2.2 pcf8563的内部资源和寄存器 4.2.3 pcf8563的应用电路 4.2.4 pcf8563程序设计 4.3 设置当前时间的方法 4.4 六位led显示器的工作原理 4.4.1 硬件电路 4.4.2 汇编程序 4.5 数字钟编程 4.5.1 程序流程 4.5.2 汇编程序 第5章 电容电感测量仪 5.1 lcd1602液晶显示器简介 5.1.1 lcd1602的引脚功能 5.1.2 lcd1602与单片的连接 5.1.3 lcd1602的指令集 5.1.4 lcd1602的应用编程 5.2 用单片测量频率的方法 5.3 电容电感测量仪的测量原理 5.3.1 电容量测量的一般原理 5.3.2 本的测量原理 5.4 电容电感测量仪的制作 5.4.1 测量仪的硬件原理 5.4.2 测量仪的编程 第6章 dds波形发生器 6.1 dds原理与特点 6.2 ad9835的应用与编程 6.2.1 内部原理 6.2.2 引脚及功能 6.2.3 内部寄存器、控制字和编程 6.2.4 ad9835的基本应用电路 6.3 矩阵键盘的使用 6.4 用ad9835和单片制作的波形发生器 6.5 调试方法 6.5.1 硬件电路的调试 6.5.2 软件调试 第7章 自制简单的51编程器 7.1 8051系列单片编程器的基本原理 7.2 编程器的硬件电路 7.3 上位程序 7.3.1 串口通信控件mscomm的使用 7.3.2 上位程序窗口说明 7.3.3 vb程序源码及说明 7.4 监控单片程序 7.4.1 编程函数及编程方法 7.4.2 主函数流程图 7.4.3 监控单片程序 7.5 使用usb接口的编程器 7.5.1 usb接口芯片ch341简介 7.5.2 ch341的应用电路 7.5.3 ch341在编程器中的应用 第8章 温度数据无线传输系统 8.1 ds18820数字温度传感器简介 8.1.1 ds18820的引脚封装和性能 8.1.2 ds18820的内部结构 8.1.3 ds18820在单片系统中的应用 8.1.4 ds18820的功能命令 8.1.5 ds18820的编程 8.2 nrf905无线数传芯片 8.2.1 芯片内部结构 8.2.2 nrf905的封装和引脚 8.2.3 工作模式 8.2.4 nrf905的配置 8.2.5 应用电路 8.3 newmsg-rf905se无线收发模块 8.3.1 用户接口 8.3.2 newmsg-rf905se与单片的连接 8.4 系统的硬件结构 8.5 单片编程 8.6 上位编程 第9章 熔断时间测试仪 9.1 慢熔型片式熔断器 9.2 电流传感器 9.3 测试仪的硬件结构 9.4 测试仪的编程 第10章 fm收音 10.1 fm广播系统的基础知识 10.1.1 调频广播系统 10.1.2 调频广播收音的原理 10.2 tea5767hn单片fm调谐器 10.2.1 tea5767hn的性能 10.2.2 tea5767hn的引脚和封装 10.2.3 tea5767hn的内部结构和功能 10.2.4 tea5767hn的总线接口和控制寄存器 10.2.5 tea5767hn的典型应用电路 10.3 fm收音模块 10.4 使用单片和fm收音模块制作fm收音 10.4.1 收音硬件电路的说明 10.4.2 收音的编程 10.5 调试方法和有关问题 附录 附录a 51指令码速查表 附录b ascii码表 附录c 实验电路板 附录d 英汉名词对照 参考文献 后记
单片技术自发展以来已走过了近20年的发展路程 。单片技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。小到遥控电子玩具,大到航空航天技术等电子行业都有单片应用的影子。针对单片技术在电子行业自动化方面的重要应用,为满足广大学生、爱好者、产品开发者迅速学会掌握单片这门技术,于是产生单片实验板普遍称为单片开发板、也有单片学习板的称呼。比较有名的例如电子人DZR-01A单片开发板。   单片开发板是用于学习51、STC、AVR型号的单片实验设备。根据单片使用的型号又有51单片开发板、STC单片开发板、AVR单片开发板。常见配套有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。例如电子人单片开发板,针对部分学者需要特别配套有VB上位软件开发,游戏开发等教程学习资料。开发此类单片开发板的公司一般提供完善的售后服务与技术支持。单片又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算系统集成到一个芯片上。相当于一个微型的计算,和计算相比,单片只缺少了I/O设备。概括的讲:一块芯片就成了一台计算。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片是了解计算原理与结构的最佳选择。单片的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣等。   单片(Microcontrollers)诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片迅速取代16位单片的高端地位,并且进入主流市场。   而传统的8位单片的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片系统已经不再只在裸环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片上。而在作为掌上电脑和手核心处理的高端单片甚至可以直接使用专用的Windows和Linux操作系统。
毕业设计总结与展望致谢 6.1总结 一卡通系统非常庞大,分若干子系统,每个子系统又分若干模块,不可能一个人完成, 它需要精诚合作的团队,大家分工明细,各司其职,相互区别也相互关联。本次设计本 人主要负责了第三方对接的基本模块。采用了强大的数据库编程工具 delphi 7,Delphi 被称为第四代编程语言,它具有简单、高效、功能强大的特点。和 VC 相比,Delphi 更简单、更易于掌握,而在功能上却丝毫不逊色;和 VB 相比,Delphi 则功能更强大、更实用。可以说 Delphi 同时兼备了 VC 功能强大和 VB 简单易学的特点。 6.2 展望 校园一卡通系统是个非常复杂的系统工程,随着技术日新月异的发展,其概念也在不停 向前延伸,其接口应用也将越来越广,CPU 卡、手卡已经开始应用,一卡通结构也在发生变化,当然对与各个业务系统的对接也 提出了新的要求,这就需要我们不停地去探索新的需求,发展新的技术,使得系统对接 更加完善,集成度更加深入。没有最好,只有更好,随着技术的发展,还会有崭新的天 地让我们去开拓。 致 谢 首先,衷心地感谢我的导师晏华老师,在晏华导师的指导下,我才得以完成本次论文。 特别是在论文的选题和研究方法及思路方面,都得到了她的悉心指导,使我获益非浅。 同时,感谢学院所有的任课老师,特别感谢班主任曹敏芳老师在这两年多来的帮助,让 我学业能顺利的完成。感谢与我一起完成学业的同学们。最后,也感谢学院的老师和领 导,正是你们的辛勤耕耘,使我们的基础知识又一次得到了巩固,使理论能与实践相结 合,不仅完成了学业,充实了自己,也更有利于我今后工作的发展。 5.1 基于 RFID 的校园一卡通系统设计总结 在高校校园数字化校园建设深入开展的背景下,校园一卡通系统的得到了极大的应用推 广。在系统构建设计中,将无线射频识别技术和校园网结合起来,组建为基于 RFID 技术的校园一卡通系统。利用千兆校园主干网作为校园一卡通通信平台,将分散于校园 各区域,不同功能性质、不同特点的终端应用子系统集成起来,实现统一的信息管理、 统一的数据采集分析、统一的金额支付,扫除校园信息孤岛。在各终端子系统的设计构 建中,根据系统自身使用要求及特点,对读写器硬件软件系统进行设计。在硬件器件选 择上,采用 PHILIPS 公司的 Mifare one 射频卡芯片作为电子标签,采用 MF RC500 专用读写芯片及相关外围电路作为读写器射频读写模块,完成对 Mifare one 的读写及加减值等操作。利用单片作为读写器主控芯片实现对读写器工作的控制。在 设计中,由于系统通信平台为主干校园网,因此把设计重点放在终端应用子系统的设计 上,各终端子系统通过与校园网的接口实现系统平台的集成。本设计,通过对校园学习 生活中的两个典型应用子系统—图书馆管理系统与水控系统的系统分析讨论了一卡通终端 应用系统的构建。并通过对射频卡、读写器硬件选择与分析、系统防碰撞软件设计流程 的探讨,阐述了设计中的关键技术分析。在本次设计中,自己完成了如下工作: (1)系统的分析了 RFID 无线射频识别技术的工作原理及理论基础。根据子系统射频识别工作流程及射频卡与读 写器的原理,设计出能完成对 Mifare one 卡射频识别的 RFID 读写器。 (2)通过对典型终端应用系统的分析,探讨了 RFID 子系统的构架。利用非接触式射频卡(电子标签)作为信息载体,将分散于校园各应用 系统的读卡器(读写器)、上位、校园网及服务器连接起来,用 RFID 射频识别系统和千兆校园网网络通信平台构建了校园一卡通系统基础硬件平台,实现校 园系统资源的整合,并通过相应系统应用管理软件实现校园全面的信息化管理,逐步实 现"数字化校园"的建设目标。54 (3)绘制了子系统应用架构图和读写器电路原理图,并通过对系统防碰撞软 件设计流程,绘制了软件设计流程图。 5.2 RFID 技术在校园一卡通系统中应用前景展望 目前,国内 RFID 行业似乎已经呈现加速的趋势,主流的 RFID 芯片厂商一方面加大收购与合作的力度;另一方面,即从技术方面加大新型的 RFID 芯片的研发力度,不断更新原有产品。因此,技术融合和应用将向纵深继续延伸。对于 RFID来说,目前还处于典型的需求带动技术的阶段,但是,对于校园一卡通,技术上采 用更成熟先进的框架,直接升级数字化校园平台或可以挂接其他数字化校园是发展的趋 势。RFID 的目标不再仅仅是应用和物品识别与跟踪。随着互联网和个域网的发展,校园一卡通呈 现了赋予 RFID 更丰富功能的趋势。比如,电子寄存柜系统,银行自动转账业务系统等等。目前的问题 是成本因素制约 RFID 发展。编制高校信息标准体系,建立多种校园一卡通的投资运营模式是解决问题的关键 。我们相信,在信

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧