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