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

PC机与单片机AT89C51的串行通信摘要:在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。
关键词:Windows95单片机AT89C51RS-232接口RS-485接口串行通信在以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产现场进行监测和控制。
由于计算机上的RS-232所传送的距离不超过30m,所以,在远距离的数据传送和控制时,可以用MAX485的接口转换芯片将RS-232转换成RS-485协议进行远距离传送。
在发送和接收端都进行协议转换后,RS-485协议对数据传送来说是相对透明的,所以依然可以使用计算机中的RS-232进行远距离的数据传送和控制。
在最简单的RS-232直接传送通信系统中,只要发送和接收双方同时准备好,仅用信号发送端(TXD),信号接收端(RXD)和信号地(GND)3根线即可进行通信;若以应答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)进行硬件握手。
在Windows95下,可以很方便地使用Win32通信API函数来实现这些硬件的握手以及数据的传送。
在89C51单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。
单片机也可以以直接传送或应答握手的方式进行数据通信,但由于握手方式占用其他的端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式,本文将重点介绍。
1Windows95下的通信编程Windows95通信体系提供了1个改进的串行应用程序接口SAPI用来进行交互式串行通信。
论文题目:PC机与AT89C51单片机的串行通信系统设计

PC 机与AT89C51单片机的串行通信系统设计史志举,胡波,李杰河海大学信息学院,江苏常州(213022)E-mail :szj0701@摘 要:本文介绍了应用AT89C51单片机与PC 机进行串行通信的软、硬件设计方法和实现过程。
PC 机将需要传输的数据通过串行口传送给单片机,单片机接收并在LCD 上显示接收的数据。
系统采用MAX232芯片实现RS232的EIA 电平与单片机TTL 电平的转换,并采用1602液晶显示。
关键词:AT89C51,串行通信,接收,MAX2321.引言近年来随着电子计算机技术的广泛应用,数据的采集和通讯越来越多地受到人们的关注。
数据的采集和通讯过程就是数据的A/D 转换、传递和处理的过程,本文主要讨论单片机(下位机)与PC 机(上位机)之间的数据传输,单片机接收数据并且在LCD 上显示接收结果。
2.系统介绍本系统的结构框图如图1,PC 机将数据通过异步串行口RS232传输到单片AT89C51,单片机再把数据显示在LCD 上,使得用户可以很明确的知道接收过程。
接下来详细介绍系统的串口接收软、硬件设计。
图1 系统的结构框图3.串口接收软、硬件设计AT89C51单片机上有一个通用异步接收/发送器UART ,通过引脚RXD 和TXD 可与外部电路进行全双工的串行异步通信,发送数据时由TXD 端送出,接收时数据由RXD 端输入。
由于PC 机串口RS232采用负逻辑电平,即逻辑1:515−− V,逻辑0:515++ V 。
而单片机的TTL 电平的1和0分别为 2.45++ V 和00.4+ V,本系统的串口硬件电路主要采用MAXIM 公司生产的MAX232实现电平间的转换。
3.1 串口硬件设计MAX232是由德州仪器公司(TI )推出的一款兼容RS232标准的芯片,使用+5v 单电源供电。
该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F 电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS 电平。
C#实现PC机与单片机(89C51)的串行通讯

C#实现PC机与单片机(89C51)的串行通讯摘要:本文主要论述PC机与单片机之间实现异步串行通讯需要解决的问题以及如何利用C#提供的串行通讯SerialPort类来实现PC机与51单片机的通讯。
关键词: SerialPort;串行通讯;波特率1 引言PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通讯,是许多测控系统中常用的一种通信解决方案。
在技术广泛应用的今天人们采用了许多方法在Visual 中来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件,这是最简单、最方便的方法,但需要注册;第二种方法是自己用API写串口通信;第三种方法是采用微软推出的最新版本Visual Studio 2021开发工具,NET Framework 2.0类库中包含的SerialPort类,方便地实现了所需要串口通讯的多种功能。
本文着重讨论了Visual Studio 2021开发工具中SerialPort类的设计方法。
2 SerialPort类常用属性、方法和事件2.1 命名空间System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。
2.2 串口的通讯参数①通讯端口号:[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM端口,该属性返回类型为String。
②通讯格式:SerialPort类分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式中的波特率、校验位、数据位和停止位。
2.3 串口的打开和关闭SerialPort类中打开关闭串口相应的是调用类的Open()和Close()方法。
2.4 数据的发送和读取SerialPort类调用重载的Write和WriteLine方法发送数据,其中WriteLine 可发送字符串并在字符串末尾加入换行符。
51单片机与PC机串口通信的仿真与实现

51单片机与PC机串口通信的仿真与实现作者:李健来源:《电脑知识与技术》2018年第32期摘要:介绍了利用几种常见软件实现的51单片机与PC机串口通信的仿真过程,可以在单片机课程的理论教学中加以应用,具有效率高、成本低等优点,有助于教师的教学和学生对知识的掌握和应用。
关键词:51单片机;PC机;串口通信;仿真中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)32-0038-02在实际应用中,单片机与PC机间的通信非常普遍[1]。
这时单片机主要完成现场数据采集和设备监控[2],PC机接收单片机发来的数据进行分析、处理,并对结果再次发送单片机进行现场控制等。
笔者在单片机课程的理论教学中,由于课堂上受到条件的约束,采用了纯软件的方法对单片机串口通信进行仿真和演示,便于实现和让学生理解。
下面通过一个实例来介绍51单片机与PC机之间串口通信的仿真与实现过程。
1 所需软件使用到的软件有:VSPD、Proteus、Keil和串口助手[3]。
VSPD是一个虚拟串口小软件,可以虚拟出一对串行接口用于仿真;Proteus是一款流行的单片机仿真软件,用于建立串口通信仿真电路;Keil是用于编写单片机程序的软件;串口助手是用于上位机即PC机的软件,用来向单片机发送数据,或者接收单片机发送来的数据并进行显示。
2 设计与仿真过程预期实现的功能为:PC机通过串口助手向单片机发送一个字节数据,单片机接收到后将数据的二进制形式通过八个数码管的亮灭显示出来,接收的“1”对应的灯亮,接收的“0”对应的灯灭。
同时单片机将接收的数据发回给PC机,PC机将数据在串口助手中再显示出来。
2.1 利用Proteus设计仿真电路如图1所示,在Proteus软件中选用AT89C51单片机、COMPIM、电阻和发光二极管组成仿真电路。
COMPIM在仿真中相当于PC机上配置的RS232标准串行接口,为D型九针插座[4]。
在实际中,单片机和PC机之间需要通过MAX232芯片进行电平转换才能连接,但在仿真图中可以直接将两者的RXD(接收数据)和TXD(发送数据)连接起来进行串行通信。
AT89C51单片机与PC机串行通信的接口实现

AT89C51单片机与PC机串行通信的接口实现[摘要] 本文介绍了AT89C51单片机与PC机采用RS232C标准进行串行通信的接口实现。
在接口中采用MAX232作电平转换电路,简单的通信协议,PC 机用VB编程,AT89C51单片机采用中断收发方式。
文章给出了相应通信接口电路与程序。
[关键词] 通信协议RS232C 通信接口电路通信接口程序AT89C51是一种带4K字节可编程可擦除只读存储器(FLASH FPEROM)和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进行通信必须有一定的通信协议,本文采用简单的通信协议。
89C51串行口及串行通信技术

从本质上说,所有的串行接口电路都是以并行数据形式与
CPU连接,以串行数据形式与外部逻辑设备连接。它们的基 本功能是从外部逻辑设备接收串行数据,转换成并行数据后
传送给CPU,或从CPU接收并行数据,转换成串行数据后输
出到外部逻辑设备。
19
89C51具有一个全双工串行通信接口。
作用:
●作为UART使用。
也可以用作地址/数据帧的标识位,D8=1表示该帧信息传 送的是地址,D8=0表示传送的是数据。两帧信息之间可以
无间隔,也可以有间隔,且间隔时间可任意改变,间隔用
空闲位“1”来填充。
6
异步通信
图
异步通信数据格式
7
奇偶校验
是一种校验代码传输正确性的方法。根据被传
输的一组二进制代码的数位中“1”的个数是奇数或
0 1 1
1 0 1
1 2 3
9位UART,波特率可变(由T1或T2溢出率
决定)
28
(3)串行通信工作方式
方式0
方式0时,串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚
输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送 和接收均为8位数据,低位在先,高位在后。波特率固定为
23
●SM2,多机通信控制位,主要用于方式2和方式3。当接收机
的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不
激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并 激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,
不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激
从低位开始串行输出,数据的低位在右高位在左,在具体应用
Basic实现PC与89C51单片机之间的串行通信

运用Visual Basic实现PC与89C51单片机之间的串行通信作者:沈飙夏海燕摘要在Visual Basic开发环境下,运用VB提供的通信控件,实现PC机与89C51单片机之间的串行通信。
关键词Visual Basic89C51单片机串行通信A/D D/A转换Serial Communication between PCand 89C51 with Visual BasicAbstract:Serial communication between PC and 89C51 single-chip-computer by MSCOMM control box of Visual Basic is introduced.Key Words:Visual Basic89C51Serial communication A/D D/A1系统简介在中科院等离子体物理研究所受控核聚变物理实验装置控制系统中,我们开发设计了以计算机控制为基础的各种信号予置系统,系统原理如图1所示。
图1系统原理图系统上位机由一台(PC586)微机构成,软件采用Visual Basic编程,作出十分直观的人机界面,并通过串行口将所需的各种予置信号(数字信号)传给单片机系统,再由单片机系统产生实际的模拟信号经线性光电隔离器送到现场。
予置数值可以分别显示在PC机软件窗口和单片机系统的予置数字表头上。
同时,现场实测信号经过线性光电隔离器,也可以实时显示在本系统的检测数字表头上和PC机的界面上。
如此设计界面直观,而且利于对现场信号进行实时监测。
因此,采用本系统,大大提高了现场信号予置精度,对实验操作人员来说人机界面良好,简单易懂。
我们将分硬件和软件两方面分别介绍该系统的情况。
2硬件介绍从系统原理图上可见,本系统关键的硬件部分是单片机系统的设计,上位机PC机则直接利用它的RS232串行口即可。
系统硬件原理如图2所示。
图2系统硬件原理图本系统采用CPU为89C51的单片微机,89C51本身带有2K的内存储器,可以在编程器上实现闪烁式的电擦写达几万次以上,比以往惯用的8031CPU外加EPROM为核心的单片机系统在硬件上具有更加简单、方便等优点,而且完全兼容MCS 51系列单片机的所有功能。
使用SPComm控件实现PC机与单片机AT89C51的串口通信

科技资讯科技资讯S I N &T NOLOGY I NFORM TI ON 2008N O.03SCI ENC E &TEC HNO LO GY I N FO RM A TI ON I T 技术使用S P Co mm 控件实现P C 机与单片机A T89C51的串口通信刘雪亭韩鹏(四川信息职业技术学院四川广元市628017)摘要:本文介绍一种基于C++b ui l de r 语言利用Sp c om m 控件实现PC 机与单片机串口通讯的软硬件实现方法。
关键词:C ++b ui l d er SPC o m m 控件串口通信单片机A T89C 51中图分类号:TP311文献标识码:A 文章编号:1672-3791(2008)01(c)-0097-021引言作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于P C 与P C 或者P C 与单片机之间的数据交换以及其它工业控制与自动化控制中。
C++bui l de r 是Bo r l a nd 公司推出的一个功能强大的应用程序开发工具,它不仅具有De l p h i 的简单,功能强大和高效率等特点,而且还结合了C ++灵活性强,编译执行快速的优点。
通常要实现串口通信,可以采用的方法以及第三控件有很多。
例如C ++bui l de r 自身支持的W I N32API 函数,M i c r os of t vi s u a l 系列开发工具中的M SComm 控件,利用第三控件S P C o mm 串口通信控件等。
相比较而言,利用S P Co mm 控件则相对较简单,并且该控件具有丰富的与串口通信密切相关的属性及时间,提供对串口的各种操作,而且还支持多线程。
因此使用S P C o mm 控件实现P C 机与单片机的串口通信是一种高效,简便的方式。
2浅析SPC om m 控件S P Co mm 是台湾小猪工作室开发的第三方串口控件,是MS C o mm 的增强版本,功能强大,编程非常简单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AT89C51单片机与PC机串行通信的接口实现[摘要] 本文介绍了AT89C51单片机与PC机采用RS232C标准进行串行通
信的接口实现。
在接口中采用MAX232作电平转换电路,简单的通信协议,PC 机用VB编程,AT89C51单片机采用中断收发方式。
文章给出了相应通信接口电路与程序。
[关键词] 通信协议RS232C 通信接口电路通信接口程序
AT89C51是一种带4K字节可编程可擦除只读存储器(FLASH FPEROM)和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控件并对它们的属性进行设置。
部分程序如下:
初始化代码
Private Sub Form_Load()
mPort = 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 =““ ’清空接收文本框
End Sub
发送数据
Private Sub Button_SEND_Click()
Dim x As String
If Text_SEND.Text = ““ Then’发送数据不能为空
x = MsgBox(“发送数据不能为空”, 16)
Exit Sub
End If
If Not MSComm.PortOpen Then ’保证串口打开MSComm.PortOpen = True
End If
MSComm.Output = Text_SEND.Text + Chr$(13)’发送数据For i = 1 To 20000000’延时
Next
End Sub
接收数据
Private Sub MSComm_OnComm()
Select Case mEvent’检验串口事件
Case comEventOverrun’数据丢失
Text_SEND.Text =““’清空发送缓冲区
Text_RECV.Text =““’清空接收缓冲区
Text_SEND.SetFocus
Exit Sub
Case comEventRxOver’接收缓冲区溢出
Text_SEND.Text =““’清空发送缓冲区
Text_RECV.Text =““’清空接收缓冲区
Text_SEND.SetFocus
Exit Sub
Case comEventTxFull’发送缓冲区已满
Text_SEND.Text =““’清空发送缓冲区
Text_RECV.Text =““’清空接收缓冲区
Text_SEND.SetFocus
Exit Sub
Case comEvReceive’接收缓冲区内有数据
Dim str As String
str = MSComm.Input’从接收队列中读入字符串
Text_RECV.Text = Text_RECV.Textstr’读出字符串送显
End Select
End Sub
(三)AT89C51单片机(下位机)通信程序
AT89C51单片机采用中断方式向PC机发送数据和接收PC机数据,部分程序如下:
#include
#define __MAX_LEN_ 256 // 数据最大长度
#define _MHZ_ 12 // 设置单片机使用的晶振频率
#define uchar unsigned char
#define uint unsigned int
void delay10ms(uint count); // 声明延时函数
uint count_s; // 发送计数
uint count_r; // 接收计数
uchar xdata send_buf[__MAX_LEN_]; // 设置发送缓冲区
uchar xdata recv_buf[__MAX_LEN_]; // 设置接收缓冲区
void main()
{
uint i;
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 232; // 设置初值
TL1 = 232;
TR1 = 1; // 开始计时
PCON = 0x80; // SMOD = 1
SCON = 0x50; //工作方式1,波特率2400bps,允许接收
ES = 1; // 开串口中断
EA = 1; // 允许中断
TI = 0;
P1 = 0xff; // 读P1口前应将其置位
for(i=0; i __MAX_LEN_) // 接收缓冲区已满,忽略已接收数据{
RI = 0;
return;
}
recv_buf[count_r] = SBUF; // 接受数据
count_r++; // 接收计数增1
RI = 0; // 清接收标志位
}
}
/* 延时10ms,精度较低,参数count为延时时间*/
void delay10ms(unsigned int count)
{
unsigned int i, k;
unsigned char j;
unsigned int tmp;
tmp = (int)((100*_MHZ_)/12);
for(i=0; i<count; i++)
for(j=0; j<100; j++)
for(k=0; k<tmp; k++);
}
三、结论
本文所介绍的AT89C51单片机与PC机的串行通信接口可靠性好,可行性强。
其硬件结构简单,PC机(上位机)VB6编程环境友好,界面灵活下位机。
AT89C51单片机可灵活的外界电路进行数据采集或实时控制,方便构建远程数据采集系统或控制系统。
参考文献:
[1]求是科技.单片机通信技术与工程实践[M],-北京:人民邮电出版社,2005.1.
[2]吴金戌等. 8051单片机实践与应用[M]-北京:清华大学出版社,2002.9.。