课程名称:监控系统课程设计设计题目:PC机与单片机串行通信院系:基础课部专业:茅以升班年级:2003级姓名:吴汇梅指导教师:吕老师陈老师西南交通大学峨眉校区2006年12月22日课程设计任务书专业:茅以升班姓名:吴汇梅学号20030533开题日期:2006年9 月16 日完成日期:2006年12月22 日题目:PC机与单片机的串行通信一、设计的目的串行通信技术是单片机系统开发中常用的技术之一,串行口也是单片机常规内部集成的功能。
设计PC机与单片机进行串行通信硬件电路及软件流程,本设计通过定时器来设定通信的波特率,通过设置几个寄存器来设定工作方式。
PC机与单片机之间则由RS-232C接口相连。
二、设计的内容及要求1、查阅资料,学习PC与一个或多个单片机串口通信设计;2、硬件设计,给出原理框图,并简要介绍各组成部分;3、软件设计,给出程序流程图和程序清单,并说明各部分程序要实现;4、总结,结出结论三、指导教师评语四、成绩指导教师(签章)2006.年12月28日1 设计意义单片机由于性价比高、使用灵活等优点而广泛应用于各种电子系统、自动控制系统,但是存储容量小。
处理的数据量不大。
为了克服这一缺点,可以将单片机连接到PC机上,由单片机采集数据,然后将数据汇总到PC机,再进行各种数据处理。
单片机与PC机之间的通讯是其中的关键技术之一,PC机与单片机间一般采用的是串行通信,由于51系列单片机中一般集成了双全工的串行端口,只要配以电平转换的驱动电路、隔离电路就可组成一个简单可行的通信接口。
2 硬件设计2.1 整体设计在PC系统中都装有异步通信适配器,利用它可以实现异步串行通信。
适配器的核心元件是可编程的intel8251芯片,它使PC有能力与其他具有RS-232标准的接口的计算机或设备进行通信,而MCS-51单片机本身具有一个双全工的串行口,因此只要配上电平转换电路就可以和RS-232接口组成一个简单的通信通道。
简单的PC与单片机通信只要3根线就可以了,单片机的TXD、RXD与PC的RXD、TXD 分别相连,连接地线。
由于51系列单片机的串行口使用的是TTL电平,因此在PC和单片机间要有RS-232电平转换电路,图1所示为PC与单片机的通信图。
图1 PC机与单片机的通信图2.2 芯片选择(1)MCS-51单片机[1]MCS-51单片机内部具有一个采用UART工作方式的全双工的串行通信接口。
该接口不仅可以同时进行数据的接受和发送,也可以作为同步移位寄存器使用。
该接口有4种工作方式,其中字符格式有8位、10位、11位,并可以以不同的波特率工作。
1〉串行口的内部结构MCS-51单片机的串行接口结构如图2所示:图2 MCS-51单片机的串行接口图该接口有两根串行通信传输线RXD(P3.0)和TXD(P3.1),以串行形式与外部逻辑接口。
数据的接收和发送就是通过这两根信号线来实现的。
在物理上存在两个互相独立的接收、发送缓冲器SBUF,属于特殊功能寄存器,这样可以同时进行数据的接收和发送,实现全双工传送。
2〉串行口的控制寄存器①串行口数据缓冲器SBUF两个互相独立的接收、发送缓冲器SBUF公用一个地址99H对应着2个寄存器:发送寄存器和接收寄存器。
发送缓冲器用于存放要发送的数据,只能写入,不能读出。
接收缓冲器用于存放接收到的数据,只能读出,不能写入。
通过辨认对SBUF的指令是读指令还是写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。
读SBUF,比如MOV A,SBUF指令,就是读接收缓冲器的内容;写SBUF,比如MOV SBUF,A指令,就是修改发送缓冲器的内容。
②串行控制寄存器SCONSCON可用于确定串行通信的工作方式和控制串行通道的某些功能,监视和控制串行口的工作状态,也可用于存放要发送和接收到的第9个数据(TB9、RB8),并没有接收和发送中断标志RI和TI。
4种工作方式。
各种工作方式的区别在于功能、数据格式和波特率的不同。
的工作方式为方式1的。
SM2:多机通信控制位。
主要用于方式2和方式3 中(数据为9位)。
在方式2和方式3处于接收状态时,如SM2=1,REN=1,且接收到的第9位数据RB8是0,则RI(接收中断标志位)不会被置1。
只有在接收到的第9位数据RB8是1,则RI才会被置1。
在方式2和方式3处于接收状态时,如SM2=0,无论接收到的第9位数据RB8时0还是1,RI都会被置1。
在方式1中,如SM2=1,只有在接收到有效停止位时,则RI才会被置1。
在模式0中,SM2必须为0。
REN:允许串行接收控制位。
由软件置1或清除。
REN=1,允许接收。
启动串行口的RXD,开始接收数据;REN=0,禁止接收。
在任务6中就是用指令SETB REN来允许乙机的串行口接收的。
TB8:在方式2 和方式3时,它就是要发送的第9个数据位,一般是程控位2。
按需要由软件进行置1或清0。
如在多处理通信中,用于表示是地址桢还是数据桢。
在模式9中。
此位不用。
RB8:接收数据位8。
在方式2和3时,它是接收到的第9个数据位。
在模式1中,如SM2=0,RB8时接收到的停止位;在模式0中,此位不用。
TI:发送中断标志位。
在模式0中,当发送完第8位数据时,由硬件置1;在其他模式中,在发送停止位前,由硬件置1。
TI=1时,申请中断,CPU响应中断后,发送下一桢数据。
RI:接收中断标志位。
在模式0中,接收第8位结束时,由硬件置1;在其他模式中,在接收停止位的半中间,由硬件置1。
RI=1时,申请中断,要求CPU取走数据。
但在模式一中,SM2=1时,如未接收到有效的停止位,则不会对RI置位。
在任何模式中,CPU响应中断后,都必须用软件来清除RI和TI。
在任务6中,在甲机发送和乙机接收程序中,都有JBC这样一条指令,就是用来清除TI和RI标志的。
③特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的SFR,在HMOS的MCS-51单片机中,除了最高位SMOD位外,其他位都是虚设的。
当使SMOD=1时,则使方式1、方式2、方式3的波特率加倍。
当SMOD=0时,各工作方式的波特率不加倍。
3〉串行口的工作方式MCS-51单片机的串行接口有四种工作方式,用户可以通过SCON中的SM1、SM0位来选择。
①方式0方式0为同步移位寄存器方式,其波特率是固定的,为振荡频率f的1/12,数据由RXD(P3.0脚)端输入,同步移位脉冲由TXD(P3.1脚)端输出,发送、接收的是8位数据,低位在前。
发送:当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。
在再次发送数据之前,必须由软件清TI为0。
具体接线图如图3所示。
其中,74LS164为串入并出移位寄存器。
图3 方式0 的发送接线图接收:在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。
在再次接收数据之前,必须由软件清RI为0。
具体接线图如图4所示。
其中,74LS165为并入串出移位寄存器。
图4 方式0 的接收接线图串行控制寄存器SCON中的TB8和RB8在方式0中未用。
值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清0。
方式0时,SM2必须为0。
②方式1在方式1状态下,串行口为8位异步通信接口。
一桢信息为10位,包括1位起始位(0),8位数据位(低位在前)和1位停止位(1)。
如图5所示图5 方式1的信息格式TXD为发送端,RXD为接收端。
波特率不变。
方式1是单片机与PC机串行通信最常用的方式。
发送:发送时,数据从TXD端输出,当数据写入发送缓冲器SBUF后,启动发送器发送。
当发送完一帧数据后,置中断标志TI为1。
方式1所传送的波特率取决于定时器1的溢出率和PCON中的SMOD位。
接收:接收时,由REN置1,允许接收,串行口采样RXD,当采样由1到0跳变时,确认是起始位“0”,开始接收一帧数据。
当RI=0,且停止位为1或SM2=0时,停止位进入RB8位,同时置中断标志RI;否则信息将丢失。
所以,方式1接收时,应先用软件清除RI或SM2标志。
③方式2方式2下,串行口为11位UART,传送波特率与SMOD有关。
发送或接收一帧数据包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。
其帧格式如图6所示。
图6 方式2 的信息帧格式发送:发送时,先根据通信协议由软件设置TB8,然后用指令将要发送的数据写入SBUF,启动发送器。
写SBUF的指令,除了将8位数据送入SBUF外,同时还将TB8装入发送移位寄存器的第9位,并通知发送控制器进行一次发送。
一帧信息即从TXD发送,在送完一帧信息后,TI被自动置1,在发送下一帧信息之前,TI必须由中断服务程序或查询程序清0。
接收:当REN=1时,允许串行口接收数据。
数据由RXD端输入,接收11位的信息。
当接收器采样到RXD端的负跳变,并判断起始位有效后,开始接收一帧信息。
当接收器接收到第9位数据后,若同时满足以下两个条件:RI=0和SM2=0或接收到的第9位数据为1,则接收数据有效,8位数据送入SBUF,第9位送入RB8,并置RI=1。
若不满足上述两个条件,则信息丢失。
④方式3方式3为波特率可变的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。
4〉MCS-51串行口的波特率在串行通信中,收发双方对传送的数据速率,即波特率要有一定的约定。
MCS-51单片机的串行口通过编程可以有4种工作方式。
其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器1的溢出率决定,下面加以分析。
①方式0和方式2在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。
在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。
②方式1和方式3在方式1和方式3下,波特率由定时器1的溢出率和SMOD共同决定。
即:方式1和方式3的波特率=·定时器1溢出率其中,定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值。
计数速率与TMOD寄存器中的C/位有关。
当C/=0时,计数速率为fosc/12;当C/=1时,计数速率为外部输入时钟频率。
下表列出了各种常用的波特率及获得办法。
2.3 RS-232接口简介(1)信息格式PC 的主板上通常都预留有一个或两个九针(DB一9)全双工串行接口(COM1、COi2),其电气标准遵循RS一232C标准.RS-232是使用最早、应用最多的一种异步串行通信总线标准,它是美国电子工业协会1962年公布,1969年最后修订而成的。