用VB 编程语言实现PC机与AVR 单片机的通信

时间:2013-12-09来源:网络

用VB 编程语言实现PC机与AVR 单片机的通信
图2  程序流程图
以下是加载窗体时对MSCOMM 控件的初
始化设置
Private Sub Form  Load ()
With MSComm1
. CommPort = 1 ’设置通讯端口
. InBufferCount = 0 ’清空缓冲区
. InBufferSize = 5 000
’设置通讯波特率等
. Settings = “9 600 , n ,8 ,1”
If (PortOpen = False) Then
PortOpen = True
End if’将取出的数据设置为二进制
. InputMode = comInputModeBinary
End With
End Sub
接收按钮按下时,定时器启动,开始检查缓冲区中是否有数据。本系统定义了2 个定时器,一个用于对通讯协议中起始符和命令码的检测,另一个用于控制信息段的数据流。
接收数据时,定义一个变体(Variant) 类型的变量tempbuf ,将缓冲区内的数据赋给此变量tempbuf = MSComm1. Input ,同时还要定义一个字节(Byte) 型的数组变量indate () ,再次赋值indate = tempbuf ,这样就可以操作indate () 中的数据了。
由于Input 属性在取出数据后会自动清空缓冲区,因此不再需要用其他代码强制清空。
为了解决传输干扰的问题,还要求上位机给下位机发送数据,以通知下位机接收的数据是否无误,从而使下位机决定是否重新发送数据。
发送数据时,定义一字符串(St ring) 类型的数组变量outdate ( ) ,将需要发送的数据赋给变量,然后用下面语句发送MSComm1. Output = CVar (outdate)
5  硬件实现
实现电路如图3 所示。用VB 编程语言实现PC机与AVR 单片机的通信
AT90 系列单片机带有一个全双工的通用串行异步收发器(UART) ,数据传送通过把被传送的数据写入UART I/ O寄存器UDR 来初始化,在波特率时钟加载到移位寄存器的传送操作时,起始位从TXD 引脚移出,然后是数据,低位在先。当停止位被移出时UDR 寄存器中没有新的数据,UDRE 标志位将保
持为1 直到UDR 被重写。而在数据接收时,接收器前端的逻辑以16 倍波特率采样RXD 引脚的信号。如果一个有效的起始位被发现,就开始起始位之后的数据位的采样,在采样的同时,这些位被移入传送移位寄存器。当停止位到来时,3 个采样中的大数应为1 才能接收该停止位。
图3  硬件实现电路
6  结束语
本系统试运行已经成功,说明MSCOMM 控件完全可以实现各种高速复杂的串行通信协议,具有很高的实用价值。
参 考 文 献
[1 ]  耿德根,宋建国,马潮. AVR 高速嵌入式单片机原理与应用[M] . 北京:北京航空航天大学出版社,
2001.
[2 ]  东箭工作室. Visual Basic 5. 0 中文版程序设计[M] . 北京:清华大学出版社,1997.InBufferSize :设置并返回接收缓冲区的字节数。
1 2

关键词: VB编程语言 PC机 AVR单片机

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版