当前位置:文档之家› 毕业论文-带串口通信的单片机人机界面软件设计

毕业论文-带串口通信的单片机人机界面软件设计

本科毕业设计(论文)带串口通信的单片机人机界面软件设计The Design of Single-chip Serial Communication with the Man-machine

Interface

中国计量学院

2009 年 6月

郑重声明

本人呈交的毕业设计论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。

学生签名:日期:

分类号:TN919 密级:公开

UDC:71 学校代码:10356

中国计量学院

本科毕业设计(论文)带串口通信的单片机人机界面软件设计The Design of Single-chip Serial Communication with the Man-machine

Interface

2009 年6 月致谢

带串口通信的单片机人机界面软件设计

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

本文还深入探讨了多机间的通信,对串口通信深入的了解。通过C语言的进行程序设计,实现串口通信的功能。在串口传输设计中,为了防止传输错误,如果传输不成功,实现数字抖动,若传输成功,将值转化为十进制输显示在PC 机。

关键字:串口通信, 多机通信,键盘输入显示,单片机设计

中图分类号:TN919

The Design of Single-chip serial communication with the

man-machine interface

Abstract: With the development of science and technology, the modernization of production has 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 programming 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 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. T his paper will give an introduction of serial communication between single-chip and PC single-chip machines, 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-serial 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, numerical will be transferred into a decimal value displaying in the PC-lose.

Keywords: serial communications, multi-machine communications, keyboard display, single-chip design

Classification: TN919

摘要......................................................................................................................................... I 目次.......................................................................................................................................III 1绪论.. (1)

1.1引言 (1)

1.251单片机概述概述 (1)

2带串口多机通信概述 (2)

2.1串口通信概述 (2)

2.1.1串口通信的概述 (2)

2.1.2串口通信的研究 (3)

2.2多机通信的原理 (4)

3串口通信模块设计 (6)

3.1引言 (6)

3.2串口通信的基本原理和设计方法 (6)

3.2.1串口通信的基本原理 (6)

3.2.2串口通信的设计方法 (9)

4多机通信模块设计 (15)

4.1引言 (15)

4.2 多机通信程序设计的研究 (18)

4.2.1多机通信的程序设计 (15)

4.2.2调试方法 (18)

5结论 (21)

参考文献 (24)

附录 (26)

作者简历 (34)

学位论文数据集 (35)

1.1引言

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议。同时,串口通信协议也可以用于获取远程采集设备的数据[1]。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

1.2 51单片机概述

MCS-51 系列单片机的存储器从类型上可分为数据存储器(RAM)和程序存储器(ROM);从连接上可分为片内和片外数据存储器以及片内和片外程序存储器。片外存储器是外接的专用存储器芯片,MCS-51 单片机只提供地址和命令,单片机需要通过三总线才能与片外存储器联机工作[2]。

MCS8051 单片机串行口采用异步通信方式, 该方式是以字为单位来传送数据的。每一字由起始位、数据位、奇偶验证位、停止位等构成, 称为一帧。在该格式中, 一个字由起始位开始、停止位结束。串行口在发送指令时, 首先要求发送端有效, 并从串行口TXD 端发送一起始位指令, 单片机的存储单元DA TA端有效, 使存储单元SBU F 中数据送至TXD, 再过1位, 产生第一个数据, 使SBU F 数据右移一位, 并从左端补进。待零检测器检测到当前数据为零时, 发出通知申请中断。

2 带串口多机通信概述

2.1 串口通信概述

2.1.1串口通信的概述

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配[3]:

(1)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率协议需要9600波特率,。这意味着串口通信在数据线上的采样率为9600Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信。

(2)数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。

(3)停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

(4)奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

2.1.2 串口通信的研究

在PC机与单片机构成的上下位机系统中,经常采用由单片机及其外围电路构成的下位机进行数据采集,然后利用基本三线制的RS232串行口通信将数据传送给PC机,由PC机进行数据的进一步处理。图2.1为其系统原理图。

图2.1 系统原理图

程序采用C语言编写,主要完成定时数据采集及数据发送工作,其中定时采样的中断频率由定时器0的常数自动装载8 b计数器方式产生;波特率由定时器1的方式1产生;信号可以随意选择一常数,如果单片机接收到的数据等于此常数,则表示按键成功,否则重新接受按键数据。图2.2所示为程序框图。

图2.2为程序框图

2.2 多机通信的原理

(1)数据通信的传输方式

常用于数据通信的传输方式有单工、半双工、全双工和多工方式[4]。

单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。

半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。

全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。

多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。

(2)串行数据通信两种形式

异步通信

在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位。

同步通信

同步通信格式中,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。

同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。

(3)多机通信

多机通信中,单片机串口通过MAX232传输到PC机上,每次传输数据必须确定PC机的地址位,然后PC机接收数据。所以,在多机通信中,必须设定好每台PC机的地址位,通过不同的地址位传输到不同的PC机上。主机来控制从机,并与它们通信。如图2.3所示为多机通信原理图,

图2.3为多机传输原理图

3串口通信模块设计

3.1引言

在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过MAX232电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。MAX232串行接口总线具有成本低、简单可靠、容易使用等特点,串口通信仍然是很好的选择,有着广阔的使用前景[5]。

8051单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用TTL或CMOS

移位寄存器来扩充I/O口[6]。

8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据[7]。

3.2 串口通信的基本原理和设计方法

3.2.1串口通信的基本原理

(1)串行口的工作方式

8051单片机的全双工串行口可编程为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位数据时,将数据移入接收寄存器,并由硬件置位RI。

①方式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标志。

②方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。

输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址/数据信息的标志位,也能作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。

输入: 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

③方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

(2)波特率选择

如前所述,在串行通信中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。

方式0

方式0的波特率固定为主振频率的1/12。

方式2

方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc。

方式1和方式3[9]

定时器T1作为波特率发生器,其公式如下:

波特率=定时器T1溢出率(3.1)

T1溢出率= T1计数率/产生溢出所需的周期数(3.2) 式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关[10]。

定时器T1工作于方式0:溢出所需周期数=8192-x (3.3)

定时器T1工作于方式1:溢出所需周期数=65536-x (3.4)

定时器T1工作于方式2:溢出所需周期数=256-x (3.5)

因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。

当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来―怪‖的晶体震荡器就是这个道理[6]。

表3.1列出了定时器T1工作于方式2常用波特率及初值[11]

(3 )PC 机串行通信的原理

系统中PC机使用COM1 、COM2 两个串行通信端口,串行端口的本质功能是作为CPU 和串行设备间的编码转换器,当数据从CPU 经过串行端口送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换位字节数据。PC 串行通信指直接对串行通信端口的UART(PC 机的通用异步收发器,也叫做异步通信适配器,是PC 机用于异步通信的接口) 进行编程实现的通信。利用C语言进行异步通信编程,其实质是对UART 内部寄存器的读出或写入操作。PC 机每个MAX232中有10 个可编程的单字节寄存器,可用于控制、监视操作串行端口,COM1 的寄存器地址为3F8H - 3FEH ,COM2中的寄存器地址为2F8H - 2FEH。10 个寄存器由7 个地址访问,其中5 个寄存器的访问条件是先设置3FB H 线路控制寄存器的最高位为“1”,该位也称为DLAB 状态位。在通信前,必须要对串行通信口进行初始化,即设置通信参数。初始化主要包括设定传输波特率,确定数据传输帧格式等。

(4 )C语言中断处理程序

中断是一种特殊的指令,它停止当前正在执行的程序,把系统当前的状态保留在堆栈中,然后转移到由中断号所指定的中断服务程序,当中断服务程序执行完后,在回到原先的被中断的程序中继续执行。中断技术的采用,实现了快速CPU 与慢速外设的并行工作, 从而提高了计算机的工作效率。

C 语言作为最靠近汇编语言的高级语言,已充分表现出其直接高效地调度计算机硬件资源的优越性。用C 语言进行用户中断服务程序的设计时,通常应包括编写中断服务程序、安装中断服务程序和激活中断服务程序三个方面的工作。

3.2.2 串口通信的设计方法

(1)波特率选择

波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC- 51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单,模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择[12]。

在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为[8]:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))(3.6) 其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。

在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。

下面举例说明波特率选择过程[13]:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则

TH1=256-62500/波特率(3.7) 根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表:

表3.2通信误差表[14]

因此,在通信中,本次设计选用波特率为9600。

(2)通信协议的使用

通信协议是通信设备在通信前的约定[10]。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定[15]:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;

0xA2:单片机从PC机接收一段控制数据;

0xA3:单片机操作成功信息。

在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。当单片机接收到0xA1时,读取P0端口数据,并将读取数据返回PC 机;当单片机接收到0xA2时,单片机等待从PC机接收一段控制数据;当PC 机接收到0xA3时,就表明单片机操作已经成功。

(3)硬件连接

51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通信,行串行通信时要满足一定的条件,计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,采用了专用芯片MAX232进行转换[12]。我们采用了三线制连接串口,也就是说和计算机的10针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接[16]。

图3.1 使用MAX232串口通信电路图

串口通讯的硬件电路如上图所示为了能够在计算机端看到单片机发出的数据,这里利用如下图标的一个计算机串口调试软件来观察[17]。

图3.2 串口调试助手窗口

(1)SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重

叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据[18]。

(2)SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下[19]:

表3.3串行口控制寄存器SCON

SM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。

表3.4串行口工作模式设置

在这里只说明最常用的模式1,其它的模式也就一一略过。表中的fosc代表振荡器的频率,也就是晶振的频率。SM2在模式2、模式3中为多机通信使能位。在模式0中要求该位为0。

REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。

TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。

RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。

TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。

RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。

(3)波特率在使用串口做通信时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通信。波特率是指串行端口每秒内可以传输的波特位数。波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600÷10=960字节。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]。

波特率=(2SMOD÷32)×定时器1溢出速率(3.8) 上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:

溢出速率=(计数速率)/(256-TH1) (3.9) 上式中的―计数速率‖与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率。如果要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式(3.8) (3.9)得:

相关主题
文本预览
相关文档 最新文档