8051系统的串口通讯及应用

发布时间:2024-01-15  

在微型计算机数字系统里,数据传输可分为并行传输与串行传输两种,并行式传输一次传输多个位(通常是8位)。因此,连接两个系统之间的传输线必须有多条,当然一次传输多个位,传输的速度比较快,但是传输用到的线数也多,线路费用相对会高,线路噪声,阻抗匹配等问题也多,所以并行式传输不适合长距离通讯。

串行式传输每次传输一个位,数据传输的速度表面上不怎么快,但连接两个系统之间,只要两条传输线即可,适合长距离的通信。实际上,目前串行端口传输速率已比并行端口输出传输速率快。

实际中考虑使用并行式传输还是串行式传输要根据数据量与环境而定。若要将8051系统的数据传至另一8051系统,则可以使用串行式数据传输。

最典型的串行式数据传输接口是RS232C,例如个人计算机的COM1、COM2接口就是属于RS232接口。

在串行式数据传输里有单工及双工之分

单工就是一条线只能有一种用途,例如输出线就只能将数据传出,输入线就只能将数据传入。

而双工就是一条线有两种用途,可传入数据也可传出数据。

若系统上只有一条线,且在同一时刻中不是进行传入数据就传出数据,则称之为“半双工”。

若在系统上有两条传输线,这两条传输线可同时进行数据输入与传出,则称之为“全双工”。

认识8051串行口

通常以每秒传输多少位(bit per second,简称bit/s)表示串行式数据传输的速率,又称为比特率(baud rate)。

通常,微控制器里的数据处理属于并行式处理。对8051而言,一次处理一个字节,也就是8个位,不管怎样,串行式数据与并行式数据之间的转换是无法避免的。

在8051里,若要把8位的并行数据传出去,只要把数据放入并行寄存器(SBUF)即可,8051就会帮我们把这些数据一个位一个位送出去。

接收串行数据也是一样,8051会把外面传入的数据,一个位一个位放入SBUF,当SBUF存满后,产生中断,即为并行数据,再将SBUF里的8位数据移做他用。

不论是接收还是发送,很明显SBUF扮演了关键性的角色,在8051中接收用的SBUF与传送用的SBUF虽然都叫做SBUF,但是它们分别是两个不同的8位寄存器。

8051串行工作模式

8051提供一个全双工的万用异步串行端口(Universal Asynchronous Receiver-Transmitter,简称UART),这个串行端口有4种工作模式(mode),使用不同工作模式其比特率各有不同,说明如下:

mode 0:

mode0工作模式是一固定比特率的位移式数据传输,其比特率为8051系统时钟脉冲的1/12,即OSC/12。若在时钟脉冲为12MHz,则其比特率为1M bit/s。

在此模式下,不管是接收还是发送,CPU的RxD引脚(P3.0)连接串行数据线,TxD引脚(P3.1)连接位移脉冲线。执行数据接收时,由TxD引脚送出位移脉冲,而由RxD引脚收下串行数据,如下图:

图片

执行数据传送时,也是依据TxD引脚所送出的位移脉冲,由RxD引脚发送串行数据:

图片

mode 1:

mode 1工作模式是以可变的比特率进行串行数据的传输,其比特率可由Timer 1来控制(若是8052还可以使用Timer 2控制比特率)。在此模式下,8051的RxD引脚连接数据源的TxD引脚,8051的TxD引脚连接目的地的RxD引脚。

在mode 1下,每个数据是由10位组成,包括起始位(start bit)、8个位的数据以及停止位(stop bit),其中第一个位就是低电平的起始位,紧接着是8位数据的bit0(LSB),bit7(MSB)之后是高电平的停止位,如下图:

图片

图片

mode 2:

mode 2工作模式是以OSC/32或OSC/64的比特率进行串行数据的传输,而其线路的连接,也是8051的RxD引脚连接数据源的TxD引脚,8051的TxD引脚连接目的地的RxD引脚。在mode 2下,每笔数据是由11位组成,包括起始位(start bit)、8个位的数据、奇偶位(parity bit)以及停止位(stop bit),其中第一个位就是低电平的起始位,紧接着是8位数据的bit0(即LSB),而bit7之后的是奇偶位,最后则是高电平的停止位:

图片

当进行数据传出时,第9个位TB8(即SCON寄存器的TB8)为奇偶位,可取自程序状态字组寄存器PSW中的P位,以达到奇偶校验的目的。当收到数据时,第9个位将直接移入SCON寄存器中RB8,而不必管停止位。

mode3:

mode3工作模式是以可变的比特率进行串行数据的传输,其比特率可由Timer 1来控制(若是8052则还可使用Timer 2控制比特率)。除此之外,mode 3与 mode 2几乎完全一样。

认识SCON串行口控制寄存器

图片

串行端口控制寄存器(serial port control register,简称SCON)是一个8位、可位寻址的寄存器,如上图其功能是设定与控制串行端口。下面是SCON各位的说明:

SM0和SM1

这两个位的功能是设定串行端口的模式:

图片

SM2

本位为多重处理器通信启用位:

mode 0时,Sm2=0;

mode 1时,若SM2=1,且收到有效的停止位,则RI=1(产生RI中断),否则RI=0;

mode 2或 mode 3时,若SM2=1,且收到的第9位为1,则RI=1(产生RI中断),若第9位为1,则RI=0。

REN

本位为串行接收启用位,说明:

REN=1,开始接收;

REN=0,停止接收;

TB8

mode 2或mode 3传送数据时,本位为第9传送位,可用软件来设置或清除。

RB8

mode 2或mode 3接收数据时,本位为第9个接收位;

mode 1时,若SM2=0,则本位为停止位;

mode 0时,本位无作用。

TI

本位为中断标识位,当中断结束时,本位并不会恢复为0,必须由软件清除。

mode 1、mode 2或mode 3时,若完成传送停止位,则本位自动设定为1,并产生TI中断。

mode 0时,若完成传送第8位,则本位自动设定为1,并产生TI中断。

RI

本位为接收中断标志位,当中断结束时,本位并不会恢复为0,必须由软件置0。

mode 1、mode2或mode 3时,若完成接收到停止位,则本位自动设定为1,并产生RI中断。

mode 0时,若完成接收第8位,则本位自动设定为1,并产生RI中断。

比特率设定

8051串行口的比特率设定方式有如下几种:

在mode 0下,比特率固定为OSC/12,不需要进行设定!完全是依照系统的时钟脉冲而定,不是软件所能改变的。

在mode 2下,其比特率可为OSC/32或OSC/64,即:

图片

其中SMOD为PCON寄存器中的bit 7:

若将SMOD设定为0,则设定采用的比特率OSC/64;

若将SMOD设定为1,则设定采用的比特率OSC/32。

以12MHz的系统为例:

图片

在mode 1或mode3下,比特率可由Timer 1(8052则还可以选择Timer 2)的溢出脉冲控制,以Timer 1采用具有自动加载功能的mode 2为例,产生的比特率为:

图片

如在11.0592MHz的系统下,若要产生19.2Kbit/s的比特率,且SMOD=1,则:

图片

得出TH1= 253 = 0xfd;

下表使用Timer 1时常用的比特率设定:

图片

8051串口应用

把8051的串行工作模式设定为mode 1,REN=1;SCON寄存器为0101 000;

在OSC=11.0952MHz下,把比特率设定为9600bit/s,根据前文所述,mode 1比特率设定由Timer 1控制,表格中也给出了TH1的值,所以SMOD=0,TH1 = 0xfd。

void uart_init(){//初始化

   TMOD = 0x20; // 定时器1,模式2(8位自动装载)

   TR1=1;//启用Timer 1

   TH1 = 0xfd; // 在Timer 1,mode 2, 11.0952MHz下,设定9600比特率

   SCON = 0x50; //uart mode1,接收使能

}



unsigned char rData;

void uart_read() // 接收

{

// 等到收到字节

   while(RI==0);

   rData = SBUF; //把接收到的字节放到rData

   RI=0; //清除RI以接收下一个字节

}



void uart_send(unsigned char sData){//发送

   SBUF=sData;

   while(TI == 0);

   TI=0;

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>