480 likes | 630 Views
项目五 串行口对信号灯的控制与实现. 任务一 串行口对信号灯的控制与实现. 任务二 串行通信对信号灯的控制与实现. 任务一 串行口对信号灯的控制与实现. ( 1 )硬件设备: 单片机开发系统、 PC 机等;. ( 2 )电路原理:电路原理如下图所示。. ( 3 )任务目的. 1 )理解通信含义; 2 )掌握串行通信实现要求及应用; 3 )进一步掌握定时器 / 计数器的应用。. ( 4 )任务要求. 利用单片机的方式 0 实现 8 位 LED 灯的流水控制。. ( 5 )查询方式程序清单. ORG 0000H
E N D
项目五 串行口对信号灯的控制与实现 任务一 串行口对信号灯的控制与实现 任务二 串行通信对信号灯的控制与实现
任务一 串行口对信号灯的控制与实现 (1)硬件设备:单片机开发系统、PC机等; (2)电路原理:电路原理如下图所示。
(3)任务目的 1)理解通信含义; 2)掌握串行通信实现要求及应用; 3)进一步掌握定时器/计数器的应用。 (4)任务要求 利用单片机的方式0实现8位LED灯的流水控制。
(5)查询方式程序清单 ORG 0000H MOV SCON,#00H ;设定串行口工作于方式0 MOV A,#0FEH ;最右边一位LED先亮 OUT: MOV SBUF,A ;启动串行口 JNB TI,OUT ;查测串行输出结束否 CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED SJMP OUT ;循环 END (延时子程序省略)
(6)中断方式的程序清单 ORG 0000H LJMP MAIN ;调主程序 ORG 0023H ;串行口中断入口地址 AJMP PS0 ORG 2000H ;主程序 MAIN: MOV SCON,#00H ;串行口工作于方式0 MOV A,#0FEH ;最右边一位LED先亮 SETB ES ;允许串行口中断 SETB EA ;总中断允许 MOV SBUF,A ;启动串行口
HERE: SJMP HERE ;等待中断 PS0: CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED MOV SBUF,A ;再一次串行输出 RETI END 实现上述控制需要哪些新的知识?
… 1. 串行通信基础知识 (1) 什么是串行通信? 通信方式 微机 微机 微机 微机 GND GND 串行通信 并行通信 数据的各个位同时传送 数据一位一位顺序传送
1. 串行通信基础知识 串行通信优、缺点 串行通信优点: 节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出。 串行通信缺点: 传送速度比并行通信慢。
数据····· 同步字符SYNC 数据 数据 A站 发收 发收 B站 A站 B站 发 收 B站 A站 发收 发收 异步方式字符R波形 (2) 串行通信分类与制式 同步通信 串行通信 异步通信 单工制式 串行的通信制式 半双工制式 全双工制式
2. MSC-51的串行接口 (1)概述 • 有一个可编程全双工串行通信接口(UART) (Universal Asychronous Receiver/Transmitter) • 管脚:TXD(P3.1)、RXD(P3.0) • 可同时发送、接收数据(Transmit/Receive) • 有四种工作方式,帧格式有8、10、11位。 • 波特率(Baud rate)可设置 波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。
(2) MSC-51串行口结构 A MSC-51串行口结构框图 返回
(3)MSC-51串行口寄存器 • SBUF——串行口数据缓冲器 • 共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。 • SCON——串行口控制寄存器 • PCON——电源及波特率选择寄存器
SBUF(99H)用来存放将要发送和接收到的数据。 执行指令 MOV SUBF,A 表示将累加器A中数据写入发送缓冲寄存器,同时启动串行口发送操作。 执行指令 MOV A, SUBF 表示将接收到的数据从接收缓冲寄存器读出数据送累加器A。 链接结构图
串行口控制寄存器SCON SCON (98H) 多机通信 1:允许 0:不允许 接收控制 1:允许 0:不允许 接收中断标志 接收数据第9位 发送中断标志 发送数据第9位 工作方式控制
(3)MSC-51串行口寄存器 电源及波特率选择寄存器PCON PCON (87H) 方式1、2、3的波特率选择位 SOMD=1,波特率加倍
① 工作方式0 在方式0下,串行口为8位同步移位寄存器输入/输出方式,常用于扩展I/O接口。 数据格式如下:
在方式0下,波特率固定为系统振荡频率的1/12,即:在方式0下,波特率固定为系统振荡频率的1/12,即: 方式0的波特率=fosc/12
TXD (P3.1) 发送SBUF(99H) fosc ÷12 TXD (P3.2) 输入移位寄存器 串行口方式0波特率的产生
串行口扩展并行输出口(发送操作) 扩展并行输出口
串行口扩展并行输入口(接收操作) RI=0的条件,执行SETB REN 启动接收。
实例1. 串行口对信号灯的控制与实现 (1)电路原理:电路原理如下图所示。 请想一想:为什么?如何编写控制程序?
(2)查询方式程序清单 ORG 0000H MOV SCON,#00H ;设定串行口工作于方式0 MOV A,#0FEH ;最右边一位LED先亮 OUT: MOV SBUF,A ;启动串行口 JNB TI,$ ;查测串行输出结束否 CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED SJMP OUT ;循环 END (延时子程序省略)
(3)中断方式的程序清单 ORG 0000H LJMP MAIN ;调主程序 ORG 0023H ;串行口中断入口地址 AJMP PS0 ORG 2000H ;主程序 MAIN: MOV SCON,#00H ;串行口工作于方式0 MOV A,#0FEH ;最右边一位LED先亮 SETB ES ;允许串行口中断 SETB EA ;总中断允许 MOV SBUF,A ;启动串行口
HERE: SJMP HERE ;等待中断 PS0: CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED MOV SBUF,A ;再一次串行输出 RETI END 你懂了吗?
课堂练习 (1)上例中如何实现对LED灯的高、低4位闪 烁的控制。 (2)LED灯的控制状态还可以改变为其它方式吗?
思考 举一实例:通过使用串行口扩展 74LS165芯片实现并行输入。
(4)MSC-51串行口工作方式 ② 工作方式1 方式1为10位异步通信接口,真正用于串行发送或接收。TXD和RXD分别用于发送与接收数据。 一帧数据格式为:
发送操作 当TI=0时,执行数据写入发送缓冲器SBUF指令,就启动了串行口数据的发送操作。 MOV SBUF, A 启动发送后,数据依次从TXD端发出,一帧数据发送完毕,由硬件置位TI。
接收操作 当RI=0,同时 REN=1(由软件置位)。RXD端由1变为0(起始位),启动接收。8位数据进入缓冲器SBUF,且置RI=1。 MOV A, SBUF
③ 工作方式2、3 方式2和方式3均以11位数据为一帧,附加位第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。 其一帧数据格式为:
方式2的波特率,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,则波特率为fosc的1/32。即方式2的波特率,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,则波特率为fosc的1/32。即 方式2的波特率=
串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD位的值同时决定。即串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD位的值同时决定。即 T1溢出率 方式1、方式3的波特率= 其中,T1溢出率为一次定时时间的倒数,即 T1溢出率= 其中,X为计数器初始值,M=8、13、16。
例1. 设两机通信的波特率为2400波特,若fosc=6MHZ,串行口工作在方式1,试计算定时器T1的初始值X。 解:用定时器T1作波特率发生器时,通常选定时器工作在方式2,但要禁止T1中断,以免产生不必要的中断带来频率误差。
若SMOD=0,则X=249.49≈250=0FAH;若SMOD=1,则X=242.98≈243=0F3H。若SMOD=0,则X=249.49≈250=0FAH;若SMOD=1,则X=242.98≈243=0F3H。
任务二 串行通信对信号灯的控制与实现 (1)任务目的: 1)理解通信含义; 2)掌握串行通信实现要求及应用; 3)进一步掌握定时器/计数器的应用。 (2)任务要求: 利用单片机的通信方式实现对信号灯的控制 。
VCC VCC R 1 8 × 4 . 7 K 8 × 4 . 7 K R 2 U 1 U 2 VD 1 S 1 P 1 . 7 P 1 . 0 S 2 VD 2 P 1 . 6 P 1 . 1 S 3 VD 3 P 1 . 5 P 1 . 2 S 4 VD 4 P 1 . 4 P 1 . 3 S 5 VD 5 P 1 . 3 P 1 . 4 S 6 VD 6 P 1 . 2 P 1 . 5 P 3 . 1 TXD TXD P 3 . 1 VD 7 S 7 P 1 . 1 P 1 . 6 P 3 . 0 RXD RXD P 3 . 0 VD 8 S 8 P 1 . 0 P 1 . 7 GND GND 8051 8051 (3)电路原理:串行口方式1的双机异步通信
(4)通信程序: 甲机发送程序 ORG 0000H LJMP STA ORG 0030H STA: MOV SP, #70H ;设置堆栈 MOV SCON, #50H ;设置串口工作方式1 MOV TMOD, #20H ;设置计数器1工作方式2 MOV TH1, #0E6H ;波特率为1200 MOV TL1, #0E6H ; SETB TR1 :启动定时器1计时 MOV P1, #0FFH
RD-K: MOV A, P1 ;读入开关状态 MOV SBUF, A ;发送数据 WAIT: JBC T1,RD-K ;判断发送完成否?发送完成转移 AJMP WAIT ;等待发送完成 END
乙机接收程序 ORG 0000H LJMP STA1 ORG 0100H STA1: MOV SP, #70H ;设置堆栈 MOV SCON, #50H ;设置串口工作方式1 MOV TMOD, #20H ;设置计数器1工作方式2 MOV TH1, #0E6H ;波特率为1200 MOV TL1, #0E6H ; SETB TR1 ;启动定时器1计时
JSHOU: JB RI,KZ-LED ;判断是否接收到数据?有转移 JMP JSHOU ;等待接收 KZ-LED: MOV A ,SBUF ;接收数据送A MOV P1,A ;输出数据P2口 CLR RI ;清除RI AJMP JSHOU END
(5) 控制过程的实现 1)通过双机通信实现对信号灯的控制。 2)掌握单片机串行接口的基本应用。
异步通讯 例2. 设计一个发送程序,将片内RAM中的30H~3FH单元中的数据串行发送。串行口设定为工作方式2,TB8控制位作奇偶校验位。 ⑴ 分析题意 根据串行口工作方式2的特点,在数据写入SBUF之前,应先将数据的奇偶标志P写入SCON中的TB8,因此发送数据的第9位便可作奇偶校验用。
开始 建立地址指针R0 设置计数器R7初值 取数据送A 奇偶校验位送TB8 启动发送 N TI=1? Y 清TI位 修改地址指针:(R0)+1 N (R7)-1=0? Y 结束 ⑵ 发送程序流程图
⑶ 查询方式的程序清单 ORG 1000H MAIN: MOV SCON,#80H ;设工作方式2 MOV PCON,#80H ;取波特率 MOV R0,#30H ;首地址30H送R0 MOV R7,#10H ;设置计数器初值为16 LOOP:MOV A,@R0 ;取数据并建立奇偶标志 MOV C,P ;取奇偶校验标志 MOV TB8,C ;奇偶标志送TB8 MOV SBUF,A ;发送数据
HERE: JBC TI,CONT ;清中断标志转下一数据 AJMP HERE ;等待中断标志TI变1 CONT: INC R0 DJNZ R7,LOOP ;未发送完,继续 SJMP $ END
动手做: (1)通过串行口实现对信号灯的控制。 (2)双机通信实现数据传送。