51单片机双机串行通信设计.docx
《51单片机双机串行通信设计.docx》由会员分享,可在线阅读,更多相关《51单片机双机串行通信设计.docx(20页珍藏版)》请在冰豆网上搜索。
![51单片机双机串行通信设计.docx](https://file1.bdocx.com/fileroot1/2022-12/14/48788d0c-b1d0-4622-a3f8-c241fc783710/48788d0c-b1d0-4622-a3f8-c241fc7837101.gif)
51单片机双机串行通信设计
******************
实践教学
*******************
XXXXX大学
计算机与通信学院
2013年秋季学期
通信系统综合训练课程设计
题目:
51单片机双机串行通信设计
专业班级:
通信工程x班
姓名:
xx
学号:
xx
指导教师:
xx
成绩:
摘要
双机通信的实质就是解决两单片机串行通信问题。
针对于89C51单片机全双工异步串行通信口,我们采用单片机直接交叉互连的串行通信方式。
考虑到本设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简单,我们最终决定本系统采用方式一单片机直接交叉连接的串行通信方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。
本设计的硬件电路分为数码管显示模块、单片机工作的基本复位电路以及晶振模块。
编程采用C语言加以实现。
通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双向通信。
关键字:
51单片机串行通信RS-232接口标准
前言
随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。
对于一些场合,比如:
复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。
如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。
但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。
这就对单片机通信提出了更高要求。
单片机之间的通信可以分为两大类:
并行通信和串行通信。
串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。
所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。
1基本原理
1.1 串行通信概述
1.1.1 串行通信的特点
在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。
与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。
一位接一位地顺序传送。
这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。
由此可见,串行通信的特点如下:
1、节省传输线,这是显而易见的。
尤其是在远程通信时,此特点尤为重要。
这也是串行通信的主要优点;2、数据传送效率低。
与并行通信比,这也这是显而易见的。
这也是串行通信的主要缺点。
串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电缆和同步化使并行通信实际应用面临困难。
凭借着其改善的信号完整性和传播速度,串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线不需要串行化元件等缺点。
1.2 串行通信的分类
1.2.1异步通信
所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的.异步串行通信的特点可以概括为:
①以字符为单位传送信息;②相邻两字符间的间隔是任意长; ③接收时钟和发送时钟只要相近就可以。
异步方式特点简单的说就是:
字符间异步,字符内部各位同步。
1.2.2同步通信
所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步.同步串行通信的特点可以概括为:
①以数据块为单位传送信息;②在一个数据块(信息帧)内,字符与字符间无间隔;③接收时钟与发送进钟严格同步。
1.3 串行通信技术标准
1.3.1数据传输率
(1)比特率和波特率:
比特率是指每秒传输的二进制位数,用bps(bit/s)表示。
波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于比特率。
在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特,因此在计算机通信中,常将比特率称为波特率,即:
1波特(B)=1比特(bit)=1位/秒(1bps)例如:
电传打字机最快传输率为每秒10个字符/秒,每个字符包含11个二进制位,则数据传输率为:
11位/字符×10个字符/秒=110位/秒=110波特(Baud)计算机中常用的波特率是:
110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可达56Kbps.
(2)位时间Td:
位时间是指传送一个二进制位所需时间,用Td 表示。
Td = 1/波特率 = 1/B
(3)发送时钟和接收时钟
在串行通信中,二进制数据以数字信号的信号形式出现,不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。
在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。
1)发送时钟
发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下,将该并行数据逐位移位输出。
通常是在发送时钟的下降沿将移位寄存器中的数据串行输出,每个数据位的时间间隔由发送时钟的周期来划分。
2)接收时钟
在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并将其移入接收器的移位寄存器中,最后组成并行数据输出。
1.3.2波特率因子
接收时钟和发送时钟与波特率有如下关系:
F=n×B这里F是发送时钟或接收时钟的频率;B是数据传输的波特率;n称为波特率因子。
设发送或接收时钟的周期为Tc,频率为F的位传输时间为Td,则:
Tc=1/F,Td =1/B 得到:
Tc=T/n在实际串行通信中,波特率因子可以设定。
在异步传送时,n = 1,16,64实际常采n=16,即发送或接收时钟的频率要比数据传送的波特率高n倍。
在同步通信中波特率因子必等于1。
1.4串行通信协议
包括RS-232-C、RS-422、RS485、USB等。
RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
1.4.1RS-232-C串口
RS-232-C也称标准串口,是目前最常用的一种串行通讯接口。
它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。
传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。
自IBM PC/AT开始使用简化了的9芯D型插座。
至今25芯插头座现代应用中已经很少采用。
电脑一般有两个串口:
COM1和COM2,9针D形接口通常在计算机后面能看到。
现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。
1.4.2RS-422
为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS- 422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。
1.4.3RS-485
为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485 标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为 TIA/EIA-485-A标准。
1.4.4RJ-45接口
是以太网最为常用的接口,RJ45是一个常用名称,指的是由IEC(60)603-7标准化,使用由国际性的接插件标准定义的8个位置(8针)的模块化插孔或者插头。
1.4.5Universal Serial Bus(通用串行总线)
简称USB,是目前电脑上应用较广泛的接口规范,由Intel、Microsoft、Compaq、IBM、NEC、Northern Telcom等几家大厂商发起的新型外设接口标准。
USB接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。
USB接口速度快、连接简单、不需要外接电源,传输速度12Mbps,新的USB 2.0可达480Mbps;电缆最大长度5米,USB电缆有4条线:
2条信号线,2条电源线,可提供5伏特电源,USB电缆还分屏蔽和非屏蔽两种,屏蔽电缆传输速度可达12Mbps,价格较贵,非屏蔽电缆速度为1.5Mbps,但价格便宜;USB通过串联方式最多可串接127个设备;支持热插拔。
最新的规格是USB 3.0。
1.5串行通信与并行通信区别
计算机与外界的信息交换称为通信。
在通信领域内,有两种数据通信方式:
并行通信和串行通信。
随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。
通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。
串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。
如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。
图1串行通信与并行通信的区别
1.6MCS-51串行接口的基本特点
MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。
串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等。
串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。
串行端口的波特率可以用程序来控制。
在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。
串口控制寄存器
输入:
在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。
只有当8位数据接收完,并检测到高电平停止位后,只有满足①(R1)=0;②(SM2)=0或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。
所以在方式1接收时,应先用软件清零RI和SM2标志。
1.工作方式2
方式2为固定波特率的11位UART方式。
它比方式1增加了一位可程控为1或0的第9位数据。
输出:
发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。
它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。
当CPU执行一条数据写入SUBF的指令且TI=0时,就启动发送器发送。
发送一帧信息后,置位中断标志TI。
输入:
在(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]
1.7波特率选择
波特率(BoudRate)就是在串口通信中每秒能够发送的位数(bits/second)。
MCS-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:
波特率=(1+SMOD)*晶振频率/(384*(256-TH1))
其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;
TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:
首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
1.8通信协议的使用
通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:
0xA1:
单片机读取P0端口数据,并将读取数据返回PC机;
0xA2:
单片机从PC机接收一段控制数据;
0xA3:
单片机操作成功信息。
在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。
当单片机接收到0xA1时,读取P0端口数据,并将读取数据返回PC机;当单片机接收到0xA2时,单片机等待从PC机接收一段控制数据;当PC接收到0xA3时,就表明单片机操作已经成功。
1.951单片机的结构和作用
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。
51单片机串行接口的结构如下:
数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存。
有两个,一个缓存,另一个接受,用同一个直接地址99H,发送时用指令将数据送到SBUF即可启动发送:
接收时用指令将SBUF中接收到的数据取出。
串行控制寄存器(PCON)
SCON用于串行通信法师的选择,首发控制及状态指示。
利用AT89C51芯片、复位电路、时钟电路、LED数码管等,使A机控制B机的两个LED闪烁,B机控制A机的数码管加一显示。
使用DS18B20温度传感器,由B机测量温度后由A机显示. 把P1口的高7位与数码管相连,绿灯表示通行方向。
P2口与LED显示器相连,用来输出显示的数字。
图2系统和原理框图
1.10双机通信
两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:
单工通信:
是指消息只能单方向传输的工作方式。
单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。
通信双方采用单工通信属于点到点的通信。
根据收发频率的异同,单工通信可分为同频通信和异频通信。
半双工通信:
这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。
也就是说,通信信道的每一段都可以是发送端,也可以是接端。
但同一时刻里,信息只能有一个传输方向。
如日常生活中的例子有步话机通信等。
双工通信:
双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。
这种发射机和接收机分别在两个不同的频率上能同时进行工作的双工机也称为异频双工机。
双工机的特点是使用方便,但线路设计较复杂,价格也较高。
2系统分析
2.1汇编语言和C语言的特点及选择
本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
主机硬件,程序可读性和可移植性比较差。
而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算方便,表达类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。
所以我们采用C语言编写了程序。
2.2并行通信与串行通信的比较
计算机与外界的信息交换称为通信,常用的通信方式有两种:
并行通信和串行通信。
51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信得特点是传输信号的速度快,但所用的信号线比较多,成本高,传输的距离较近。
串行通信的特点是只用两条信号线即可完成通信,成本低,传输的距离较远。
2.3串行通信程序设计的比较
串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。
微机发送接收程序复杂难懂,操作不便。
单片机发送接收程序简单易懂,操作方便。
故而,此系统采用后者。
2.4同步通信与异步通信的区别
“异步通信”是一种很常用的通信方式。
异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。
当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。
发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。
异步通信的好处是通信设备简单、便宜,但传输效率较低。
异步通信也可以是以帧作为发送的单位。
接收端必须随时做好接收帧的准备。
这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。
这也称为帧定界。
帧定界还包含确定帧的结束位置。
这有两种方法。
一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。
或者在帧首部中设有帧长度的字段。
需要注意的是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。
在一帧中的所有比特是连续发送的。
发送端不需要在发送一帧之前和接收端进行协调。
每个字符开始发送的时间可以是任意的t00110110起始位结束位t每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束
“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。
收发双方不停地发送和接收连续的同步比特流。
但这时还有两种不同的同步方式。
一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。
另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。
3系统设计
3.1设计要求
在本设计中,要求完成51单片机与串口的线路连接、并用C语言编写程序实现PC机与51单片机通过串口实现异步通信,并能根据设置调整异步传行通信参数。
3.2设计方案
本次设计,对于两片89C51,采用RS-232进行双机通信。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS-232点评输出,经过传输线将信号传送到接收端。
接收方也是用MAX232芯片惊醒电平转换后,信号到达接收方串行口的接收端。
接收方接收后,在数码管上显示接收的信息。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH,主机收到BBH后就把数码表中的16个数据送给从机,并发送检验和。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
3.3硬件设计
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
A、B两台51单片机机通过串行接口相连,B机的七段数码管显示其接收到(A机发出)的数字;而A机的七段数码管则显示其接收到(B机发出)的数字。
电路原理图如下所示。
图3电路原理图
在桌面上双击图标打开ISIS7Professional窗口。
在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。
表2元件选择表
51单片机AT89C51二片
晶体CRYSTAL11.0592MHz二只
瓷片电容CAP22pF四只
电解电容CAP-ELEC10uF二只
电阻RES10K二只
上拉电阻网络RESPACK-7二只
七段数码管7SEG-COM-CAT-GRN二只
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写
图3AT89C51管脚图
入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接