1、第1页基于单片机的RS232C串行通信接口设计摘要随着计算机技术特别是单片机技术的发展,单片机的应用领域越来越广泛,单片机在工业控制、数据采集以及仪器仪表自动化等许多领域都起着十分重要的作用。但在实际应用中,在要求响应速度快、实时性强、控制量多的应用场合,单个单片机往往难以胜任,这时使用多个单片机接合PC机组成分布式系统是一个比较好的解决方案。这样,单片机的数据通信技术就变得十分重要,在某种程度上说,掌握了单片机的数据通信技术也就是掌握了单片机的核心应用技术。现在单片机及PC机在结构、性能和经济上为实现远程串行通信提供了很好的条件,串行通信是指按照逐位顺序传递数据的通信方式,由于仅需三根传输线
2、传送信息且通信距离相对较远,所以在控制领域的现场监测、分布控制等场合有着重要的应用价值。在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,常常遇到计算机与外界的信息交换,即通讯。通信的基本方式可分为并行通信与串行通信两种。并行通信是将组成数据的各位同时传送,并通过并行门(如P1口等)来实现。在并行通信中,数据传送线的根数与传送的数据位数相等,传送数据速度快,但所占用的传输线位数多。因此并行通信适合短距离通信。串行通信是指数据一位一位地按顺序传送。串行通信通过串行口来实现。在全双工的串行通信中,仅需要一根发送线和一根接收线,串行通信可大大节省传送线路的成本,但数据传送速
3、度慢。因此,串行通信适合于远距离通信。目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据的采集和通信,而上位机通常以基于图形界面的WINDOWS系统为操作平台,为便于查询和保存数据,还需要数据库的支持,如在测控系统中使用SQLSERVER数据库。现阶段这种应用的核心便是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而在单片机和上位机之间的数据通信则是整个系统的基础。单片机和PC的通信是通过单片机的串口和PC机之间的硬件连接实现。鉴于PC机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,在数据量不大、传输
4、要求不高的情况下,一般都采用给PC机配置的RS232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。1总体方案设计PC机与单片机之间可以由RS232C、接口相连,在PC机系统内部装有异步通信适配器,第2页利用它可以实现异步串行通信。该适配器的核心元件是可编程的INTEL8250芯片,它使PC机有能力与其他具有标准的RS232C接口的计算机或设备进行通信。而51单片机本身具有一个全双工的串行口,因此只要配以电平换换的驱动电路、隔离电路就可以组成一个简单的通信接口。同样,PC机和单片机之间的通信也分为双机通行与多机通信。数据通信的硬件上采用3线制,将单片机和PC串口的3
5、个引脚(TXD、RXD、GND)分别连在一起,即将PC机和单片机的发送数据线TXD与接收数据线RXD交叉连接,两者的地线GND直接相连,而其他信号线如握手信号线均不用,采用软件握手的方式。这样既可以实现预定的任务又可以简化电路设计。PC机和单片机最简单的连接时零调制三线经济系。这是进行全双工通信所必需的最少线路,因为51单片机输入、输出电平为TTL电平,但由于单片机的TTL逻辑电平和RS232的电气特性完全不同,RS232的逻辑0电平规定为515V之间,逻辑1电平为515V之间,因此在将PC机和单片机的TXD和RXD交叉连接时必须进行电平转换,这里我选用的是MAX232电平转换芯片。其原理框图
6、为图1图1串口通信原理图2硬件电路的设计21单片机介绍标准型89系列单片机是与MCS51系列单片机兼容的。在内部含有4KB或8KB可重复编程的FLASH存储器,可进行1000次擦写操作。全静态工作为033MHZ,有3级程序存储器加密锁定,内含有128256字节的RAM、32条可编程的I/O端口、23个16位定时器/计数器,68级中断,此外有通用串行接口、低电压空闲模式及掉电模式。AT89C51相当于将8051中的4KBROM换成相应数量的FLASH存储器,其余结构、供电电压、引脚数量及封装均相同,使用时可直接替换。AT89C51在内部采用40条引脚的双列直插式封装,引脚排列如图2所示TXDRV
7、DGNDTINTOUTROUTRINGNDRXDTXDGNDRS232C第3页图2AT89C51芯片引脚22串口基本结构介绍单片机的串行口的功能是与外部器件进行串行数据通信。串行口电路也称为通用异步收发器(UART)。从原理上说,一个UART包括发送器电路、接收器电路和控制电路。8051单片机的UART已集成在其中,构成一个全双工串口,全双工通信是指同时可以作双向通信,两个即可同时发送、接收,又可同时接收、发送。其示意图如图3所示。这个口即可以实现串行异步通信,也可以作为同步移位寄存器使用。全双工通信图3全双工通信示意图8051的串行口通过引脚RXD(P30串行口数据接收端)和引脚TXD(P3
8、1串行口数据发送端)与外部设备进行串行通信。其中共有两个串口双缓冲寄存器(SBUF),一个是发送寄存器,一个是接收寄存器,以便8051能以全双工方式进行通信。串行发送时,从片内总线向发送SBUF写入数据;串行接收时,从接收SBUF向片内总线读出数据。它们都是可寻址的寄存器,但因为发送与接收不能同时进行,所以给这两个寄存器赋一同一地址99H。在接收方式下,串行数据通过引脚RXD进入,由于在接收寄存器之前还有移位寄存器,发送接收发送接收第4页从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有走。在发送方式下口,串行数据通过引脚TXD发出。与接
9、收数据情况不同,发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路就不需要双缓冲结构,这样可以提高数据发送速度。23电平转换电路设计和其他的单片机器件一样,作为单片机的标准外围电路,串口的电平转换也有专用的芯片,但也可以使用三极管自行调整电平匹配。本次设计我主要采用专用芯片进行电平转换的方法。目前较为广泛的是使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL和RS232C的双向电平转换。在这里我采用的芯片是MAX232。如图4图4电平转换芯片MA
10、X232在电气特性上RS232C采用负逻辑,要求高、低两信号间有较大的幅度,标准规定为逻辑1515V,逻辑0515V。而单片机的信号电平与TTL电平兼容,逻辑1大于24V,逻辑0为04V以下。很显然,RS232C信号电平与TTL电平不匹配,为了实现两者的连接,必须进行电平转换。MAX232C为单一5V供电,内置自升压电平转换电路,一个芯片能同时完成发送转换和接收转换的双重功能。MAX232的引脚主要为5个部分(1)外接电容有5个外接电容、进行电压匹配和电源去耦。(2)TTL的输入电路TTL电平的输入引脚11和10引脚,连接单片机的TXD输出端口。(3)TTL的输出电路TTL电平的输出引脚12和
11、9引脚,连接单片机的RXD输出端口。(4)RS232的输入两路RS232电平的输入引脚13和8引脚,连接RS232的TXD的输出端口。(5)RS232的输出两路RS232电平的输出引脚14和7引脚,连接RS232的RXD第5页的输出端口。通过MAX232的TTL和RS232的输入/输出端口,自动地调节了单片机串口的TTL电平信号和RS232的串行通信信号的电平匹配。电平转换芯片与单片机的连接电路如下地址分配和连接只列出和系统相关的、关键部分的单片机与各个模块管脚的连接和相关的地址分配。MAX232的11引脚MAX232的TTL电平输入引脚,连接单片机的TXD,TTL串口输入信号。MAX232的
12、12引脚MAX232的TTL电平输出引脚,连接单片机的RXD、TTL串口输入信号。MAX232的14引脚MAX232的RS232电平输出引脚,连接RS232的RXD,RS232的串口输入信号。MAX232的13引脚MAX232的RS232电平输入引脚,连接RS232的TXD,RS232的串口输出信号。MAX232和单片机串口连接的电路如图5。图5MAX232和单片机串口连接电路图24整体电路设计PC机和单片机最简单的连接时零调制三线经济系。这是进行全双工通信所必需的最少线路,因为51单片机输入、输出电平为TTL电平,但由于单片机的TTL逻辑电平和RS232的电气特性完全不同,RS232的逻辑0
13、电平规定为515V之间,逻辑1电平为515V之间,因此在将PC机和单片机的TXD和RXD交叉连接时必须进行电平转换,这里我选用的是MAX232电平转换芯片。将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,会送统一数据给PC机。并在屏幕中显示出来。只要屏幕中显示出来的字符与所键入的字符相同,说明二者之间的通信正常。总串行通信图为图6所示第6页T1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C24C25C11C13VS2VS6U1MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P00/AD039P01/A
14、D138P02/AD237P03/AD336P04/AD435P05/AD534P06/AD633P07/AD732P27/A1528P20/A821P21/A922P22/A1023P23/A1124P24/A1225P25/A1326P26/A1427P101P112P123P134P145P156P167P178P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P37/RD17P36/WR16P35/T115U280C51C122UC222UX1CRYSTALERRORTXD3RXD2CTS8RTS7DSR6DTR4DCD1RI9P1COMPIM
15、VCCC31UFR11KC401UFC501UFC601UC701UC801UVCC234567891RP1RESPACK8图6串行通信电路图3软件设计将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,会送统一数据给PC机。并在屏幕中显示出来。只要屏幕中显示出来的字符与所键入的字符相同,说明二者之间的通信正常。31串行通信的实现(1)串行口工作于方式1;用定时器1产生9600BIT/S的波特率,工作于方式2。(3)通信协议PC机首先发送数据,单片机接收到之后返回一个相同数据到PC机表示通信正常。(4)通信过程使用第九位发送奇偶校验位。(5)从机接收到一个数据后,立即进行奇偶校验,若
16、数据没有错误,则返回00H,否则返回FFH。(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。32流程框图(1)51单片机通过中断方式接收PC机发送数据,并回送。其程序流程图,如图7所示第7页图7发送端程序流程图33程序设计ORG00HSTARTMOVSP,60HMOVSCON,01010000B设定串行方式8位异步,允许接收MOVP1,00HMOVTMOD,20H设定计数器1为模式2ORLPCON,10000000B波特率加倍MOVTH1,0F3H设定波特率为4800MOVTL1,0F3HSETBTR1计数器开始计数AGAINJNBRI
17、,等待接收完成是否接受PC机发送数据程序初始化接受PC机发送数据N回发数据给PC机是否发送完成N清除标志位开始YY结束第8页CLRRIMOVA,SBUF接收数据送缓存PUSHACCCJNEA,30H,SET1将数据09的ASCII码转换为数字09,其余字符不变SJMPSET3SET1JCSET3CJNEA,39H,SET2SJMPSET3SET2JNCSET4CLRCSET3SUBBA,30HSET4MOVP1,APOPACCMOVSBUF,A发送接收到的数据JNBTI,等待发送完成CLRTISJMPAGAINEND4联合调试在PROTUES上进行仿真实验。首先使用KEILUVSION2将编写
18、完成的程序编译生成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,可以看到,将PC机键盘的输入发送给单片机,单片机收到PC机发来的数据后,会送统一数据给PC机。机端已将发送的数据通过单片机回发过来能完整的显示出来。5课设小结及进一步设想单片机与PC机串行通信系统的设计告一段落,该系统的开发是一项非常有价值的项目。本论文以单片机系统设计方法作为全文的组织线索,开发一个单片机系统是需要按照规范的系统设计方法严谨的进行的。为了开发通信系统,选择8051单片机,必须掌握单片机控制系统硬件电路的设计,如复位电路和时钟电路等的设计,另外对汇编语言的灵活运用是少不了的,如单片机中断、定时器和串行口
19、的汇编语言编程,而对单片机的串口知识深刻的理解下,确定以定时器T1的工作方式2作为波特率发生器是一个关键的,计算机方面,首先是RS232C接口,RS232C接口是最为常用的、应用最为广泛的串行接口标准,大量的集成设备、工业产品都提供了RS232C接口,因此单片机应用系统的设计中,RS232C通信设计是十分重要的。第9页51兼容单片机通常都自带一个标准UART端口,这个端口用过电平转换电路就可以构成一个标准的RS232C接口,并且与计算机的接口相匹配,运用RS232C连接的最简单形式3线制,将单片机与PC机进行硬件连接。其中由于单片机系统使用的是TTL电平,单片机中的串口输出的信号也是如此,但是
20、串行通信中使用的RS232C通信协议,二者的电平并不相同,在和单片机进行通信时,还需要有一定的外围电路的配合,使得单片机的通信电平和标准的串行通信协议相匹配。这一点用MAX232芯片进行处理。以上所形成的通信系统的原理方案,便是本系统的硬件电路的设计依据。接着到了系统软件的设计部分,一个完整的单片机系统只有硬件还不能工作,必须有软件来控制整个系统的运行,PC机部分的串口通信软件开发,采用的是VB的MSCOMM控件来实现串行通信,这一部分,我编制出了利用文本框接受和发送数据的界面,其中对如何接受单片机发送的16进制代码和向单片机发送数据,是我做的不足的地方,采用的编程方法是正确的,但只形成了基本
21、框架,不足的是不能很好的对收发数据进行代码处理,而这一部分,我认为应该单独作为一个课题进行研究。开发出强大的串口通信软件,鉴于VB是一种弱字符语言,可以考虑用VC等语言来开发,目的是使传输的数据不受任何限制,使通信系统更容易实现。而单片机的汇编程序方面,我一方面编写出了单片机自动发送和按键发送数据的程序,另一方面编写出了单片机查询接受数据和中断接受数据的程序,并在AT89C51单片机试验开发板上进行了测试,都达到了很好的效果,这也是让我满意的一部分。最后,在硬软件设计完毕后,最重要的一步是对系统的调试,而对于可能出现的问题,需要从软件和硬件两个方面进行考虑,这一阶段需要大量的测试程序对系统等各
22、个部分进行分别的测试,才能找到问题的所在,并进行针对性地修改和完善,而最终目的是使软件和硬件能够很好的配合,完成预定的功能,再在实际的环境中对开发出来的系统进行考验,并随时对产生的问题进行处理,我认为这一步很费工夫,也存在着许多困难,但开发出成功的单片机系统,这一步是必经阶段,只有在这一阶段,多摸索,多探索,才能使自己的能力有所突破与提高。随着我一步一步做我的论文和设计,我才发现自己能力的不足与知识的贫乏,这是需要在后续的学习中,持续积累与拼搏的。参考文献1赵茂泰智能仪器原理及应用北京电子工业出版社,200472张毅刚,刘杰MCS51单片机原理及应用哈尔滨哈尔滨工业大学出版社,200463何立民单片机应用技术选编北京北京航天航空大学出版,200254张军,梅丽凤单片机原理接口技术北京交通大学出版社,200655张婧武,周灵彬单片机系统的PROTEUS设计与仿真北京电工出版社,20074第10页6周佩玲,彭虎微机原理与接口技术北京电子工业出版社,200547李群芳,张士军单片微型计算机与接口技术北京电子工业出版社,20085第11页第12页
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。