网站大量收购闲置独家精品文档,联系QQ:2885784924

AT89C51单片机与PC机串行通信的接口实现.pdfVIP

AT89C51单片机与PC机串行通信的接口实现.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

AT89C51单片机与PC机串行通信的接口实现

[摘要]本文介绍了AT89C51单片机与PC机采用RS232C标准进行串行通

信的接口实现。在接口中采用MAX232作电平转换电路,简单的通信协议,PC

机用VB编程,AT89C51单片机采用中断收发方式。文章给出了相应通信接口电

路与程序。

[关键词]通信协议RS232C通信接口电路通信接口程序

AT89C51是一种带4K字节可编程可擦除只读存储器(FLASHFPEROM)

和128字节的存取数据存储器(RAM)的低电压,高性能CMOS8位微处理器。

采用了ATMEL公司的高密度、不容易丢失存储技术,与MCS-51系列的单片机

兼容。具有集成程度高、系统结构简单、价格低廉等优点被广泛应用到控制领域

中。但是在复杂的数据处理、良好的人机交互等方面不能满足需要,常采用PC

机与AT89C51单片机进行通信,AT89C51单片机(下位机)实时采集数据传送

给PC机(上位机)处理,然后接收PC机处理的结果,并进行相应的控制的方

式来弥补。本文介绍单片机与PC机进行串行通信的一种接口实现。

一、接口电路的设计

(一)接口逻辑电平的转换

在PC机系统大都装有异步通信适配器,为标准的RS-232C接口。RS-232C

为负逻辑,用+3V~+15V表示逻辑“0”用,-3V~-15V表示逻辑“1。”AT89C51单片

机采用正逻辑TTL电平0和+5V.所以AT89C51与PC机通信时必须进行电平转

换。转换的方法有多种。常采用MAXIM公司生产的专用的双向电平转换集成电

路MAX232。MAX232引脚排列与外围电路如图1所示。

图1MAX引脚及外围接口图

(二)通信接口电路

本文采用可靠性高的MAX232作电平转换芯片,选择其中一对发送器与接

收器,PC机的串行口与MAX232的电平端口相连,MAX232的逻辑电平端口与

单片机的串行口相连,接口电路如图2所示。

图2PC机与AT89C51通信接口图

二、通信接口程序

(一)通信协议

PC机与AT89C51进行通信必须有一定的通信协议,本文采用简单的通信

协议。波特率:2400bps;无奇偶校验位;8位数据位;1位停止位。

(二)PC机(上位机)通信程序

PC机(上位机)程序采用VB编写,主要是应用微软公司提供的MSComm

控件通信。在工程中建立通信窗口,添加文本框(接收框、发送框)、发送控件、

MSComm控件并对它们的属性进行设置。部分程序如下:

初始化代码

PrivateSubForm_Load()

MSComm.CommPort=1’设置串口1

MSComm.Settings=“2400,N,8,1”’波特率2400bps,无校验,8位数据,1

位停止位

MSComm.InputLen=0’读取接收缓冲区的所有字符

MSComm.InBufferSize=1024’设置接收缓冲区为1024字节

MSComm.OutBufferSize=512’设置发送缓冲区为512字节

MSComm.PortOpen=True’打开串口

MSComm.SThreshold=0’不触发发送事件

MSComm.RThreshold=1’每一个字符到接收缓冲区都触发接收事件

MSComm.InBufferCount=0’清除发送缓冲区数据

MSComm.OutBufferCount=0’清除接收缓冲区数据

Text_SEND.Text=““’清空发送文本框

Text_RECV.Text=““’清空接收文本框

EndSub

发送数据

PrivateSubButton_SEND_Click()

DimxAsString

IfText_SEND.Text=““Then’发送数据不能为空

x=MsgBox(“发送数据不能为空”,16)

文档评论(0)

182****3273 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档