利用VB实现电脑与单片机通讯
- 格式:doc
- 大小:334.50 KB
- 文档页数:3
VB环境下实现PC机与单片机的串行通讯随着科技的不断发展,PC机和单片机的联系日益密切,特别是在嵌入式系统领域中,单片机已经成为了必不可少的重要组成部分。
而如何实现PC机和单片机之间的通讯,是一项必须要掌握的技能。
本篇文章主要介绍如何运用VB环境下的串口编程,实现PC机与单片机的串行通讯。
一、概述通讯技术日新月异,各种新的通讯技术层出不穷。
而在普通家庭却使用最为广泛的通讯技术,还是传统的串口通讯。
使用传统的串口通讯,可以实现PC机与单片机之间的数据交互,可靠性高,兼容性强,使用便捷。
要实现PC机与单片机之间的串行通讯,需要掌握两个技能:单片机串行通讯的编程和VB环境下串口编程。
二、单片机串行通讯的编程单片机串行通讯主要是通过寄存器和中断实现的。
单片机通过一个IO口与电脑之间建立一个简单的通讯接口,PC机通过该接口向单片机发送数据,单片机接收到数据,就可以通过该接口把数据返回给PC机。
单片机串口通讯编程的内容主要包括串口数据位、停止位、校验位、波特率等信息,这些信息需要设置在单片机的寄存器中。
同时,还要设置中断信息,以免程序在不接收数据时死等。
三、VB环境下串口编程VB环境下串口编程的关键是掌握控件的使用。
实际上,VB环境下的串口编程非常简单,只需要使用微软提供的MSComm控件就可以实现。
通过MSComm控件的事件和方法,可以轻松地实现数据的读取、发送、接收等功能。
需要注意的是,MSComm控件的BaudRate属性需要与单片机编写的程序的波特率一致,不然可能会出现通讯故障。
四、如何实现串口通讯首先需要硬件上建立好通讯接口。
通常情况下,USB串口转换器和单片机板子都会配套出售,只需要把两者插在一起即可。
其次需要编写单片机的串口通讯程序。
单片机数字口与串口的通讯,就是把串口接到单片机的数字口中,通过串口向外发送数据。
因此,编写单片机的串口通讯程序,需要设置停止位、数据位、奇偶校验位、波特率等参数。
基于VB6.0的PC机与单片机串口通讯的实现魏延萍【期刊名称】《信息技术》【年(卷),期】2011(000)007【摘要】RS-232 serial port is used to carry out the communication between PC and singlechip microcomputer. The hardware connection scheme and the associated communication protocols are designed in details. The MSComm component is researched, and the communication program based on VB6.0 is developed, and the detailed programming is presented. An example proved that the design is stable and reliable, and can satisfy the design requirement and function, and the system is provided with a good reference value for developing similar system.%应用RS-232串口实现PC机与单片机之间的通讯,设计了其硬件连接电路及相关通讯协议.研究了MSComm控件,并编写了基于VB6.O的通讯软件程序,给出了详细的程序设计.通过实例,证明该设计运行稳定可靠,能满足设计的需求和功能,对于开发类似的系统具有很好的参考价值.【总页数】3页(P38-40)【作者】魏延萍【作者单位】宝鸡文理学院物理与信息技术系,宝鸡721007【正文语种】中文【中图分类】TP311.1【相关文献】1.基于VC6.0的多台MSP430单片机和PC机串口通讯实现方案 [J], 周辉军;许亮;韩瑞宁2.基于VB6.0的PC机与多单片机串行通信设计与实现 [J], 孔德刚;肖海荣;安国建;刘文江3.利用VB6.0实现PC机与单片机的串口通讯 [J], 付旭;方康玲4.基于VB6.0实现单片机与PC机的串口通信 [J], 陈代胜;张莉君;;;5.基于VB6.0实现PC机与单片机的串行通讯 [J], 杨佩璐因版权原因,仅展示原文概要,查看原文内容请购买。
VB入门中最简单入门教程基于VB单片机与PC通信一、目的和要求1、掌握利用VB软件制做出通信界面;2、掌握在VB中添加程序并能够写出发送数据的程序;3、掌握单片机串行口通信原理;4、掌握单片机接受串行口通信数据程序;二、设备1、Keilc51软件及电脑一台;2、89C51单片机开发板一块;3、Microsoft Visual Basic 6.0软件;三、实验内容本次课程设计就是利用Microsoft Visual Basic 6.0软件制作一个通信界面在界面上添加三个按钮,当按第一个按钮时单片机上的LED灯正转,当按第二个按钮时单片机上的LED灯反转,当按第三个按钮时单片机上的LED灯闪烁。
单片机能正确接受并显示。
四、原理串口是计算机上一种非常通用设备通信的协议〔不要与通用串行总线Universal Serial Bus或者USB混淆〕。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位〔bit〕发送和接收字节。
尽管比按字节〔byte〕的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比方IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
五、步骤1、在桌面上启动Microsoft Visual Basic 6.0软件弹出对话框,点击标准EXE确定。
2、添加串口控件点击工程-部件-Microsoft Comm control 6.0 即可会在左方的工具栏出现该工具,双击此工具会在form1中出现。
3、初始化串口双击form1中的空白区域添加程序MSComm1.Settings = "9600,n,8,1"mPort = 4MSComm1.PortOpen = TrueMSComm1.RThreshold = 1mPort 取决你使用的串行口,在设备管理器中查看。
Private Sub Command1_Click() ' 发送功能代码: Dim Num As Integer ' 发送的数据变量Dim OutB (0) As Byte ' 发送字节数组Num=Val(Text1.text) ' 类型转换OutB (0)=CByte(Num) ' 转换为二进制MSComm1.OutBufferCount=0 ' 清空发送缓冲区MSComm1.Output=OutB ' 发送数据End Sub接收功能代码:Private Sub MSComm1_OnComm()Dim Array1(0) As Byte ' 接收字节数组Select Case mEventCase comEvReceive ' 触发接收事件Dim Buffer As VariantMSComm1.InputLen = 0Buffer=MSComm1.Input ' 接收数据Array1 (0)=AscB(InData) ' 类型转换Text2.text= Array1 (Buffer) ' 显示数据MSComm1.InBufferCount=0 ' 清空接收缓冲区End SelectEnd Sub单片机部分程序代码Private Sub Form_Load()mPort = 11 '使用COM 作为通信端口MSComm1.Settings = "300,N,8,1" '设置通信参数波特率为9600,' 无奇偶校验位, 8 个数据位, 一个停止位MSComm1.InputLen = 0 '读取缓存区的所有字符MSComm1.InBufferSize = 1024 '设置接收缓存区为1024MSComm1.OutBufferSize = 512 '设置发送缓存区为512MSComm1.PortOpen = True '打开串口MSComm1.SThreshold = 1 '不触发发送事件MSComm1.RThreshold = 1 '每一个字符到接收缓存区都触发接受事件MSComm1.InBufferCount = 0 '清除发送缓存区的数据MSComm1.OutBufferCount = 0 '清除接收缓存区的数据MSComm1.InputMode = comInputModeBinary ' 采用二进制方式End SubPrivate Sub Comsend_Click()Dim x As StringIf Textsend.Text = "" Then '发送数据不能为空x = MsgBox("发送数据不能为空", 16)Exit SubEnd IfIf Not MSComm1.PortOpen Then '保证串口打开MSComm1.PortOpen = TrueEnd IfMSComm1.Output = Textsend.Text + Chr$(13)For i = 1 To 20000000 '延时NextEnd SubPrivate Sub Command1_qkfs_Click()Textsend.Text = "" '清空发送缓存区Textsend.SetFocusEnd SubPrivate Sub Command2_qkjs_Click()TextReceive.Text = "" '清空接收缓存区Textsend.SetFocusEnd SubPrivate Sub MSComm1_OnComm()Select Case mEvent '检验串口事件'错误处理Case comEventOverrun '数据丢失Textsend.Text = "" '清空发送缓存区TextReceive.Text = "" '清空接收缓存区Textsend.SetFocusExit SubCase comEventRxOver '接收缓存区溢出Textsend.Text = "" '清空发送缓存区TextReceive.Text = "" '清空接收缓存区Textsend.SetFocusExit SubCase comEventTxOver '发送缓存区已满Textsend.Text = "" '清空发送缓存区TextReceive.Text = "" '清空接收缓存区Textsend.SetFocusExit Sub'事件处理Case comEReceive '接收缓存区内有数据Dim str As Stringsrt = MSComm1.Input '从接收队列中读入字符串TextReceive.Text = TextReceive.Text + str '读出字符串送显End SelectEnd SubPrivate Sub Commandguanbi_Click()MSComm1.PortOpen = FalseUnload MeEnd Sub/share/269187588/12858676890?from=010*******&ref=hotnewsfeed&sf et=110&fin=5&ff_id=269187588。
基于VB实现PC机与单片机的串行通讯
引言
随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片
机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。
PC
机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC 机的RS-232 串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。
因此如何实现PC 机与单片机之间的通讯具有非常重要的现实
意义。
本文将论述在VB 环境下PC 机与单片机之间实现串行通讯的软硬件方案。
PC 机的通讯程序使用Visual Basic 编写,VB 是Microsoft 公司推出的Windows 应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且Visual Basic 6.0 版本带有专门实现串行通讯的MSCOMM 控件。
1、硬件原理
目前的PC 机都有至少一个串行通讯端口RS-232,RS-232 端口可用于两台计算机之间进行通讯,RS-232 的逻辑电平用正负电压表示,且信号使用负逻辑,逻辑0 的电压范围是+5V~+15V,而逻辑1 的电压范围是-5V~ -15V,RS-232 端口是计算机与其他设备沟通的最常用的接口,不但实作简单,而且价格便宜。
在8051 单片机的内部有一个全双工的异步串行I/O 口,它的输入和输出使用5V 逻辑而不是RS-232 电压,如何进行两种信号的转换,是连接时需要解决的问题,事实上,解决的方法很简单,只需使用一个诸如MAX232 这样的专用芯片即可。
电路结构见下图。
用Visual Basic实现PC机与单片机之间的串行通信
赵建周;韩庆妙
【期刊名称】《安阳工学院学报》
【年(卷),期】2003(000)001
【摘要】本文介绍应用VB提供的通信控件实现PC机与单片机之间的串行通信的方法、注意事项和两个实例.
【总页数】3页(P38-40)
【作者】赵建周;韩庆妙
【作者单位】安阳大学,河南,安阳,455000;安阳大学,河南,安阳,455000
【正文语种】中文
【中图分类】TN919.6
【相关文献】
1.基于Visual Basic的PLC与PC机之间串行通信设计 [J], 官平;谢守勇;祝诗平
2.使用VisualBasic实现PC与89C51单片机之间的串行通信 [J], 张润华
3.运用Visual Basic实现PC与89C51 单片机之间的串行通信 [J], 沈飙;夏海燕
4.用BASIC语言实现PC机与MCS—51单片机的串行通信 [J], 张国富
5.基于Visual Basic
6.0下PC机与MCS-51单片机的串行通信 [J], 袁月峰;张树森;姚继权
因版权原因,仅展示原文概要,查看原文内容请购买。
VB环境下实现PC机与单片机(8031)的串行通讯摘要:一般的PC与单片机之间的串行通信,需要单片机采集数据,然后用异步串行通讯方式传给PC机。
本文着重用VB具有面向对象的设计方法,友好的用户界面等优点,来探讨在VB环境下来实现PC机与单片机(8031)之间串行通讯的方法。
关键词:PC机单片机串行通讯数据交换1 引言随着计算机技术特别是单片机技术的发展,在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,常常遇到计算机与外界的信息交换,即通讯。
串行通信是指按照逐位顺序传递数据的通信方式,由于仅需三根传输线传送信息且通信距离相对较远,所以在控制领域的现场监测、分布控制等场合有着重要的应用价值。
鉴于PC机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,在数据量不大、传输要求不高的情况下,一般都采用给PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。
本文论述了在VB环境下如何实现单片机与PC机之间实现串行通讯所需条件,PC机通讯程序利用VB提供的MsComm串行通讯控件来完成,单片机的程序用汇编语言来写。
2 系统介绍2.1 ADM101E芯片介绍大多数PC机都有一个串行通讯端口RS-232用于两台计算机间进行串行通讯。
RS - 232通讯接口是一种标准化的串行接口,是为远程通讯连接终端设备DTE(Data Terminal Equipment)与数据通讯设备DCE (Data Communication Equipment)定义的物理接口。
RS-232采用非平衡连接(又称为单端线路),在这个线路中,信号电压加到一条导线上,所有的信号电压都使用一个公共的接地线。
为了提高抗干扰能力和增加传送距离,RS一232的每个脚线的信号和电平规定采用负逻辑电平,DC(-15一5V)规定为逻辑“1”,DC( 5— 15V)规定逻辑“0”, DC(-5一 5V规定为过渡区)。
摘要:本文给出了一种以数传电台为通讯媒体,由控制中心PC机和多个AT89C51单片机系统组成的远程无线通信系统,重点介绍了利用VB实现PC机与多个单片机控制系统远程无线通讯程序设计方法,实现了PC机对多个远端单元的实时控制与管理。
关键词:Visual Basic、串行通讯、数传电台、单片机、远程控制1 引言随着现代电子与信息技术的不断发展,计算机与单片机控制系统之间的远程无线通讯技术得到了广泛的应用,而数传电台目前已发展成为远程无线通信的一种重要工具,它使用灵活、性价比高,环境适应能力强,非常适用于大范围、分散控制系统及在恶劣环境中,不适于铺设有线网络的实时监控系统,数传电台已成功应用于电力设备监控、计算机实时监控与数据采集(SCADA)以及实时交易数据遥测遥控等领域。
同时VB6.0具有界面友好、编程简便高效、数据处理及驱动底层硬件功能强等优点,成为许多用户开发PC 机与单片机串行通信程序的首选工具。
本文以美国MDS OEM EL705数传电台为通讯媒体,利用VB6.0的通讯控件MSComm实现了控制中心PC机与多个远端AT89C51单片机控制系统之间远程无线通讯,实现了控制中心PC机对多个远端单元的实时控制与管理,并应用于工程设计中,通过实际应用,取得了满意的效果。
2 系统的组成及工作原理2.1系统的组成系统由控制中心和多个远端单元RTU(Remote Terminal Unit)组成。
控制中心主要由上位机PC和数传电台组成,各远端单元由数传电台、AT89C51单片机系统及现场设备组成,各远端单元根据实际需要分布在距控制中心一定距离的范围内,控制中心及远端单元结构分别如图1、图2所示。
2.2工作原理控制中心作为系统的数据终端设备DTE(Data Terminal Equipment),负责实现对远端单片机系统的实时控制与管理,打印单片机系统工作状态信息、自检信息、记录报表信息及远程单片机系统故障报警信息等,并可通过局域网与其它PC机进行信息传递。
用VB 6.O实现PC机与单片机的串行通信
周江伟;段奇法
【期刊名称】《武汉理工大学学报(交通科学与工程版)》
【年(卷),期】2001(025)004
【摘要】介绍在Windows98下采用VB6.0中的通信控件实现PC机与单片机之间串行通信的原理及方法.对在并Windows98下实现串行通信的方法进行了探讨,简要介绍了利用Win32API实现多线程通信的原理,较为详细地介绍了利用VB MSComm控件实现串行通信的方法,并结合自动跟踪补偿消弧控制系统的实例给出了基本的通信程序.
【总页数】4页(P508-511)
【作者】周江伟;段奇法
【作者单位】武汉理工大学自动化学院,;武汉理工大学自动化学院,
【正文语种】中文
【中图分类】TP273+.5
【相关文献】
1.用VB实现PC机与MSP430单片机串行通信的研究 [J], 孙瑞杰;吴晓宇;张瑜;马铁华
2.基于VB的PC机与单片机串行通信系统研究与实现 [J], 马壮;吴铮;王永强
3.利用VB8.0实现PC机与多单片机串行通信的方法 [J], 王平根
4.基于VB实现PC机与单片机的串行通信 [J], 王圆妹;许劲;李涛
5.基于VB的PC机与单片机串行通信关键技术实现 [J], 冯新宇;王娟;王安华
因版权原因,仅展示原文概要,查看原文内容请购买。
VB实现电脑跟单片机通讯
任务说明:
电脑端通过串口将数字(00,01,….,FF,十六进制)发送给单片机,单片机收到后回传这个数字,电脑接收到回传数据后显示出来,若发送的数据和接受的数据一致,则串口通讯正常,否则错误。
起始符是数字00,结束符是数字FF。
一、软件界面设计如下:
二、VB程序代码如下:
'将数字(0,1,2,3...255,转换为16进制)传给单片机,单片机收到后回传这个数字,PC机接收到回传数据后显示出来,
'若发送和接收的数据相同,显示通信正常,否则通信不正常
'发送以00开始,以FF结束
'定义变量
Dim data, data1 As V ariant '串口初始化
'在窗体的Load事件中加入下列代码对串口进行初始化:
Private Sub Form_Load()
mPort = 1
MSComm1.InputMode = 1
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
senddata.Text = "00"
End Sub
'单击清空文本框
Private Sub senddata_Click()
senddata.Text = ""
Cmdsend.Enabled = True
End Sub
Private Sub senddata_Change()
senddata.Text = UCase(senddata.Text)
End Sub
Private Sub senddata_KeyPress(KeyAscii As Integer)
If (KeyAscii >= Asc("a") And KeyAscii <= Asc("f")) Then
KeyAscii = KeyAscii - 32
End If
End Sub
'向单片机发送数据
Private Sub Cmdsend_Click()
If Len(senddata.Text) <> 2 Then
MsgBox ("请输入2位16进制数!")
Exit Sub
End If
c = senddata.Text
If (c = "FF") Then
data1 = "&H" & c
data = Chr(data1)
Else
a = Left(c, 1) '截取senddata左边字符
b = Right(c, 1) '截取senddata右边字符
data1 = "&H" & senddata.Text 'data1没有将senddata中的字符拆开
data = Chr("&H" & a) & Chr("&H" & b) '将senddata中的字符拆开存入data中,这样就会解决例如A1接收不正确的问题
End If
MSComm1.Output = data
Cmdsend.Enabled = False
End Sub
'获取温度测量值并显示
'每发送一次指令,触发下面事件,返回数据串
Private Sub MSComm1_OnComm()
Dim Inbyte() As Byte
Dim buffer As Variant
'读取仪表返回数据串
Select Case mEvent
Case comEvReceive
Inbyte = MSComm1.Input
For i = LBound(Inbyte) To UBound(Inbyte)
buffer = buffer + Hex(Inbyte(i))
Next i
Case comEvSend
End Select
If Len(Trim(buffer)) = 1 Then
returndata.Text = Str("0") & buffer
Else
returndata.Text = buffer
End If
If "&H" & buffer = data1 Then
Label1.ForeColor = QBColor(13)
Label1.Caption = "通信正常!"
End If
If "&H" & buffer <> data1 Then
Label1.ForeColor = QBColor(12)
Label1.Caption = "通信不正常!"
Label1.Caption = "未接收到数据"
End If
If Trim(buffer) = "FF" Then
Label1.ForeColor = QBColor(12)
Label1.Caption = "输入00重新开始!"
End If
End Sub
'当退出程序时,关闭串行口
Private Sub Cmdquit_Click()
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) MSComm1.PortOpen = False '关闭串口
End Sub
三、单片机代码:。