双机通信设计实验

合集下载

双机通信实验报告

双机通信实验报告

双机通信实验报告双机通信实验报告引言:双机通信是一种重要的通信方式,它可以实现两台计算机之间的数据传输和信息交流。

在现代信息技术的发展下,双机通信在各个领域得到了广泛的应用,如互联网、电子商务、远程教育等。

本实验旨在通过搭建一个简单的双机通信系统,探究其原理和应用。

一、实验设备与步骤1. 实验设备:本次实验使用了两台计算机,一台作为发送端,另一台作为接收端。

另外,还需要一个网络连接设备,如交换机或路由器。

2. 实验步骤:首先,将两台计算机通过网络连接设备连接起来,确保网络连接正常。

然后,在发送端计算机上打开通信软件,并进行相应的设置。

接下来,在接收端计算机上也打开相同的通信软件,并进行设置。

最后,通过发送端计算机向接收端计算机发送消息,观察消息是否能够成功传输。

二、实验原理1. 双机通信的基本原理:双机通信是通过计算机网络实现的。

计算机网络由多台计算机和网络连接设备组成,通过网络连接设备将这些计算机连接在一起。

在双机通信中,发送端计算机将要传输的数据打包成数据包,并通过网络连接设备发送给接收端计算机。

接收端计算机接收到数据包后,将其解包并还原成原始数据。

这样,发送端计算机和接收端计算机之间就实现了数据的传输和通信。

2. 实验中使用的通信软件:在本次实验中,我们使用了一款常见的通信软件来实现双机通信。

该软件提供了用户界面,可以方便地设置通信参数和进行通信操作。

通过该软件,我们可以设置发送端和接收端的IP地址、端口号等参数,以及发送和接收消息的内容。

三、实验结果与分析在实验中,我们成功地搭建了一个双机通信系统,并进行了通信测试。

通过发送端计算机向接收端计算机发送消息,我们观察到消息能够成功传输,并在接收端计算机上显示出来。

这表明我们的双机通信系统正常工作。

双机通信的应用非常广泛。

在互联网上,双机通信被广泛应用于电子邮件、即时通讯等服务中。

通过双机通信,人们可以迅速方便地与他人进行沟通和交流。

在电子商务领域,双机通信也被用于在线支付、订单处理等环节,保证了交易的安全和顺利进行。

基于RS232双机通信实验

基于RS232双机通信实验

实验报告基于RS232双机通信实验一、实验目的1、理解串行通信的基本概念和51系列单片机的串行通信接口结构。

2、理解现场仪表的通讯过程二、实验内容1、使用串口实现单片机1与单片机2的数据通信,实现互相控制。

要求按下单片机1系统板上的按键,单片机2系统板上LED点亮。

三、实验环境1、编程软件keil2、仿真软件proteus四、实验原理MAX232芯片用于电平转换,实现RS232电平与TTL电平(单片机)的互相转换。

本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。

单片机之间通信的原理图如图1所示,当单片机1(主机) 查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。

图1 单片机之间通信的原理图五、实验过程1、实现实验要求(1)实验程序主机程序:#include<reg51.h>void main(){TMOD=0x20; //使用T1定时器工作方式2SCON=0X50; //使用串行接口方式一TH1=0XFD; //设置T1的初始值,使得波特率为9600TL1=0XFD;PCON=0x00;TR1=1; //启动T1定时器P1=0xff; //设置P1口初始值while(1) //开始死循环{SBUF=P1; //将P1值给SBUFwhile(!TI); //等待发送完成TI=0; //发送标志位置零等待下次发送}}从机程序:#include<reg51.h>void main(){TMOD=0x20; //使用T1定时器工作方式2SCON=0X50; //使用串行接口方式一TH1=0XFD; //设置T1的初始值,使得波特率为9600TL1=0XFD;PCON=0x00;TR1=1; //启动T1定时器P1=0xff; //设置P1口初始值while(1){P1=SBUF; //接受数据并用P1口显示while(!RI); //等待接受完成RI=0; //关闭接受使能位,等待下次接送}}(2)仿真图2、升级使得按钮按下闪三次并LED显示,每按下按钮显示加一,当LED达到15后重新开始计数。

双机通讯实验报告

双机通讯实验报告

双机通讯实验报告双机通信实验报告一、实验目的通过本次实验,目的在于掌握双机通信的基本原理和实现方法,并学习使用标准通信协议。

二、实验原理1.双机通信的基本原理双机通信是指两台独立工作的计算机之间进行数据传输和交流的过程。

双机通信可以通过物理连接(如串口、并口等)或网络连接(如以太网、局域网等)进行。

2.串口通信原理串口通信是最常见的双机通信方式之一、串口通信是指通过串行接口进行数据传输。

在串口通信中,数据位、波特率、校验位等参数需要进行设置。

通过使用串口线将两台计算机的串口连接,可以实现数据的互传和通信。

三、实验步骤1.准备工作(1)在两台计算机上安装串口驱动程序。

(2)将两台计算机通过串口线连接。

2.设置参数(1)打开计算机的设备管理器,找到串口的端口号。

(2)在串口通信软件上,根据设备管理器上的端口号设置串口的属性,包括波特率、数据位、校验位等。

3.建立连接(1)在发送端的计算机上,打开串口通信软件。

(2)在接收端的计算机上,也打开串口通信软件,并设置与发送端相同的参数。

4.进行通信(1)在发送端的计算机上,输入要发送的数据。

(2)点击发送按钮,数据会通过串口线发送到接收端的计算机。

(3)接收端的计算机会接收到数据,并在串口通信软件中显示。

四、实验数据与结果通过本次实验,我们实现了两台计算机之间的双机通信。

在发送端的计算机上,我们输入了字符串“Hello, World!”并通过串口发送到接收端的计算机。

在接收端的计算机上,我们成功收到了发送的数据,并在串口通信软件中显示出来。

五、实验分析与讨论通过本次实验,我们学会了使用串口通信实现两台计算机之间的双机通信。

串口通信具有轻量级、传输速度快的特点,适用于小型数据的传输和通信。

但是串口通信的距离受限,通信距离较短。

六、实验总结通过本次实验,我们深入了解了双机通信的实现原理和方法,并了解了串口通信的基本原理和设置方法。

通过实际操作,我们掌握了串口通信的步骤和技巧。

双机通信实验报告

双机通信实验报告

项目五单片机间的双机通信班级:学号:姓名:一、任务目的通过单片机之间的双机通信设计,进一步学习定时器的功能和编程应用,理解串行通信与并行通信两种通信方式的异同,掌握串行通信的重要指标:字符帧和波特率,初步了解MCS-51系列单片机串口的使用方法。

二、设计要求本任务是简历一个简单的单片机串行口双机通信测试系统。

系统中,发射与接收各用一套AT89C51单片机电路,称为甲机和乙机。

编制程序,使甲,乙双方能够进行串行通信。

要求将甲机内的多个数据(例如19921009)发送给乙机,并在乙机的8个数码管上显示出来。

三、系统硬件电路设计可分为最小系统、甲机发送、乙机接收显示三个单元电路,要求画出各部分电路图,写出工作原理。

最小系统:甲机发送:乙机接收显示:显示部分的:现实中的接线和显示:四、软件设计甲机的程序:#include <reg51.h>void main() //主函数{unsigned char i;unsigned char send[]={0x01,0x09,0x09,0x02,0x1,0x00,0x00,0x09}; //定义要发送的数据,数据为生日的八位数TMOD=0x20; //定时器1工作于方式2TL1=0xf4; //波特率为2400b/sTH1=0xf4;TR1=1;SCON=0x40; //定义串行口工作方式1for (i=0;i<8;i++){SBUF=send[i]; //发送第i个数据while(TI==0); //查询等待发送是否完成TI=0; //发送完成,TI由软件清零}while(1);}乙机的程序:#include <reg51.h>code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //定义0~9显示字码型unsigned char buffer[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //定义接收数据缓冲区void disp(void); //显示函数声明void main() //主函数{unsigned char i;TMOD=0x20; //定时器1工作于方式2TL1=0xf4; //波特率定义TH1=0xf4;TR1=1;SCON=0x40; //定义串行口工作方式1for(i=0;i<8;i++){REN=1; //允许接收while(RI==0); //查询等待接收标志位为1,表示接收到数据buffer[i]=SBUF; //接收数据RI=0; //RI由软件清零}for(;;) disp(); //显示接收数据}void disp(){unsigned char i,j;for(i=0;i<8;i++){ P2=i;P0=(tab[buffer[i]]); //送显示字码型,buffer[i]作为数组分量的下标for(j=100;j>5;j--); //显示延时}}五、系统调试画proteus图,了解单片机最小系统,选用的元件有AT89C51,编写程序。

实验七_双机通信实验

实验七_双机通信实验

实验七、双机通信实验 一、实验目的掌握单片机串行口的工作原理及编程。

二、实验内容用两台单片机进行双机通讯,主控制器识别到按键按下,控制从机显示0-9字符。

三、实验接线图四、实验程序1、程序流程图如图7-1所示。

主机识别到键按下,向从机发送数据块长度、0-9数据及校验和。

从机接收到数据后,显示数据并向主机发应答码00H ,主机根据应答信号,显示通信状态代码。

2、波特率计算选fosc=11.0592MHz, 波特率=2400bps ,通信为方式1,(SMOD)为1,(TMOD)=0x20;( PCON) =0x80; 由波特率计算公式算得 (TH1)≈e8H 。

图7-1 实验接线图[](TH1)-25612T1T1322osc SMOD⨯=⨯=f 溢出率溢出率,波特率3、源程序 1)主机源程序// 识别到按键按下,发送0-9数据给从机,并显示通信状态码 #include<reg51.h> #include<intrins.h>#define uint unsigned int #define uchar unsigned charsbit K=P3^2; //定义按键K ,用于控制U2void SEND(uchar s_data)//发送一个字节数据 {SBUF=s_data; while(TI==0); TI=0;}uchar RCV(void)//接收一个字节数据 {while(RI==0); RI=0; return(SBUF);}void D_1S(void) {uint N=500,i;while(N--) for(i=0;i<100;i++) _nop_();}void DIS(uchar dis)//显示dis 中字形码对应的字符 { P0=dis; D_1S(); P0=~0x00;}void MAIN(void){ uchar data SUM,LEN;// SUM,校验和;LEN ,数据块长度; uchar i,ans; //ans 接收的应答数据图7-2 主机程序流程图 图7-3 从机程序流程图SP=0x5f; P0=~0x00; //数码块消隐TMOD=0x20; //T1:8位自动重装定时器TL1=0xe8;TH1=0xe8;PCON=0x80;TR1=1;//F=11.0592MHz,BPS=2400SCON=0x40; //10位,禁止接收//-------扫描按键-------key0:K=1; if(K!=0) goto key0;//-------发送数据块和校验和-------S_0:SUM=0x00; LEN=10; SEND(LEN);for(i=0;i<LEN;i++){SEND(i); SUM+=i; }SEND(SUM);//-------接收从机发来的响应数据-------REN=1; ans=RCV(); REN=0;if(ans==0x00) //发送正常,显示“0”{ DIS(~0x3f); goto key0;}else //发送异常,显示“1”,并重新发送数据{ DIS(~0x06); goto S_0;}}2)从机源程序// 接收数据0-9,并用数码块显示,之后接收正常向主机发00H,否则发送01H#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar data LS0[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};void SEND(uchar s_data)//发送一个字节数据{SBUF=s_data; while(TI==0); TI=0;}uchar RCV(void)//接收一个字节数据{while(RI==0); RI=0; return(SBUF);}void D_1S(void){uint i,N=500;while(N--) for(i=0;i<100;i++) _nop_();}void DIS(uchar LEN,uchar r_data[11])//显示0-9{uchar data i;for(i=0;i<LEN;i++) {P0=LS0[r_data[i]]; D_1S(); P0=~0x00;}}void MAIN(void){ uchar data SUM,LEN; //SUM,校验和;LEN,数据块长度;ID,从站地址uchar data i,r_data[10],RSUM;//r_data接收的数据,RSUM接收的校验和SP=0x5f; P0=~0x00; TMOD=0x20;TL1=0xe8;TH1=0xe8;PCON=0x80;TR1=1; SCON=0x40;R_D:REN=1;SUM=0x00;LEN=RCV();for(i=0;i<LEN;i++){r_data[i]=RCV(); SUM+=r_data[i];}RSUM=RCV();if(RSUM==SUM){DIS(10,r_data);SEND(0x00);goto R_D;}else {SEND(0x01);goto R_D;}}五、实验步骤1、按图7-1接线;2、用keil软件编辑、编译源程序,生成两个hex文件。

双机通信设置实验报告

双机通信设置实验报告

双机通信设置实验报告实验报告:双机通信设置实验1. 实验目的本实验的目的是掌握双机通信设置的基本步骤与方法,包括网络连接、IP地址设置、端口设置和通信代码编写等内容。

2. 实验器材- 两台计算机- 网线- 交换机(可选,用于扩展网络数量)3. 实验步骤步骤一:网络连接1. 将两台计算机连接到同一个局域网中,可以通过交换机将多台计算机连接到同一个局域网中。

步骤二:确定IP地址1. 在Windows操作系统下,点击“开始”按钮,选择“控制面板”。

2. 在控制面板中,选择“网络和Internet”。

3. 在“网络和Internet”页面中,选择“网络和共享中心”。

4. 在“网络和共享中心”页面中,选择“更改适配器设置”。

5. 在“更改适配器设置”页面中,找到当前使用的网络连接,右键点击,选择“属性”。

6. 在网络连接属性页面中,选择“Internet协议版本4(TCP/IPv4)”,然后点击“属性”按钮。

7. 在Internet协议版本4(TCP/IPv4)属性页面中,选择“使用下面的IP地址”选项,然后输入IP地址和子网掩码。

8. 重复以上步骤,将第二台计算机的IP地址设置为与第一台计算机相同的子网下的其他IP地址。

步骤三:端口设置1. 在每台计算机上选择一个空闲端口作为通信端口。

2. 确保两台计算机上选择的端口相同。

步骤四:通信代码编写1. 在每台计算机上编写程序,通过选择合适的编程语言和库来实现双机通信。

2. 编写程序时,需要指定对方计算机的IP地址和端口号。

3. 编写程序时,需要指定通信协议,如TCP或UDP等。

4. 实验结果通过以上步骤,成功实现了两台计算机之间的双机通信。

可以在程序中发送和接收数据,实现数据交换和通信功能。

5. 实验总结通过本实验,我们掌握了双机通信设置的基本步骤与方法,包括网络连接、IP 地址设置、端口设置和通信代码的编写等内容。

双机通信是实现计算机之间数据交换和通信的重要手段,掌握这些基本知识对于进行网络通信和应用开发非常有帮助。

双机通信实验报告.doc

双机通信实验报告.doc

双机通信实验报告。

单片机实验报告(自动化15级)实验名称:串行通信实验1.实验1的目的。

掌握单片机串口的工作模式;2.掌握双机通信的接口电路设计和程序设计。

2.实验设备1。

个人电脑;2.单片机最小系统教学实验模块:3.数码管显示模块三、实验内容1。

两套单片机测试装置(两个实验组)共同完成了实验。

我们U1是机器A,U2是机器B。

机器A将学生的学号后的8位数字发送到机器B。

机器B接收到这8位数字,并将其显示在8位数字的电子管上。

该电路如图1所示。

串行通信模式要求为模式1,波特率为2400位/秒,不是双倍,单片机外部晶振频率为11.0592米。

图1双机通信原理附加要求示意图:机器b收到后,该机器(机器b)的学生编号的最后8位数字被送回机器a,并显示在数码管上。

2.单片机与PC机之间的通信单片机向PC机发送数据。

单片机将本机的学生号(学生本人)反复发送到PC机,发送波特率为1200,采用模式1,单片机外部晶振频率为11.0592米四、实验原理4.1串行通信模式在串行通信中,有两种基本通信模式:异步通信。

异步串行通信规定了字符数据的传输格式,即每个数据以相同的帧格式传输。

每个帧信息由起始位、数据位、奇偶校验位和停止位组成。

本实验主要研究异步通信的实现方法。

在异步通信中,每个字符使用一个起始位和一个停止位作为字符开始和结束的符号,因此占用时间。

因此,为了提高传输数据块时的通信速度,这些标记通常被去除,并采用同步通信。

同步通信不像异步通信那样依赖起始位在每个字符数据的开头发送和接收同步。

相反,同步字符用于在每个数据块传输开始时同步发送方和接收方。

根据通信方式,数据传输线可分为三种类型:单工模式、半双工模式、全双工模式。

(1)单工模式在单工模式中,通信线路的一端连接到发射机,另一端连接到接收机,这形成单向连接,并且仅允许数据在固定方向上传输。

(2)半双工模式在半双工模式下,系统中的每个通信设备由一个发射机和一个接收机组成,它们通过收发器开关连接到通信线路,如图33所示-1.实验1的目的。

双机通讯实验报告

双机通讯实验报告

单片机实验报告(自动化15级)实验名称:串行通讯实验一、实验目得1。

掌握单片机串行口工作方式;2。

掌握双机通讯得接口电路设计及程序设计。

二、实验设备1、PC机;2.单片机最小系统教学实验模块;3、数码管显示模块三、实验内容1.双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。

我们U1为甲机,U2为乙机。

甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上.电路如图1所示。

要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11、0592M。

图1 双机通信原理示意图附加要求:乙机接收完毕后,将本机(乙机)得学号后8位发送回甲机,甲机显示在数码管上。

2、单片机与PC机通信单片机向PC机发送数据。

单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11、0592M。

四、实验原理4.1串行通讯得方式在串行通讯中,有两种基本得通讯方式:异步通讯,同步通讯.异步串行通讯规定了字符数据得传送格式,既每个数据以相同得帧格式发送.每个帧信息由起始位、数据位、奇偶校验位与停止位组成。

本实验主要学习异步通讯得实现方法。

在异步通讯中,每一个字符要用起始位与停止位作为字符开始与结束得标志,以至占用了时间。

所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯.同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送与接受同步.而就是通过同步字符在每个数据块传送开始时使收/发双方同步.按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。

(1)单工方式在单工方式下,通讯线得一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定得方向传送。

(2)半双工方式在半双工方式下,系统中得每个通讯设备都由一个发送器与一个接收器组成,通过收发开关接到通讯线路上,如图33—1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三 软件设计……………………………………………………………………………8
1 串行通信软件实现……………………………………………………………………8
2 程序流程图……………………………………………………………………………8
四 联合调试……………………………………………………………………………11
五 设计小节……………………………………………………………………………11
RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。
(3)输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。
(4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
if((SBUF^sum)==0)
{ SBUF=0x00;
while(!TI);
TI=0;
通过这次课程设计,锻炼了自己独立思考的能力。
六、附录
1.主机发送程序
#include <reg51.h>
#define uchar unsigned char
void init();
void send();
ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
while(!RI);
RI=0;
}
while(SBUF!=0);
}
2.从机接收程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(int );
void receive(void) ;
void init(void);
(2)串行控制寄存器(PCON)
SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表
SM0
SM1
工作方式
功能
波特率
摘要
串行通信是单片机的一个重要应用。本次课程设计就是要利用单片机来完成一个系统,实现双片单片机串行通信。通信的结果实用数码管进行显示,数码管采用查表方式显示。两个单片机之间采用RS232进行双机通信。在通信过程中,使用通信协议进行通信。
关键词:51单片机,串行通信,接口
一、总体设计
1.设计要求:
两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在接收端显示。
do
{ while(!RI);RI=0; }
while((SBUF^0xaa)!=0);
SBUF=0xbb;
while(!TI);TI=0;
while(1)
{ sum=0;
for(i=0;i<=15;i++)
{ while(!RI);RI=0;
TABS[i]=SBUF;
sum+=TABS[i];
}
while(!RI);RI=0;
TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。
电平转换芯片MAX232是美信公司(MAXIM)生产,专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。
图2.电平转换芯片MAX232
3.整体电路设计
最终设计电路如下图3所示,发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,通过P1口在数码管上显示接收的信息。
2 设计方案……………………………………………………………………………4
二 硬件设计……………………………………………………………………………4
1 51单片机串行通信功能…………………………………………………………4
2 MAX232芯片………………………………………………………………………6
3 整体电路设计………………………………………………………………………7
uchar i,sum;
int j;
main()
{init();
send();
}
void init(void)
{ EA=1;
ES=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
SCON=0x50;
TR1=1;
}
void send(void)
{do
{ SBUF=0xaa;
1.串行通信软件实现
(1)串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。
(2)功能:将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。
(3)通信协议:主机首先发送连络信号(AAH),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。
六 附录…………………………………………………………………………………12
1 主机发送程序…………………………………………………………………………12
2 重机接受程序…………………………………………………………………………13
3 系统电路图………………………………………………………………………… 16
经过课程设计,在查阅资料的过程中,学习了基于单片机的C语言程序设计,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。
在学习的过程中,也遇到了一些困难,比如开始的时候,由于发送端和接收端的通信协议没有做好,导致数据不能正确的传输,在解决问题的过程中,对于通信协议的实现有了深刻的认识。
图3.串行通信电路
三、软件设计
通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。从机收到16个正确数据后送到一个数码管显示。
while(!TI);
TI=0;
while(!RI);
RI=0;
}
while((SBUF^0xbb)!=0);
do
{ sum=0;
for(i=0;i<=15;i++)
{ SBUF=TAB[i];
sum+=TAB[i];
while(!TI);
TI=0;
}
SBUF=sum;
while(!TI);
TI=0;
uchar i,sum;
int j;
ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{ init();
receive();
}
void init(void)
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。从机收到16个正确数据后送到一个数码管显示。
2.设计方案:
本次设计,对于两片89C51,采用RS232进行双机通信。发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:
(1)数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。
{ EA=1;
ES=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
SCON=0x50;
TR1=1;
}
void delay(int x)
{int i,j;
for(i=0;i<x;i++)
for(j=1;j<=150;j++ );
相关文档
最新文档