毕业论文-带串口通信的单片机人机界面软件设计(共43页)_第1页
毕业论文-带串口通信的单片机人机界面软件设计(共43页)_第2页
毕业论文-带串口通信的单片机人机界面软件设计(共43页)_第3页
毕业论文-带串口通信的单片机人机界面软件设计(共43页)_第4页
毕业论文-带串口通信的单片机人机界面软件设计(共43页)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE 中国计量学院毕业设计(论文) 本科毕业设计(shj)(论文)带串口通信(tng xn)的单片机人机界面软件设计The Design of Single-chip Serial Communication with the Man-machine Interface 中国(zhn u)计量学院2009 年 6月郑 重 声 明本人呈交的毕业设计论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有(xingyu)著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明

2、确的方式标明。本学位论文的知识产权归属于培养单位。学生(xu sheng)签名: 日期(rq): 分类号: TN919 密 级: 公开(gngki) UDC: 71 学校(xuxio)代码: 10356 中国(zhn u)计量学院 本科毕业设计(论文) 带串口通信的单片机人机界面软件设计The Design of Single-chip Serial Communication with the Man-machine Interface 2009 年 6 月致 谢 PAGE IV带串口通信(tng xn)的单片机人机界面软件设计摘要(zhiyo):随着(su zhe)科技的发展,现代化的生产

3、对智能化的要求越来越高,如何迅速获取现场数据以便及时对生产过程进行调控。在随着数控编程软件的普及,串口通信重要的重要性越来越突出。因为数控编程软件生成的程序很长,用手工的方法输进系统里又慢又累,还容易出错,所以用户大多会使用串口将其传送进系统里。单片机在人们生产和生活中的应用越来越广泛,在进行较长距离数据通信或要求用有限硬件资源进行数据交换时,都要用到串行接口,串行接口是MCS8051 单片机开发应用中不可缺少的一部分。本文介绍了单片机与PC机之间的串口通信,以及延伸出多机间的通信,利用手动键盘输入,LED七段显示管显示输入的数字,然后通过串口通信把数据传输到PC机。本文还深入探讨了多机间的通

4、信,对串口通信深入的了解。通过C语言的进行程序设计,实现串口通信的功能。在串口传输设计中,为了防止传输错误,如果传输不成功,实现数字抖动,若传输成功,将值转化为十进制输显示在PC机。关键字:串口通信, 多机通信,键盘输入显示,单片机设计中图分类号:TN919The Design of Single-chip serial communication with the man-machine interfaceAbstract: With the development of science and technology, the modernization of production has

5、an increasingly demanding for intelligent. How to have an access to field data and to control the production process become very important. Now, with the popularity of NC programming software, the importance of serial communication has become increasingly prominent. As the procedure of NC programmin

6、g software is very long, the method of manually entered into the system are slow and tired, and also error-prone, therefore, most users will use the serial port to transfer into the system. Single-chip production has applied more and more widely in daily life. When the data exchanges take place in a

7、 longer distance data communication or request for use of limited hardware resources, serial interface must be used which is also core part of a single-chip MCS8051 development and application. This paper will give an introduction of serial communication between single-chip and PC single-chip machin

8、es, as well as the extension of a multi-machine communication, the use of manual keyboard input and LED Seven Segment display. All these show that the number of input through the serial communication to transmit data to PC machine. This paper also discusses the multi-depth communication and multi-se

9、rial communication to gain a better understanding. Serial communications functions are displayed by the C programming language. In the serial transmission design, if the transmission fails, there will be a digital jitter, in order to prevent transmission errors, while the transmission succeeds, nume

10、rical will be transferred into a decimal value displaying in the PC-lose.Keywords: serial communications, multi-machine communications, keyboard display, single-chip designClassification: TN919目 次摘要(zhiyo)I目次(mc)III TOC o 1-1 h z t 标题(biot) 2,1 HYPERLINK l _Toc200892586 1绪论 PAGEREF _Toc200892586 h 1

11、 HYPERLINK l _Toc200892587 1.1引言 PAGEREF _Toc200892587 h 1 HYPERLINK l _Toc200892588 1.251单片机概述概述 PAGEREF _Toc200892588 h 1 HYPERLINK l _Toc200892589 2带串口多机通信概述2 HYPERLINK l _Toc200892590 2.1串口通信概述2 HYPERLINK l _Toc200892590 2.1.1串口通信的概述2 HYPERLINK l _Toc200892590 2.1.2串口通信的研究3 HYPERLINK l _Toc20089

12、2591 2.2多机通信的原理4 HYPERLINK l _Toc200892592 3串口通信模块设计6 HYPERLINK l _Toc200892593 3.1引言6 HYPERLINK l _Toc200892594 3.2串口通信的基本原理和设计方法6 HYPERLINK l _Toc200892590 3.2.1串口通信的基本原理6 HYPERLINK l _Toc200892590 3.2.2串口通信的设计方法9 HYPERLINK l _Toc200892595 4多机通信模块设计15 HYPERLINK l _Toc200892596 4.1引言 PAGEREF _Toc20

13、0892596 h 15 HYPERLINK l _Toc200892597 4.2 多机通信程序设计的研究 PAGEREF _Toc200892597 h 15 HYPERLINK l _Toc200892590 4.2.1多机通信的程序设计15 HYPERLINK l _Toc200892590 4.2.2调试方法18 HYPERLINK l _Toc200892596 5结论21 HYPERLINK l _Toc200892598 参考文献24 HYPERLINK l _Toc200892596 附录26 HYPERLINK l _Toc200892599 作者简历34 HYPERLIN

14、K l _Toc200892600 学位论文数据集35中国计量学院毕业设计(论文)PAGE 43绪论(xln) 引言(ynyn)串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个(lin )基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议。同时,串口通信协议也可以用于获取远程采集设备的数据1。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定

15、义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 1.2 51单片机概述MCS-51 系列单片机的存储器从类型上可分为数据存储器(RAM)和程序存储器(ROM);从连接上可分为片内和片外数据存储器以及片内和片外程序存储器。片外存储器是外接的专用存储器芯片,MCS-51 单片机只提供地址和命令,单片机需要通过三总线才能与片外存储器联机工作2。MCS8051 单片机串行口采用异步通信方式, 该方式是以字为单位来传送数据的。每一字由起始位、数据位、奇偶验证位、停止位等构成, 称为一帧。在该格式中, 一个字由起始位开始、停止位结

16、束。串行口在发送指令时, 首先要求发送端有效, 并从串行口TXD 端发送一起始位指令, 单片机的存储单元DA TA端有效, 使存储单元SBU F 中数据送至TXD, 再过1位, 产生第一个数据, 使SBU F 数据右移一位, 并从左端补进。待零检测器检测到当前数据为零时, 发出通知申请中断。2 带串口多机通信(tng xn)概述2.1 串口通信(tng xn)概述(i sh)2.1.1串口通信的概述典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。串口通信最重要的参数是波特率

17、、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配3: (1)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率协议需要9600波特率,。这意味着串口通信在数据线上的采样率为9600Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信。 (2)数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信

18、息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。(3)停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 (4)奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式

19、:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。2.1.2 串口通信(tng xn)的研究(ynji)在PC机与单片机构成的上下位机系统中,经常采用由单片机及其外围(wiwi)电路构成的下位机进行数据采集,然后利用基本三线制的RS232串行口通信将数据传送给PC机,由PC机进行数据的进一步处理。图2.1为其系统原理图。RAM微机串口RXDTXDGDN80C51RXDTXDGDNPC机显示MAX232RXDTXDGDN 图2.1 系统原理图程序采用C语言编写,主要完成定时数据采集及数据发送工作,

20、其中定时采样的中断频率由定时器0的常数自动装载8 b计数器方式产生;波特率由定时器1的方式1产生;信号可以随意选择一常数,如果单片机接收到的数据等于此常数,则表示按键成功,否则重新接受按键数据。图2.2所示为程序框图。图2.2为程序(chngx)框图2.2 多机通信(tng xn)的原理(yunl) 数据通信的传输方式 常用于数据通信的传输方式有单工、半双工、全双工和多工方式4。 单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。 半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。 全双工方

21、式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。(2)串行数据通信两种形式(xngsh)异步通信(tng xn) 在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始(q sh)位,仅接着是若干个数据位。 同步通信 同步通信格式中,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输

22、时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。 (3)多机通信多机通信中,单片机串口通过MAX232传输到PC机上,每次传输数据必须确定PC机的地址位,然后PC机接收数据。所以,在多机通信中,必须设定好每台PC机的地址位,通过不同的地址位传输到不同的PC机上。主机来控制从机,并与它们通信。如图2.3所示为多机通信原理图,从机 4 单片机RXDTXDGDN从机 3 单片机R

23、XDTXDGDN从机 2 单片机RXDTXDGDN从机 1 单片机RXDTXDGDN单片机 主机 TXDRXDGDN图2.3为多机传输(chun sh)原理图3串口通信(tng xn)模块设计(shj)3.1引言在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过MAX232电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。MAX232串行接口总线具有成本低、简单可靠、容易使用等特点,串口通信仍然是很好的选择,有着广阔的使用前景5。 8051单片机串行接口是一个可编程的全双工串行通信接口。它可用作

24、异步通信方式(fngsh)(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口6。8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突(chngt),因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据7。3.2 串口通信的基本原理和设计(shj)方法3.2.1串口通信的基本原理 (1) 串行口的工作方式 8051单片机的全双

25、工串行口可编程为4种工作方式,现分述如下8:方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步数据3。 输出 串行数据从RXD管脚输出,TXD管脚输出数据。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。 输入 当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步数据输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据

26、时,将数据移入接收寄存器,并由硬件置位RI。 = 1 * GB3 方式1为波特率可变的10位异步通信接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。 输出 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD管脚输出,发送完一帧数据后,就由硬件置位TI。 输入 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。所以在方式1接收时,应先清零RI和SM2标志

27、。 = 2 * GB3 方式(fngsh)2为固定波特率的11位UART方式(fngsh)。它比方式1增加了一位可程控为1或0的第9位数据。输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址(dzh)/数据信息的标志位,也能作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。 输入: 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时

28、,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。 = 3 * GB3 方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。(2) 波特率选择 如前所述,在串行通信中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。方式0 方式0的波特率固定为主振频率的1/12。方式2 方式2的波特率由PCON中的选择位SMOD来决

29、定,可由下式表示:波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc。方式1和方式39定时器T1作为波特率发生器,其公式如下:波特率=定时器T1溢出率 (3.1)T1溢出率= T1计数率/产生溢出所需的周期数 (3.2) 式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关10。定时器T1工作(gngzu)于方式0:溢出所

30、需周期数=8192-x (3.3)定时器T1工作于方式(fngsh)1:溢出所需周期数=65536-x (3.4)定时器T1工作于方式(fngsh)2:溢出所需周期数=256-x (3.5)因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶体震荡器就是这个道理6。表3.1列出了定时器T1工作于方式2常用波特率及初值11常用波特率Fosc(MHZ)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240

31、011.05920F4h120011.05920E8h(3 ) PC 机串行通信的原理系统中PC机使用COM1 、COM2 两个串行通信端口,串行端口的本质功能是作为CPU 和串行设备间的编码转换器,当数据从CPU 经过串行端口送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换位字节数据。PC 串行通信指直接对串行通信端口的UART(PC 机的通用异步收发器,也叫做异步通信适配器,是PC 机用于异步通信的接口) 进行编程实现的通信。利用C语言进行异步通信编程,其实质是对UART 内部寄存器的读出或写入操作。PC 机每个MAX232中有10 个可编程的单字节寄存器,可用于控制、监视操

32、作串行端口,COM1 的寄存器地址为3F8H - 3FEH ,COM2中的寄存器地址为2F8H - 2FEH。10 个寄存器由7 个地址访问,其中5 个寄存器的访问条件是先设置3FB H 线路控制寄存器的最高位为“1”,该位也称为DLAB 状态位。在通信前,必须要对串行通信口进行初始化,即设置通信参数。初始化主要包括设定传输波特率,确定数据传输帧格式等。(4 ) C语言中断处理程序中断是一种特殊(tsh)的指令,它停止当前正在(zhngzi)执行的程序,把系统当前的状态保留(boli)在堆栈中,然后转移到由中断号所指定的中断服务程序,当中断服务程序执行完后,在回到原先的被中断的程序中继续执行。

33、中断技术的采用,实现了快速CPU 与慢速外设的并行工作, 从而提高了计算机的工作效率。C 语言作为最靠近汇编语言的高级语言,已充分表现出其直接高效地调度计算机硬件资源的优越性。用C 语言进行用户中断服务程序的设计时,通常应包括编写中断服务程序、安装中断服务程序和激活中断服务程序三个方面的工作。3.2.2 串口通信的设计方法(1)波特率选择 波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单,模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信

34、波特率的选择12。在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为8:波特率=(1+SMOD)*晶振频率/(384*(256-TH1) (3.6)其中,SMOD寄存器PCON的第7位,称为波特率倍增位; TH1定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。下面举例说明波特率选择过程13:假设系统要求

35、的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则 TH1=256-62500/波特率 (3.7)根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表:表3.2通信(tng xn)误差表14 因此(ync),在通信中,本次(bn c)设计选用波特率为9600。(2)通信协议的使用 通信协议是通信设备在通信前的约定10。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定15:

36、0 xA1:单片机读取P0端口数据,并将读取数据返回PC机;0 xA2:单片机从PC机接收一段控制数据;0 xA3:单片机操作成功信息。在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。当单片机接收到0 xA1时,读取P0端口数据,并将读取数据返回PC机;当单片机接收到0 xA2时,单片机等待从PC机接收一段控制数据;当PC机接收到0 xA3时,就表明单片机操作已经成功。(3)硬件连接51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通信,行串行通信时要满足一定的条件,计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须

37、有一个电平转换电路,采用了专用芯片MAX232进行转换12。我们采用了三线制连接串口,也就是说和计算机的10针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接16。 图3.1使用(shyng)MAX232串口通信电路图串口通讯的硬件电路如上图所示为了能够在计算机端看到单片机发出的数据,这里利用如下(rxi)图标的一个计算机串口调试软件来观察17。图3.2 串口调试(dio sh)助手窗口(1) SBUF数据缓冲寄存器这是一个可以直接寻

38、址的串行口专用寄存器。实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据18。(2) SCON串行口控制(kngzh)寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位

39、寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体(jt)定义如下19: 表3.3串行口控制(kngzh)寄存器SCON(MSB)(LSB)SM0SM1SM2RENTB8RB8TIRISM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。 表3.4串行口工作模式设置SM0SM1模式功能波特率000同步移位寄存器fosc/120118位UART可变1029位UARTfosc/32或fosc/641139位UART可变 在这里只说明最常用的模式1,其它的模式也就一一略过

40、。表中的fosc代表振荡器的频率,也就是晶振的频率。SM2在模式2、模式3中为多机通信使能位。在模式0中要求该位为0。 REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。 TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除(qngch),通常这位在通信协议中做奇偶位,在多处

41、理机通信中这一位则用于表示是地址帧还是数据帧。 RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址(dzh)/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。 TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止(tngzh)位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清

42、零。 RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。(3)波特率在使用串口做通信时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通信。波特率是指串行端口每秒内可以传输的波特位数。波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数

43、据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是960010960字节。51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在fosc/64或fosc/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。可以用以下的公式去计算20。波特率(2SMOD32)定时器1溢出速率 (3.8) 上式中如设置了PCON寄存器中的SMOD位为1时

44、就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:溢出速率(sl)(计数速率)/(256TH1) (3.9) 上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加(zngji)一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,

45、那么(n me)51的计数速率就为1M。通常用11.0592M晶体是为了得到标准的无误差的波特率。如果要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式(3.8) (3.9)得:11.0592M9600(232)(11.0592M/12)/(256-TH1) TH125012M9600(232)(12M/12)/(256-TH1)TH1249.49 上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使

46、用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。4 多机通信(tng xn)模块设计(shj)4.1引言(ynyn) MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的MA

47、X-232接口21。4.2多机通信程序设计的研究4.2.1多机通信程序设计根据课题要求,利用C语言编写程序实现功能。如下为设计流程图: 图4.1 多机通信(tng xn)程序设计流程图程序设计(chn x sh j)实现(shxin)数据232异步发送delay(); while(1) led_display(); /数码管显示 delay(); scan_key(); /扫描 delay(); if(flag_key=1) flag_key=0; ES=0; TI=0; SBUF=(0 x30+ram1); /目的转换为ascii 码 while(TI=0) nop(); TI=0; fla

48、g_send=1; /置高一次发送(f sn)标记 ES=1; /允许(ynx)接收中断 delay3(1); /延 串口接收中断(zhngdun)函数 void serial () interrupt 4 using 3 unsigned char ch; /局部变量声明 if(RI) RI = 0 ; ch=(SBUF-0X30); if (ch=ram1) flag_send=0; /发送成功,清除一次发送标记 flag_b_dark=0;/清除点闪,保证退出时候为亮、 如果接收成功,清除点闪,保证退出时候为亮,反之,则实现点闪。一对多机通信设计实现 类似的,实现了一对一通信,对应的一对

49、多机通信也就不难了。最主要的区别是,当实现通信时,对应PC机的地址通信,每台PC机设好不同的地址,然后传输数据。在波特率选择上,因为波特率越大,传输速度越快,但是对应速度提高,波特率误差就越大。考虑到一对多机通信,数据较大,为了提高传输速度,综合考虑误差,所以选择波特率为9600。 如图所示4.2为一对多机通信原理框图,等待数据发送,当有数据发送出去,串口中断接收,并对应(duyng)地址,给PC机发送,从而实现一对多机数据通信等待发送数据主机从机 n.串口中断接收实现232异步发送从机1.图4.2 一对(y du)多机通信流程图4.2.2调试(dio sh)方法(1) 调试前的准备工作 硬件

50、。1台普通计算机(需要带有2个标准串口)和根串口线(两头都是母头,连线关系如图1所示)和一个实验电路板。 串口软件通用的串口软件(串口调试助手),主要用来收发数据。(2) 基本调试命令介绍这个串口调试方法主要是增强了软件的仿真能力,可以利用软件仿真更多的单片机功能。在这些功能中,其中有一个很重要的功能就是利用计算机的串口来模拟单片机的串口。首先要介绍仿真时需要使用的两个命令:ASSIGN和MODE。 ASSIGN命令将单片机的串口绑定到计算机的串口。其中:计算机的串口,可以是COM1、COM2、COM3或COM4;而inreg和outreg代表单片机的串口。对于只有一个串口的普通单片机,即SI

51、N和SOUT;对于有两个或者多个串口的单片机,即SnIN和SnOUT(n=0,1,即单片机的串口号)。图4.2串口连线(lin xin)示意图 MODE命令(mng lng)设置(shzh)被绑定计算机串口的参数。基本使用方式为:MODE COMx baudrate, parity, databits, stopbits其中: COMx(x = 1,2,)代表计算机的串口号;baudrate代表串口的波特率;parity代表校验方式;databits代表数据位长度;stopbits代表停止位长度。使用以上两个命令,就能够将计算机的串口模拟成单片机的串口了。在进行软件仿真时,所有发送到被绑定的计

52、算机串口上的数据都会转发到Keil模拟的单片机串口上,用户程序可以通过中断处理程序或查询方式接收到这些数据;同样,单片机程序中发送到单片机串口上的数据也会通过被绑定的计算机串口发送出来,可以被其他软件所接收。利用这个特点,就可以方便地仿真、调试单片机的串口部分程序。要注意的是,这两个命令需要一起使用。 仿真步骤首先,用串口线将计算机的串口与实验板连接起来。这两个串口一个用来模拟单片机串口,另一个给调试程序使用。其次,编写好用户程序,并编译通过。然后,设置工程文件(Project)的相关参数,如图2和图3所示。主要是选择软件仿真模式(Use Simulator)以及晶振参数。 HYPERLINK

53、 /bluebasket/pic/item/dae79409e23a4e92d0581bd0.jpg t _blank 图4.3 仿真(fn zhn)参数设置为了不必每次进入仿真(fn zhn)状态后,都需要输入串口参数设置命令,可以建立一个初始化文件。初始化文件是一个普通的文本文件,内容就是仿真时需要的命令,按照顺序一行输入一条。如图2所示,建立了一个初始化文件。这样,当每次进入仿真调试状态时,软件(run jin)就会自动载入内容进行初始化。图4.4 晶振参数设置为了正确仿真串口,在软件仿真调试时,还需要设置实际使用的晶振频率。这个参数非常重要,直接影响通信的波特率,参数的单位是MHz。设

54、置好参数后,就可以进行仿真了。单击工具栏的图标按此在新窗口浏览图片进入Debug(仿真调试)状态。然后设置断点,一般是在关键地方或与串口相关联的地方设置。再单击图标运行(Run)用户程序,使用户程序运转起来(不然是接收不到串口数据的)。这时再使用串口调试软件或用户调试软件,发送通信命令或者数据包,看用户程序是否进入断点,以及相关的变量是否正确。还可以有意发送带有错误数据的数据包,以观察用户程序的异常处理部分是否正常。一旦发现程序中的错误,可以马上停止仿真调试,立即修改代码,然后再次重复上面的步骤进行仿真。因为不需要与用户目标板联机,也不用下载代码到用户板上,所以速度非常高。以上这些步骤和使用硬

55、件仿真器的基本一样,只不过现在使用的是软件仿真。需要注意的是:仿真时单片机串口实际的波特率由MODE命令来指定,单片机程序中的TMOD、SCON等参数是不影响(yngxing)串口仿真状态的(也就是说这些参数不影响仿真的波特率,即使它们是错误的)。但是中断的使能位(如ES、EA等)还是起作用的,如果ES或EA被禁止,那么就不会进入串口中断。五 结论(jiln) 本次(bn c)课题主要研究的是单片机键盘输入和多机通信模块,利用C语言实现单片机显示和串口通信传输,同时深入多机通信的进行理论的研究,深刻理解多机通信在现实生活中的应用。本次毕业设计利用实验板和PC进行串口通信。通过对该系统的开发,熟

56、悉单片机系统,并能掌握键盘输入和显示方面的基础编程工作,在导师的引导下,掌握许多单片机开发知识,为以后的工作打下坚实的基础。图5.1为手动键盘输入的结果,图5.2为实验板连接RS232到PC机进行通信,图5.3为手动按键传输到PC机的结果。图5.1为手动键盘输入的结果(ji gu)如图5.1所示,当每次键盘输入的数值,通过(tnggu)单片机显示,如果出错或者显示不成功,则显示出点闪,回到最初状态,等待键盘输入。显示(xinsh)的数值1为手动输入的结果。图5.2为实验板连接RS232到PC机进行(jnxng)通信如图5.2所示,通过连接(linji)232串口,把键盘输入的值,传输到PC机。

57、将手动输入的1通过(tnggu)232传输到PC机。图5.3为手动按键(n jin)传输到PC机的结果如图5.3所示,利用串口调试(dio sh)助手,把传来的值在PC机上显示(xinsh)出来。若显示正确,并反馈到单片机,消除点闪。软件显示的1为键盘输入的数据通过232到PC机的结果。参考文献1 P roak is J G,M ano lak isD G. D igital Signal P rocessing. New York: Macm illan, 1992.M.Luise and R. Reggiannini. Carrier Frequency Acquisition and T

58、racking for OFDM SystemsA. IEEE Trans. Commun. 1996,44:. 150-159.2 Altera Corporation. Nios software developers handbookZ. Sanfrancisco,USA:Altera Corporation, 2004.168-1893 黄智伟,朱卫华. 433MHz 单片射频nRF401 收发(shuf)芯片 J . 世界(shji)电子元件,2001 ,29-404 马玉春,宋瀚涛. 串行通信协议的研究(ynji)及应用 J . 计算机应用研究, 2004, 04 (2) : 22

59、8 - 230 5 李妮. 多串口通信系统设计与实现 J . 舰船电子工程, 2005 (06) : 70 - 73. 6 Fortuna L, FrascaM. Alessandro Rizzo. Chaotic pulse position modulation to imp rove theefficiency of sonar sensors J . IEEE Transactions on Instrumentation and Measurement, 2003, (52) : 1809 - 1814.7 HYPERLINK /asp/vipsearch.asp?Query=%D0

60、%ED%D2%CB%C9%EA&Type=A 许宜申, HYPERLINK /asp/vipsearch.asp?Query=%D6%EC%D0%C0%BB%AA&Type=A 朱欣华, 基于VC60的PC机与单片机之间的串行通信 J .江苏苏州215006 2 HYPERLINK /asp/vipsearch.asp?Query=%B6%AB%C4%CF%B4%F3%D1%A7%D2%C7%C6%F7%BF%C6%D1%A7%D3%EB%B9%A4%B3%CC%CF%B5&Type=S 东南大学仪器科学与工程系,江苏南京210096 2008,56-778 HYPERLINK /asp/vi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论