(完整版)51单片机实现双机通信(自己整理的)

合集下载

51单片机的双击通信(分享借鉴)

51单片机的双击通信(分享借鉴)

一设计题目:双机通信系统二实验描述:设计一个双机通信系统,实现按键数据的互发及显示功能。

三实验要求:利用两片8051单片机完成双机通信(A机和B机),A、B机发至对方数据可用数码管显示,通信过程用按键控制,发送内容自定。

四实验元件:ST89C51(两片)、电容(30PF*4、10UF*4)、数码管(共阳)、晶振(11.059 2MHZ)、小按键等。

五具体设计:1:设计介绍1.1 串行通信介绍广义地讲,终端(如计算机等)与其他终端、终端与外部设备(如打印机、显示器等)之间的信息交换称为数据通信(Data Communication)。

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

并行通信:数据的各位同时进行传送(接收和发送),其优点是传递速度快、效率高,多用在实时、快速的场合。

串行通信:数据逐位传送,优点是数据只需要一根数据线就能完成传送,联结介质简单,成本低。

1.2 8051简介51内部结构:8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

·数据存储器(RAM):8051内部有128个8位用户数据存储单元8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

·程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

·定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

单片机双机串行实验报告

单片机双机串行实验报告

单片机双机串行实验报告实验报告:单片机双机串行通信实验一、实验目的本实验旨在通过单片机实现双机间的串行通信,包括数据的发送和接收,并利用这种通信方式完成一定的任务。

二、实验原理1.串行通信:串行通信是将数据一个个位发送或接收的方式。

数据通过一个线路逐位发送或接收,可以减少通信所需的线路数目。

2. UART串口通信:UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的简称,是一种最常用的串口通信方式,通常用于单片机与计算机、单片机与单片机之间的通信。

3.串口模块:串口模块是负责将数据转变为串行传输的硬件模块,包括发送端和接收端。

通过设置波特率、数据位、校验位和停止位等参数,可以实现数据的可靠传输。

4.单片机串口通信:单片机内部集成了UART串口通信接口,只需要通过相应的寄存器配置,可以实现串口通信功能。

5.双机串行通信:双机串行通信是通过串口将两台单片机进行连接,一台单片机作为发送端,负责将数据发送出去;另一台单片机作为接收端,负责接收并处理发送的数据。

三、实验器材与软件1.实验器材:两台单片机、USB转TTL模块、杜邦线若干。

2. 实验软件:Keil C51集成开发环境。

四、实验内容与步骤1.配置发送端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的TXD端连接到单片机的P3口,将GND端连接到单片机的地线。

(2)在Keil C51环境下创建新工程,编写发送端程序。

(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口发送中断。

(4)循环发送指定的数据。

2.配置接收端单片机(1)连接单片机和USB转TTL模块,将USB转TTL模块的RXD端连接到单片机的P3口,将GND端连接到单片机的地线。

(2)在Keil C51环境下创建新工程,编写接收端程序。

(3)配置串口通信的波特率、数据位、校验位和停止位,并打开串口接收中断。

单片机双机通信(C51程序)

单片机双机通信(C51程序)

单片机双机通信(C51程序)/*发送程序连线:两个单片机用3 根线连起来,要共地,rxd,txd 要交叉连接程序效果:通过主机发送,从机接收在主机中通过记下按键按下的次数,主机中显示最后按下的六个数值,并发送给从机,从机也显示这六个数值*/#includereg52.h //头文件#includeintrins.h //循环移位文件#define uchar unsigned char//宏定义#define uint unsigned intsbit key1=P3 ; //位声明uchar code table[] ={0X00,0x3f,0x06,0x5b,//数码管显示的数值0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar table_tr[6];//暂存最后按下的六个数值uchar count,cnt;//延时子函数,用于数码管显示void delay(uchar i){ uchar x,y; for(x=i;x0;x--) for(y=110;y0;y--);}//初始化子函数void init(){ TMOD=0x20;//T1 工作在方式2 TH1=0XF4;//波特率为4.8kbit/s TL1=0XF4; TR1=1;//启动定时器1 SCON=0X50;//串口工作在方式1,允许接收}//显示子函数void display(){ uchar i,j;//定义局部变量j=0x7f; //赋初值for(i=0;i6;i++) { P2=j; //点亮最右边的数码管P0=table[table_tr[i]]; //显示该数值delay(10); //延时,便于眼睛看清j=_cror_(j,1);//循环右移一位}}//按键扫描子函数void key_scan(){ if(key1==0) //判断是否有按键按下{ while(!key1) //等待按键松手{ display();//防止掉显} cnt++; //加1,用于显示SBUF=cnt;//送给缓冲区,发送while(!TI); //等待发送完TI=0; //发送完了,标志位清零for(count=0;count5;count++) //用于保存最后按下的六个按键数值{ table_tr[count] =table_tr[count+1]; } table_tr[5]=cnt; //把最后按下的按键数值赋给table_tr【5】if(cnt==10) //按键按下的次数有没有等于10 cnt=0;//等于,则清零}}void main() { init(); //调用初始化子函数P0=0x00; while(1) { key_scan(); //调用键盘扫描子函数display();//调用显示子函数} }tips:感谢大家的阅读,本文由我司收集整编。

MCS51单片机双机并行通信的实现

MCS51单片机双机并行通信的实现
现 方 法 。 1 单 向 并 行 通 信 接 口 的 实 现 Fra bibliotekA P0
CLK
8位端 口

P0
BUSY
2.1 主 从 并 行 通 信 接 口 的 实 现 主 从 并 行 通 信 接 口 的 特 点 是 ,两 个 单 片 机 之 间
能 够 通 过 并 行 接 口 将 数 据 发 送 到 对 方 ,但 其 中 一 个 单 片 机 处 于 主 机 状 态 .而 另 一 个 单 片 机 处 于 从 机 状 态 。 在 这 种 通 信 方 式 下 ,工 作 状 态 有 两 种 ,即 主 机 发 送 从 机 接 收 和 主 机 接 收 从 机 发 送 。 下 面 我 们 讨 论 主 机 发 送 、接 收 数 据 和 从 机 发 送 、接 收 数 据 的 工 作 流
第 3期 总 第 205期 2010年 2月
内 蒙 古 科 技 与 经 济 Inner M ongolia Science Technology & Economy
N o.3,the 205th issue Feb.2010
M CS S 1单 片机 双机 并 行 通信 的实 现
麻 桃 花
(内 蒙古 机 电 职 业技 术 学 院 ,内蒙 古 呼 和 浩 特 01000o)
摘 要 :针 对 M CS 单 片 机 具 有 的 特 性 ,介 绍 了 在 一 个 系 统 内 的 两 个 M CS 单 片 机 可 以 采 用 不 同 的 并 行 互 联 方 式 来 实 现 它 们 之 间 通 信 的 简 便 方 法 。
关 键 词 :M CS 单 片 机 ;并 行 通 信 ;工 作 流 程 中 图 分 类 号 :TP368.1 文 献 标 识 码 :B 文 章 编 号 :1【)O7— 6921(2010)O3— 01OO— O1

51系列单片机双CPU系统通信方法

51系列单片机双CPU系统通信方法

51系列单片机双CPU系统通信方法引言本文介绍一种新颖的方法来实现51系列单片机双CPU系统。

该方法灵活地运用了51单片机的ID工作方式,使没有HOLD功能的51单片机能够直接通过片外RAM进行数据通信。

不但硬件和软件的实现都比较简单,数据传输速度快,而且不涉及高成本特殊器件。

对一般51单片机系统的设计有一定的参考意义。

1 实现双处理器的一般方法① 使用双口RAM。

这种方法方便地实现了CPU之间的通信,在选择CPU接口时具有较大的灵活性;但这种方法会增加电路设计的难度和成本。

② 利用I/O口进行并行通信。

这种方法既要用I/O口传送数据,又要用I/O口来进行传送的控制,因此占用较多的I/O口;而且控制过程涉及进行通信的两个CPU,软件设计比较复杂。

③ 利用串口进行通信。

使用UART或I2C 总线来联系CPU也是常用的方法。

这种方法实现简单,只是传输速度较慢。

④共享内存。

共享内存实际上又有两种不同实现。

第一种如LON网络的Neuron节点芯片,利用不同时序实现共享内存。

这种方法必须制成专用芯片,把CPU和RAM封装在一起,一般情况下实现困难。

第二种如96系列单片机,使用HOLD线先挂起其中一单片机的总线,以使用其内存。

这种方法简单而且传输速度快,在具有HOLD功能的CPU系统中经常使用这种方法实现双CPU。

2 使用共享内存法实现双CPU通信由于51单片机没有HOLD功能,一般不能使用共享内存法实现双CPU通信。

这里介绍一种方法,使一般51单片机能够用共享内存实现双CPU通信。

该方法电路简单,软硬件实现容易;数据传输速度快,而且占用系统资源少(不使用I/O口传递数据,而用一部分地址空间作为数据传送的媒体),能充分发挥双CPU的作用。

下面具体介绍这种方法。

2.1 基本设计方案首先,甲机划出一部分片外RAM的地址空间作为数据传输的专门通道(一般可用高端地址空间);同时,把这个地址空间映射到接收数据的乙机端的相同大小片外RAM 地址空间(乙机端可以直接访问到)。

MCS-51系列单片机双机串行通信

MCS-51系列单片机双机串行通信

RS232是应用最早,最广泛的双机异步串行通信总线标准。是美国电 子工业协会的推荐标准 RS = recommended standard
标准规定了数据终端设备(DTE)和数据通信设备(DCE)间串行通信接 口的物理(电平)、信号和机械连接标准
RS232C
DTE
DCE
电话线
RS232C
DCE
DTE
计算机
8
5
CTS DCE 控制
9
22
RI DCE 控制
描述
载波信号检测 接收数据 发送数据 终端准备好 信号地
数据机准备好 请求发送
清除以便发送 振铃信号
计算机间RS232C通信的常用连接方法
TXD 计算机 RXD
GND
TxD RxD RTS CTS DTR DSR
CD RI GND
无握手 全握手
TXD RXD 计算机 GND
在方式 1 处于接收时,若 SM2=1,则只有收到有效的停止位后,RI =1。
在方式 0 中,SM2 应为 0。
REN: 允许接收。 REN=0 时,禁止接收。由软件置位或清零。 TB8: 发送数据的第 9 位。
在方式 2 和方式 3 中,由软件设置,可做奇偶校验位。 在多机通信中,可作为区别地址帧或数据帧的标识位。一般约定地址 帧时,TB8 为 1,数据帧时,TB8 为 0。 RB8: 接收数据的第 9 位。功能同 TB8。 TI: 发送中断标志位。发送完一帧数据的标志,由硬件置位, 软件清除, 可触发CPU中断。 RI: 接收中断标志位。接收完一帧数据的标志,由硬件置位, 软件清除, 可触发CPU中断。
6. 串行通讯及其接口
6-1 串行通讯的一般概念
6-1-1 并行通信和串行通信

基于51单片机的双机串行通信设计组单片机课程设计

基于51单片机的双机串行通信设计组单片机课程设计

基于51单片机的双机串行通信设计一、设计任务设计要求:两个AT89C51单片机使用串口进行通信。

1)1机发送,二机接收时。

使用1机发送一个数字0xAA给2机。

2)如果2机收到数据后要给1机回复,回复0xBB。

3)1机收到回复后要下发数据,下发的同时要将数据显示出来,下发的数据通过4*4的矩阵键盘产生,可以由用户进行控制。

4)2机收到后将这些数值显示出来,一次传输完毕要回复0x00。

可以使用点阵显示或者数码管显示或者 LCD显示。

二、硬件设计1、单片机串行通信功能AT89C51计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。

51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。

串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。

51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。

51单片机串行接口的结构如下:(1)数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。

有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。

(2)串行控制寄存器(PCON)SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10, 11对应于工作方式0、1、2、3。

串行接口工作方式特点见下表SM2:多机通信控制位。

REN:接收允许控制位。

软件置1允许接收;软件置0禁止接收。

TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。

RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

51单片机的2个串口分别通信的方法

51单片机的2个串口分别通信的方法

51单片机的2个串口资源分别通信的方法当使用51单片机的2个串口资源进行通信时,比如用一个串口与PLC的串口使用RS485协议通信,一个串口通过蓝牙模块和另一个单片机无线通信时,该如何处理呢?传统的51单片机只有1个串口资源,只能采用分时复用的方法。

STC的15系列增强版51单片机具有多个串口资源,本文将描述如何使用IAP15W4K58S单片机用一个串口资源与PLC的RS485有线通信,另一个串口资源与Arduino单片机通过蓝牙模块无线通信,该通讯连接过程中PLC作为主机,IAP15W4K58S作为中间机,Arduino单片机作为最低层级。

工作过程是按下启动按键,PLC发信息给IAP15W4K58S单片机发高速脉冲控制步进电机驱动的机械臂运动取走货物,当货物取走后,IAP15W4K58S单片机通过蓝牙模块通知Arduino单片机控制的小车将新货物运送过来。

连接结构示意图如下图所示。

本例程使用的单片机型号为:IAP15W4K58S,该单片机有4个采用UART 工作方式的全双工异步串行通信接口(分别为串口1、串口2、串口3和串口4),每个串行口由2个数据缓冲器、1个移位寄存器、1个串行控制寄存器和1个波特率发生器等组成。

本项目使用串行口1和串行口2。

串行口1的两个缓冲器共用寄存器SBUF (99H),串行口2的两个缓冲器共用寄存器S2BUF(9BH)。

10位(1起始位,8位数据位,1停止位)可变波特率(9600)。

串口1对应的硬件部分是TxD和RxD,串行口2对应硬件部分是TxD2和RxD2。

串口1选择引脚P3.0(RxD)和P3.1(TxD),串口2选择引脚P1.0(RxD)和P1.1(TxD)。

串口1既可以选择T1作为波特率发生器,也可以选择T2作为波特率发生器。

本文串口1提供2个选择(T1和T2),串口2只能选择T2作波特率发生器。

但是当串口1和串口2的波特率相同时,可以共用T2作为波特率发器,当T2工作在1T模式时,串行口1的波特率=SYSclk/(65536-[RL_TH2,RL_TL2])/4,SYSclk表示系统时钟频率,[RL_TH2,RL_TL2]表示T2H,T2L的定时初值设置值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档