单片机应用技术-基于STC15系列单片机 课件 5.1 单片机PC机串行通信的实现_第1页
单片机应用技术-基于STC15系列单片机 课件 5.1 单片机PC机串行通信的实现_第2页
单片机应用技术-基于STC15系列单片机 课件 5.1 单片机PC机串行通信的实现_第3页
单片机应用技术-基于STC15系列单片机 课件 5.1 单片机PC机串行通信的实现_第4页
单片机应用技术-基于STC15系列单片机 课件 5.1 单片机PC机串行通信的实现_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

项目

密码键盘的实现项目介绍项目:密码键盘的实现任务1:单片机PC机串行通信的实现任务2:数码管显示矩阵键盘键值任务3:密码键盘的设计密码键盘项目:综合应用了数码管、按键、串行通讯等模块。项目整体设计任务

单片机PC机串行通信的实现任务介绍实现单片机通过USB串口与PC机的连接;完成USB转串行口通信电路的搭建;完成方式1下双机串行通信的程序编写;实现通过串口,将26个字母’A’~’Z’发送出去。单片机PC机串行通信的实现单片机PC机串行通信的实现5.1.1数据通信的概念计算机CPU与外部设备之间、计算机与计算机之间的信息交换称为数据通信。基本的通信方式有两种:并行通信和串行通信。并行通信:所传送数据的各位同时进行发送或接收。如图5.2所示,并行方式传输一个字节(假定是8位二进制数10010011B)时,需要8条数据线,D0~D7是同时进行传送的。这种方式的特点是通信速度快,但传输线多,价格较贵,适合近距离传输。串行通信:所传送数据的各位按顺序一位一位地发送或接收。图5.3表示同样的数据进行串行通信,只需要一条数据线。最初传递的是D0位,然后是D1位,最后传递D7位。这种方式的特点是传输速度慢,但因数据传输线少,线路结构简单、抗干扰能力强,特别适用于远距离通信。单片机PC机串行通信的实现任务硬件设计5.1.2同步串行通信和异步串行通信1.同步通信在同步通信中,发送器和接收器由同一个时钟控制,发送方在时钟的控制下逐位发送数据,接收方在时钟的控制下逐位接收数据,由此实现收发双方的严格同步;发送端在发送数据之前,首先发送1~2个字节的特殊数据(称为同步字符),接收方一旦检测到规定的同步字符就开始接收,发送方接着连续按顺序传送n个字节的数据。当n个字节的数据发送完毕,发送校验码。同步通信如图5.4所示。2.异步串行通信:异步串行通信的数据或字符是一帧一帧地传送的,一帧数据由1位低电平的起始位、5~8位数据位、1位奇偶校验位,1~2位高电平的终止位组成。起始位:在通信线上没有数据传送时处于逻辑“1”状态,当发送器要发送一帧数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传给接收器,当接收器检测到这个逻辑低电平后,就开始准备接收数据位信号。因此起始位表示一帧数据传送的开始。数据位:紧跟在起始位后的是数据位。数据位的位数可以是5、6、7、8位,传输时低位在先,高位在后。奇偶校验位:串行通信用于远距离数据传送时,受到的干扰较大,为了保证数据传送的可靠性,可在每帧数据的数据位后,加上奇偶校验位。奇校验:发送字符中(包括校验位内)含“1”的个数为奇数。偶校验:发送字符中(包括校验位内)含“1”的个数为偶数。在异步通信中,数据按图5.5的格式一帧接一帧地传送。在发送的间隙,即空闲时,通信线路总是处于逻辑“1”(高电平)状态,每个数据帧(字符)的传送均以逻辑“0”(低电平)开始。异步串行通信的线路比较简单,但是每一帧中的位数比较少,而且还要有启始位、终止位等用于同步的位,所以传送的效率不高、速度比较慢,而同步方式在数据传送时省去了起始位和停止位,一帧可以连续传送若干个字节,所以其速度高于异步传送,但对硬件结构要求较高。5.1.3通信方向串行通信有单工通信、半双工通信和全双工通信3种方式。单工通信:数据只能单方向地从一端向另一端传送。半双工通信:数据可以双向传送,但任一时刻只能向一个方向传送,即分时双向传送数据。全双工通信:数据可同时向两个方向传送,全双工通信效率最高,适用于计算机之间的通信。5.1.4波特率波特率:通信中对数据传送速率的规定,指每秒传送二进制数据的位数,单位为位/秒(bit/s)。例如:在某异步串行通信中,每传送一个字符需要10位(1位起始位、8个数据位、1位停止位),如果采用波特率为4800波特进行串行通信,则每秒可以传送480个字符。在串行通信中,收、发双方必须按照同样的速率进行串行通信,即收发双方采用相同的波特率。在串行传输中,二进制数据序列是以数字信号波形的形式出现的;发送时,在发送时钟作用下将发送移位寄存器的数据串行移位输出;接收时,在接收时钟的作用下将通信线上传来的数据串行移入移位寄存器。发送时钟和接收时钟也可称为移位时钟,产生移位时钟的电路称为波特率发生器。为了提高采样分辨率,准确地测定数据位的上升沿或下降沿,时钟频率总是高于波特率的若干倍,这个倍数称为波特率因子。在单片机中发送/接收时钟可以由系统时钟fosc产生,其波特率因子取为12、32、64,由于fosc为常数,这种方式也称为固定波特率方式;发送/接收时钟也可以由定时器T1产生,只要改变定时器的计数初值,就能改变由T1产生的时钟频率,因此称为可变波特率方式。5.1.5通信线的连接根据传输线路的电气特性,串行通信的传输速率随传输距离的增加而降低,通信距离不同,电路的连接方式也不相同。如果两片单片机相距很近,或在同一块PCB板上,通信双方的连接只需3根信号线:TXD(串行数据发送线)、RXD(串行数据接收线)和GND(地线),直接以TTL电平连接,如图5.7所示。通常需将TTL电平转换为RS232电平,以提高信号的幅度,增加传输距离,如图5.8所示,这种连接方式最大距离一般不超过15m。5.1.6RS-232简介RS-232是一种串行通信标准,是由美国电机工业协会(EIA)为了利用电话线及调制解调器进行数据通信而制定的,它对信号的功能、电气特性、连接器等都作了明确的规定。由于RS-232早期不是专为计算机通信设计的,因此有25针D型连接器和9针D型连接器,目前的PC机采用的都是9针D型连接器。这里仅对9针D型连接器进行说明。1.RS-232的信号

RS-232除了基本的数据收发线TXD、RXD外,还有用于收发双方联络、协调的握手信号。(1)基本的数据传送引脚

TXD:数据输出端,串行数据由此送出。

RXD:数据输入端,串行数据由此输入。

GND:信号地线。在串行通信中,最简单的通信只需连接这3根线。在PC机与PC机之间,PC机与单片机之间、单片机与单片机之间的数据通信大多采用这种连接方式。(2)握手信号

RTS:请求发送信号,输出。

CTS:清除传送,是对RTS的响应信号,输入。

DSR:数据通信准备就绪,输入。

DTR:数据终端就绪,表明计算机已做好接收准备,输出。

DCD:数据载波检测,输入。以上握手信号在和调制/解调器连接时使用,为便于理解,我们举例如下:当一台PC机与调制解调器相连,要向远方发送数据时,如果PC机作好了发送准备,就用RTS信号通知调制解调器;当调制解调器也作好发送数据的准备,就向PC机发出CTS信号,RTS和CTS这对握手信号沟通后,就可以进行串行数据发送了。当PC机要从远方接收数据时,如果PC机作好了接受准备,就发出DTR信号通知调制解调器;当调制解调器也作好接收数据的准备就向PC机发出DSR信号,DTR和DSR这对握手信号沟通后,就可以进行串行数据接收了。2.

接口的电气特性RS-232采用的是EIA电平,信号线上的电压为负逻辑关系:逻辑1对应的电压为-3V~-15V逻辑0对应的电压为+3V~+15V介于-3V~+3V之间的电压,低于-15V或高于+15V的电压是没有意义的。3.

电平转换电路RS-232的EIA电平是以正/负电压来表示逻辑0/1的,与TTL电路以低/高电平表示逻辑0/1不同。因此为了实现与TTL器件的连接,必须在EIA电平与TTL电平之间进行电平转换。为此半导体公司特别为RS-232制造了用于信号电平转换的专用集成电路,常见的型号有:MAX232、TSC232、ICL232等,它们的引脚及特性是兼容的,可以相互之间代换使用。MAX232芯片内部具有电压倍增电路,只需+5V电源供电,外接4个电容器,使用非常方便。如图5.10所示,该芯片可连接两对收发线,既能将两路TTL电平(T1IN、T2IN)转换成RS232电平(T1OUT、T2OUT)送到传输线上,又能将传输线上的两路RS232电平(R1IN、R2IN)转换成TTL电平(R1OUT、R2OUT)。4.

单片机与PC机之间的连接在许多应用场合,由单片机构成的自动控制系统、智能仪器往往需要与PC机进行数据通信。PC机提供的两个RS-232串行口COM1、COM2是EIA电平,而单片机的串行数据收发线RXD、TXD都是TTL电平,因此单片机需使用MAX232芯片进行电平转换,通过串行电缆线与PC机相连接,如图5.11所示。5.1.7单片机通过USB串口与PC机连接目前在笔记本电脑上基本上已不配置9针的RS-232接口,取而代之的是即插即用的USB接口,一些芯片生产商提供了USB转串口的接口芯片,比如PL2303HX、CH340G,通过这类芯片,将USB接口转换为串行口后与单片机连接,同时如果单片机系统功耗不大的话,还可以通过USB接口向单片机供电,这样反而较传统的RS-232连接方式更加方便5.1.8认识STC15单片机的串行口1STC15单片机串行口结构STC15W4K61S4系列单片机具有4个采用UART工作方式的全双工异步串行通信接口(串口1、串口2、串口3和串口4)。这里主要介绍串口1的使用,串口1的两个缓冲器共用的地址码是99H;串口1的两个缓冲器统称串行通信特殊功能寄存器SBUF。串口1有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用。用户可用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程序处理,使用十分灵活。STC15W4K61S4系列单片机串行口对应的硬件部分是TxD和RxD。串口1可以在3组引脚之间进行切换。通过设置特殊功能寄存器

AUXR1/P_SW1中的位

S1_

S1和S1_S0两位决定。如图5.14所示,设有A、B两台单片机串行通信,A机发送、B机接收。A机的CPU将数据写入发送SBUF,就启动了发送过程,按设定的波特率,每来一个移位脉冲,SBUF中的数据便移出一位,按先低位后高位的顺序一位一位地将数据移到TXD引脚上,当A机的一帧数据发送完毕(发送SBUF移空),硬件电路自动将发送中断标志TI置1,向CPU发出中断请求,请求CPU将下一个数据写入发送SBUF。与此同时B机按设定的波特率,每来一个移位脉冲,就会将RXD引脚上的数据移入SBUF,这样先低位后高位,直到一帧数据接收完成(接收SBUF满),硬件电路自动将RI标志置1,向CPU发中断请求,请求CPU及时取走刚刚收到的数据。2串行口的控制寄存器(1)串行通信控制寄存器SCONMCS-51单片机串行口的工作方式、接收和发送控制及串行口的状态标志都是由寄存器SCON来控制和指示。其格式如下:位地址9FH9EH9DH9CH9BH9AH99H98H位名SM0/FESM1SM2RENTB8RB8TIRISM0/FE、SM1:当PCON寄存器中的SMOD0位为1时,SM0/FE用于帧错误检测,当检测到一个无效停止位时,通过UART接收器设置该位,它必须由软件清零。当PCON寄存器中的SMOD0位为0时,SM0/FE、SM1两位决定了串口通信的工作方式,如下表所示:SM0/FESM1工作方式功能波特率0008位的移位寄存器fosc/12或fosc/20118位的UART由定时器T1的溢出率确定1029位的UARTfosc/32或fosc/641139位的UART由定时器T1的溢出率确定SM2:是多机通信控制位。通常应把该位置为“0”;在串口方式2和方式3,进行多机通信时,该位需要置成“1”。REN:允许接收位REN=1时,允许接收数据;REN=0时,禁止接收数据。TB8:发送数据的第9位在方式2、方式3,TB8的内容是要发送数据的第9位,其值由用户通过软件设置。在双机通信时,TB8一般作为奇偶校验位使用;在多机通信时,常以TB8的状态表示主机发送的是地址帧还是数据帧,一般约定:TB8=0为数据帧,TB8=1为地址帧。RB8:接收数据第9位在方式2、方式3时,RB8存放接收到的第9位数据,对应于发送方的TB8。TI:发送中断标志在方式0时,发送完第8位数据后,该位由硬件置1。在其它方式,在发送停止位前由硬件置1。因此TI=1,表示一帧数据已发送结束,其状态可供程序查询,也可请求中断。TI必须用程序清0。RI:接收中断标志在方式0时,接收到第8位数据后,该位由硬件置1。在其它方式,当接收到停止位时,该位由硬件置1。因此RI=1,表示串行口已接收到一帧数据,其状态可供程序查询,也可请求中断。RI必须用程序清0。SCON寄存器可以位寻址。(2)PCON寄存器PCON寄存器中只有其最高位(SMOD位)与串行通信有关,其它位则用于电源管理。位地址B7B6B5B4B3B2B1B0位名SMODSMOD0——GF1GF0PDIDSMOD:波特率加倍位当该位设为“1”时,所设定的波特率被加倍。注意PCON寄存器是不能位寻址的,所以使用“SMOD=1;”或“SMOD=0;”语句都是非法的,将SMOD置“1”可用“PCON|=0x80;”语句,将SMOD清“0”可用“PCON&=0x7F;”语句。SMOD0:帧错误检测有效控制位。当SMOD0为1时,SM0/FE用于帧错误检测;当SMOD0为0时,由SM0/FE、SM1两位决定串口通信的工作方式。(3)辅助寄存器AUXR辅助寄存器的格式和各位含义如下:位地址B7B6B5B4B3B2B1B0位名T0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2其中与串行通信相关的位介绍如下:

T1x12:定时器1速度控制位。T1x12为0时,定时器1是传统8051速度,12分频;T1x12为1时,定时器1的速度是传统8051的12倍,不分频。如果UART串口1用T1作为波特率发生器,则由T1x12决定UART1串口是12T还是1T。UART_M0x6:串口模式0的通信速度设置位。UART_M0x6为0时,串口1模式0的速度是传统8051单片机串口的速度,即12分频;UART_M0x6为1时,串口1模式0的速度是传统8051单片机串口速度的6倍,即2分频。T2R:定时器2允许控制位。T2R为0时,不允许定时器T2运行;T2R为1,允许定时器T2运行。T2_C/T:控制定时器T2用作定时器或计数器。T2_C/T为0时,用作定时器(对内部系统时钟进行计数);T2_C/T为1时,用作计数器(对引脚T2/P3.1的外部脉冲进行计数)。T2x12:定时器2速度控制位。T2x12为0时,定时器T2是传统8051速度,12分频1,定时器T2的速度是传统8051的12倍,不分频。

如果串口1或串口2用T2作为波特率发生器,则由T2x12决定串口1或串口2是12T还是1T。S1ST2:串口1选择定时器2作波特率发生器的控制位。S1ST2为0,选择定时器T1作为串口1的波特率发生器;S1ST2为1,选择定时器T2作为串口1的波特率发生器,此时定时器T1得到释放,可以作为独立定时器使用。串口1默认选择定时器T2作为其波特率发生器。(4)定时器T2的寄存器T2HT2L定时器T2寄存器T2H(地址为D6H,复位值为00H)及寄存器T2L(地址为D7H,复位值为00)用于保存重装时间常数。(5)与串行中断相关的控制位ES和PS串行口中断允许位ES位于中断允许寄存器IE中,中断允许寄存器的格式如下:中断允许寄存器IE(可位寻址):位地址B7B6B5B4B3B2B1B0位名EAELVDEADCESET1EX1ET0EX0ES:串行口中断允许位。ES为1时,允许串行口中断;ES为0时,禁止串行口中断。中断优先级控制寄存器IP(可位寻址):PS:串口1中断优先级控制位。PS为0时,串口1中断为低优先级中断(优先级0)PS为1时,串行口中断为高优先级。(6)串行口1引脚切换寄存器AUXR1/P_SW1位地址B7B6B5B4B3B2B1B0位名PPCAPLVDPADCPSPT1PX1PT0PX0位地址B7B6B5B4B3B2B1B0位名S1_S1S1_S0CCP_S1CCP_S0CCP_S1CCP_S10DPSS1_S1、S1_S0用于切换串口1通信引脚:S1_S1S1_S0串口1通信引脚00[RxD/P3.0,TxD/P3.1]01[RxD_2/P3.6,TXD_2/P3.7]10[P1.6/RxD_3/XTAL2,P1.7/TxD_3/XTAL1]11无效5.1.9串行口的应用5.1.9.1

方式0串行口工作方式0又称为“移位寄存器方式”,是将串行口作为同步移位寄存器使用,这时以RXD端作为数据的输入/输出端,在TXD端输出移位脉冲。实际上是把串行口变作并行口使用,在单片机应用系统中,如果并行口不够用,可通过外接串入并出移位寄存器扩展输出口,通过外接并入串出移位寄存器扩展输入接口。串行口工作于方式0时,数据长度为8位,当串行口模式0的通信速度设置位UARTM0x6AUXR=0时,其波特率固定为SYSclk/12。当串行口模式0的通信速度设置位UARTMOX6/AUXR5=1时,其波特率固定为SYSclk2。现对方式0发送数据方法进行说明:(1)

设置控制寄存器SCON的SM0、SM1为方式0(2)

清除TI标志。(3)

将发送的数据送入SBUF,这样SBUF中的数据在TXD脚移位脉冲的作用下,一位一位地在RXD脚送出。(4)

当第8位发送完毕,TI标志自动置1,如果还有数据要发送,重复(2)~(4)。5.1.9.2方式1方式1是异步串行通信方式,以TXD为串行数据发送端,RXD为数据接收端,每帧数据共10位:一个起始位“0”,8个数据位,一个停止位“1”。其中起始位和停止位是由硬件电路自动插入的。方式1下,波特率由定时器T1的溢出率(每秒钟溢出的次数)和SMOD共同决定,其公式为:

波特率=串行通信模式1的波特率是可变的,可变的波特率由定时器/计数器T1或定时器T2产生,优先选择定时器T2产生波特率。(1)当串行口1用定时器T2作为其波特率发生器时:串行口1的波特率=(定时器T2的溢出率)/4(注意:此时波特率也与SMD无关。)当T2工作在1T(不分频)时模式(AUXR2/T2x12=1),定时器2的溢出率=

FOSC/(65536-[RL_TH2,RL_TL2]);即此时,串行口1的波特率=

FOSC/(65536-[RL_TH2,RL_TL2])/4;当T2工作在12T(12分频)模式时(AUXR2/T2x12=0),定时器2的溢出率=FOSC/12/(65536-[RL_TH2,RL_TL2]);即此时,串行口1的波特率=

FOSC/12/(65536-

[RL_TH2,RL_TL2])/4RL_TH2是T2H的自动重装载寄存器,RL_TL2是12L的自动重装载寄存器。(2)当串行口1用定时器T1作为其波特率发生器且定时器T1工作于模式0(16位自动重装载模式)时:串行口1的波特率=(定时器1的溢出率)/4(注意:此时波特率与SMOD无关。)当定时器T1工作于模式0(16位自动重装载模式)且Tx12=0(12分频)时,定时器T1的溢出率=

FOSC/12/(65536[

RL_THI,

RL_TL1]),即此时,串行口1的波特率=

FOSC/12/(65536-[RL_TH1,RL_TL1])/4;当定时器T1工作于模式0(16位自动重装载模式)且Tx12=1(不分频)时,定时器T1的溢出率=

FOSC/(65536[

RL_THI,

RL_TL1]),即此时,串行口1的波特率=

FOSC/(65536-[RL_TH1,RL_TL1])/4;RL_TH是TH的自动重装载寄存器,RL_TL是TL的自动重装载寄存器。(3)当串行口1用定时器T1作为其波特率发生器且定时器T1工作于模式2(8位自动重装模式)时:串行口1的波特率=(2SMOD/32)x(定时器1的溢出率)当定时器1工作于模式2(8位自动重装模式)且T1x12=0(12分频)时,定时器T1的溢出率=

FOSC/12/(256-TH1),即此时,串行口1的波特率=(2SMOD/32)×

FOSC/12/(256-TH1)当定时器1工作于模式2(8位自动重装模式)且T1x12=1(不分频)时,定时器T1的溢出率=

FOSC/(256-TH1),即此时,串行口1的波特率=(2SMOD/32)

xFOSC/(256-TH1)具体应用时,总是根据预先确定的波特率,去计算定时器的计数初值,当时钟频率fosc=11.0592MHz时,波特率为9600,不分频时,通过推导,我们可以得到T2计数初值的公式为:T2H=(65536-((FOSC/4)/BAUD))/256; //装入时间常数,T2L=(65536-((FOSC/4)/BAUD))%256;5.1.9.3方式2方式2是异步串行通信方式,在STC15中建议不学习。方式2以TXD为串行数据发送端,RXD为数据接收端,每帧数据共11位:一个起始位“0”,9个数据位,一个停止位“1”。发送时,第9个数据位由SCON寄存器中的TB8提供,接收时,收到的第9位数据存放在SCON寄存器中的RB8。第9位数据可作为奇偶校验位,也可在多机通信时,作为数据信息或地址信息的标志位。方式2的波特率是固定的:

波特率=5.1.9.4方式3方式3为9位数据异步通信UART模式,用于多机通信,其一帧的信息由11位组成:1位起始位,8位数据位(低位在先),1位可编程位(第9位数据)和1位停止位。发送时可编程位(第9位数据)由SCON中的TB8提供,可软件设置为1或0,或者可将PSW中的奇/偶校验位P值装入TB8(TB8既可作为多机通信中的地址数据标志位,又可作为数据的奇偶校验位)。接收时第9位数据装入SCON的RB8。TxD/P3.1为发送端口,RxDP3.0为接收端口,以全双工模式进行接收/发送。模式3和模式1相比,除发送时由TB8提供给移位寄存器第9数据位不同外,其余功能结构均基本相同,其接收“发送操作过程及时序也基本相同。在模式3中,接收到的停止位与SBUF、RB8和R无关,通过软件对SCON中的SM2、TB8的设置以及通信协议的约定,为多机通信提供了方便。串行通信模式3的波特率也是可变的,可变的波特由定时器/计数器1或定时器2产生。本任务选用串口方式1完成单片机与虚拟终端的通信

温馨提示

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

评论

0/150

提交评论