单片机的串行通信系统设计史志举,胡波,李杰河海大学信息学院,江苏常州(213022)E-mail:szj0701@163.com摘要:本文介绍了应用AT89C51单片机与PC机进行串行通信的软、硬件设计方法和实现过程。PC机将需要传输的数据通过串行口传送给单片机,单片机接收并在LCD上显示接收的数据。系统采用MAX232芯片实现RS232的EIA电平与单片机TTL电平的转换,并采用1602液晶显示。关键词:AT89C51,串行通信,接收,MAX2321.引言近年来随着电子计算机技术的广泛应用,数据的采集和通讯越来越多地受到人们的关注。数据的采集和通讯过程就是数据的A/D转换、传递和处理的过程,本文主要讨论单片机(下位机)与PC机(上位机)之间的数据传输,单片机接收数据并且在LCD上显示接收结果。2.系统介绍本系统的结构框图如图1,PC机将数据通过异步串行口RS232传输到单片AT89C51,单片机再把数据显示在LCD上,使得用户可以很明确的知道接收过程。接下来详细介绍系统的串口接收软、硬件设计。图1系统的结构框图3.串口接收软、硬件设计AT89C51单片机上有一个通用异步接收/发送器UART,通过引脚RXD和TXD可与外部电路进行全双工的串行异步通信,发送数据时由TXD端送出,接收时数据由RXD端输入。由于PC机串口RS232采用负逻辑电平,即逻辑1:515−− V,逻辑0:515++ V。而单片机的TTL电平的1和0分别为2.45++ V和00.4+ V,本系统的串口硬件电路主要采用MAXIM公司生产的MAX232实现电平间的转换。3.1串口硬件设计MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片,使用+5v单电源供电。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该PC机AT89C51LCD标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。MAX232内部结构基本可分三个部分:第一部分是电荷泵电路,由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道,由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电,15脚GND、16脚VCC(+5v)。定义9针RS-232接口各管脚[1]定义如表1:表1RS232接口定义引脚符号功能1DCD载波侦测(CarrierDetect)2RXD接收数据(Receive)3TXD发送数据(Transmit)4DTR数据终端准备(DataTerminalReady)5GND地线(Ground)6DSR数据准备好(DataSetReady)7RTS请求发送(RequestToSend)8CTS清除发送(ClearToSend)9RI振铃指示(RingIndicator)串口部分电路图如图2:图2串口电路图种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。本系统采用工作方式1。串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率以及作为中断标志等。另外串行端口还有一个数据寄存器SBUF,该寄存器为发送和接收所共用。发送时,只写不读;接收时,只读不写。在一定条件下,向SBUF写入数据就启动了发送过程,读SBUF就启动了接收过程。1.串行口控制寄存器[2]SCON它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如表2:表2串口控制寄存器SCON格式D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式选择位,其定义如表3:表3串口的四种工作方式SM0、SM1工作方式功能描述波特率00方式08位移位寄存器fosc/201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变SM2:多机通讯控制位,仅用于方式2和方式3。当发送数据时SM2必须有软件设置为1;接收数据时,如果SM2=1只有接收到的第9位数据为1时,RI才置位;如果SM2=0只要接收第9位数据,RI就置位。REN:接收允许控制位。由软件置位(REN=1)才允许接收,又由软件清O(REN=0)来禁止接收。TB8:是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如。可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=O,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。TI:发送中断标志。发送数据前必须软件清0,发送过程中TI一直为0,当发送完一帧数据后,由硬件自动置1。如果要再发送,必须用软件再清0。在编写串行通信程序的时候,可以使用软件查询TI的方法获得数据是否已发送完毕。RI:接收中断标志位。接收数据前必须软件清0,接收过程中RI一直为0,当接收完一帧数据后,由硬件自动置1。如果要再接收,必须用软件再清0。在编写串行通信程序的时候,可以使用软件查询RI的方法获得数据是否已接收完毕。2.特殊功能寄存器PCON,它的第7位SMOD是与串口的波特率设置有关的选择位。在计算串行方式1、2、3的波特率时SMOD=0波特率不加倍,SMOD=1波特率加倍。3.波特率的[3]选择在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。(1)方式0的波特率固定为主振频率的1/12。(2)方式2的波特率由PCON中的选择位SMOD来决定,可表示为:波特率=264SMOD×fosc,也就是当SMOD=1时,波特率为1/32×fosc,当SMOD=0时,波特率为1/64×fosc。(3)方式1和方式3定时器T1作为波特率发生器,其公式如下:波特率=232SMOD×定时器T1溢出率其中,T1溢出率=T1计数率/产生溢出所需的周期数。当时钟频率选用11.0592MHz时,常用的标准波特[4]率如表4:表4定时器T1的常用波特率常用波特率fosc(MHz)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4H120011.05920E8H串行通信程序设计:串行通信程序主要包括PC机发送程序和单片机接收程序,PC机发送采用串口调试助手来完成,单片机接收程序采用汇编语言编写。使用串口前首先必须对其初始化,主要是设置产生波特率的定时器1、串口控制和中断控制。步骤如下:定时器初始化:MOVTMOD,#20H;定时工作方式寄存器,设置定时器1为方式2MOVTL1,#0FDH;定时器计数初值,波特率9600MOVTH1,#0FDHSETBTR1;启动定时器1串口初始化MOVSCON,#50H;串行口初始化,工作方式1,允许串行接收MOVPCON,#00H;SMOD=0,不倍波特率中断初始化SETBEA;开放所有中断(CPU开中断)SETBES;允许串行口中断串口接收应用程序主要是把接收到的数据发送到LCD显示。4.LCD、时钟、复位电路设计液晶屏,1602的接口信[4]号说明如表5:表51602接口定义编号符号引脚说明编号符号引脚说明1VSS电源负9D2DataI/O2VDD电源正10D3DataI/O3VL偏压信号11D4DataI/O4RS数据/命令12D5DataI/O5R/W读/写选择13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极时钟电路晶振采用11.052MHz,设置定时器1且选择工作方式2,复位电路采用上电自动复位和手动复位相结合。时钟电[5]路及复位电[5]路如图3和图4所示:图3时钟电路图4复位电路要使数据能正确地在LCD上显示,则必须首先对LCD进行初始化,主要是进行显示模式设置、光标设置等,具体如下:LCD_INIT:MOVP0,#00000001B;写0x01,清屏ACALLXIEMLMOVP0,#00111000B;写0x38,设定LCD为双行显示,5*7点阵,8位数据接口ACALLXIEMLMOVP0,#00001110B;写0x0F,设置光标,显示ON,光标ON,闪烁OFFACALLXIEMLMOVP0,#00000110B;写0x06,开移动光标,文字不动,光标自动右移ACALLXIEMLMOVP0,#10000000B;写80H,设置首地址ACALLXIEMLRETXIEML:;写控制字(下降沿使能)ACALLDELAY;延迟CLRRSCLRRW写数据(下降沿使能)ACALLDELAY;延迟SETBRSCLRRWSETBENACALLDELAYCLRENRET5.结论按照以上方法设计的AT89C51单片机串行通信硬件电路和相应的通信程序,能够满足单片机实时与PC机进行通信,单片机接收到PC机传输的数据后在LCD上显示出来,并且在现场应用中得到了可靠的运行,具有交好的实用性。参考文献[1]张毅刚,彭喜元,姜守达等.《新编MCS-51单片机应用设计》[M],哈尔滨:哈尔滨工业大学出版社,2006.10。[2]张振荣,晋明武,王毅平.《MCS-51单片机原理及实用技术》[M],北京:人民邮电出版社,2000.8。[3]张迎新,雷道振,陈胜等.《单片微型计算机原理、应用及接口技术》[M],北京:国防工业出版社,2004.1。[4]刘瑞新.《单片机原理及应用教程》[M],北京:机械工业出版社,2003.7。[5]梅丽凤,王艳秋,汪毓铎等.《单片机原理及接口技术》[M],北京:清华大学出版社出版社,2004.2。ThecommunicationsystemdesignofPCmachinewithAT89C51ZhijuShi,BoHu,JieLiTheInformationAcademyofHohaiUniversity,Changzhou,Jiangsu(213022)AbstractThisarticledescribesthehardwareandsoftwaredesignofserialcommunicationsystembetweenPCmachineandAT89C51。TheAT89C51r