1 / 48

项目五 串行口对信号灯的控制与实现

项目五 串行口对信号灯的控制与实现. 任务一 串行口对信号灯的控制与实现. 任务二 串行通信对信号灯的控制与实现. 任务一 串行口对信号灯的控制与实现. ( 1 )硬件设备: 单片机开发系统、 PC 机等;. ( 2 )电路原理:电路原理如下图所示。. ( 3 )任务目的. 1 )理解通信含义; 2 )掌握串行通信实现要求及应用; 3 )进一步掌握定时器 / 计数器的应用。. ( 4 )任务要求. 利用单片机的方式 0 实现 8 位 LED 灯的流水控制。. ( 5 )查询方式程序清单. ORG 0000H

sally
Download Presentation

项目五 串行口对信号灯的控制与实现

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 项目五 串行口对信号灯的控制与实现 任务一 串行口对信号灯的控制与实现 任务二 串行通信对信号灯的控制与实现

  2. 任务一 串行口对信号灯的控制与实现 (1)硬件设备:单片机开发系统、PC机等; (2)电路原理:电路原理如下图所示。

  3. (3)任务目的 1)理解通信含义; 2)掌握串行通信实现要求及应用; 3)进一步掌握定时器/计数器的应用。 (4)任务要求 利用单片机的方式0实现8位LED灯的流水控制。

  4. (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 (延时子程序省略)

  5. (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 ;启动串行口

  6. HERE: SJMP HERE ;等待中断 PS0: CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED MOV SBUF,A ;再一次串行输出 RETI END 实现上述控制需要哪些新的知识?

  7. 1. 串行通信基础知识 (1) 什么是串行通信? 通信方式 微机 微机 微机 微机 GND GND 串行通信 并行通信 数据的各个位同时传送 数据一位一位顺序传送

  8. 1. 串行通信基础知识 串行通信优、缺点 串行通信优点: 节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出。 串行通信缺点: 传送速度比并行通信慢。

  9. 数据····· 同步字符SYNC 数据 数据 A站 发收 发收 B站 A站 B站 发 收 B站 A站 发收 发收 异步方式字符R波形 (2) 串行通信分类与制式 同步通信 串行通信 异步通信 单工制式 串行的通信制式 半双工制式 全双工制式

  10. 2. MSC-51的串行接口 (1)概述 • 有一个可编程全双工串行通信接口(UART) (Universal Asychronous Receiver/Transmitter) • 管脚:TXD(P3.1)、RXD(P3.0) • 可同时发送、接收数据(Transmit/Receive) • 有四种工作方式,帧格式有8、10、11位。 • 波特率(Baud rate)可设置 波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。

  11. (2) MSC-51串行口结构 A MSC-51串行口结构框图 返回

  12. (3)MSC-51串行口寄存器 • SBUF——串行口数据缓冲器 • 共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。 • SCON——串行口控制寄存器 • PCON——电源及波特率选择寄存器

  13. SBUF(99H)用来存放将要发送和接收到的数据。 执行指令 MOV SUBF,A 表示将累加器A中数据写入发送缓冲寄存器,同时启动串行口发送操作。 执行指令 MOV A, SUBF 表示将接收到的数据从接收缓冲寄存器读出数据送累加器A。 链接结构图

  14. 串行口控制寄存器SCON SCON (98H) 多机通信 1:允许 0:不允许 接收控制 1:允许 0:不允许 接收中断标志 接收数据第9位 发送中断标志 发送数据第9位 工作方式控制

  15. (3)MSC-51串行口寄存器 电源及波特率选择寄存器PCON PCON (87H) 方式1、2、3的波特率选择位 SOMD=1,波特率加倍

  16. (4)MSC-51串行口工作方式

  17. ① 工作方式0 在方式0下,串行口为8位同步移位寄存器输入/输出方式,常用于扩展I/O接口。 数据格式如下:

  18. 在方式0下,波特率固定为系统振荡频率的1/12,即:在方式0下,波特率固定为系统振荡频率的1/12,即: 方式0的波特率=fosc/12

  19. TXD (P3.1) 发送SBUF(99H) fosc ÷12 TXD (P3.2) 输入移位寄存器 串行口方式0波特率的产生

  20. 串行口扩展并行输出口(发送操作) 扩展并行输出口

  21. 串行口扩展并行输入口(接收操作) RI=0的条件,执行SETB REN 启动接收。

  22. 实例1. 串行口对信号灯的控制与实现 (1)电路原理:电路原理如下图所示。 请想一想:为什么?如何编写控制程序?

  23. (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 (延时子程序省略)

  24. (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 ;启动串行口

  25. HERE: SJMP HERE ;等待中断 PS0: CLR TI ;清TI标志位,为下次做准备 ACALL DELAY ;调延时 RL A ;左移至下一位LED MOV SBUF,A ;再一次串行输出 RETI END 你懂了吗?

  26. 课堂练习 (1)上例中如何实现对LED灯的高、低4位闪 烁的控制。 (2)LED灯的控制状态还可以改变为其它方式吗?

  27. 思考 举一实例:通过使用串行口扩展 74LS165芯片实现并行输入。

  28. (4)MSC-51串行口工作方式 ② 工作方式1 方式1为10位异步通信接口,真正用于串行发送或接收。TXD和RXD分别用于发送与接收数据。 一帧数据格式为:

  29. 发送操作 当TI=0时,执行数据写入发送缓冲器SBUF指令,就启动了串行口数据的发送操作。 MOV SBUF, A 启动发送后,数据依次从TXD端发出,一帧数据发送完毕,由硬件置位TI。

  30. 接收操作 当RI=0,同时 REN=1(由软件置位)。RXD端由1变为0(起始位),启动接收。8位数据进入缓冲器SBUF,且置RI=1。 MOV A, SBUF

  31. ③ 工作方式2、3 方式2和方式3均以11位数据为一帧,附加位第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。 其一帧数据格式为:

  32. 方式2的波特率,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,则波特率为fosc的1/32。即方式2的波特率,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,则波特率为fosc的1/32。即 方式2的波特率=

  33. 串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD位的值同时决定。即串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD位的值同时决定。即 T1溢出率 方式1、方式3的波特率= 其中,T1溢出率为一次定时时间的倒数,即 T1溢出率= 其中,X为计数器初始值,M=8、13、16。

  34. 例1. 设两机通信的波特率为2400波特,若fosc=6MHZ,串行口工作在方式1,试计算定时器T1的初始值X。 解:用定时器T1作波特率发生器时,通常选定时器工作在方式2,但要禁止T1中断,以免产生不必要的中断带来频率误差。

  35. 若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。

  36. 任务二 串行通信对信号灯的控制与实现 (1)任务目的: 1)理解通信含义; 2)掌握串行通信实现要求及应用; 3)进一步掌握定时器/计数器的应用。 (2)任务要求: 利用单片机的通信方式实现对信号灯的控制 。

  37. 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的双机异步通信

  38. (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

  39. RD-K: MOV A, P1 ;读入开关状态 MOV SBUF, A ;发送数据 WAIT: JBC T1,RD-K ;判断发送完成否?发送完成转移 AJMP WAIT ;等待发送完成 END

  40. 乙机接收程序 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计时

  41. JSHOU: JB RI,KZ-LED ;判断是否接收到数据?有转移 JMP JSHOU ;等待接收 KZ-LED: MOV A ,SBUF ;接收数据送A MOV P1,A ;输出数据P2口 CLR RI ;清除RI AJMP JSHOU END

  42. (5) 控制过程的实现 1)通过双机通信实现对信号灯的控制。 2)掌握单片机串行接口的基本应用。

  43. 异步通讯 例2. 设计一个发送程序,将片内RAM中的30H~3FH单元中的数据串行发送。串行口设定为工作方式2,TB8控制位作奇偶校验位。 ⑴ 分析题意 根据串行口工作方式2的特点,在数据写入SBUF之前,应先将数据的奇偶标志P写入SCON中的TB8,因此发送数据的第9位便可作奇偶校验用。

  44. 开始 建立地址指针R0 设置计数器R7初值 取数据送A 奇偶校验位送TB8 启动发送 N TI=1? Y 清TI位 修改地址指针:(R0)+1 N (R7)-1=0? Y 结束 ⑵ 发送程序流程图

  45. ⑶ 查询方式的程序清单 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 ;发送数据

  46. HERE: JBC TI,CONT ;清中断标志转下一数据 AJMP HERE ;等待中断标志TI变1 CONT: INC R0 DJNZ R7,LOOP ;未发送完,继续 SJMP $ END

  47. 动手做: (1)通过串行口实现对信号灯的控制。 (2)双机通信实现数据传送。

More Related