51单片机系列(串口理解)

 串口,通信方式的一种。串口的数据发送接受单位为字节,一个字节即为8位二进制数。对一个字节进行发送时,为一位一位的发送,先低位后高位。例如十进制的9,对其发送时,首先将其转化为二进制0000 1001。然后按照从低位到高位的发送顺序为1001 0000。当我们在示波器或是在Protues仿真中可以看到单片机的I/O口波形为51单片机系列(串口理解)_第1张图片

第一位为0(起始位),最后一位1(结束位)。总共有十位。

当单片机进行数据发送时,I/O口会发出上述的波形(中间的八位高低电平代表数据),每发送一个数据会有一个上述的波形在I/O口中出现。

当单片机进行数据接收时,I/O口也会有一个上述的波形出现,单片机对该波形进行读取,就可以读到数据。但问题来了,单片机在读取的时候,每间隔多长时间来进行一次读取呢?这个时间不能大于或者小于波形中高低电平的时间,负责就会错乱。

所以接收和发送方,在开始通信之前,就必须约定好,波形中高低电平的持续时间。这个持续时间就是串口通信中的重要概念之一————————波特率。

波特率就是单片机发送二进制数据位的速率,发送一位二进制的持续时间就是1/波特率。


利用单片机I/O口模拟串口通信,可以更加深入的理解其原理。上述的数据波形图,不一定要用单片机来产生,用波形发生器等等都可以,在读取数据的时候,用肉眼也可以,只要你知道高低电平代表的意思就好。

上述就是串口通信的基本原理,下来再结合51芯片手册,理解各种寄存器即可。


51单片机中,有两个SBUF寄存器,这两个寄存器共用一个地址,这两个寄存器一个是只读(也叫接收寄存器),一个是只写(发送寄存器)。当51单片机的I/O口,一旦检测有下降沿时,就会启动接收模块(发送方先发送0这个起始位)。经过模块之后,执行

DAT=SBUF;   //

这个语句,就会读出接收到的数据。  对于模块的具体运作方式,看芯片手册上面有非常详细的介绍。


    




你可能感兴趣的:(51单片机)