以PC为上位机,单片机为下位机双向通信

合集下载

PC 机与单片机通信(RS232 协议).doc

PC 机与单片机通信(RS232 协议).doc

PC 机与单片机通信(RS232 协议)目录:1、单片机串口通信的应用2、PC控制单片机IO口输出3、单片机控制实训指导及综合应用实例4、单片机给计算机发送数据:[实验任务]单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。

个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。

[硬件电路图][实验原理]RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。

RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。

RS-232协议以-5V-15V表示逻辑1;以+5V-15V 表示逻辑0。

我们是用MAX232芯片将RS232电平转换为TTL电平的。

一个完整的RS-232接口有22 根线,采用标准的25芯插头座。

我们在这里使用的是简化的9芯插头座。

注意我们在这里使用的晶振是11.0592M的,而不是12M。

因为波特率的设置需要11.0592M的。

“串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波特率设置为‘9600’数据位为8 位。

打开串口(如果关闭)。

然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。

注意,如果选中‘十六进制发送’那么发送的数据是十六进制的,必须输入两位数据。

如果没有选中,则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。

[C语言源程序]#include "reg52.h" //包函8051 内部资源的定义unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit gewei=P2^4; //个位选通定义sbit shiwei=P2^5; //十位选通定义sbit baiwei=P2^6; //百位选通定义unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //1~10 void Delay(unsigned int tc) //延时程序{while( tc != 0 ){unsigned int i;for(i=0; i<100; i++);tc--;}}void LED() //LED显示接收到的数据(十进制){gewei=0; P0=table[dat%10]; Delay(10); gewei=1;shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1;baiwei=0; P0=table[dat/100]; Delay(10); baiwei=1;}///////功能:串口初始化,波特率9600,方式1/////////void Init_Com(void){TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;}/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////void main(){Init_Com();//串口初始化while(1){if ( RI ) //扫描判断是否接收到数据,{dat = SBUF; //接收数据SBUF赋与datRI=0; //RI 清零。

pc机和单片机之间的通信

pc机和单片机之间的通信

pc机和单片机之间的通信在当今信息化社会中,计算机技术得到了广泛应用和发展,而PC 机和单片机作为计算机的两个重要组成部分,对于信息传输和通信起着至关重要的作用。

本文将重点探讨PC机和单片机之间的通信方式以及相互之间的优缺点。

一、串口通信串口通信是PC机和单片机之间最常见的通信方式之一。

通过串口通信,PC机和单片机可以进行双向数据传输。

串口通信主要通过串行接口来实现,传输速度相对较慢,但稳定可靠,适用于数据量较小且对实时性要求不高的应用场景。

同时,串口通信具有成本低、易于实现的优点,因此在一些简单的嵌入式系统中得到了广泛应用。

二、并口通信并口通信是PC机和单片机之间另一种常见的通信方式。

并口通信通过并行接口来实现,传输速度相对较快,适用于数据量较大且对实时性要求较高的应用场景。

并口通信相对于串口通信而言,不仅传输速度更快,而且还可以一次传输多个数据位,提高了数据传输效率。

但与之相对的是,并口通信所需引脚较多,设计和布线相对复杂,因此在一些对硬件成本和实现难度要求较高的场景下使用较少。

三、USB通信USB通信作为一种常见的通信方式,具有较高的传输速度和较强的兼容性。

对于PC机和单片机之间的通信而言,通过USB接口连接PC机和单片机,可以实现双向数据传输。

USB通信支持热插拔和即插即用的特性,因此使用非常方便。

同时,USB接口还支持供电功能,可以为单片机提供电源。

但需要注意的是,USB通信相对于串口和并口通信而言,实现难度较大,需要借助专门的USB芯片或模块。

四、网络通信随着互联网的快速发展,PC机和单片机之间的网络通信越来越常见。

通过网络通信,PC机和单片机能够实现远程数据传输和控制。

网络通信可以基于以太网、Wi-Fi等多种网络协议进行,其传输速度和稳定性相对较高。

但与之相对应的是,网络通信的实现相对较为复杂,需要考虑网络协议、安全性等诸多因素,同时还需要保证网络的可靠性和稳定性。

五、无线通信无线通信作为一种便捷的通信方式,得到了广泛应用。

PC与51单片机串口通信

PC与51单片机串口通信

PC与51单片机串口通信串行通信是计算机和外设进行通讯、对外设进行监控并获取由外设采集到的监测数据的一个非常重要的手段。

由于其所用的传输线少,成本低,实现起来方便易行,因而得到广泛的应用。

STC89C52RC有一个可编程的全双工串行通信接口,可以方便的实现PC机与其之间的串行通信。

一、总体方案系统中采用STC89C52RC/STC89C54RD+单片机作为下位机,PC机为上位机,二者通过CH340将PC的USB口转成RS232的串行口接收或上传数据。

单片机部分的程序采用C语言编程,用Keil uVision4编译后产生HEX文件下载到单片机内,从而实现数据收发。

PC端采用一个串口调试助手(sscom4.2)或MATLAB GUI 实现数据的收发。

二、具体方案1、简单通信测试程序本程序为了测试通信方式是否合适,以便于下一步增加程序的内容。

(1)利用STC提供STC-ISP-V4.83软件检查MCU选项MCU Type is: STC89C54RD+MCU Firmware Version: 3.2CChinese:MCU 固件版本号: 3.2CDouble speed / 双倍速: 12T/单倍速振荡放大器增益: full gain下次下载时 P1.0/P1.1 与下载无关内部扩展AUX-RAM: 允许访问(强烈推荐)下次下载用户应用程序时将数据Flash区擦除: NO用户软件启动内部看门狗后: 复位关看门狗ALE pin 仍为 ALE内部时钟频率:11.061806M外部时钟频率:11.061806M(2)串行口初始参数设定串行口工作方式为方式1(10位异步收发),波特率为9600bps,用定时器1作波特率发生器,选用定时器模式2,其它详见程序及说明。

(3)程序功能说明通过串口调试助手,向单片机发送字符,发送字符的末尾需加“!”,让单片机识别数据接收完毕,返回“Wait command!”字符串。

单片机与PC机多机通讯的程序

单片机与PC机多机通讯的程序

下面是我写的一个实现多个下位机(单片机)与一个上位机(PC机)的一主多从串口通讯程序,用的STC89C52RC,定时器2做串口通信波特率发生器。

实现功能是这样的:用调试助手向单片机发送一个数据包。

通讯协议是这样的:数据包的格式如下所示(共10个字节组成):0x2A,0xEB,0x8D,地址码,指令码,数据长度码,数据码,数据码,校验码,0xAD前面三个字节为帧头,即开始符。

地址码:欲传送的目的地址,即选定哪一个单片机。

指令码:向单片机发送的指令数据长度码:用于指示后面有效数据的个数数据码:传送的数据,配合指令码的纯数据。

校验码:累加和校验,对地址码,指令码,数据长度码,数据码进行累加,用来检验数据的完整性和正确性。

0xAD :帧尾,即结束符。

本程序实现功能是这样的:用调试助手向单片机发送一个数据包,单片机收到后对数据解析,再回传指定的数据。

例如发送:2a eb 8d 01 03 01 01 06 ad指令码为01,单片机接收到后解析,回传0xce 0x7b 0x11 0xed。

其中前两个字节为开始符,最后一个字节为结束符。

同理,若收到的指令码为02,回传0xce 0x7b 0x12 0xed。

以此模拟控制单片机操作。

若接收错误,即累加校验码不等于单片机实际计算的累加和,回传0xce 0x7b 0x02 0xed,提示接收错误,要求PC重发数据(模拟,需要上位机软件配合才行)。

单片机开机初始化后即向PC发送一个数据0xce 0x7b 0x00 0xed,用于指示单片机与PC通信已连接。

下面是程序:#define ID 0x01 //单片机地址uint8 rec_data; //串口通信接收数据uint8 state_flag=0; //通信协议解析状态标志,初始化为0uint8 retval=0; //通信协议解析函数返回值,初始化为0uint8 cmd; //指令码uint8 Data[2]; //数据码uint8 data_count; //数据长度码程序大体思想是:首先定义了几个全局变量,接收到数据后,串口中断子程序中用变量rec_data存储一个字节的数据,随后对数据进行解析:首先判断数据包的完整性,正确性,然后提取指令码,数据码等数据,存放起来用于主程序处理。

WINDOWS环境下PC机与单片机的通信

WINDOWS环境下PC机与单片机的通信

WINDOWS环境下PC机与单片机的通信摘要:本文介绍了当前自动控制系统中PC机与单片机之间常用的几种通讯方法,如基于串口RS-232和RS-485、基于USB接口与PC机的通讯。

文中给出了部分程序。

关键词: PC机单片机通讯接口VC++在自动控制系统中,PC机与单片机组成上位机和下位机,其基本构成是:下位机(单片机系统)完成信号检测、A/D转换和简单的控制功能,通过系统总线(如RS-232、RS-485、USB)与上位机(PC机)相连,进行监测、控制,形成主从式结构。

下面就上位机和下位机之间目前几种常用的通讯方法作一些介绍。

1、RS-232的串行通讯在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,成本低,且完全能满足要求,所以应用广泛。

1.1、利用VC++的标准通信函数利用VC++的标准通信函数_inp和_outp可实现串口通信。

下面是一个串口初始化的程序:Void init_com (PORT){char i;outp(PORT+3,0x80);outp(PORT,0x0C);outp(PORT+1,0);outp(PORT+3 ,0x3a);outp(PORT+3 ,0x03);i=inp(PORT+5) && 0xfe;outp(PORT+5,i);}1.2、使用串行通信控件MSCommMSCOMM控件,即Microsoft Communication Control,是Microsoft为简化Windows下串行通信编程而提供的ActiveX控件。

它提供了一系列标准通信命令的使用接口,利用它可以建立与串口的连接,并可以通过串口连接到其他通信设备(如调制解调器),发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。

MSCOMM控件可用于创建电话拨号程序、串口通信程序和功能完备的终端程序。

串行通信控件MSComm32.OCX提供了使用RS-232来进行数据通信的所有协议,VC编程语言为该控件提供了标准的事件处理函数、过程,并通过属性和方法提供了串行通信的设置。

单片机与PC机的串行通信系统

单片机与PC机的串行通信系统

单片机与PC机的串行通信系统作者:李晓蕊吕朝萍来源:《中国新通信》 2015年第14期李晓蕊吕朝萍南京邮电大学【摘要】我们研究了单片机与PC 机之间串行通信的方式,设计了一个串行通信系统,该系统的上位机为PC 机,下位机为MCS—51 单片机,本文主要介绍了采取专用电平转换芯片MAX232 实现了上位机与MCS-51 单片机间串行通信的有关技术方法。

并对此进行了具体实现,给出了下位机基于Keil μ Vision4 通信的核心控制代码。

【关键词】 MAX232 串口通信波特率单片机一、前言随着计算机网络技术与数据终端的普及,计算机的通信功能越来越重要。

计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。

通信有并行通信和串行通信两种方式。

在单片机系统以及现代测控系统中信息的交换多采用串行通信方式。

本文介绍了在Windows 环境下,利用串口调试助手实现PC 机与MCS—51 单片机之间串行通信的方法。

二、硬件接口设计1、串行通信接口标准:RS-232C 是EIA(美国电子工业协会)1969 年修订RS-232C 标准。

RS-232C 定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。

目前PC机上均为RS-232C 接口。

单片机的逻辑电平(TTL 电平)与RS-232C 规定的逻辑电平不一致,因此需要使用专用电平转换芯片MAX232 芯片实现RS-232 电平与TTL 电平之间的转换[1][2]。

2、MAX232 芯片实现RS-232 电平与TTL 电平之间的转换。

MAX232 芯片是MAXIM 公司生产的、包含两路接收器和驱动器的IC 芯片,它的内部有一个电源电压变换器,可以把输入的+5V/0V 电源电压变换成RS-232 输出电平所需的+10V/-10V 电压。

所以,采用此芯片接口的串行通信系统只需要单一的+5V 就可以了。

在没有+12V 电源的场合,实用性更强,并且价格适中,硬件接口简单。

PC机与单片机多机双向通信的设计应用

PC机与单片机多机双向通信的设计应用

制命 令 , 控制现场设备 。 而 在 工 业 现 场 经 常 要 实 现 多 点 分 布式 数 据采集或控制 , 因此 , 必 须 实 现 上 位 机 和 多 个 单 片机 之 间 的 双 向 通 信 。上 位 机 和 单 片 机 之 间 的 双 向通 信 涉 及 到 硬 件 和软 件 两 方
信。 第 6步 中 , 如 果 主机 收到 的数 据 错 误 , 则结束通信。 在 通 信 开 始以后 , 从 机 每 一 次 通 信 都 会 加 上 超 时处 理 , 避 免 通 信 错 误 导 致
通信的死锁。 2 P C 机 端软 件 通 信 接 口设 计 P C 机 端 程 序 主 要 处 理 来 自单 片 机 的 数 据 , 并 以 合 适 的 方 式 展示给用户 , 因此 用 户 体 验 非 常 重 要 。 为 了保 证 用 户 接 1 3 的响 应
n e s s o f s o f t war e .
K e y wo r d s : P C, MCU。 t wo - wa y c o mmu n i c a t i o n , a r c h i t e c t u r e
由 于 单 片 机 的处 理 能力 较 弱 ,适 合 通 过 各 类 传 感 器 采 集 数 据 或 向设 备 发送 控 制命 令 等 , 不适合做数据处理 , 因此 实 践 中通 常 由 单 片 机 与 上 位 机( 一般采用 P C机) 联合构成 完整的系统 , 单
面 的工 作 。 硬 件 方 面 主要 关 注 采 用 何 种 通 信 接 口。 常 用 的 接 口有 串行 口 、 F C接 口、 S P I 接 口及 以太 网接 口等 。实 践 中 , 根据 环 境 、 传输距离 、 实 现 成本 等 因 素选 择 接 口。 软 件 方 面 主 要 关 注 如 何 设 计 双 方 的高 层 通 信 协 议 以正 确 及 时 地 完 成 数 据 交换 。 硬 件 方 面 一 旦 确 定 了接 口类 型 , 则 相 应 的 电路 也 就 确 定 了 。 软件 可 通 过 合 理 的架 构 设 计 , 以 适 应 不 同 的接 口 , 为 系 统 提 供 更 多 的灵 活 性 。 1 通 信 协 议 设 计

PC_机与单片机间串行通信优化控制方法

PC_机与单片机间串行通信优化控制方法

- 39 -高 新 技 术在工业控制中,需要经常建立一个由上位机和下位机组成的系统,并通过上位机实现对多个下位机的控制。

由于上位机与下位机之间的距离较远,因此需要进行上位机与下位机间的串行通信。

上位机通常为PC 机,下位机通常为单片机,因此经常会不可避免地出现PC 机与单片机之间的串行通信问题[1]。

目前PC 机的研发与应用已经使其具备了极强的监控和管理能力,而单片机在实际应用中具备了快速和容易被控制等特点。

因此在实际应用中,通常都是通过PC 机串行接口与多个单片机相连接来实现对数据的传输[2-3]。

基于该特点,为了实现PC 机与单片机间的串行通信控制,该文提出了一种全新的优化控制方法。

1 PC 机与单片机通信连接设计为了实现PC 机与单片机之间的串行通信,采用RS-485接口,该解耦器与TTL 电平相兼容,具有10Mbit/s 的数据传输速度,并具有较强的抗共模噪声干扰能力,将其引入PC 机与单片机通信连接结构上。

PC 机与单片机通信连接结构示意图如图1所示。

此外,RS-232接口只能在总线上与一个收发机相连,也就是一个单站的功能。

而RS-485的接口最多可以连接128台收发信机,即具备多个基站的功能,使使用者能够较容易地使用一个RS-485接口来组建一个设备网络[4]。

因此,RS-485接口是PC 和MCU 间串行通信的首选。

根据上述论述,由于PC 机的串口选用了RS 232电平信号,因此在单片机与PC 机之间需要加装一个能够实现RS-232与RS-485转换的接口。

根据上述内容,完成对PC 机与单片机通信连接设计。

2 通信程序优化设计在下位机中,通过查找和中断2种方式实现数据的发送和接收。

不管采用何种方法,它的串行数据的传输仅(利用MOVSBUF.A 指令)将数据从累加器转移到串口缓冲区寄存器即可。

其串行数据的接收仅需将数据从串口缓冲区寄存器传输到累加器(采用MOVA 、SBUF 指令)[5]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uchar Buf_Index=0;//缓冲空间索引
//数码管编码
ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
//延时
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
2)较为详细了解8051芯片的性能;
3)能够了解到单片机系统的基本原理,了解单片机控制原理;
4)掌握AT89C51程序控制方法;
5)掌握AT89C51 C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;
6)掌握在PC与单片机在仿真时用到的Virtual Serial Port Driver和串口调试助手的使用方法;
一实验背景
串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现PC对单片机的控制而且对在机电控制中具有十分重要的地位,掌握串口通信的实现方法以及上下位机的通信原理对日后进行机电控制的开发具有深远意义。
二设计目的
1)提高学生的动手能力,以及能够利用所学的知识来完成作品,达到复习知识的目标;
3)新建文件并另存为计算机控制.c4)在SourceGroop1导入文件 5)编写代码,并生成C语言设计与应用.hex文件6)在Proteus中设计电路如图3-1示
7)在虚拟串口软件Virtual Serial Port Driver中设置串口COM2与COM1(如图3-2示)利用这个软件将PC的模拟串口1与模拟串口3连接一起,这两串口就可以进行通信了。
2)程序流程图

3)仿真图
运行前如图4-1示
PC发送字符串至单片机,单片机通过显示管显示发送的数字
如图4-2示
单片机回发给PC机如图4-2示
五程序代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Receive_Buffer[101];//接收缓冲
{
SBUF=s[i];
while(TI==0);
TI=0;
i++;
}
}
六 实验结果
当在串口调试助手软件中输入0123456789时,以及在proteus7.8中运行时,Virtual Terminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。
ES=1;IP=0x01;
TR1=1;
while(1)
{
for(i=0;i<100;i++)
{//收到-1为一次显示结束
if(Receive_Buffer[i]==-1) break;
P0=DSY_CODE[Receive_Buffer[i]];
DelayMS(200);
}
DelayMS(200);
}
//主程序
void main()
{
uchar i;
P0=0x00;
Receive_Buffer[0]=-1;
SCON=0x50;//串口模式1,允许接收
TMOD=0x20;//T1工作模式2
TH1=0xfd;//波特率9600
TL1=0xfd;
PCON=0x00;//波特率不倍增
EA=1;EX0=1;IT0=1;
七 实验体会
这次的实验提高了我的设计能力与对电路的分析能力。同时在软件的编程方面得到了很大的提高,使编程能力得到加强,在此同时对所学的单片机知识得到很大的巩固与加强。本次实验熟悉单片机的使用功能,熟悉了Keil uVision 进行程序调试,利用proteus7.8进行硬件设计。在本实验中,我明白了以PC为上位机单片机为下位机可以进行通信,通过编写C语言程序显示管是可以反映出PC与单片机的通信过程,在以后的实验中我们可以通过一些可以连接LED、示波器、显示管等来了解如AT89C51、两机之间通信原理、DS12C887等的工作原理及组成部分作用的了解。明白了PC与单片机之间的通信要用max232来连接,以及设置波特率的时候一定要一致。在仿真中设置PC上位机与单片机下位机通信时必须要安装Virtual Serial Port Driver和串口调试助手软件,在其帮助下,才能完成软件设计。
“这是由8051发送的字符串!”。
主要内容
1)PC上位机与C51下位机的通信原理及串口的使用。
2)PC机发送字符给单片机,单片机接收到在数码管上进行显示。
3) 单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。
实验步骤
1) 启动keiuvision32)新建工程命名为单片机的C语言设计与应用
Receive_Buffer[Buf_Index+1]=-1;
Buf_Index=(Buf_Index+1)%100;
}
ES=1;
}
void EX_INT0() interrupt 0//外部中断0
{
uchar *s="这是由8051发送的字符串!\r\n";
uchar i=0;
while(s[i]!='\0')
}
}
//串口接收中断函数
void Serial_INT() interrupt 4
{
uchar c;
if(RI==0) return;
ES=0;//关闭串口中断
RI=39;0'&&c<='9')
{//缓存新接收的每个字符,并在其后放-1为结束标志
Receive_Buffer[Buf_Index]=c-'0';
7)掌握PC作为上位机以及单片机作为下位机的工作原理;
8)通过学习PC与单片机的工作原理及编程方法,提高编程能力以及创新能力;
9)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;
10)能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。
三设计要求与主要内容:
设计要求
当运行时,会弹出Virtual Terminal-VT1窗口,PC的串口设置为COM2,在串口调试助手软件中设置串口为COM1,开关断开,PC机发送数据到单片机中即当在串口调试助手软件中输入0123456789时,Virtual Terminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机
8) 在串口调试助手中设置串口为COM1,在仿真的PC中设置串口为COM2,而且波特率与校验位停止位数据位设置一致,设置参数参考图3-2
9) 将计算机控制.hex文件导入Proteus中
10)观察并记录实验数据,得出实验结论。
图3-1
图3-2
四设计程序原理:(包含仿真图和流程图)
1)主程序流程图
YN
相关文档
最新文档