单片机与计算机之间通讯 程序,单片机和计算机之间的数据交换程序

实现单片机和计算机之间的数据交换, Windows 环境下的Visual Basic 6.0 作为可视化的编程工具, 具有完整的基于组件设计的可视化集成开发环境、操作简单、界面友好的特点。 上位机通信程序是用VB6.0 使用MAX232 来进行数据通信的协议, 既可 以使用查询方式又可以使用事件驱动方式来完成串行通信。

1 上位机程序

Private Sub Form- Load( )

MSComm1.CommPort=1‘选择通信端口1’

MSComm1.InputLen=0‘串行数据接收缓冲区初始化’

MSComm1.Settings=“9600, n, 8, 1”

设置端口参数: 波特率为9 600 b/s, 无奇偶校验位, 8 位数据, 1 位停

止位。

MSComm1.PortOpen=True ‘打开串口’

MSComm1.RThreshold=1 ‘有一个字符就接收’

ENDSub

Private Sub MSComm1_OnComm( )

Select Case MSComm1.CommEvent

Case comEvReceive

DimBuffer As Variant, i

MSComm1.InputMode=comInputModeBinary

MSComm1.InputLen=0

Do’该循环判断输入缓冲区是否有数据

DoEvents

Loop Until MSComm1.InBufferCount>=1

Buffer=MSComm1.Input

For i = LBound( Buffer) To UBound( Buffer)

List1.AddItemBuffer( i) ‘把接收到的数据显示在列表框中’

Next i

Case Else

End Select

End Sub

Private Sub CommandClose- Click( )

IfMSComm1.PortOpen=True Then

MSComm1.PortOpen=False

‘关闭串行端口’

x=MsgBox(“关闭通信! ”, 16)

End If

ENDSub

2 下位机程序

#include

#include

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit P1_5=P1^5; //RS485 的控制位

uchar flag; //结果为负和正的标志位

void delay( unsigned int count) //延时子程序

{

unsigned int i;

while( count)

{

i=200;

while( i>0) i- - ;

count- - ;

}

}

void main( void)

{

SCON=0X50;

TMOD=0X21; //定时器1, 工作在方式2

TL1=0XFD; //所用晶振为11.0592, 波特率设定为9 600 b/s

TH1=0XFD;

TR1=1; //启动定时器1

EA=1;

ES=1;

??

do{ P1_5=1; //串行发控制位

tmpchange( ) ; //数据采集函数调用

??

SBUF=TEMP; //把数据送入串行口缓冲寄存器

if( TI==0)

TI=0; }

while( 1) ;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值