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 的增强版本,功能强大,编程非常简单。
AT89C51单片机与PC机的通信接口及编程
接收时 ,首先使 SCON 中的接收允许控制位 REN = 1, AT89C51以 16倍波特率的速率检测 RXD ( P3. 0) 上的信号 ,检测时采取“三中取二 ”原则 ,即当连续检 测 3次 RXD ,出现 2次以上由“1”到“0”的负跳变时 , 就启动接收控制器接收数据 ,一 = 数据接收完毕 ,接收 中断标志位 R I = 1,串行口向 CPU 请求中断 。此时 ,只 要执行一条“MOV A , SBUF”指令 ,就可将数据读入累 加器 A 中 。再令 R I = 0,就可接收下一 = 数据 。 2. 3 通信程序
03H
状态
AL 中的值 初始化参数 发送的字符
接收的字符
DX中的值
串口号 0 (COM1)或 串口号 1 (COM2)
表 3中 AL 的参数格式如图 4所示 。
图 4 AL 的参数格式
调用 INT 14H 后 , AH 中存放的是线路状态的出 口参数 ,其各位定义如图 5所示 。
图 5 AH中各位的定义
表 2 RS2232C与 TTL、CMO S逻辑电平的比较
逻辑 0 1
RS2232C电平 /V + 5~ + 15 - 5~ - 15
TTL电平 /V 0~ + 0. 8 + 2~ + 5
CMOS电平 /V 0~ + 1. 5 + 3. 5~ + 5
1. 3 RS2232C与 TTL 逻辑电平的转换 由于 PC机串行口使用的是 RS - 232C逻辑电平 ,
IBM 2PC系列机的串行异步通信适配器是以 8250 为核心 ,由它完成发送时的并 /串转换和接收时的串 / 并转换 ,以及与转换相关的控制工作 。同时 ,适配器中 还配置了电平转换的发送器和接收器电路及其他控制 电路 。发送器用于将 TTL 电平转换为 RS2232C电平 , 接收器用于将 RS2232C电平转换为 TTL 电平 。
基于单片机AT89C51的全双工串行口通信设计
第3期(总第127期)机械管理开发2012年6月No.3(SUM No.127)MECHANICAL MANAGEMENT AND DEVELOPMENT Jun.20120引言视频监控系统是一种安全防范能力较强的系统。
随着社会和技术的进步,人们对视频监控的要求提高。
视频监控系统已从模拟视频监控、基于视频压缩板卡的数字视频监控,发展到全数字化网络视频监控。
本文系统采用DirectShow 技术进行视频监控软件开发,可方便地从支持WDM 驱动模型的采集卡上捕获数据,并且进行后期处理存储到文件中[1]。
这使多媒体数据库管理系统(MDBMS )中多媒体数据的存取变得更加方便、设计更加简单。
1Directshow 技术简介DirectShow 是微软提供的在Windows 平台上进行流媒体处理的一种方案,也是完全基于COM 的应用系统。
该系统位于应用层中,使用Filter Graph (过滤器图表)模型管理整个数据流的处理;参与数据处理的各个功能模块叫Filter (过滤器);各个Filter 在Fil ⁃ter Graph 中按照一定的顺序连接成一条“流水线”协同工作[2]。
按照功能,Filter 分为3类:Source Filter (源过滤器),Trance Filter (转换过滤器),Render Filter (提交过滤器)。
源过滤器主要负责获取数据,数据源可以是文件、因特网计算机里的采集卡、数字摄像机等,然后将数据往下传输。
转换过滤器主要负责数据的格式转换,例如数据流分离/合成、解码/编码等,然后将数据继续往下传输。
提交转换器主要负责数据的最终去向——将数据送给显卡、声卡进行多媒体的演示,或者输出到文件进行存储[3]。
2系统软件架构设计系统采用C/S 架构,又称Client/Serve 或客户端/服务器模式,分为客户端和服务器两层,主要由6个功能模块组成:视频采集模块、视频压缩编码模块、网络通信与数据传输模块、视频数据文件存储模块、视频流解码播放模块,见图1。
AT89C51单片机和PLC及PC机的通信.
第12卷第2期集美大学学报(自然科学版Vol .12No .22007年4月Journal of J i m ei University (Natural Science Ap r .2007[收稿日期]2005-09-22[作者简介]江小霞(1960-,女,副教授,从事工业控制、单片机开发应用等研究.[文章编号]1007-7405(200702-0150-05AT89C51单片机和P LC 及PC 机的通信江小霞(集美大学轮机工程学院,福建厦门361021[摘要]介绍了以226CP U 作为下位机与PC 机(上位机和多台AT89C51开发的仪表的串行通信.着重介绍了通信协议的设计及PC 机、P LC 和单片机的通信程序初始设置和相关的程序流程.[关键词]智能仪表;通信协议;P LC;单片机[中图分类号]TP 23[文献标识码]A0引言随着微电子技术和大规模集成电路技术的迅速发展,微处理器芯片的处理功能不断提高,价格不断下降,这拓展了计算机技术一个新的广阔应用领域,即嵌入式应用.这种应用的特点是将微处理芯片嵌入到各种设备、仪表中[1].而工业生产过程的控制系统正向智能化、数字化和网络化方向发展.由PC 作为上位机,P LC (可编程控制器作为下位机,以及单片机开发的现场智能仪表组成的现场总线控制系统越来越得到广泛的应用.上位机对整个系统进行集中监控,完成可视化人机操作界面、图形显示、数据库、联网等功能.由于P LC 可靠性高,适合于各种恶劣的现场环境[2],常作为下位机用于控制.下位机循环地读入现场的各种信号,进行逻辑判断和控制量的计算,并对控制对象进行控制,下位机还负责将各种现场信号以及各种控制量送上位机进行实时监控[3-4].智能仪表主要实现对现场信号的采集、处理、现场显示和通信.现场总线之所以具有较高的测控能力,一是得益于仪表的微机化,二是得益于仪表和设备的通信功能,而现场总线控制系统对通信协议的实时性、可靠性和简捷性要求比较严格,解决好P LC 与PC 之间以及P LC 与智能仪表之间的通信问题是这类系统应用的关键技术之一.1系统结构图1是一种现场总线系统结构,下位机选用西门子S7-200系列CP U226型可编程控制器,智能仪表采用AT89C51开发的仪表.CP U226的串行口采用RS -485总线标准,因此P ORT1口与多个智能仪表的连接采用RS -第2期江小霞:AT89C51单片机和P LC 及PC 机的通信485,PC 通过PC /PP I 电缆与P LC 的P ORT0连接.PC 机采用V isual Basic 编程,用串行通信控件(MSCo mm 实现通信.P LC 的P ORT0和P ORT1口均使用自由口的方式通行.2通信接口设计图2是AT89C51单片机的RS -485的通信接口电路,S N75176是收发器芯片.9芯串口插座的引脚3为P LC 的B ,引脚8为P LC 的A,S N75176 的A 、B 信号与P LC 的A 、B 信号交叉连接.当P110=1时,AT89C51可发送数据;当P110=0时,AT89C51可接收数据.3通信协议311P LC 与各智能仪表之间的通信协议在通信协议的设计中一方面为了保证准确性,必须在通信中增加一些附加信息,另一方面由于控制系统的实时性,数据传输时间应越短越好.因此在命令帧和数据帧的设计中,在考虑通用性时同时考虑尽可能少的附加信息和应答方式,以减少传输时间.P LC 向仪表发送的命令帧格式为:STX ADDR CHS ETX仪表向P LC 返回的数据帧格式为:ST X ADDR DAT A H DAT A L CHS ET X每个字段均为1个字节,其中:STX 是起始字符,ETX 是结束字符,CHS 是校验和.由于RS -485标准最多并联32个节点,因此ADDR 的低5位(D4~D0作为仪表地址,控制命令帧的ADDR 的高3位(D7~D5是控制命令;数据帧的ADDR 的高3位是应答信息.D7D6D5=000,表示本仪表接收命令正确,并根据命令要求返回数据;D7D6D5=111,表示本仪表接收命令错误,P LC 重发命令.DAT A H 表示16位数据的高8位,DAT A L 表示16位数据的低8位.P LC 与单片机的通信波特率选用4800b /s 或9600b /s,8个数据位,无校验位,1位停止位.312PC 机与P LC 之间的通信协议PC 与P LC 采用主从式结构,PC 机作为主站向从站发送各种命令,P LC 作为从站根据控制命令或进行控制操作,或向主站返回现场数据和状态.PC 发送给P LC 的命令帧与P LC 发送给PC 的数据帧格式一样,其格式为:STX NUM ADDR DAT A 1…D AT A N CHS ETX每个字段均为1个字节,其中:NUM 是数据字节数,DAT A 1……DAT A N 是N 个字节的数据.AD 2DR 的低5位(D4~D0是下位机地址,作为控制命令帧时高3位(D7~D5是控制命令;作为数据帧时,高3位是应答信息.当D7D6D5=000时,表示本下位机接收命令正确;当D7D6D5=111时,表示本下位机接收命令错误,上位机重发命令.S7-200P LC 的发送缓冲区和接收缓冲区除了起始字符、结束字符以及中间的各信息外,在起始字符前还有1个字节的传输字节计数.・151・集美大学学报(自然科学版第12卷PC 与P LC 的通信波特率选用9600b /s,8个数据位,无校验位,1位停止位.4PC 的通信程序设计上位机采用V isual Basic 编程,使用串行通信控件(MSComm 实现通信.MSComm 控件有关属性的定义如下:M mPort =1’选择串口1M SComm1.Setting ="9600,n ,8,1"’9600b /s,无校验,8位数据,1位停止位M SComm1.I nput M ode =com I nput B inary’以二进制格式读取接收缓冲区M SComm1.R threshold =1’接收到的字符数大于1就产生接收事件M SComm1.I nput L en =0’读取接收缓冲区的内容M SComm1.Out B uffer Count =0’清空发送缓冲区M SComm1.I n Buffer Count =0’清空接收缓冲区用接受数组和发送数组来对接收数据缓冲区和发送数据缓冲区进行操作实现数据通信.5P LC 的通信程序设计本系统有关P LC 的程序主要涉及3个方面:P ORT0和P ORT1通信初始化设置;P ORT0口的接收和发送程序;P ORT1口的接收和发送程序.初始化设置如下://P ORT0参数设置LD S M0.0MOVB 9,S MB30//9600b /s,8个数据位,无校验位,1位停止位MOVB16#EC,S MB87//允许接受,检测起始字符和结束字符,超时检测MOVB0,S MB88//起始字符为0MOVB16#FF,S MB89//结束字符为十六进制数16#FF MOVW+1000,S MW 92//接受超时1s MOVB 100,S MB94//接收最多字符数为100//设置P ORT1参数MOVB 16#0D,S MB130//4800b /s,8个数据位,无校验位,1位停止位MOVB 16#EC,S MB187//允许接受,检测起始字符和结束字符,超时检测MOVB 0,S MB188//起始字符为0MOVB 16#FF,S MB189//结束字符为十六进制数16#FFMOVW +500,S MW 192//接受超时0.5sMOVB 20,S MB194//接收最多字符数为20图3是P ORT0口的有关通信的程序流程图.图4是P ORT1的有关通信的程序流程图,P LC 向某仪表发出读取数据命令后,进入数据接受状态.6AT89C51的通信编程AT89C51接收P LC 送来的取数命令,采用中断方式,向P LC 返回现场数据采用查询方式.根据P LC 向AT89C51发送的命令格式和AT89C51返回的数据格式,AT89C51系统在内存开辟一个4单元的接收缓冲区和一个6个单元的发送缓冲区.4次中断后,在接收缓冲区得到一帧的命令,首先判断是否是本仪表地址,如是本仪表地址,经校验无错后,则将正确信息和本仪表地址送发送缓冲区地址・251・第2期江小霞:AT89C51单片机和P LC 及PC 机的通信段;经校验有错,将错误代码和本表地址送发送缓冲区的地址段,最后将发送缓冲区发送给PLC .AT89C51将现场模拟量转换成14(或12位数字量,经滤波后送发送缓冲区的数据段并送显示缓冲区显示.程序流程图如图5所示.7结论在通信协议的设计中采用短的命令帧和数据帧以及相应的应答方式既保证了数据传输的正确性,又具有较好的实时性.该协议在226CP U 作为下位机与PC 机和AT89C51开发的仪表的串行通信在试验中得以实现.其中PC 机与S7-200P LC 的通信,可用于自行开发监控程序中;P LC 与多AT89C51的通信接口设计、通信协议设计以及通信程序设计,可广泛用于单片机开发现场总线智能仪表以及基于RS -485总线控制系统的设计中.・351・集美大学学报(自然科学版第12卷[参考文献][1]张永康,王文海,孙优贤.智能仪表的通用模型[J ].浙江大学学报:工学版,2000,34(1:93299.[2]王光明,张现,刘国福.一种智能控制算法在智能仪器中的实现[J ].仪器仪表学报,2003,24(6:6432646.[3]罗小川,叶东,张磊,等.基于网络多关节测量机通讯接口研究[J ].仪器仪表学报,2003,24(4:3952398.[4]王可崇,张继梅,张广忠.一种非主从式通信的多单片机测控系统[J ].电测与仪表,2003,40(7:40244.Comm un i ca ti on Between PC,PLC and AT 89C 51M i croprocessorJ I A NG Xiao 2xia(M arine Engineering I nstitute,J i m ei University,Xiamen 361021,ChinaAbstract:The paper intr oduces serial communicati on of the instrument composed of AT89C51,226CP U and PC .It lays stress on the design of communicati on p r ot ocol,the initial setting of PC πs,P LC πs and m icr op r ocess or πs communicati on p r ogra m and s ome p r ogra m fl o w concerned .Key words:intelligent instru ment;communicati on p r ot ocol;P LC;m icr op r ocess or(责任编辑朱雪莲・451・。
如何使用AT89C51的串口和电脑的串口进行通信原理与实验
如何使用A T89C51的串口和电脑的串口进行通信原理与实验串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如你可以把写入单片机的数据码显示在电脑上,如可以使用一个按键,当按下它时使某一个字母如:AA,通过单片机的串口将它发送到电脑上显示,起到仿真器的某些功效,站长在开发数据采集设备时就是通过串口来检查数据正确与否的。
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
本网站的提供的实验板上已经装配好了全部硬件。
串口通讯的硬件电路如上图所示为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。
点击这里可以下载并运行这个串口调试软件这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件。
软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。
串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。
基于VisualC_6_0的PC机和AT89C51的串行通讯
网络通讯与安全电脑知识与技术电脑知识与技术1引言我们开发的超声—电火花—磨削多功能符合加工机床是利用PC机、PMAC运动控制卡、电火花脉冲电源和超声波发生器组成的多CPU控制系统。
为了实现通过人机交互界面对电火花脉冲电源和超声波发生器进行参数设置,对它们的工作状态进行监视并根据它们的工作状态实现利用PMAC控制卡对运动的控制,使它们之间进行信息的交换。
考虑到串行通讯简单易行和可靠性,我们采用串行通讯进行信息的交换和控制命令的发送。
为了使它们之间的通讯相互协调,我们定义了相互间的通讯协议,包括波特率、数据位数、停止位的个数以及奇偶校验方法和数据格式等。
2相关的API串行通讯的函数和概念2.1打开关闭串口在Windows操作系统中,不允许用户直接对硬件操作,而是把串口和其他通信设备是作为文件进行处理,串口的打开、关闭、读取和写入所用的函数和操作文件的函数完全一致。
2.1.1打开串口CreateFile()函数为读访问或写访问打开串口,打开成功后返回该串口句柄,供读写串口时使用。
HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDe-siredAccess,DWORDfdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDfdwCreation,DWORDfdwAttrsAnd-Flags,HANDLEhTemplateFile);参数lpFileName是要打开文件的逻辑名,串口使用如COM1或COM2;参数dwDesiredAccess指定访问类型,串口通信是双向的,一般设置为:GENERICREAD|GENERICWRITE;参数fdwShare-Mode指定文件共享属性,设为0,不共享;参数lpSecurityAttributes引用安全性属性结构,设为缺省值NULL;参数fdwCreation指定如果CreateFile正被已有的文件调用时应采取的动作,此参数就必须被设置为OPENEXISTING;参数fdwAttrsAndFlags描述了该端口的各种属性,对串口而言设置为FILE_FLAG_OVERLAPPED,该标志表明串口采用异步通信模式,可进行重叠操作,端口I/O可以在后台进行,若值为NULL,则为同步通信方式,在同步方式下,应用程序将始终控制程序流,直到程序结束;参数hTemplateFile是指向模板文件的句柄,当打开串口时,该参数为NULL。
89C51 单片机O 口模拟串行通信的实现方法
89C51 单片机I/O 口模拟串行通信的实现方法·严天峰·目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。
本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。
1.串行接口的基本通信方式.串行接口的有异步和同步两种基本通信方式。
异步通信采用用异步传送格式,如图1 所示。
数据发送和接收均将起始位和停止位作为开始和结束的标志。
在异步通信中,起始位占用一位(低电平),用来表示字符开始。
其后为7 或8 位的数据编码,第8 位通常做为奇偶校验位。
最后为停止位(高电平)用来表示字符传送结束。
上述字符格式通常作为一个串行帧,如无奇偶校验位,即为常见的N.8.1帧格式。
串行通信中,每秒传送的数据位称为波特率。
如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。
同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。
根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O 口来模拟实现串行通信的时序。
2.硬件电路89C51 单片机通过普通I/O 口与PC 机RS232 串口实现通信的硬件接口电路如图2 所示。
由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采用TTL 电平的89C51 单片机在接口规范上不一致,因此TTL电平到RS232 接口电平的转换采用MAXIM 公司的MAX232 标准RS232接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~15V)和逻辑“0”(+3V~15V)的电平转换。
用AT89S51与PC机实现串口通讯
桂林电子科技大学单片机最小应用系统设计报告指导老师:吴兆华学生:林承德学号:092011221机电工程学院2010年6月一、设计题目用AT89S51与PC机实现串口通讯,单片机接收上位机发送的数字,并在最小系统板上的数码管上将其显示。
二、系统硬件电路图系统硬件图包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、串口通讯电路以及数字显示部分。
设计硬件电路图时,其基本思想:先在proteus中搭建仿真电路,将编好的程序下载到仿真环境的51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。
图2.0 系统硬件全局图2.1 单片机最小系统电路图2.2 串口通讯原理及其电路图一、发送和接收的过程如下:串行口的发送过程由指令MOV SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。
串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。
接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。
CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。
TI和RI是由硬件置位的,但需要用软件复位。
二、相关的寄存器1、SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。
两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。
串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。
AT89系列单片机与PC机之间的串行通信接口设计_郭成林
A T89系列单片机与PC机之间的串行通信接口设计郭成林(太原理工大学轻纺工程与美术学院,山西晋中030600)摘 要:介绍了AT89系列单片机与主机串行通信接口电路和通信程序的设计,主要介绍了通信接口芯片的选择、配件设计。
单片机通信程序的设计。
关键词:A T89C52;串行口;RS-232;串行通信;ADM232中图分类号:T P334.7 文献标识码:A1 问题的提出A T89系列单片机具有集成度高、处理能力强、系统结构简单、价格低等优点,在智能仪器、仪表和测量等领域中获得广泛的应用。
例如,为了提高计算机中各种文字的录入速度。
就必需采用各种高速录入设备,这些设备的主要特点就是允许多键并击。
这些设备如何与PC机连接,就存在一个接口的连接问题。
PC机与外部设备连接的接口一般有RS-2329针口,U SB4针口,25针并行口,PS/26针口等。
这些接口有些被常用外设占用,如两个PS/2口被键盘和鼠标占用,并行口被打印机或软件狗占用等,一般只有RS———232口和USB口用来扩展外部设备。
下面介绍一种用RS-232串行口完成单片机与PC机之间的通信方法。
本接口是作者在设计汉字速录键盘时与PC机之间通信的一种方法。
2 硬件电路设计在设计硬件接口电路时,必须考虑以下几个问题,一是逻辑电平的匹配,二是驱动能力的匹配,三是元器件的选择以及其它电气特性。
PC机通常有两个标准的RS-232C串行口,为了提高抗干扰能力,这种接口采用EIA电平逻辑,如表1所示。
表1 EIA与TT L电平对照表逻辑信号EIA电平TT L电平0+5V~+15V0V~+0.8V1-5V~-15V2V~+5V A T89系列单片机的串行口输入输出均为T T L电平。
PC机与单片机通信时,必须经过电平转换,通常使用的M C1488和M C1489电平转换器,但这两种转换器电路结构复杂,电源种类多,需±12V电源供电,工作也不太稳定,容易烧坏芯片。
89C51单片机的串口通信编程1
89C51单片机的串口通信编程1一、pc机上的串口通信编程过程如下:1.建立项目打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX 就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用ClassWizard定义CMSComm类控制对象打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。
基于DELPHI的PC机和AT89C51单片机的串行通信实现
基于DELPHI的PC机和AT89C51单片机的串行通信实现刘荣;田淑娟;燕苗;韩琛晔【摘要】工业控制系统软件在现代社会中应用越来越广,而串口通信是工业控制中必不可少的部分.本文主要讨论了PC机与单片机通讯的接口设计和利用Delphi开发环境实现PC机与单片机之间实现串口通信的方法.【期刊名称】《科技传播》【年(卷),期】2011(000)002【总页数】2页(P200-201)【关键词】单片机;串口通信;RS-232C;Delphi7.0;Spcomm控件【作者】刘荣;田淑娟;燕苗;韩琛晔【作者单位】石家庄计算机职业学院,河北,石家庄,050061;石家庄计算机职业学院,河北,石家庄,050061;石家庄计算机职业学院,河北,石家庄,050061;石家庄计算机职业学院,河北,石家庄,050061【正文语种】中文【中图分类】TP368在工业生产实践中,经常要对某些仪器仪表进行监测或是发送某些参数,串口编程就显得相当重要。
PC机以其高的性价比、较强的数据处理能力、较快处理速度、以及单片机体积小、低功耗、低成本、高性能、使用灵活的特点,利用PC机作为上位机,单片机作为下位机的主从工作方式在工业控制领域中被广泛采用。
1 下位机设计1.1 单片机与PC机的RS-232标准接口通信电路的设计RS-232C是目前最常用的串行接口标准,RS-232C提供了单片机与单片机、单片机与PC机之间串行数据通信的标准接口。
但RS一232C规定的逻辑电平与单片机的逻辑电平是不一致的。
因此,在应用中必须把单片机的TTL电平和RS-232C电平进行相互转换,这里选用专用电平转换集成芯片MAX232来实现的。
1.2 MCS51单片机与PC机串行通信接口的硬件电路设计用MAX232芯片实现PC机与AT89C51单片机串行通信的典型电路如图1所示。
图中外接电解电容C1、C2、C3、C4用于电源电压变换,可提高抗干扰能力,它们可取相同容量的电容,一般取1.0μF/16V。
用VS2005实现AT89C51单片机与PC的串行通信
用VS2005实现AT89C51单片机与PC的串行通信
侯艳
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2009(000)002
【摘要】介绍AT89C51单片机以及与PC的接口,以MSComm控件为例,介绍PC端串中通信程序的开发,并给出了基于VS2005开发平台的串行通信的程序实例.【总页数】3页(P198-200)
【作者】侯艳
【作者单位】西华师范大学物理与电子信息学院,南充,637002
【正文语种】中文
【中图分类】TN91
【相关文献】
1.PC机与AT89C51单片机的串行通信接口设计 [J], 郭宏亮
2.windows下实现PC机与单片机AT89C51的串行通信 [J], 董晓丹
3.单片机(AT89C51)与PC机的串行通信 [J], 胥保春
4.基于DELPHI的PC机和AT89C51单片机的串行通信实现 [J], 刘荣;田淑娟;燕苗;韩琛晔
5.在Windows95下实现PC机与单片机AT89C51的串行通信 [J], 黄海容;黄继武;袁兰英;王来运;余进
因版权原因,仅展示原文概要,查看原文内容请购买。
- 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.。