MCS-51单片机的串行口在实际使用通常用于三种情况:利用方式0扩展并行I/O接口;利用方式1实现点对点的双机通信;利用方式2或方式3实现多机通信。
例7.1和例7.2为大家介绍了利用方式0扩展并行I/O接口的实例,下面介绍利用方式1实现点对点双机通信。如图7.8所示,仿真电路中的两片单片机振荡器频率均配置为11.0592MHZ,二者的串口均工作于模式1,甲、乙两片单片机完成如下双向控制任务:
(1)甲机按键依次按下时可分别控制乙机的VD1点亮、VD2点亮、VD1与VD2同时点亮及同时熄灭,且甲机的LED与乙机的LED同步动作。
(2)乙机按键依次按下时将向甲机发送数字0~9,甲机接收后在共阳数码管上显示。
1.程序设计与调试
(1)RS-232接口及MAX232驱动器简介。
RS-232是使用最为广泛的一种串行接口,它被定义为一种在低速率串行通信中增加通信距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通信。一个完整的RS-232接口有22根线,采用标准的25芯接口,目前广泛使用的是9芯的RS-232接口,它的外形都是D形的对接的两个接口又分为针式和孔式两种。在连接距离上,如果通信速率低于20Kb/s时,RS-232直接连接的设备之间最大物理距离为15m。图7.9给出了标准的9针RS-232连接头实物及引脚,表7.1给出了DB9连接头中各引脚的功能说明。仿真电路中CONN-DF9连接了其中的2、3号引脚,即RXD与TXD引脚。
图7.8 双机串口双向通信电路
图7.9 标准的9针RS-232连接头实物及引脚
为了将PC的串行口RS-232信号电平(-10V,+10V)转换为单片机所用的TTL信号电平(0V,+5V),常用的串口收/发器是MAX232,图7.10给出了MAX232系列收/发器的引脚及典型工作电路。
表7.1 RS-232 DB9串口连接图针脚说明
图7-10 MAX232系列串口收/发器引脚及典型工作电路
(2)串口通信程序设计。
本例中两片单片机均工作在串口模式(10位异步通信模式),主程序首先初始化串口,其主要任务是设置生成波特率的定时器1,串口控制和中断控制,具体步骤如下:
①设置串口模式(SCON);
②设置定时器1的工作方式2(TMOD);
③设置定时器1的初值(TH1/TL1);
④启动定时器1(TR1);
⑤如果串口工作在中断方式,还必须设置IE允许ES中断,并编写中断程序。
本例双机程序中设SCON=0x50(01010000),两者都将串口设为模式1,同时允许发送与接收。由Timer1定时器控制波特率时,计算公式为:
波特率=2SMOD×晶振频率/[12×(256-TH1)×32]
程序中设TH1=TL1=0xFD(253,TL1溢出时TH1自动重新装入TL1),设PCON=0x00,(SMOD为PCON的最高位),波特率不倍增,即SMOD=0,对于11.0592MHz晶振,可计算出波特率为:
20×11059200/[12×(256-253)×32]=9600b/s
如果要根据指定的波特率求计数器初值,计算公式为:(www.xing528.com)
TH1=256-2SMOD×晶振频率/(384×波特率)
11.0592MHz这一特殊振荡器频率刚好能够在上述公式中被整除,使得运算结果为整数。
某些振荡器频率代入公式时会出现除不尽的情况,导致产生的波特率存在误差,一般要求波特率误差不能超过10%,表7.2给出了8051技术手册提供的Timer1定时器生成的常见波特率,在选用不同的振荡器频率时,可参照该表格进行配置。部分频率代入公式会出现除不尽的情况,但在表格中指定的配置下依然能够实现低速通信。
表7.2 Timer1定时器生成的常见波特率
完成上述相关配置后,启动定时器1即可启动串行通信模块工作。本例中两片单片机串口接收均工作于中断方式,因为发送一个字符或接收一个字符均会引发串口中断,故在串口中断函数内处理数据接收问题时,需要判断RI是否被硬件置位,在开始读取SBUF时,注意将RI软件清零。在发送字符时,将待发送字符放入SBUF寄存器即可启动串行输出,此时需要循环等待TI被硬件置位,当硬件置位TI时即表示一个字节发送完毕,此时同样应注意将TI软件清零。有关串口收/发功能的详细设计可参阅下面的源程序代码及相关注释语句。
参考源程序代码如下:
一、填空题
1.计算机的数据传送有两种方式,即:( )方式和( )方式,其中具有成本低特点的是( )数据传送。
2.异步串行通信的帧格式由( )位、( )位、( )位和( )位组成。
3.异步串行数据通信有( )、( )和( )共三种数据通路方式。
4.串行接口电路的主要功能是( )化和( )化,把帧中格式信息滤除而保留数据位的操作是( )化。
5.专用寄存器“串行数据缓冲寄存器”,实际上是( )寄存器和( )寄存器的总称。
6.在串行通信中,收发双方对波特率的设定应该是( )的。
7.使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定为工作方式( ),即( )方式。
二、简答题
1.概念解释:并行通信、串行通信、波特率、单工、半双工、全双工、奇偶校验。
2.假定异步通信的字符格式为一个起始位,8个数据位、2个停止位以及奇校验,请画出传送字符“T”的帧格式。
3.以8051串行口按工作方式3进行串行数据通信。假定波特率为1200bps,第九数位作为奇偶校验位,以中断方式传送数据,请编写程序。
4.比较分析串行口4种波特率的异同。
5.利用80C51串行口扩展I/O口,控制4个数码管以一定速率闪烁,画出电路并编程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。