8051系列单片机内部集成的串行通信接口全称为“通用异步收发器”,它既可作异步传输使用,也可作同步移位寄存器使用,还可用于数据的组网通信。图9-7 8051系列单片机通用异步收发器的内部结构UART工作时,定时器T1用于产生通信需要的时钟,控制寄存器用于对串行口的工作状态进行相应的监控和设置。......
2023-11-17
1.8051系列机串行接口介绍
(1)串行接口的特色
8051系列单片机具有一个全双工串行接口,即P3.0(RxD)串行接收和P3.1(TxD)串行发送。所谓全双工是指发送和接收可以同时进行,半双工是指可以发送和接收,但不能同时进行,“单工”即只能发送或接收一种功能。利用串行接口可以在单片机之间进行通信,也可以与PC上位机进行通信。由于单片机的显示和存储功能有限,因而与PC通信是非常必要的。对一些复杂的控制系统,需要以局部单片机组成一套控制网。例如,汽车控制系统就是一种网络化的综合控制系统。利用串行接口将主MCU与各分MCU组成一套复杂的系统。串行接口的最重要功能就是通信能力,当然P3.0/P3.1也可以作为通用端口进行输入和输出。
(2)通信波特率
8051串行接口组成的通信系统是一种异步通信系统,即通信双方在发送与接收时,只靠通信双方的软件控制同步。有两个条件必须保证:
1)通信双方传送的数据格式必须一致。
2)通信双方传送的数据传输速率,也就是波特率必须一致。
所谓波特率,用Baud表示,也就是每秒传送的二进制位数,单位是bit/s(bit per second)。
例如:波特率Baud=2400bit/s,就是每秒传送2400个二进制位。波特率在串行接口异步通信中是一个由用户决定的保证通信可靠的重要参数。
(3)串行接口控制寄存器SCON设置
串行接口控制寄存器SCON如下:
SM0和SM1是串行接口工作模式选择位,共有4种模式,见表4-8。
表4-8 串行接口工作模式选择
SM2是多机通信使能位,通常设为0。
REN允许接收位。由软件设置,REN=1,允许接收;REN=0,禁止接收。
TB8发送数据的第9位,可以由软件置“1”或置“0”,也可以作为奇偶校验位。
RB8接收数据的第9位。
TI发送结束标志。当TI由0变为1时,表示SBUF缓冲区一帧数据发送结束,可以作为查询标志,也可以作为中断申请标志,但TI必须由软件清“0”,准备下一次发送。
RI接收结束标志。当RI由0变为1时,表示SBUF缓冲区一帧数据接收结束,可以作为查询标志,也可以作为中断申请标志,RI由软件清“0”。
(4)通信格式
PC与单片机通信均采用异步通信方式,即非同步接收发送(Universal Asyn-chronous Receiver Transmitter,UART)。其通信格式如图4-16所示。
8位UART中,起始位(1)+数据位(8)+停止位(1)共10位作为一帧进行传送。一般异步通信按方式1(即8位UART)进行。传送过程中的数据校验按传送字节的校验和进行检验。
图4-16 异步通信格式
SCON的设置如下:
作为发送端:SCON=0100 0000B=0x40,方式1,8位UART,无奇偶位。SM0=0,SM1=1,SM2=0,REN=0,TB8=0,RB8=0,TI=0,RI=0。
作为接收端:SCON=0101 0000B=0x50,方式1,8位UART,无奇偶位。SM0=0,SM1=1,SM2=0,REN=1,TB8=0,RB8=0,TI=0,RI=0。
(5)定时器设置
在异步通信方式中,用定时器作为波特率发生器。因而必须设置定时器T1。选用工作方式2,TL1作为工作8位计数器,TH1作为预置8位计数器。当TL1计数满溢出后,TH1预置的内容自动装入TL1内,保证连续工作。要用T1作为波特率发生器,定时器模式寄存器TMOD=0010 0000B=0x20。
(6)波特率计算
确定T1作为波特率发生器,接下来要根据波特率要求值计算出TH1/TL1的数值,再根据实际TH1/TL1值计算出实际波特率,与标准波特率的误差要≤2.5%。异步通信的波特率按PC串行接口的标准有一系列标准数值:300bit/s、600bit/s、1200bit/s、2400bit/s、4800bit/s、9600bit/s、19200bit/s、38400bit/s等。波特率越高,通信速度越快,效率就越高。但稳定性及正确性的保证就越困难。一般对单片机的数据通信要求不很高,用串行接口即可达到,一般为2400~9600bit/s。下面按步骤进行波特率计算:
波特率计算公式:
Buad=(2smod/32)(fosc/12(256-n)) (4-1)
式中,smod是SFR中的PCON寄存器的PCON.7位,复位后PCON.7=0。若计算需要,也可设为1;fsoc是MCU的晶体振荡频率,取fsoc=6MHz=6×106Hz;n是TH1(TL1)定时常数。
1)若设Baud=2400,则n=256-(2smodfsoc)/(12×32×Baud)
n=256-(20×6×106)/(12×32×2400)(www.chuimin.cn)
n=256-6.5=249.5
因定时常数必须为整数,所以取n=249,将n代入式(4-1),反算B:
B=(20×6×106)/12×32×(256-249)=2232
与标准波特率2400的误差为
α=(2400-2232)/2400=7% 负误差
此误差超出要求的范围。
2)设smod=1,PCON=10000000B=80H,重新计算n:
n=256-(2smodfosc)/(12×32×Baud)
n=256-(21×6×106)/(12×32×2400)
n=256-13=243
将n代入式(4-1),反算Baud:
Baud=(21×6×106)/12×32×(256-243)=2403
与标准波特率2400的误差:
α=(2403-2400)/2400=0.125% 正误差
此误差在要求的范围。因而,取smod=1,PCON=1000 0000B=0x80是合适的。TL1=TH1=0xF3。
3)在单片机的晶体振荡器中,常看到fosc=11.0592MHz,为何取这个数值呢?因为这个晶体振荡器数值精确地对应波特率Baud=9600bit/s。
n=256-3=253 smod=0
Baud=(20×11.0592×106)/12×32×(256-253)=9600TL1=TH1=253=0xFD即可满足要求。
4)串行接口数据发送与接收过程。对工作方式1、2、3只是数据传输的帧格式不同,过程机制是相同的。
(7)通信设置
确定SCON。若用工作方式1,发送和接收有效。SCON=0101 0000B,REN=1。
确定TCON。用工作方式2作为波特率发生器。TCON=0010 0000B。
按确定的波特率计算TL1/TH1(TL1=TH1)。
令TR1=1,启动波特率发生器。
数据送ACC。
ACC送SBUF,MCU立即开始从串行接口发送数据,直到TI=1表示一帧数据发送结束TI清0。
查询RI是否为1,若为1,表示一帧数据接收完成。RI清0,SBUF送ACC,转数据处理。注意,串行口的SBUF作为发送和接收共用的缓冲区,波特率发生器只能用定时器T1。
2.【例4-47】 串行接口自发自收编程
U1的串行接口TXD(P3.1)与RXD(P3.0)连接,进行自发自收。接收的数据在P1口以二进制灯显示结果。
(1)编程
(2)编译
(3)执行
在实验机STC89C51RC芯片的10及引脚11用杜邦线进行连接,如图4-17所示。机器上电执行程序,应在P1口显示1000 1001B=0x89。
(4)程序点评
本例验证了8051本身的串行收发程序。8051串行接口设有一个SBUF寄存器(Series Buffer),只要将要发送的数据传送到SBUF内,即自动启动发送过程。可以立即检测RI的状态。若RI=0,则继续等待接收。若RI=1,则表示已收到PC发来的数据,可以将SBUF内容进行处理。
有关零起点学习单片机多语言编程的文章
8051系列单片机内部集成的串行通信接口全称为“通用异步收发器”,它既可作异步传输使用,也可作同步移位寄存器使用,还可用于数据的组网通信。图9-7 8051系列单片机通用异步收发器的内部结构UART工作时,定时器T1用于产生通信需要的时钟,控制寄存器用于对串行口的工作状态进行相应的监控和设置。......
2023-11-17
使用其他波特率需要在系统块内设置,并下载到PLC中才能生效。用PC/PPI电缆连接PC和PLC,将PLC前盖内的模式选择开关设置为STOP,给PLC上电。图2-25 选择编程计算机通信口图2-26 计算机正在与PLC通信5)在保证COM口设置准确、通信电缆完好无损的前提下,通信过程结束后,编程计算机肯定能搜索到与之连接的PLC的地址号、CPU规格等,如图2-27所示。......
2023-06-26
电平转换电路如图6-29所示。电平转换电路是微机控制器(单片机)与上位机(PC机)之间的通信接口电路,由电平转换芯片N2和RS232接口X2、X3构成。MAX232是专为RS232标准串口设计的,作用是将单片机输出的TTL电平信号转换成上位机能接收的232电平的信号,或者是将上位机输出的232电平的信号转换为单片机能接收的TTL电平的信号,从而实现单片机与上位机之间的通信。......
2023-06-26
8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。方式1为波特率可变的10位异步通信接口方式。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送一帧信息后,置位中断标志TI,其过程与方式1相同。方式3为波特率可变的11位UART方式。......
2023-11-04
注意:进行单片机电子系统设计时,时钟频率一般选用11.05926MHz时,可以获得标准的波特率,所以51单片机选用这个看起来很“怪”的晶振。因为方式0和2波特率是固定传输,方式1和3波特率是可变的,表3-15给出方式1和方式3常用波特率设置。表3-15 常用波特率设置表单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232方式的通信。......
2023-11-04
1.生产厂商常见的单片机生产厂商有Intel公司、Motorola公司、Philips公司、Atmel公司、Zilog公司、NEC公司、MicroChip公司、ADI公司、Epson公司、NS公司、AMD公司、WinBond公司、Scenix公司、Toshiba公司、Fujitsu公司、Samsung公司等。2.单片机系列常见的单片机系列有Intel公司的MCS-51、MCS-96/98系列,Motorola公司的68HC05、68HC5X、68HC12、68HC16、683XX系列,Philips公司的80C5X系列,Atmel公司的AT89系列,Zilog公司的Z8、Z86系列,ADI公司的MC-6801系列,MicroChip公司的PIC16CX、PIC16FX、PIC17CX、PIC18CX系列,NEC公司的μPD7800系列,Toshiba公司的MB8900、MB90系列等。......
2023-11-17
相关推荐