一、串口通信原理
串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而
且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输
中,得到了广泛的运用。串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:
1、波特率选择
波特率( Boud Rate)就是在串口通信中每秒能够发送的位数( bits/second)。MSC-
51 串行端口在四种工作模式下有不同的波特率计算方法。其中,模式 0 和模式 2 波特率计
算很简单,请同学们参看教科书;模式 1 和模式 3 的波特率选择相同,故在此仅以工作模式
1 为例来说明串口通信波特率的选择。
在串行端口工作于模式 1,其波特率将由计时/计数器 1 来产生,通常设置定时器工作
于模式 2(自动再加模式)。在此模式下波特率计算公式为:
波特率=(1+SMOD)*晶振频率/(384*(256-TH1))
其中,SMOD——寄存器 PCON 的第 7 位,称为波特率倍增位;
TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运
作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通
信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的
频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s 以下,晶振频率
为 12MHz,设置 SMOD=1(即波特率倍增)。则
TH1=256-62500/波特率
根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:
因此,在通信中,最好选用波特率为 1200,2400,4800 中的一个。
2、通信协议的使用
通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方
才能明白对方的意图,以进行下一步动作。假定我们需要在PC 机与单片机之间进行通信,
在双方程式设计过程中,有如下约定:
0xA1:单片机读取 P0 端口数据,并将读取数据返回 PC 机;
0xA2:单片机从 PC 机接收一段控制数据;
0xA3:单片机操作成功信息。
在系统工作过程中,单片机接收到PC 机数据信息后,便查找协议,完成相应的操作。
当单片机接收到 0xA1 时,读取 P0 端口数据,并将读取数据返回 PC 机;当单片机接收到
0xA2 时,单片机等待从 PC 机接收一段控制数据;当 PC 机接收到 0xA3 时,就表明单片机
操作已经成功。
3、硬件连接
51 单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口