内容正文:
项目4 电子时钟控制系统
任务4.4 上位机控制电子时钟
明确任务
在很多远程监控系统中,可以通过PC机实现对外部设备进行远程监控,不需要去现场即可了解现场信息,控制现场。这在工业控制中应用很普遍。实现远程控制就需要通信技术。
工作任务:在任务3基础上,增加与PC机串口通信,通过PC机实现对时钟的时间显示监视与时间调整功能。做到对上位机下位机控制方式。
知识链接
一 串行通信技术
1.1串行通信方式
异步通信格式
波特率为每秒钟传送二进制的位数(亦称比特数),单位是bit/s。表征数据传输的速度。
同步通信格式
1.2串行通信传输方式
二 RS232串行通信
在TXD和RXD引脚上电平定义:
逻辑1(MARK) = -3V~-15V;
逻辑0(SPACE) = +3~+15V。
在RTS、CTS、DSR、DTR 和DCD等控制线上电平定义:
信号有效(接通,ON状态,正电压)=+3V~+15V;
信号无效(断开,OFF状态,负电压)=-3V~-15V。
RS-232C由美国电子工业协会EIA正式公布的,规定连接电缆和机械、电气特性、信号功能及传送过程。
2 RS232串行通信
3 AT89S51单片机串行接口
串行口数据绶冲器SBUF(99H)
接收、发送对应于同一地址(99H),但实际上是两个绶冲器
串行口控制寄存器SCON(98H)
串行口相关寄存器
(1)SM0、SM1 控制串行口方式
(2)SM2 允许方式2、3的多机通讯特征位
在方式2、3中若SM2=1表示接收的第九位数据(RB8)为0时不激活RI。
在方式1中若SM2=1只有收到有效的停止位时才会激活RI。在方式0中SM2必须为0。
(3)REN 允许串行接收位,由软件置/复位
1:允许接收
0:不允许接收(允许发送)
(4)TB8 在方式2、3中要发送的第九位数据,由软件置/复位
(5)RB8 在方式2、3中是接收的第九位数据
在方式1中若SM2=0,RB8是接收的停止位。
在方式0中不用RB8。
(6)RI 接收中断标志(必须由软件清除)
在方式0中串行接收到第8位结束时自动置位。
在方式1、2、3中串行接收到停止位的中间时置位。
(7)TI 发送中断标志(必须由软件清除)
在方式0中串行发送第8位结束时自动置位。
在方式1、2、3中串行发送停止位的开始时置位
电源控制寄存器PCON
位序 D7 D6 D5 D4 D3 D2 D1 D0
位符号 SMOD / / / GF1 GF0 PD IDL
SMOD:串行口波特率的倍增位。
在HMOS单片机中,该寄存器中除最高位之外,其他位都是虚设的。在单片机工作在方式1、方式2和方式3时,
SMOD=1,串行口波特率提高一倍。
SMOD=0,则波特率不加倍。系统复位时SMOD=0。
3.3 AT89S51串行工作方式
方式0:同步移位寄存器方式。波特率为fosc(振荡频率)的1/12。
发送时序
写入
SBUF
RXD输出
TXD
TI
D0
D1
D2
D3
D4
D5
D6
D7
写REN=1
RI=0
RXD输入
RI
接收时序
(a)
(b)
方式1,串行口被设置为波特率可变的8位异步通信接口。用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率
写入
SBUF
采样
(a) 发送时序图
TXD
数据输出
TI
D0
D1
D2
D3
D4
D5
D6
D7
停止位
起始位
RXD
输入数据
(b) 接收时序图
D0
D1
D2
D3
D4
D5
D6
D7
停止位
起始位
RI
检测
负跳变
方式2和方式3 ,9位数据异步通讯方式
波特率: 方式2:B=(2SMOD/64)×fosc 。
方式3:B=(2SMOD/32)×T1溢出率
发
送
时
序
写入
SBUF
TXD输出
TI
RXD输入
接
收
时
序
RI
D0
D1
D2
D3
D4
D5
D6
TB8
停止位
起始位
D7
D0
D1
D2
D3
D4
D5
D6
RB8
停止位
起始位
D7
检测
负跳变
3.4 串行口初始化步骤
(1)串口控制寄存器SCON的确定
根据工作方式确定SMO,SM1位,对于方式2和方式3还要确定SM2位;如果是接收端,则置位允许接收端REN;方式2和方式3发送数据,则将发送数据的第9位写入TB8中。
(2)设置波特率
在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
方式0为固定波特率:B=fosc/12
方式2可选两种波特率: B=(2SMOD /64)×fosc
方式1、3为可变波特率,用T1作波特率发生器。
B=(2SMOD/32)×T1溢出率
T1为方式2的时间常数: X = 28 - t/T
溢出时间: t= (28 -X)T = (28 -X)×12/ fosc
T1溢出率=1/t= fosc /[12×(2n -X)]
波特率B=(2SMOD /32)×fosc/[12×(28-X)]
串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。
T1选方式2: TH1=X= 28-fosc/12×2SMOD/(32×B)
T1选方式1用于低波特率,需考虑T1重装时间常数时间。
任务实施
1.学生分组,制定方案。
2.查阅资料,搭接硬件电路。
3.建立工程文件,编程编译下载程序调试。
4.注意安全。
评价总结
1.学生根据自己实施情况填写任务实施评价单。
2.组间互评,提出问题,解决问题。
3.回收元件及工具,清洁实施现场,6S标准。
4.知识整理总结。
10101001
(b) 串行通信
(a) 并行通信
计算机
或外设
计算机
计算机
计算机或外设
1
0
1
0
1
0
0
1
1
0
1
0
1
0
0
1
D0
D1
D2
D3
D4
D5
D6
D7
控制
状态
发送
接收
空闲位
奇偶
校验
停止位
起始位
8位数据
0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1 1 1 1
(b) 有空闲位字符帧
(a) 无空闲位字符帧
奇偶
校验
停止位
起始位
0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1
校验
字符2
校验
字符1
……
•
•
数据n
(a) 单同步字符帧结构
数据3
数据2
数据1
同步
字符
……
•
•
(b) 双同步字符帧结构
数据n
校验
字符1
校验
字符2
数据2
数据1
同步
字符2
同步
字符1
(c) 全双工方式
(b) 半双工方式
(a) 单工方式
数据线
发送端
发送端
地线
接收端
发送端
数据线
地线
接收
发送端
接收
发送端
数据线2
数据线1
地线
TI(发送中断)
移位
时钟
TxD串行输出
8051内部总线
RxD串行输入
RI(接收中断)
输入移位寄存器
接收SBUF(99H)
发送SBUF(99H)
$$