串行通信单片机最小系统设计
一、 设计现状
随着计算机技术的快速发展和广泛应用,从智能家用电器到工业上的集散控制系统(DCS)都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分结合利用了微型计算机分析处理能力强、速度快的特点及下位机(单片机、PLC、DSP等)面向控制、使用灵活方便的优势。
由于MCS51系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。一个MCS51系列的单片机(如Atmel89cxx)内部包含有RAM、FLASH ROM、两个或者三个16位的定时器/计数器、一个通用异步串行通信控制器(UART)等多种资源。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、RAM、ROM等。采用通用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用。在这种情况下,一个系统中就使用了两个或两个以上的单片机,而单片机之间就要通过互连来进行数据通信。MCS51系列的单片机(例如8031)都带有串口,利用串口进行互连通信极为方便,并且可以减少端口数量。但如果系统要求扩充的资源是对外连接的串口,串行口上可以外接串行输入并行输出的移位寄存器74LS164,或外接并行输入串行输出的移位寄存器74LS165。对相互之间的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口了。为了增加通信距离,减少通道中电源干扰,可以在通信上路上采取光电隔离的方法,进行双机串行通信。
二、 设计方案及论证
2.1设计方案
首先从硬件上设计,采用两块AT89C51单片机进行串行口通信,由于此设计硬件连接简单,传输距离不远,所以,只需要在单片机满足自身工作条件的情况下进行比机间的发送和接收端口互连就可以了,甲机TI接乙机RI,甲机RI接乙机TI端。单片机工作条件需提供一定频率的时钟周期,防止程序跑飞或死循环9脚外接手机复位电路,同时也可以在程序中设计看门狗子程序,在31脚中用来系统是否有外部程序存储器扩展,没有扩展接高电平。其次从软件上设计,在选择定时器工作方式,传输波特率的设定,通过中断方式或查询方式程序设计,甲机发送程序,P1口从按键中读取键值,将数据通过发送缓冲区发送出去、。乙机接收程序,接收缓冲区接收到数据后,乙机输出相应的数据至P1口点亮相应发光二极管。同时甲机与乙机可以相互传送数据,乙机接收到数据后给甲机发送一个应答信息,甲机接收缓冲区接到数据再进行相对应的传输。
2.2设计论证
双机通信系统设计中,单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出。常用于数据通信的传输方式有单工、半双工、全双工和多工方式,本设计采用单工传输方式。串行数据通信两种形式,异步通信:在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位。同步通信:同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志。
定时器T0,T1方式寄存器TMOD的设置,门控位GATE是否受外部引脚INT0,INT1电平控制,C/-T定时器方式和外部事情计数方式控制位,工作方式选择位M1M0。串行口控制寄存器SCON是一个特殊寄存器,具有位寻址功能,SCON包括串行口的工作方式选择位SM0,SM1,多机通信标志SM2,接收允许位REN,发送接收第9位数据TB8,RB8,以及发送和接收中断标志TI,RI。
三、 系统的实现与硬件模块介绍
3.1系统的实现
单片机串工作方式
目前广泛应用的51系列单片机的串行通信可工作于同步或异步方式,多数兼容的51系列单片机都有一个或多个UART异步串行接口,这就为用户设计通信程序提供了很好的便利条件。当应用系统中需要多个串行通信接口时,可采用以下几种方法:(1)采用多串口的单片机,如华邦的WW77E58就有2个串行接口;(2)采用通用异步串口扩展芯片,如TLl6c552(2路)、?LCl6C554(4路);(3)采用普通I/O模拟实现通信。这是最简单经济的方法,并且可以实现高速串通信。本文仅讨论采用一个异步串行通信的设计方法,单片机串口的控制方式MCS-51系列单片机对串口的控制是通过对串行口控制寄存器SCON和功率控制寄存器PCON的设置来实现的。SCON是一个可位寻址的特殊功能寄存器,通过设置SGON的SM0和SMI,可以使单片机有四种不同的工作方式。SCON的格式可参见有关手册说明。在用于和PC机实现串行通信时,一般设置为方式1或方式3,主要区别是方式1的数据格式为8位,方式3的数据格式为9位,其中第9位SM2为多机通信位,'可实现单片机的多点通信。功率控制寄存器PCON的SMOD为串行口波特串倍率控制位,当单片机的品振为整数时(如6M),设置5MOD为1通常可获得更高的通信速串,但SMOD不能位寻址,这点务必请读者注意。
单片机串口的速率设置
单片机和PC机通信时,其通信速率由定时器T1或定时器T2产生(52系列),在T1工作在方式2时的通信速率的计算公式为:波特串=(SMOD×Fosc)/(32×12×[256-TH1])。其中Fosc晶振频率,为获得准确的通信速率,Fosc通常为11.0592MH2。采用T1定时器通信的系统,速率不可能过高,一般情况下最高为19200bit/s。如为了获得更高的通信速率可利用52系列单片机的定时器T2,最高速率可达115200bjt/s。实际应用中我们曾经在6MH2晶振的单片机系统中实现了38400bit/s的高速通信。
单片机串口通信程序的实现方法
实际应用中,单片机通信程序一般采用中断方式与微机通信,微机做为主控方。当单片机收到微机发送的地址信号时,便转入中断服务程序,向微机发送数据。其中断服务于程序流程见图4,该中断服务于程序也适用于多机通信的系统。详细的程序清单请参见本刊网站COMMON.ASM,单片机的晶振为11.0592MHz,通信速率为9600bit/s,帧格式为N.8.1。
3.2硬件模块介绍
在同一块印板内两个单片机的串行口可以直接相连,以TTL电平(大于0.8V为1,小于0.3V为0)直接串行通信,串行口可以工作于方式1,2,3。一般用一个外部脉冲源作为单片机的时钟,结构图如下所示。586