单片机双机通信设计.docx
《单片机双机通信设计.docx》由会员分享,可在线阅读,更多相关《单片机双机通信设计.docx(18页珍藏版)》请在冰豆网上搜索。
![单片机双机通信设计.docx](https://file1.bdocx.com/fileroot1/2022-10/26/bc16a4c6-2c0c-447e-864c-2dc576d5ece6/bc16a4c6-2c0c-447e-864c-2dc576d5ece61.gif)
单片机双机通信设计
*****************
实践教学
*****************
兰州理工大学
运算机与通信学院
2021年秋季学期
通信系统综合训练课程设计
题目:
51单片机双机串行通信设计
专业班级:
10级通信四班
姓名:
学号:
指导教师:
成绩:
摘要
在测控系统和工程应用中,常碰到多项任务需同时执行的情形,因此主从式多机散布式系统成为现代工业普遍应用的模式。
单片机功能强、体积小、价钱低廉、开发应用方便,尤其具有全双工串行通信的特点,在工业操纵、数据搜集、智能仪器仪表、家用电器方面都有普遍的应用。
本次课程设计确实是要利用单片机来完成一个系统,实现双片单片机串行通信,通信的结果利用数码管进行显示,数码管采纳查表方式显示,两个单片机之间采纳RS-232进行双机通信。
在通信进程中,利用通信协议进行通信。
并用C语言编写程序实现PC机与51单片机通过串话柄现异步通信。
关键字:
51单片机;串行通信;RS-232接口标准
前言
最近几年来,在自动化操纵和智能仪表中,单片机的应用愈来愈普遍。
尽管MOS单片机内部含有丰硕地位硬件资源,但关于一些复杂的单片系统来讲,光靠单个单片机资源远远不能知足系统要求,通常需要对单片机进行外部扩展。
例如I/O接口,扩展存储器,扩展按时/计数器更有甚者需要可扩展单片机。
那么一个系统就需要两个或两个以上单片机,而这些单片机就需要互联来实现通信。
本次课程设计确实是通过RS232来完成两个51单片机串行通信,通信的结果利用数码管进行显示,数码管采纳查表方式显示。
在通信进程中,利用通信协议进行通信。
一、大体原理
运算机与外界的信息互换称为通信。
在通信领域内,有两种数据通信方式:
并行通信和串行通信。
随着运算机网络化和微机分级散布式应用系统的进展,通信的功能愈来愈重要。
通信是指运算机与外界的信息传输,既包括运算机与运算机之间的传输,也包括运算机与外部设备,如终端、打印机和磁盘等设备之间的传输。
串行通信是指利用一条数据线,将数据一名一名地依次传输,每一名数据占据一个固定的时刻长度。
其只需要少数几条线就能够够在系统间互换信息,专门适用于运算机与运算机、运算机与外设之间的远距离通信。
在运算机和终端之间的数据传输一般是靠电缆或信道上的电流或电压转变实现的。
若是一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。
图1串行通信与并行通信的区别
串行通信能够分为同步通信和异步通信两类。
1.1.1同步通信
同步通信是依照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。
异步通信实质是指甲乙通信两边采纳独立的时钟,每一个数据均以起始位开始,停止位终止,起始位触发甲乙两边同步时钟。
每一个异步串行帧中的1位彼此严格同步,位周期相同。
同步通信的通信两边必需先成立同步,即两边的时钟要调整到同一个频率。
收发两边不断地发送和接收持续的同步比特流,但这时还有两种不同的同步方式,一种是利用全网同步,用一个超级精准的主时钟对全网所有结点上的时钟进行同步,另一种是利用准同步,各结点的时钟之间许诺有微小的误差,然后采纳其他方法实现同步传输。
1.1.2异步通信
所谓异步是指发送、接收两边的数据帧与帧之间不要求同步,也没必要同步。
异步通信是一种很经常使用的通信方式,异步通信在发送字符时,所发送的字符之间的时刻距离能够是任意的。
固然,接收端必需时刻做好接收的预备(若是接收端主机的电源都没有加上,那么发送端发送字符就没成心义,因为接收端全然无法接收),发送端能够在任意时刻开始发送字符,因此必需在每一个字符的开始和终止的地址加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来,异步通信的益处是通信设备简单、廉价,但传输效率较低。
异步通信也能够是以帧作为发送的单位,接收端必需随时做好接收帧的预备,这时,帧的首部必需设有一些特殊的比特组合,使得接收端能够找出一帧的开始,这也称为帧定界,帧定界还包括确信帧的终止位置,这有两种方式,一种是在帧的尾部设有某种特殊的比特组合来标志帧的终止,或在帧首部中设有帧长度的字段,需要注意的是,在异步发送帧时,并非是说发送端对帧中的每一个字符都必需加上开始位和停止位后再发送出去,而是说,发送端能够在任意时刻发送一个帧,而帧与帧之间的时刻距离也能够是任意的。
在一帧中的所有比特是持续发送的,发送端不需要在发送一帧之前和接收端进行和谐。
异步通信比较灵活,适用于数据的随机发送/接收;而同步通信那么是成批数据传送。
异步传输一批数据因每一个字节均有起始位和停止位操纵而使发送/接收速度有所降低,一样适用于每秒50~9600位,而同步传输速度较快,可达每秒80万位,因此本次设计选用串行异步通信。
异步通信所传输的数据格式(串行帧)由1个起始位、7个或8个数据位、1~2个停止位(含1.5个停止位)和1个校验位组成。
起始位约定为0;空闲位约定为1。
在异步通信方式中,数据或字符是一帧一帧传送的,在帧格式中包括了4个组成部份:
起始位,数据位,奇偶位和停止位。
起始位占一名,用逻辑“0”表示字符的开始。
起始位后面紧接着是数据位,数据位的个数能够是5位,6位,7位或是8位。
在数据位传送进程中,规定地位在前,高位在后,数据位发送完后,接下来的是1位奇偶校验位,奇偶校验用于有限过失检测,通信两边约定一致的奇偶校验方式,停止位在最后,用逻辑值“1”表示一个字符传送的终止,终止位能够是1位,1.5位或是2位,接收端收到停止位后,明白上一字符已传送完毕,通信线路上便又恢复逻辑“1”状态,直至下一个字符数据的起始位到来。
在异步模式下,AT89C51支持两种多机模式:
线路空闲多机模式和地址位多机模式。
线路空闲模式下,数据块被一段空闲的时刻分割,在字符的第一个停止位以后收到10个以上的1,表示检测到线路空闲;若是采纳两个停止位,那么第二个停止位被以为是空闲周期的第一个信号。
在利用地址位多机模式时,字符包括一个附加的位作为地址标识,数据快的第一个字符带有一个置位的地址位,用以说明该字符是一个地址
1.2串行接口的特点
MCS-51单片机的串行端口有4种大体工作方式,通过编程设置,能够使其工作在任一方式,以知足不同场合的需要。
其中,方式0要紧用于外接移位寄放器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式二、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.3波特率选择
波特率(BoudRate)确实是在串口通信中每秒能够发送的位数(bits/second)。
MCS-51串行端口在四种工作模式下有不同的波特率计算方式。
其中,模式0和模式2波特率计算很简单,请同窗们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来讲明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置按时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:
波特率=(1+SMOD)*晶振频率/(384*(256-TH1))
其中,SMOD——寄放器PCON的第7位,称为波特率倍增位;
TH1——按时器的重载值。
在选择波特率的时候需要考虑两点:
第一,系统需要的通信速度。
这要依照系统的运作特点,确信通信的频率范围。
然后考虑通信时钟误差。
利用同一晶振频率在选择不同的通信速度时通信时钟误差会有专门大不同。
为了通信的稳固,咱们应该尽可能选择时钟误差最小的频率进行通信。
下面举例说明波特率选择进程:
假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
那么TH1=256-62500/波特率
依照波特率取值表,咱们明白能够选取的波特率有:
1200,2400,4800,9600,19200。
列计数重视载值,通信误差如下表:
图2通信误差表
因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
1.4通信协议的利用
通信协议是通信设备在通信前的约定。
单片机、运算机有了协议这种约定,通信两边才能明白对方的用意,以进行下一步动作。
假定咱们需要在PC机与单片机之间进行通信,在两边程式设计进程中,有如下约定