双机串行通信的设计与实现.docx
- 文档编号:24551374
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:17
- 大小:530.42KB
双机串行通信的设计与实现.docx
《双机串行通信的设计与实现.docx》由会员分享,可在线阅读,更多相关《双机串行通信的设计与实现.docx(17页珍藏版)》请在冰豆网上搜索。
双机串行通信的设计与实现
综合实验报告
实验题目:
双机串行通信的设计与实现
学生班级:
电子
学生姓名:
学生学号:
指导教师:
实验时间:
2016.9.12-2016.9.17
题目:
双机串行通信的设计与实现
班级:
电子14-2姓名:
陈俊臣
摘要
串行通信是单片机的一个重要应用。
本次课程设计就是要利用单片机来完成一个系
统实现双片单片机串行通信。
通信的结果实用数码管进行显示数码管采用查表方式显示。
两个单片机之间采用RS232进行双机通信。
在通信过程中使用通信协议进行通信。
双机通信的实质就是解决两单片机串行通信问题。
针对于89C51单片机全双工异步串行通信口,我们采用单片机直接交叉互连的串行通信方式。
考虑到本设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简单,我们最终决定本系统采用方式一单片机直接交叉连接的串行通信方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。
本设计的硬件电路分为数码管显示模块、单片机工作的基本复位电路以及晶振模块。
编程采用C语言加以实现。
通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双向通信。
1引言-------------------------------------------------------
2设计原理及要求---------------------------------------------
2.1设计要求和原理--------------------------------------------
2.2串行通信概述与分类-----------------------------------
2.3串行通信和并行通信区别-------------------------------
2.4MCS-51串行接口的基本特点-----------------------------
3器件介绍
3.1器件简单概述-----------------------------------------
3.2器件主要功能特性--------------------------------------
3.3芯片引脚介绍----------------------------------------
4系统设计
4.1设计要求--------------------------------------------
4.2设计方案--------------------------------------------
4.3硬件设计--------------------------------------------
4.4软件设计-------------------------------------------
4电路仿真图----------------------------------------------------
5心得------------------------------------------------------------
6参考文献--------------------------------------------------------
1引言
片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的
智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高,
在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,
而多机控制主要通过多个单片机之间的串行通信实现。
串行通信作为单片机之间
常用的通信方法之一,由于其通信编程灵活、硬件简洁并遵循统一的标准,因此
其在工业控制领域得到了广泛的应用。
在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式
多机分布式系统成为现代工业广泛应用的模式。
单片机功能强、体积小、价格低
廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、
智能仪器仪表、家用电器方面都有广泛的应用。
同时,IBM-PC机正好补充单片
机人机对话和外围设备薄弱的缺陷。
各单片机独立完成数据采集处理和控制任
务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打
印,把各种控制命令传给单片机,以实现集中管理和最优控制。
串行通信是单片
机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片
单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,
两个单片机之间采用RS-232进行双击通信。
在通信过程中,使用通信协议进行通信。
在测控系统和工程应用中,常遇到
多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用
的模式。
单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串
行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛
的应用。
同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。
各
单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,
PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现
集中管理和最优控制。
2设计原理及要求
2.1设计要求
设计内容:
设计通过串行口实现两台单片机之间串行通信的硬件和软件。
设计要求:
①能实现在甲机键盘上输入的字符,在乙机屏幕上显示,反之亦然。
②波特率自定,发送格式自定。
③若接收的数据无误,则发送方屏幕上显示“OK”。
否则发回发送方并在屏幕上显示所发出的字符。
2.1设计原理
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成,分别是地线、发送、接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通信的端口,这些参数必须匹配。
串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。
这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
2.2串行通信概述与分类-
1、 串行通信的特点
在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。
与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。
一位接一位地顺序传送。
这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。
由此可见,串行通信的特点如下:
1、节省传输线,这是显而易见的。
尤其是在远程通信时,此特点尤为重要。
这也是串行通信的主要优点;2、数据传送效率低。
与并行通信比,这也这是显而易见的。
这也是串行通信的主要缺点。
串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电缆和同步化使并行通信实际应用面临困难。
凭借着其改善的信号完整性和传播速度,串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线不需要串行化元件等缺点。
2、 串行通信的分类
异步通信
所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的.异步串行通信的特点可以概括为:
①以字符为单位传送信息;②相邻两字符间的间隔是任意长; ③接收时钟和发送时钟只要相近就可以。
异步方式特点简单的说就是:
字符间异步,字符内部各位同步。
同步通信
所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步.同步串行通信的特点可以概括为:
①以数据块为单位传送信息;②在一个数据块(信息帧)内,字符与字符间无间隔;③接收时钟与发送进钟严格同步
2.3 并行通信与串行通信的比较
计算机与外界的信息交换称为通信,常用的通信方式有两种:
并行通信和串行通信。
51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信得特点是传输信号的速度快,但所用的信号线比较多,成本高,传输的距离较近。
串行通信的特点是只用两条信号线即可完成通信,成本低,传输的距离较远。
串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。
微机发送接收程序复杂难懂,操作不便。
单片机发送接收程序简单易懂,操作方便。
故而,此系统采用后者。
“异步通信”是一种很常用的通信方式。
异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。
当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。
发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。
异步通信的好处是通信设备简单、便宜,但传输效率较低。
异步通信也可以是以帧作为发送的单位。
接收端必须随时做好接收帧的准备。
这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。
这也称为帧定界。
帧定界还包含确定帧的结束位置。
这有两种方法。
一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。
或者在帧首部中设有帧长度的字段。
需要注意的是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。
在一帧中的所有比特是连续发送的。
发送端不需要在发送一帧之前和接收端进行协调。
每个字符开始发送的时间可以是任意的t0 0 1 1 0 1 1 0起始位结束位t每个帧开始发送的时间可以是任意的。
以字符为单位发送以帧为单位发送帧开始帧结束
“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。
收发双方不停地发送和接收连续的同步比特流。
但这时还有两种不同的同步方式。
一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。
另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。
2.4MCS-51串行接口的基本特点
MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。
输入:
在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。
在接收到附加的第9位数据后,当满足①(RI):
0;②(SM2)=0或接收到的第9位数据为1时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志Ri;否则信息丢失。
且不置位RI。
2. 工作方式3
方式3为波特率可变的11位UART方式。
除波特率外,其余与方式2相同。
波特率的选择
如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。
在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
1> 方式1
方式1的波特率固定为主振频率的1/12。
2> 方式2
方式2的波特率由PCON中的选择位SMOD来决定,可表示为:
波特率=2sMoD×fosc/64也就是当SMOD=1时,波特率为1/32×fosc,当SMOD=0时,波特率为1/64×fosc。
3> 方式1和方式3
定时器T1作为波特率发生器,其公式如下:
波特率=2SMOD/32×定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期
式中T1计数率取决于它工作在定时器状态还是计数器状态。
当工作于定时器状态时,T1计数率为Fosc/2:
当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于Fosc/24。
产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式O:
溢出所需周期数=8192-X 定时器T1工作于方式1:
溢出所需周期数=65536-X 定时器T1工作于方式2:
溢出所需周期数=256-X
因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。
这种方式下,T1的溢出率[次/秒]计算式可以表示为:
T1溢出率=Fsoc/12[256-X]
4系统设计
4.1 设计要求
在本设计中,要求完成51单片机与串口的线路连接、并用C语言编写程序实现PC机与51单片机通过串口实现异步通信,并能根据设置调整异步传行通信参数。
4.2 设计方案
本次设计,对于两片89C51,采用RS-232进行双机通信。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS-232点评输出,经过传输线将信号传送到接收端。
接收方也是用MAX232芯片惊醒电平转换后,信号到达接收方串行口的接收端。
接收方接收后,在数码管上显示接收的信息。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH,主机收到BBH后就把数码表中的16个数据送给从机,并发送检验和。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
4.3 硬件设计
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
A、B两台51单片机机通过串行接口相连,B机的七段数码管显示其接收到(A机发出)的数字;而A机的七段数码管则显示其接收到(B机发出)的数字。
AT89C51 简介:
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器—的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,
AT8951C芯片引脚图
3.4软件设计
A,B两机进行异步串行通信,当B机接收A机发出的数据后,一方面通过其数码管显示,另外加上偏移量后发出。
当A机收到B机发出的数据后,一方面通过其数码管显示,另外经延时后发出下一个数据。
A机的代码
#include
unsignedcharcodedata[]={
0x77,0x7c,0x39,ox5e,0x79,0x71,0x73,0x3e,0x31,0x6e,0x76,0x38,0xff,0x00
};
voidSend(unsignedchardat)
{
SBUF=dat;
while(TI==0)
//等待
TI=0;
}
/*************
函数功能:
接收一个字节数据
*************/
unsignedcharReceive(void)
{
unsignedchardat;
while(RI==0)
//等待,直至接收完毕(RI=1)
RI=0;//为了接收下一帧数据;
dat=SBUF;//将接收缓冲器中的数据
returndat;
}
/**************
函数功能:
延时约150ms
**************/
voiddelay(void)
{
unsignedchari;
TMOD=0x20;//TMOD=0010000B,定时器T1工作于方式2
SCON=0x50;//SCON=0101000B,串口工作方式1,允许接收
PCON=0x00;
TH1=0xfd;//定时器TH1赋初值,波特率9600
TL1=0xfd;//定时器TL1赋初值
TR1=1;//启动定时器T1
P2=0x01;//置P2.0口为高电平
while
(1)
{
for(i=0;i<8;i++)
{
Send(i);//发送数据i
P0=data[Receive()];//将接收到的数据送P0口显示
delay();//600ms后发送下一个数据
delay();
delay();
delay();
}
}
}
B机代码
#include
unsignedcharcodedata[]={0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3e,0x31,
0x6e,0x76,0x38,0xff,0x00
};//A,B,C,D,E,F,P,U,R,Y,H,L,全亮,全灭的段码
/***************
函数功能:
发送一个字节数据
***************/
voidSend(unsignedchardat)
{
SBUF=dat;
while(TI==0)
//等待
TI=0;
}
/*****************
函数功能:
接收一个字节数据
*****************/
unsignedcharReceive(void)
{
unsignedchardat;
while(RI==0)
//等待,直至接收完毕(RI=1)
RI=0;//为了接收下一帧数据
dat=SBUF;//将接收缓冲器中的数据存于dat
returndat;
}
/***************************
函数功能:
主函数
******************************/
voidmain(void)
{
unsignedchardat;
TMOD=0x20;//定时器T1工作于方式2
SCON=0x50;//SCON=01010000B,串口工作方式1,允许接收(REN=1)
PCON=0x00;
TH1=0xfd;//定时器TH1赋初值,波特率9600
TL1=0xfd;//定时器TL1赋初值
TR1=1;
P2=0X01;//置P2.0口为高电平
while
(1)
{
dat=Receive();
P0=data[dat];
Send(dat+8);
}
}
5电路仿真图
6心得
在本次综合实验中,认识到之前自己单片机学的并不扎实,很多东西都要找很久,单片机是一门很有意思的科目,蕴藏的知识点也相当多,想把这些知识点吃透还是有很长的一段路要走。
7参考文献
[1]胡伟.单片机C程序设计及应用实例.北京:
人民邮电出版社,2003
[2]韩毅刚.计算机通信技术.北京:
北京航空航天大学出版社,2007
[3]李朝青.单片机与PC机网络通信技术.北京:
北京航空航天大学出版社,2007
[4]胡洪波.单片机原理与应用实验教程.湘潭大学出版社,2009.7
[5]刘坤 赵红波 张宪栋.51单片机C语言应用开发技术大全.北京:
人民邮电 出版社,2012
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双机 串行 通信 设计 实现