(完整版)51单片机实现双机通信(自己整理的)
- 格式:docx
- 大小:113.50 KB
- 文档页数:6
一设计题目:双机通信系统二实验描述:设计一个双机通信系统,实现按键数据的互发及显示功能。
三实验要求:利用两片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程序)/*发送程序连线:两个单片机用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:感谢大家的阅读,本文由我司收集整编。
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 地址空间(乙机端可以直接访问到)。
基于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个串口资源进行通信时,比如用一个串口与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的定时初值设置值。
51单片机的串口双机通讯一、什么是串口串口是串行发送数据的接口,是相对于并口来说的,是一个广泛的定义。
本期我们说的串口指的是指UART或是RS232。
二、什么是波特率波特率是指串行端口每秒内可以传输的波特位数。
这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位。
一个字节需要8个二进位,如用串口模式1来传输,那么加上起始位和停止位,每个数据字节就要占用10个二进位。
9600bps用模式1传输时,每秒传输的字节数是9600÷10=960个字节,发送一个字节大概需要1ms时间。
三、51单片机串口相关寄存器1、SCON串口控制寄存器(1)SM0和SM1:方式选择寄存器SM0 SM1 工作方式功能波特率0 0 方式0 8位同步移位寄存器晶振频率/ 120 1 方式1 10位UART 可变1 0 方式2 11位UART 晶振频率/32或晶振频率/64 1 1 方式3 11位UART 可变多机通信是工作在方式2和方式3的,所以SM2主要用于方式2和方式3,多级通信时,SM2=1,当SM2=1时,只有当接收到的数据帧第9位(RB8)为1时,单片机才把前八位数据放入自己的SBUF中,否则,将丢弃数据帧。
当SM2=0时,不论RB8的值是什么,都会把串口收到的数据放到SBUF中。
(3)REN:允许接收位REN用于控制是否允许接收数据,REN=1时,允许接收数据,REN=0时,拒绝接收数据。
(4)TB8:要发送的第9位数据位在方式2和方式3中,TB8是要作为数据帧第9位被发送出去的,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址。
(5)RB8:接收到的第9位数据位当单片机已经接收一帧数据帧时,会把数据帧中的第9位放到RB8中。
方式0不使用RB8,在方式2和方式3中,RB8为接收到的数据帧的第9位数据位。
(6)TI:发送中断标志位方式0中,不用管他。
51单片机多机通信过程51单片机具有多机通信的功能,可实现一台主机于多台从机的通信。
多机通信充分利用了单片机内部的多机通信控制位SM2。
当从机SM2,1时,从机只接收主机发出的地址帧(第九位为1),对数据帧(第九位为0)不予理睬;而当SM2=0时,可接收主机发送过来的所有信息。
多机通信的过程如下:(1)所有从机SM2均置1,处于只接收地址帧状态。
(2)主机先发送一个地址帧,其中前8位数据表示地址,第9位为1表示该帧为地址帧。
(3)所有从机接收到地址帧后,进行中断处理,把接收到的地址与自身地址相比较。
地址相符时将SM2清成0,脱离多机状态,地址不相符的从机不作任何处理,即保持SM2,1。
(4)地址相符的从机SM2=0,可以接收到主机随后发来的信息,即主机发送的所有信息。
收到信息TB8=0,则表示是数据帧,而对于地址不符的从机SM2=1,收到信息TB8=0,则不予理睬,这样就实现了主机与地址相符的从机之间的双机通信。
(5)被寻址的从机通信结束后置SM2=1,恢复多机通信系统原有的状态。
主机:设置为SM2=0。
这是双机通信的形式,可以任意的发送和接收发送:以TB8=1发送,将发送到所有SM2=1的分机。
这是呼叫某个从机。
以TB8=0发送,将发送到SM2=0的分机。
这是双机通信的形式。
------从机:先设置为SM2=1。
这是多机通信的形式,只能收到RB8=1的。
接收:仅能收到RB8=1的数据,确认是呼叫本机时,令SM2=0。
设置为SM2=0后,是双机通信的形式。
追问那从机的RB8要怎么设,是需要软件设置还是单片机自己识别,在编程的时候要怎么写, 回答从机的RB8,不需要编程。
从机的RB8,是接收到的,它是主机发送出来的TB8。
想要对TB8进行控制,需要在主机中编程。
单片机多机通讯说明:该程序为多机通讯程序,最多可以挂255个从机。
该程序主机发送端与多个从机的接收端相接,主机的接收端与多个从机的发送端相接。
MCS51系列单片机双机并行互连的实现方法摘要介绍了在同一系统内,51系列两单片机之间采用单向并行通信接口、主从双向并行通信接口、无主从双向并行通信操作实现双机互连的方法,分析了在每一种通信接口工作方式下数据传送的特点。
在三种并行通信接口为单片机应用系统扩充硬件资源的设计提供了新的途径。
关键词单片机并行通信接口数据传送由于51系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。
一个51系列的单片机如89内部包含有、、两个或者三个16位的定时器计数器、一个通用异步串行通信控制器等多种资源。
但即便如此,在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的,因此而常常需要扩充接口、定时器计数器、串行通信接口、、等。
采用通用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用,也不失为一个好的方法。
在这种情况下,一个系统中就使用了两个或两个以上的单片机,而单片机之间就要通过互连来进行数据通信。
51系列的单片机以下简称单片机都带有串口,利用串口进行互连通信极为方便,其各种连接方式在许多书籍和资料上都有介绍,在此不再重述。
但如果系统要求扩充的资源是对外连接的串口,或对相互之间的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口了。
所幸的是,单片机的并行端口也能相互连接来进行数据通信。
根据单片机端口内部结构的特点,这些端口的端口线可以直接相连,从而使两单片机之间并行通信接口的实现不用另外的硬件电路设备。
基于这种情况,设计时,可根据不同的使用要求,来采用不同的并行连接方法。
下面介绍在两个单片机之间进行三种并行通信接口的实现方法。
1单向并行通信接口的实现在应用中,如果只需一个单片机向另一个单片机传送数据,则可以采用单向并行通信接口方式,这种方式较为简单。
图1所示为单向并行通信接口的组成方法。
单片机双机通信实验报告《单片机双机通信实验报告》摘要:本实验通过使用两台单片机,利用串口通信实现双机之间的信息传输。
在实验过程中,先分别对两台单片机进行初始化设置,并分别确定了波特率和通信协议。
随后,通过串口线连接两台单片机,并编写发送和接收程序,实现了双机之间的信息传输。
实验结果表明,双机通信实验成功,信息传输准确可靠。
关键词:单片机、双机通信、串口通信、波特率、信息传输1.引言:单片机是一种集成电路,内包含了处理器、存储器和各种外设,广泛应用于嵌入式系统中。
双机通信是指两个单片机之间通过一定的通信方式实现信息的传递和交换。
利用双机通信,可以实现多个单片机之间的协同工作,提高系统的性能和可靠性。
本实验旨在通过串口通信方式,实现双机之间的信息传输。
2.实验原理:串口通信是一种常用的通信方式,将信息按照一定的协议格式转换成串行的数据,通过串口线传输。
串口通信需要设置波特率和通信协议。
波特率是指每秒钟传输的位数,通信协议是指发送和接收的数据格式和规则。
本实验使用两台单片机,每台单片机通过串口线连接。
其中一台单片机作为发送机,另一台单片机作为接收机。
发送机将要传输的信息按照通信协议和波特率发送出去,接收机按照相同的通信协议和波特率接收信息。
接收机接收到信息后,进行处理。
3.实验步骤:(1)初始化设置:分别对发送机和接收机进行初始化设置,包括引脚的设置和串口通信设置。
设置引脚为串口通信模式,并确定波特率和通信协议。
(2)连接单片机:将两台单片机通过串口线连接,发送机的发送引脚连接到接收机的接收引脚,接收机的接收引脚连接到发送机的发送引脚。
(3)编写发送程序:在发送机上编写发送程序,将要发送的信息按照通信协议和波特率发送出去。
(4)编写接收程序:在接收机上编写接收程序,按照相同的通信协议和波特率接收信息,并进行处理。
(5)测试实验:将发送机和接收机分别接入电源,观察实验现象。
4.实验结果:通过实验测试,发送机成功将信息发送给接收机,并在接收机上进行了处理。
MCS51系列单片机双机并行互连的实现方法介绍了在同一系统内,MCS51系列两单片机之间采用单向并行通信接口、主从双向并行通信接口、无主从双向并行通信操作实现双机互连的方法,分析了在每一种通信接口工作方式下数据传送的特点。
在三种并行通信接口为单片机应用系统扩充硬件资源的设计提供了新的途径。
由于MCS51系列单片机具有性能稳定、工作可*、价格低廉等特点,因此其应用相当广泛。
一个MCS51系列的单片机(如Atmel89cxx)内部包含有RAM、FLASH ROM、两个或者三个16位的定时器/计数器、一个通用异步串行通信控制器(UART)等多种资源。
但即便如此,在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、RAM、ROM等。
采用通用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用,也不失为一个好的方法。
在这种情况下,一个系统中就使用了两个或两个以上的单片机,而单片机之间就要通过互连来进行数据通信。
MCS51系列的单片机(以下简称单片机)都带有串口,利用串口进行互连通信极为方便,其各种连接方式在许多书籍和资料上都有介绍,在此不再重述。
但如果系统要求扩充的资源是对外连接的串口,或对相互之间的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口了。
所幸的是,单片机的并行端口也能相互连接来进行数据通信。
根据单片机端口内部结构的特点,这些端口的端口线可以直接相连,从而使两单片机之间并行通信接口的实现不用另外的硬件电路设备。
基于这种情况,设计时,可根据不同的使用要求,来采用不同的并行连接方法。
下面介绍在两个单片机之间进行三种并行通信接口的实现方法。
1 单向并行通信接口的实现在应用中,如果只需一个单片机向另一个单片机传送数据,则可以采用单向并行通信接口方式,这种方式较为简单。
图1所示为单向并行通信接口的组成方法。
80C51单片机双机通信与多机通信的使用方法80C51单片机之间的串行通信主要可分为双机通信和多机通信,本节举例说明双机通信与多机通信的使用方法。
1.双机通信硬件电路如果两个80C51单片机系统距离较近,那么就可以将它们的串行口直接相连,实现双机通信,如图1所示。
图1 双机异步通信接口电路为了增加通信距离,减少通道和电源干扰,可以在通信线路上采用光电隔离的方法,利用RS-422A标准开展双机通信,实用的接口电路如图2所示。
图2 RS-422A双机异步通信接口电路2.双机通信软件编程对于双机通信采用两种方法:查询方式和中断方式。
(1)查询方式例在双机通信中,设置串行口工作于方式3,波特率为9600,定时器T1工作于方式2,允许接收,单片机主频fosc=6MHZ,编写初始化编程序。
分析:①设置SCON存放器串行口工作于方式3,SM0SM1=11。
双机通信不需要发送地址,SM2=0。
允许接收REN=1。
所以SCON=11010000B=0D0H。
②计算定时器T1计数初值,波特率不加倍,smod=0。
由可写出:COUNT=254=0FEH③初始化程序例当1号机开始发送时,先送出一个“A1”信号,2号机收到后答复一个“B2”信号,表示同意接收。
当1号机收到“B2”信号后,开始发送数据,每发送一次求一个“校验和,以提高通信的可靠性。
设数据块为10个字节,数据缓冲区的起始地址是40H,数据块发完后马上发送“校验和”。
2号机接收数据并将其转存到40H开始的缓冲区,每接收到一个数据也求一次“校验和”,数据块收完后,再接收1号机发来的“校验和”,并与2号机求出的结果相比较。
如二者相等,说明接收正确,2号机答复“00H”;若两者不等,说明接收错误,2号机答复“0FFH”,请求重发。
1号机收到“00H”的答复后,结束发送。
若收到的答复非零,则将数据重发一次。
假定双方约定的传输波特率为1200bps,振荡频率为11.0592Hz,T1工作在方式2。
左边1号机,右边2号机"功能实现1号机程序 ttincludeOftdefine uint unsigned int ftdefine uchar unsigned charsbit P io=pro ;uchar a, b, kk; //ucharcoded_c[]二{OxcO, 0xf9, 0xa4, OxbO, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, Oxff};void delay_ms(uchar y) {uchar i;J1 1A 1 ALI13 XTALZ9RETT29FSCT ALE 仔r ■ i1 pmY丿2 P1.1 P123 4 r u 5 P1.4 6 P1 4? P W 2Pl.?<T2BC 5T b/sPCJiyM 口PO.VA01 ?U2iM2 PD.4/Al>* P0STA35 P 口 PO.7W7P2H*A3 P2.1WS P32TA1O P2^A11 P2.4/A12 P2W13 P2&AU P2.7W15 PSHRXD P3.VTXD P3NTIE rjjnWTT P3.4H13 P3STT1 P3AWW P3.7/HFG ■ vTEe11 12 F ~IT J2POIVAOO pm/ADi P0^AD2 PD^AD3 PD.4/AD* POLADS PD^AD6 PD7M07 2W2 2.VA9 2^A10 2^A11 2.4/A12 2<VA13 2^AU 2?ZA15 3WRXD 3.irrxo 3^nrro □^rriTT 3.4/TO 3ST13?/IFtTE9C5 <Tt?19 ■ 1:<TAL1XTAL2while (y一一)delay_ms (15);while(plO==O);kk=l;P2=0xf9;J=l;}辻(plO==O&&j==l){delay_ms(15); while(plO==O); kk=2;P2=0xa4;J=2;} if(pl0==0&&j==2){delay_ms(15); while(plO==O); kk=3;P2=0xb0;j 二0;if(kk==l)put (' A,);if(kk==2)put d );if(kk==3)put (' C,);delay_ms(10);}}/*•丄■wx ■丄"■丄"■丄"■丄"■卜%fx ■士■丄"•丄"%fx ■丄"wx ■丄Q ■[" ■”■丄■"%£x •" K L Z•丄"%L^if(pl0=0&&j==0){delay_ms(15);while(pl0==0);kk=0;P2二〜Oxf9;J=l;if(pio二二0&&j二二1){delay_ms(15); while(plO==O); kk=l;P2二'0xa4;J=2;}辻(pl0==0&&j==2){delay_ms(15); while(plO==O); kk=2;P2二〜OxcO;j 二0;}if(kk==O)put (' A,);if(kk==l)put (' B');if(kk==2)put C c‘);delay_ms(100);•丄"■丄"■丄"■尢•丄■ ■丄"■丄"%tx ■丄"■" V^Z ■丄"%tz •丄"•丄"■士KW WX •丄"■丄"■丄"■丄■ ■丄"■丄"■丄"■丄"if(pio 二二0){delay_ms (15);while(pl0==0);number二(number+l)%4;}switch(oper){case 0:break;case 1: put (' A' ) ; P2「0xf9; break;case 2:put(' B‘);P2「0xa4;break;case 3:put(' C ) ;P2=~0xc0;break;}delay_ms(10);%fx ■尢•丄"KW W^ %fx %fx ■丄"^L# %tz %tz >^Z ■丄"%fx %Lz %fx ■尢■丄■■丄"%fx %tz %Lx >X^ %fx ■尢"7^if(plO=O)•丄"*delay_ms (15);while(plO==O);j=(j+l)%3;}swit ch(j)case 0: put ) ; P2=^0xf9: break;case 1: put (' B‘); P2二'0xa4; break;case 2:put ('C ) ;P2「0xc0;break;delay_ms(10);*/2号机程序。
51单⽚机双机串⾏通信设计******************实践教学*******************XXXXX⼤学计算机与通信学院2013年秋季学期通信系统综合训练课程设计题⽬:51单⽚机双机串⾏通信设计专业班级:通信⼯程x班姓名:xx学号:xx指导教师:xx成绩:摘要双机通信的实质就是解决两单⽚机串⾏通信问题。
针对于89C51单⽚机全双⼯异步串⾏通信⼝,我们采⽤单⽚机直接交叉互连的串⾏通信⽅式。
考虑到本设计应⽤于短距离传输、两单⽚机具有相同的数据格式及电平且为使设计简单,我们最终决定本系统采⽤⽅式⼀单⽚机直接交叉连接的串⾏通信⽅式,上位机发送的数据由串⾏⼝TXD端输出,直接由下位机的串⾏⼝数据接收端RXD接收。
本设计的硬件电路分为数码管显⽰模块、单⽚机⼯作的基本复位电路以及晶振模块。
编程采⽤C语⾔加以实现。
通信的结果使⽤数码管进⾏显⽰,数码管采⽤查表⽅式显⽰,两个单⽚机之间采⽤RS-232进⾏双向通信。
关键字:51单⽚机串⾏通信 RS-232接⼝标准前⾔ (1)1 基本原理 (2)1.1 串⾏通信概述 (2)1.2 串⾏通信的分类 (2)1.3 串⾏通信技术标准 (2)1.4串⾏通信协议 (3)1.5串⾏通信与并⾏通信区别 (4)1.6MCS-51串⾏接⼝的基本特点 (5)1.7波特率选择 (7)1.8通信协议的使⽤ (7)1.951单⽚机的结构和作⽤ (7)1.10双机通信 (8)2 系统分析 (9)2.1汇编语⾔和C语⾔的特点及选择 (9)2.2并⾏通信与串⾏通信的⽐较 (9)2.3串⾏通信程序设计的⽐较 (9)2.4同步通信与异步通信的区别 (9)3 系统设计 (11)3.1设计要求 (11)3.2设计⽅案 (11)3.3硬件设计 (11)3.4软件设计 (14)4 系统调试 (20)总结 (21)参考⽂献 (22)致谢 (26)随着电⼦技术的飞速发展,单⽚机也步如⼀个新的时代,越来越多的功能各异的单⽚机为我们的设计提供了许多新的⽅法与思路。