实验四基于单片机的串行通信
一、 实验目的
1.了解串行通信的基本知识;
2.掌握用单片机串行口实现串行通信的方法。
二、 实验器材
微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,MAX202C芯片一块,电容、电阻、导线若干。
三、 实验原理
此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见本讲义实验七。
1.串行通信的异步和同步传送方式
CPU与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。
通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图4.1所示)。
在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线,并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。一般而言,串行通信的传送速度明显低于并行通信。
(a)并行通信 (b)串行通信
图4.1 通信方式示意图
串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而同步通信是靠识别同步字符来实现数据的发送和接收的。
(1) 异步传送方式
异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符。
异步通信格式如图4.2所示,每个字符由起始位、数据位、奇偶校验位和停止位四个部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。
z 起始位:为“
0”信号,占1位。起始位的作用有两个:①表示一个新字符帧的开始。
即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保证后续的接收能正确进行。
z 数据位:紧接于起始位后面,它可以占5、6、7或8位不等,数据的位数依最佳传送
速率来确定。如所传数据为ASCII 码字符,则常取7位。数据位传输的顺序,总是最低位(LSB )D 0在先。
z 奇偶校验位:在数据位之后,占1位。它用来检验信息传送否有错。它的状态常由发
送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校验位中逻辑“1”的个数必须是偶数;若为奇校验,则数据位和校验位中逻辑“1”的个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送过程是否有错。
z 停止位:用“1”来表征一个字符帧的结束。停止位可以占1位、1.5位或2位不等。
接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。若停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。图4.2既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波特率),以“位/秒”(bps )为单位。在异步通信中,
波待率=(每个字符帧的位数)×(每秒传送的字符数)
常用的波特率有600、1200、2400、4800、9600、19200(bps )等。
由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选16:1或者64:1。采用较高频率的时钟,在一位数据内就有16或64个时钟,就可以保证捕捉正确的信号。 空闲位 起校停起校停空闲位 第n 个字符帧 第n +1个字符帧
图4.2异步通信的字符帧格式
因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以及时钟频率和波特率间的比例关系。异步传送由于不传送同步时钟脉冲,所以设备比较简单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度没有限制。缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据位的传送速率,仅适合于低速通信的场合。
(2) 同步传送方式
同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。在通信开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,这就提高了数据传送的效率,其符号格式如图4.3所示。同步通信可以分为单同步字符方式和双同步字符方式,图4.3(a)为双同步字符方式,图4.3(b)为单同步字符方式,同步字符之后是连续的数据块。同步字符可以由用户约定,当然也可以采用ASCII码中规定的SYN代码,即16H。按同步方式通信时,在发送时要插入同步字符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相应的检测手段,设备较复杂。在同步传送时,无论接收或发送,都要求统一时钟。为了保证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。同步传送的优点是传送速率较高,可达56K波特或更高。
图4.3同步传送符号格式
2.MCS-51系列单片机的串行通信接口
MCS一51系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收和发送器,也可作为同步移位寄存器用。该串行口有4种工作模式(详见下文2.6)。片内的定时器/计数器可用作波特率发生器。接收、发送均可工作在查询方式或中断方式。
2.1串行通信接口结构
MCS一51系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲器SBUF,对外也有两条独立的收、发信号线RxD(P3.0)和TxD(P3.1)。可以同时发送、接收数据,实现全双工传送。发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个端口地址(99H)。具体对哪一个缓冲器进行操作,取决于所用的指令是发送还是接收。
接收是双缓存的,以避免在接收下一帧数据之前,CPU未能及时响应接收中断, 未把
上一帧数据取走而产生两帧数据重叠的问题。而对于发送器,,因为发送时CPU是主动的,不会产生写重叠的问题,所以不需要双缓存。
与串行通信口有关的寄存器有多个,除SBUF之外,还有SCON、PCON、IE和定时器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器PSW。
2.2串行口控制寄存器SCON
SCON用于控制和监视串行口的工作状态,定义如下:
表4.2 SCON 寄存器
(MSB) (LSB)
SM0 SM1 SM2 REN TB8 RB8 TI RI
z SM0和SM1:串行口工作模式选择位,对应四种模式,见表4.3。
z SM2:
在模式0时,SM2不用,应设置为0。
在模式1时,SM2一般也应设置为0。若SM2=1,则只有收到有效停止位才会激活RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则RI清零。
在模式2或模式3下,SM2的设置与字符帧第九位的作用有关。①在第九位用作奇偶位的情形,应置SM2=0。②在第九位用于表示是地址帧还是数据帧的多机通信情形,若SM2=1和RB8=1时,RI不仅被激活,而且可以向CPU请求中断;若SM2=0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活。SM2在多机通信中的使用方法,详见本讲义P.34的有关主从式多机通信过程的说明。
表4.3 串行口工作模式选择
SM0 SM1 模 式 功 能 波 特 率
0 0
0 1
1 0 1 1 0
1
2
3
同步移位寄存器
8位UART
9位UART
9位UART
f OSC/12
可变
f OSC/64或f OSC/32
可变
z REN:允许接收控制位,由软件置位或清除。REN=1则允许接收, REN=0, 禁止接收。z TB8:该位是模式2和3中要发送的第九位数据。在许多通信协议中, 该位是奇偶位,可以按需要由软件置位或清除。在多机通信中, 该位用于表示是地址帧还是数据帧。z RB8:该位是模式2和3中已接收的第九位数据(可能是奇偶位, 或是地址帧/数据帧标识位)。在模式1中, 若SM2=0, RB8是已接收的停止位。在模式0中, RB8未用。z TI:发送中断标志。在模式0中, 在发送完第8位数据时, 由硬件置位;在其他模式中, 在发送停止位之初, 由硬件置位,申请中断, CPU响应中断后, 发送下一帧数据。
在任何模式中, 都必须由软件清除TI.
z RI:接收中断标志。在模式0中, 接收第8位数据结束时, 由硬件置位;在其他模式中, 在接收停止位的半中间, 由硬件置位,申请中断, 要求CPU取走数据。但在模式
1中, SM2=1时, 若未接收到有效的停止位, 则不会对RI 置位。在任何模式中,都必须由软件清除RI.
2.3 电源控制寄存器PCON 中的波特率倍增控制位SMOD
PCON 中有与串行口通信波特率有关的控制位SMOD ,SMOD =1时波特率加倍。
2.4 允许中断寄存器IE 的串行口中断控制位ES
IE 中的ES 位为串行口中断控制位,ES=1且总中断允许位EA=1时,允许串行口中断。
2.5 定时器/计数器1作波特率发生器
在模式1和模式3下,
其中f osc 为晶振频率, TH1为定时器1的重装载值.,
定时器/计数器1工作于自动重装载模式, 即模式2。定时器1中断应禁止。
2.6 串行口的工作模式
串行口的四种工作模式中,模式1、2、3用于通信,模式0主要用于I/O 口扩展。 模式0
在模式0状态下,串行口为同步移位寄存器方式,其波特率固定为f osc /12。RxD (P3.0)端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接收的是8位数据,低位在先。
模式1
串行口工作在模式1,为8位异步通信口,即一字符帧由10位组成:1位起始位、8位数据位和1位停止位。 模式1发送
图4.4模式1发送时序
图4.4示意模式1的发送时序。模式1的发送是在发送中断标志TI=0时,由一条写SBUF 的指令启动发送控制器的SEND 端,使SEND=0。启动发送后,串行口能自动地插入一
()
125612322TH f osc SMOD
?××=()计数器溢出速率定时器波特率/32
2×=SMOD
位起始位0,在字符结束前插入一位停止位1,然后在发送移位脉冲SHIFT作用下,依次由TxD线上发出。一个字符发完之后,自动维持TxD线的信号为1,在8位数据发出之后,也就是在停止位开始时,使TI置1,用以通知CPU可以发出下一个字符。
模式1发送时的定时信号,也就是发送移位时钟,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值)而取得的。因此,模式1的波特率是可变的。
模式1接收
模式1的接收是在SCON寄存器中REN=1时,从检测到RxD端的负跳变(在无信号时,RxD的状态为1),并搜索到有效的起始位开始的。在接收移位脉冲的控制下,把收到的数据逐位移人接收寄存器,直到收齐其余9位(包括1位停止位)。
在接收操作时,有两种定时信号。一种是接收移位脉冲,它的频率和传送波特率相同,也是由定时器1的溢出信号经过16或32分频而得到的。另一种是接收字符的检测脉冲(位检测采样脉冲),它的频率是接收移位脉冲的16倍,亦即在一位数据期间有16个检测脉冲,并以其中的第7、8、9三个脉冲作为真正的对接收信号的采样脉冲。对这三次采样结果采用三中取二的原则来决定所检测到的值。采取这种措施的目的在于抑制干扰。由于采样信号总是在接收位的中间位置,这样既可以避开信号两端的边沿失真,也可以防止由于收发时钟频率不完全一致而带来的接收错误。模式1接收时序如图4.5所示。
图4.5模式1接收时序
在一个字符帧收齐之后,如果以下两个条件:
(1) RI=0,即上一帧数据接收发出的中断请求已被响应,所收数据已取走;
(2) SM2=0,或者接收到的停止位为1。
同时被满足,则将接收移位寄存器中的8位数据转存入串行口寄存器SBUF,收到的停止位则进入RB8,并使接收中断标志RI置1;否则,刚收到的数据就不装人SBUF(意味着丢失了一组数据),接收控制器就转入搜索RxD端新的负跳变。
模式2
串行口工作在模式2,为9位异步通信口,即一字符帧由11位组成:1位起始位、8位数据位、1位可编程位TB8(第9数据位)和1位停止位。发送时,TB8根据需要设置为0或1(TB8既可作为多机通信中的地址数据标志位又可作为数据的奇偶校验位);接收时,TB8之值被送入SCON中的RB8。
模式2发送
图4.6模式2发送时序
模式2发送时序如图4.6所示。CPU执行一条写SBUF的指令后,便立即启动发送器发送,送完一帧信息后,TI被置1,在发送下一帧信息之前,TI必须由中断服务程序(或查询程序)清零。
模式2接收
模式2的接收与模式1基本相似,不同之处是要接收9位有效数据。在模式1时把停止位当作第9位数据来处理,而在模式2中存在着真正的第9位数据。模式2有效接收数据的条件为:
(1) RI=0,即用户已把SBUF中上次收到的数据读走;
(2) SM2=0,即非多机通信情况;或SM2=1,即在多机通信情况下,收到的第9位数据为1,表示所收到的是地址帧。
若这两个条件成立,接收到的第9位数据进入RB8,而前8位数据进入SBUF以准备让CPU 读取,并且置位RI。否则这次接收无效,RI不被置位。图4.7表示模式2接收时序。
图4.7模式2接收时序
模式3
模式3除了波特率可编程外,其余与模式2相同。
2.7主从式多机通信
多机通信的大致过程如下:
(1) 主机置SM2=0;
(2) 所有从机置SM2=1,处于等待接收地址帧、准备与主机通信的状态;
(3) 主机发送一帧信息,其中包含被寻址从机的8位(bit)地址,第9数据位TB8=1用以表示地址帧;
(4) 各从机收到地址帧后,各自中断CPU,依据寻址信息判断本机是否被寻址; (5) 被寻址的从机置SM2=0,该从机将响应来自主机的后续控制信息和数据。其余未被寻址的从机维持SM2=1,这些从机将只对来自主机的地址信息帧有响应;
(6) 被寻址的从机与主机通信结束后,置SM2=1,恢复等待接收地址帧、准备与主机进
行下一次通信的状态。
四、 实验内容
1.用双踪示波器分析串行口工作在模式1(10位异步方式)下的信号结构
设定串行口工作模式1(10位异步方式), 用1200bps循环发送一个字节55H或8AH。用双踪示波器同时观测TXD的TTL电平和RS-232电平波形图,分析信号的帧结构,标出起始位、数据位和终止位, 用示波器测量码元宽度,给出1200bps波特率条件下的TH1计算值、码元宽度的计算值和测量值。
参考程序如下:
START: MOV SP,#50H
MOV TMOD,#20H ;T/C1定时器方式, 模式2
MOV SCON,#70H ;串行口工作模式1、允许接收
MOV TH1,#XXH ;波特率设置值自定(CPU的时钟频率f osc=11.059 MHz)
MOV TL1,#XXH
SETB TR1
MOV A,#8AH
ST1: MOV SBUF,A ;将数据送发送缓冲区
JNB TI,$ ;等待发送结束
CLR TI ;清发送结束标志.
AJMP ST1
2.编写本机串行口自检程序,通过自发自收确认串行口工作正常。
3.实现两个单片机系统之间的串行口异步通信(可两人合作完成,但是每人都应
独立完成兼有发送和接收功能的程序;或一人独立编程,在两个单片机系统上
运行)。
具体要求如下(建议编程时逐步增加功能):
1)中断方式发送、接收。
2)成组数据发送和接收:发送端发送外部数据存储器中大于64字节长的成组数据(格式为“数据字节长度+成组数据”)。每组数据发送结束后,等待对
方反馈信息。若对方确认接收无误,就发送下一组数据;若在2秒钟内未得
到对方响应,则重发。接收端收到数据后,存于外部数据存储器(不要与发
送的数据区重叠),并反馈接收正确与否的信息。
3)上述实验内容2)中用单片机的P1口驱动LED表示发送或接收成功与否。
4)(选做)上述实验内容2)中发送、接收每个字节时采用奇(或偶)检验(参见有关参考书关于程序状态字寄存器PSW的说明)。
双机间的连线如下:
TXD--------------RXD
RXD--------------TXD
GND--------------GND
串行口中断服务子程序参考编程格式:
SIO_SUB:
JBC TI,TO_SEND
JBC RI,TO_RECE
RETI
TO_SEND:…
…
RETI
TO_RECE:…
…
RETI
五、 思考题
1.请分析:要保证以本讲义所述模式1通信的正常进行,所允许的收、发双方波
特率的最大相对误差是多少。
六、 实验报告附加要求
1.画出实验内容1中所传输数据的10位字符帧结构示意图。
2.比较波特率的实测值和程序设定值。
3.画出实验内容3的程序流程图,并简要注释主要程序段。
//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 /****************************************************************************** * * 实验名: 串口实验 * 使用的IO : P2 * 实验效果: 将接收到发送回电脑上面。 * 注意: ******************************************************************************* / #include
A VR单片机串口多机通讯程序 [日期:2010-09-01 ] [来源:本站原创作者:admin] [字体:大中小] (投递新闻) 在多机通信过程中,所有设备的RS232接口是并在通信线上的,其中只能有一个设备为主机,其他为从机,通信由主机发起。数据帧一般采用1位起始位、9位数据位,其中第9位(RXB8)被用作为表征该帧是地址帧还是数据帧。当帧类型表征位为“1”时,表示该帧数据为一个地址帧;当帧类型表征位为“0”时,表示这个帧为一个数据帧。 在A VR中,通过设置从机的UCSRA寄存器中标志位MPCM,可以使能USART接收器对接收的数据帧进行过滤的功能。如果使能了过滤功能,从机接收器对接收到的那些不是地址信息帧的数据帧将进行过滤,不将其放入接收缓冲器中,这在多机通信中有效的方便了从机MCU处理数据帧程序的编写(同标准51 结构相比)。而发送器则不受MPCM位设置的影响。 多机通信模式允许多个从机并在通信线路上,接收一个主机发出的数据。通过对接收到的地址帧中的地址进行解码,确定哪个从机被主机寻址。如果某个从机被主机寻址,它将接收接下来主机发出的数据帧,而其它的从机将忽略数据帧,直到再次接收到一个地址帧。(从机地址是由各个从机自己的软件决定的)。 对于在多机通信系统中的主机MCU,可以设置使用9位数据帧结构(UCSZ=7)。当发送地址帧时,置第9位为“1”;发送数据帧时,置第9位为“0”。在这种情况下,从机也必须设置成接收9位数据帧结构。 多机通信方式的数据交换过程如下: 1)设置所有从机工作在多机通信模式(MPCM=1)。 2) 通信开始是由主机先发送一个地址帧,如8位数据为0X01(1号从机地址),第9位=“1”,呼叫1号从机。 3)所有从机都接收和读取该主机发出的地址帧。在所有从机的MCU中,RXC标志位被置位,表示接收到地址帧。 4)每一个从机MCU读UDR寄存器,并判断自己是否被主机寻址。如果被寻址,清UCSAR寄存器中的MPCM位,等待接收数据;否则保持MPCM为“1”,等待下一个地址帧的接收(该步应由用户软件处理实现): A)作为1号从机的MCU处理过程为:收到地址帧后,判定读取UDR数据0X01为自己的地址,将MPCM位置“0”,接收之后所有主机下发的数据帧,直到下一个地址帧为止。 B)其它从机MCU的处理过程:收到地址帧后,判定读取UDR数据0X01不是自己的地址,将MPCM位置“1”,这样他们将忽略主机随后发送的数据帧,直到主机再次发送地址帧。 5)当被寻址的从机MCU接收完最后一个数据帧后,将MPCM位置位,等待下一个地址帧的出现(该步也应由用户软件处理实现),然后从步骤2开始重复。 [转]例子; 通讯规则: 1:时钟7.3728 MHz/波特率9600/9个数据位/奇校验/1个停止位/硬件多机通讯功能/ 2:通讯连接采用硬件MAX485,双向单工
姓名:彭嘉乔 学号:3130104084 日期:2015.05 地点: ___________ 指导老师:弓 ________________ 成绩: 实验类型: 同组学生姓名:吴越 、实验内容和原理(必 填) 四、操作方法和实验步骤 六、实验结果与分析(必 填) 七、讨论、心得 一、实验目的 1、掌握80C51串行口工作方式选择、理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程屮的时 序关系。 2、 掌握串口初始化的设置方法和串行通信编程的能力。 3、 了解PC 机通讯的基本要求,掌握上位机和下位机的通讯方法。 4、 编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等) 二、 实验器材 1、 Micetek 仿真器一台。 2、 实验板一块。 3、 PC 机电脑一台。 4、 九针串口线一条。 別f 尹丿占实验报告 课程名称:彳 — 实验名称:实验四 串口通信实验 、实验目的和要求(必 填) 三、主要仪器设备(必 填) 五、实验数据记录和处理
三、实验原理 串口通讯对单片机而言意义重大,不但可以实现将单片机(下位机)的数据传输到PC端(上位机),
便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是 RS232电平的,而单片机的 串口是TTL 电平的,两者Z 间必须有一个电平转换电路,本实验采用专用芯片 也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 3. 1 RS232九针串口基本功能简介 九针串口即RS-232接口,是个人计算机上的通讯接口之一,由电子工业协会 Industries Association , EIA)所制定的异步传输标准接口。通常RS-232接口以9个引脚(DB-9)或是25个引脚(DB-25) 的型态出现,一般个人计算机上会有两组 RS-232接口,分别称为COM1和COM2。该接口分 为公头子和母头子。九针串口(母头)的功能如下,请见图 1 : 9 / \ 6 Ov 3v Ov Ov 图1 RS232九针串口母头功能说明 分别为1 :载波检测 (DCD) ; 2 :接收数据(RXD) ; 3 :发送数据(TXD) : 4 :数据终端准备 好(DTR) ; 5 :信号地(GND) ; 6 :数据准备好(DSR) ; 7 :发送请求(RTS) ; 8 :发送清除(CTS) ; 9 :振铃 指示(RI)接法。 本实验采用三线制连接串口,也就是说和电脑的 9针串口只需连接其屮的3根线:第5脚的GND 、 第2脚的RXD 、第3脚的TXD 。这是最简单的连接方法, 但是已满足本实验硬件需求, 电路如图2所示, MAX232的第11脚和单片机的11脚连接,通过MAX232芯片的电平转换,将T1OUT 输出连接板子上9针串口(母头)MAX232进行转换,虽然 (Electronic
组态王与单片机多机串口通信的设计 发布: 2011-8-18 | 作者: —— | 来源:ranhaiyang| 查看: 300次| 用户关注: 1 引言随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC等。KingView 软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成 1 引言 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC 等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DDE)或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供一种与单片机多机串口通信方法,可满足大多数系统需求。 3 PC机与单片机的硬件接口电路 图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上,因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线
实验四基于单片机的串行通信 一、 实验目的 1.了解串行通信的基本知识; 2.掌握用单片机串行口实现串行通信的方法。 二、 实验器材 微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,MAX202C芯片一块,电容、电阻、导线若干。 三、 实验原理 此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见本讲义实验七。 1.串行通信的异步和同步传送方式 CPU与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。 通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图4.1所示)。 在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线,并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。一般而言,串行通信的传送速度明显低于并行通信。 (a)并行通信 (b)串行通信 图4.1 通信方式示意图
串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而同步通信是靠识别同步字符来实现数据的发送和接收的。 (1) 异步传送方式 异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符。 异步通信格式如图4.2所示,每个字符由起始位、数据位、奇偶校验位和停止位四个部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。 z 起始位:为“ 0”信号,占1位。起始位的作用有两个:①表示一个新字符帧的开始。 即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保证后续的接收能正确进行。 z 数据位:紧接于起始位后面,它可以占5、6、7或8位不等,数据的位数依最佳传送 速率来确定。如所传数据为ASCII 码字符,则常取7位。数据位传输的顺序,总是最低位(LSB )D 0在先。 z 奇偶校验位:在数据位之后,占1位。它用来检验信息传送否有错。它的状态常由发 送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校验位中逻辑“1”的个数必须是偶数;若为奇校验,则数据位和校验位中逻辑“1”的个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送过程是否有错。 z 停止位:用“1”来表征一个字符帧的结束。停止位可以占1位、1.5位或2位不等。 接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。若停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。图4.2既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波特率),以“位/秒”(bps )为单位。在异步通信中, 波待率=(每个字符帧的位数)×(每秒传送的字符数) 常用的波特率有600、1200、2400、4800、9600、19200(bps )等。 由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选16:1或者64:1。采用较高频率的时钟,在一位数据内就有16或64个时钟,就可以保证捕捉正确的信号。 空闲位 起校停起校停空闲位 第n 个字符帧 第n +1个字符帧 图4.2异步通信的字符帧格式
单片机实验报告 实验名称:串行通信实验 姓名:高知明 学号:110404320 班级:通信3 实验时间:2014-6-11 南京理工大学紫金学院电光系
一、实验目的(四号+黑体) 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD\RXD口; 3、了解MAX232芯片的作用; 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。他有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H)。发送缓冲器只能写入,不能读出,接受缓冲器只能读出,不能写入。要发送的字节数据直接写入发送缓冲器。SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号昨接受或发送移位寄存器的位移时钟。TI与RI分别为发送完数据的中断标志,用来想CPU发中断请求。 三、实验内容 1、发送信号 1)C51程序: #include