用VB来实现单片机与PC之间通信
- 格式:doc
- 大小:376.00 KB
- 文档页数:7
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的单片机与PC串口通信设计学院电气信息学院专业班级自动化081班学生姓名陈凯学生学号*********说明1.个性化教育周结束后,每个学生都必须认真撰写《工程设计报告》。
通过撰写工程设计报告,系统地回顾和总结工程设计的全过程,将实践性教学的感性认识升华到一定的理论高度,从而提高个性化教育教学效果。
2.工程设计报告应包括:设计题目、设计说明书及总结、参考文献、附件等几部分。
设计说明书及总结是报告的主体,该部分至少应包括:软、硬件设计;性能指标;调试说明;工程设计的收获与体会等几部分。
3.工程设计报告要求条理清晰,内容详尽,数据准确。
字数不少于5000字。
4.工程设计报告的撰写是工程设计的重要组成部分,它是成绩评定的主要依据之一。
学生在工程设计完成后需按指导教师要求提交合格的工程设计报告。
不交工程设计报告者不得参加成绩评定。
5.工程设计报告至少应分:设计期间的工作表现和工程设计报告质量两部分,指导教师应分别按百分制评定成绩。
各设计平台可根据需要添加其它评价内容。
6.工程设计各环节所占比例由各设计平台指导小组自行确定。
7.学生成绩评定表中的总成绩应为各环节分数与所占比例乘积的算术和。
8.封面成绩为五级分制成绩,量化标准按学校有关文件执行。
9.工程设计报告可打印也可下载格式后手写,工程设计报告完成后应按封面,说明,工程设计报告内容的顺序进行装订成册。
10.个性化教育周完成后将工程设计报告交学院教学办公室保存。
学生成绩评定表基于VB的单片机和PC机串口通信设计一、设计目的:1.熟悉并掌握串口标准及通信原理。
2.掌握51单片机的串口编程。
3.熟悉上位机软件VB6.0的编程环境,能够应用其进行程序的编写和调试,掌握MSCOMM组件的设置方法。
二、设计要求:1.对四路模拟量进行AD采集,并将转换结果送1602液晶进行实时显示。
2.将采集结果通过串口发送给PC机,在上位机软件上进行数据的监控显示。
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 与单片机通信一、电脑和单片机通信(以MCS51 为例),必须进行电平转换,推荐使用单5V 供电的MAX232CPE ,只需简单地外接几个电容就可实现,具体电路可参考《单片机原理及接口技术》(P382 )。
二、使用VB 与单片机通信,可以利用VB 提供的MSCOMM 控件。
1 、如果工具箱中没有MSComm 控件,其外形是一个小电话,则需要添加该控件。
选择“Project ”菜单的Commponent 项,弹出一个对话框,在控件列表中找到Mircosoft Coun confrol 6.0 ,点击左边的方框,确定即可。
2 、MSCOMM 控件的主要属性。
( 1 )CommPort 设置或返回通讯端口号。
格式为:mPort [ =PortNumber] 。
在设计时,PortNumber 可以设置成从1 到16 的任何数(缺省值为1 )。
但是如果用PorOpen 属性打一个并不存在的端口时,就会产生错误。
还需注意的是必须在打一开端口之前设置CommPort 属性。
例如:mPort=2, 即设置当前通信串口为COM2 口。
( 2 )Settings 以字符串形式设置或返回波特率、奇偶校验、数据位和停止位。
格式为:MSComm.Settings[=ParaString] 。
ParaString 是一个包含四部分的字符串。
第一部份为波特率,其可选值为110 ,300 ,600 ,1200 ,2400 ,9600 ,14400 ,19200 ,28800 。
第二部份为奇偶校验,N 表示不校验,E 表示偶校验,O 表示奇校验,S 表示空格检验,M 表示符号校验。
第三部份为数据位位数,其可选值为4 , 5 ,6 ,7 ,8 ,。
第四部份为停止位位数,其可选值1 ,1.5 ,2 。
Settings 属性的缺省值为“9600 ,N ,8 ,1 ”。
(3 )handshaking 设置或返回硬件握手协议,指的是PC 机与Modem 之间为了控制流通而约定的内部协议。
基于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 这样的专用芯片即可。
电路结构见下图。
Option Explicit Dim count1 As String 'Dim count11 As String Dim flag As Integer 'Dim flag_1 As Integer Dim jinji_flag As Integer Dim jinji_flag1 As Integer Dim dxbian As Integer Dim nbbian As Integer Dim count_sheding As Integer Dim count_shedingnb As Integer Dim strData As String '串口变量 'Dim flag As Integer Dim sj(0 To 4 As Integer Dim sj1(0 To 4 As Integer Dim sj2(0 To 4 As Integer Dim sj3(0 To 4 As Integer Private Sub Command2_Click( MSComm1.PortOpen = False Unload Me End Sub Private Sub Form_Load( count1 = count_sheding count_sheding = 60 dxbian =count_sheding count_shedingnb = 60 nbbian = count_shedingnb Text1.Text = ""Text5.Text = "" ' flag = 0 ' jinji_flag = 1 Text9 = "" '串口初始化 mPort = 1 MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以文本形式取回。
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 = 1MSComm1.InputMode = 1MSComm1.RThreshold = 1MSComm1.SThreshold = 1MSComm1.Settings = "9600,n,8,1"MSComm1.PortOpen = Truesenddata.Text = "00"End Sub'单击清空文本框Private Sub senddata_Click()senddata.Text = ""Cmdsend.Enabled = TrueEnd SubPrivate Sub senddata_Change()senddata.Text = UCase(senddata.Text)End SubPrivate Sub senddata_KeyPress(KeyAscii As Integer)If (KeyAscii >= Asc("a") And KeyAscii <= Asc("f")) ThenKeyAscii = KeyAscii - 32End IfEnd Sub'向单片机发送数据Private Sub Cmdsend_Click()If Len(senddata.Text) <> 2 ThenMsgBox ("请输入2位16进制数!")Exit SubEnd Ifc = senddata.TextIf (c = "FF") Thendata1 = "&H" & cdata = Chr(data1)Elsea = 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 IfMSComm1.Output = dataCmdsend.Enabled = FalseEnd Sub'获取温度测量值并显示'每发送一次指令,触发下面事件,返回数据串Private Sub MSComm1_OnComm()Dim Inbyte() As ByteDim buffer As Variant'读取仪表返回数据串Select Case mEventCase comEvReceiveInbyte = MSComm1.InputFor i = LBound(Inbyte) To UBound(Inbyte)buffer = buffer + Hex(Inbyte(i))Next iCase comEvSendEnd SelectIf Len(Trim(buffer)) = 1 Thenreturndata.Text = Str("0") & bufferElsereturndata.Text = bufferEnd IfIf "&H" & buffer = data1 ThenLabel1.ForeColor = QBColor(13)Label1.Caption = "通信正常!"End IfIf "&H" & buffer <> data1 ThenLabel1.ForeColor = QBColor(12)Label1.Caption = "通信不正常!"Label1.Caption = "未接收到数据"End IfIf Trim(buffer) = "FF" ThenLabel1.ForeColor = QBColor(12)Label1.Caption = "输入00重新开始!"End IfEnd Sub'当退出程序时,关闭串行口Private Sub Cmdquit_Click()Unload MeEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) MSComm1.PortOpen = False '关闭串口End Sub三、单片机代码:。