1 / 91

单片机原理及其应用

单片机原理及其应用. (Principle and Application of Microcontroller). 第 1 章 概述 第 2 章 MCS-51 单片机硬件结构 第 3 章 MCS-51 寻址方式和指令系统 第 4 章 MCS-51 汇编程序设计 第 5 章 中断系统 第 6 章 定时器 / 计数器及串行口 第 7 章 存储器扩展 第 8 章 接口电路扩展 第 9 章 应用举例. 6.1 定时 / 计数器结构特点及控制 6.2 串行通信及其接口. 第 6 章 定时器 / 计数器、及串行口. 6.2.1 概述

nieve
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. 单片机原理及其应用 (Principle and Application of Microcontroller)

  2. 第1章 概述 第2章 MCS-51单片机硬件结构 第3章 MCS-51寻址方式和指令系统 第4章 MCS-51汇编程序设计 第5章 中断系统 第6章 定时器/计数器及串行口 第7章 存储器扩展 第8章 接口电路扩展 第9章 应用举例

  3. 6.1 定时/计数器结构特点及控制 6.2 串行通信及其接口 第6章 定时器/计数器、及串行口

  4. 6.2.1 概述 6.2.2 MCS-51的串行口 6.2.3 串行口的编程 6.2串行通信及其接口

  5. 串行通信是将字符数据的每位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。串行通信是将字符数据的每位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。 从接收方式来说,串行通信有两种方式: 异步通信方式、同步通信方式。 6.2.1 概述

  6. 一、 串行口的结构 二、 串行口的工作方式 三、 波特率的计算 6.2.2 MCS-51的串行口

  7. 一、 串行口的结构 下图是简化的串行口结构示意图。串行口有两个独 立的发送、接收缓冲器SBUF。可同时发送与接收数 据。发送缓冲器只写不能读,接受缓冲器只读不能 写。要注意的是它们共用一个SFR地址(99H), 也就有 相同缓冲器名:SBUF

  8. SM0 SM1 SM2 REN TB8 RB8 TI RI 9F 9E 9D 9C 9B 9A 99 98 D7 D6 D5 D4 D3 D2 D1 D0 SCON 位地址 1.串行口控制寄存器SCON SCON的字节地址为98H,可位寻址。格式如图所示。 SM0,SM1:选择串行口4种工作方式。

  9. TI:发送中断标志,发送一帧结束,TI=1,必须软件清零。TI:发送中断标志,发送一帧结束,TI=1,必须软件清零。 RI:接收中断标志,接收一帧结束,RI=1,必须软件清零。 REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。 TB8:发送的第9位数据位,可用作校验位和地址/数据标识位。 RB8:接收的第9位数据位或停止位。 SM2:多机通信控制位(接收控制)。 方式0:SM2=0。 方式1:一般SM2=0;若SM2=1,接收到停止位后,才激活RI。 方式2,3: SM2=1, 只有接收到 RB8=1, 数据才进入SBUF,并使RI=1。 若RB8=0,数据丢弃。 SM2=0, 不管RB8是何值,数据都进SBUF, 并使RI=1。 SM0 SM1 SM2 REN TB8 RB8 TI RI 9F 9E 9D 9C 9B 9A 99 98 D7 D6 D5 D4 D3 D2 D1 D0 SCON 位地址

  10. PCON SMOD D7 D6 D5 D4 D3 D2 D1 D0 2.特殊功能寄存器PCON 其字节地址为87H,没有位寻址功能。 PCON的格式如图所示,其中与串行接口有关的只有 D7位SMOD。 PCON格式 SMOD=1 使波特率加倍。

  11. 二、 串行口的工作方式

  12. 1.方式0 方式0是同步移位寄存器输入方式,用来扩展并行口。不用 于通信。8位数据为一帧,无起始位和停止位。 1)方式0发送 CPU写入发送缓冲器SBUF一字节数据,产生一个正脉冲,串 口开始从低位起,以fosc/12的固定波特率从RxD输出数据,同 时在TxD上出现同步移位时钟。8位数据发完后,置位TI。

  13. 方式0应用 外接74LS164(串入并出移位寄存器)扩展并行输出口 方式0发送时,串行数据由P3.0(RXD端)送出, 移位脉冲由P3.1(TXD端)送出。 在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从 P3.0串行移入74LS164中。

  14. 2)方式0接收 当CPU向SCON写入控制字(方式0,REN=1,RI=0), 产生一个正 脉冲,串口开始以fosc/12的固定波特率从RxD接受数据, 同时 TxD发出移位脉冲信号,作为外接芯片的移位时钟。8位数据收 完后,置位RI。

  15. 方式0应用 扩展74LS165(并入串出移位寄存器)作为并行输入口 并行数据输入:S/L端由高到低跳变时,并行数据置入寄存器; 串行数据输出:当S/L=1,且时钟禁止端(第15脚)为低电平 时,TXD移位脉冲作用在CP端,数据由右向左方向移动,以串 行方式进入RXD,进而入串行口的接收缓冲器中。

  16. 2. 方式1—可变波特率8位异步收发方式 方式1的一帧数据为10位。波特率可变: • 方式1发送 • CPU写入发送缓冲器SBUF一字节数据,内部 /SEND 变低, • 串口开始从数据低位起,以TX时钟波特率从TxD输出数据,即 • 每经过一个TX时钟,TxD上输出一个数据位。8位数据发完后, • 置位TI,/SEND 信号失效。 启动发送过程 MOV SBUF, A 发送完时,TI=1

  17. 2)方式1接收 CPU向SCON写入控制字(方式1,REN=1,RI=0),串口开始从 RxD检测负跳变。出现负跳变后,位检测采样器启动,以波特 率16倍的速率采样RxD。在7,8,9三次脉冲处采样,并以三中 取二确定起始位。起始位到了后,以同样的方法接收其它数据。 读转换结果 If RI { MOV A, SBUF } 一帧数据收到后先放在移位寄存器中,满足下列条件,数据 才进SBUF,并置位RI。 ① RI=0, 说明接收SBUF空。 ② SM2=0 或 SM2=1且收到的停止位=1(第九位=1) 。

  18. 3.方式2 — 固定波特率9位异步收发方式 方式2是9位异步收发方式,每帧数据均为11位。在8位数据后 加了可程控的第九位数据,可用于多机通信。波特率固定为: • 方式2发送 • 按通信协议设置TB8 (奇偶校验或地址/数据标志), CPU写 • 入发送缓冲器SBUF一字节数据,启动发送过程。串口自动把 • TB8装到第九位数据位,逐位发出,完毕,置位TI。

  19. 【例6-11】(7-1) 方式2发送在双机通信中的应用 通信检错采用偶校验,放在TB8中发送。用第二组工作寄 存器区的R0作为发送数据指针。下面是发送中断服务程序: PIPTI: PUSH PSW PUSH A SETB RS1 ;选第二组寄存器 CLR RS0 CLR TI ;清发送标志 MOV A, @R0 ;取数据 MOV C, P ;奇:P=1, 偶:P=0 MOV TB8, C ;校验位送TB8 MOV SBUF, A ; 数据进SBUF, 启动发送 INC R0 ;调整指针 POP A POP PSW RETI

  20. 2)方式2接收 当CPU向SCON写入控制字(方式2,REN=1,RI=0), 串口开始从 RxD检测负跳变。出现负跳变后,位检测采样器启动,以波特 率16倍的速率采样RxD。在7,8,9三次脉冲处采样,并以三中取 二确定起始位。起始位到了后,以同样的方法接收其它数据。 一帧数据(11位)收到后先放在移位寄存器中,满足下列条 件,8位数据才进SBUF,并置位RI。 ① RI=0, 说明接收SBUF空。 ② SM2=0 或 SM2=1且收到的第九位数据RB8=1 (地址)。

  21. 【例6-12】(7-2) 方式2接收在双机通信中的应用 通信检错采用偶校验,对RB8中的校验位作偶校验处理。 选用第一组工作寄存器区的R0作为接收数据指针。下面是接 收中断服务程序:

  22. PIRI: PUSH PSW PUSH A SETB RS0 ;选第一组寄存器 CLR RS1 CLR RI ;清接收标志 MOV A, SBUF ;从接收缓冲区取数据 MOV C, P ; 获得接收数据的奇偶性 JNC L1 ;偶数个‘1’,转查RB8 JNB RB8, ERP ; 奇数个‘1’,奇校验错处理 AJMP L2 ;奇偶性正确 L1: JB RB8, ERP ; 偶校验错,转出错处理 L2: MOV @R0, A ;存接收的数据 INC R0 POP A POP PSW RETI

  23. 4.方式3 — 固定波特率9位异步收发方式 方式3和方式2一样可发送或接收11位数据,一个起始位(0),8个数据位(低位在先),附加第9个数据位(可编程控制位)及一个停止位(1)。 方式3和方式2通信波特率不同,方式2的波特率是固定的。 方式3的波特率和方式1类似,可以有多种选择,由定时器T1或T2的溢出率经分频得到。为避免反复对T1装入初值,常选用方式2,此时T1计数器为8位,当需要较高波特率时,才选用其他工作方式。 波特率=(2SOMD/32)*T1溢出率

  24. 三、 波特率的计算 波特率的定义:串口每秒钟发送(接收)的位数。 方式0和方式2是固定波特率: 方式0 波特率 = fosc/12 , fosc=12MHz, 波特率为1Mb/s 方式2 fosc=12MHz, SMOD=0, 波特率为187.5kb/s, SMOD=1, 波特率为375 kb/s。 方式1, 3的波特率是可变的。设用T1作波特率发生器: 波特率=(2SOMD/32)*T1溢出率

  25. T1作波特率发生器,波特率计算公式为: 其中,k为T1计数器的位数,取决于T1的工作方式,可以是 13(方式0)、16(方式1)和 8(方式2或3)。 T1作波特率发生器,最常用的是方式2。

  26. 波特率计算 【例6-13】(7-3) 用T1方式2作波特率发生器,波特率为4800b/s。晶振频率12MHz 取SMOD=0 实际波特率 4460b/s, 误差较大。晶振频率取11.0592MHz, 可得精确的波特率(X=250)

  27. 串行口初始化编程格式: SIO: MOV SCON,#控制状态字;写方式字且TI=RI=0 (MOV PCON,#80H) ;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#Y ) ( SETB TR1) ( SETB EA) ( SETB ES) ;开串行口中断 四、串行口简单应用

  28. 发送程序:先发送一个字符,等待TI=1后再发送下一个字符。发送程序:先发送一个字符,等待TI=1后再发送下一个字符。 1.查询方式发送: TRAM:MOV A,@R0 ;取数据 MOV SBUF,A ;发送一个字符 WAIT: JBC TI,NEXT ;等待发送结束 SJMP WAIT NEXT:INC R0 ;准备下一次发送 SJMP TRAM 如何停止发送?

  29. 2.中断方式发送: ORG 0023H ;串行口中断入口 AJMP SINT MAIN: … ;初始化编程 TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送第一个字符 H1: SJMP H1 ;其它工作 SINT: CLR TI ;中断服务程序 INC R0 MOV A,@R0 ;取数据 MOV SBUF,A ;发送下一个字符 RETI 如何停止发送?

  30. 接收程序:REN=1、RI=0, 等待接收,当RI=1,从 SBUF读取数据。 1.查询方式接收: WAIT: JBC RI,NEXT ;查询等待 SJMP WAIT NEXT: MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 ;准备下一次接收 SJMP WAIT 如何停止接收?

  31. 2.中断方式接收: ORG 0023H AJMP RINT MAIN: … ;初始化编程 H1: SJMP H1 ;其它任务 RINT: CLR RI ;清中断标志 MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 RETI 如何停止接收?

  32. 一、 硬件连接 二、 双机通信 三、 多机通信 6.2.3 串行口的应用与编程

  33. RxDB TxDB 一、 硬件连接 两台单片机直接通信

  34. 两台8751互传数据

  35. 单片机与RS232C接口 (1)集成电路电平转换芯片MC1488,1489 (2)集成电路电平转换器Max232。 (3)分立元件电平转换电路。

  36. 两台8031采用RS232C总线通信 8031单片机和PC机通过RS232C通信

  37. RS-232C双机通信接口电路

  38. 单片机与PC机通信

  39. RS-422A双机通信接口 RS-232C明显缺点:传输速率低、通信距离短、接口处信 号容易产生串扰等。 RS-422A标准与RS-232C的主要区别:收发双方的信号地 不再共地。RS-422A采用了平衡驱动和差分接收的方法。用 于数据传输的是两条平衡导线。

  40. RS-485双机通信接口 RS-422A双机通信需四芯传输线,这对长距离通信很不经济,故在工业现场,通常采用双绞线传输的RS-485串行通信接口,很容易实现多机通信。 RS-485是RS-422A的变型,它与RS-422A的区别:RS-422A为全双工,采用两对平衡差分信号线;RS-485为半双工,采用一对平衡差分信号线。

  41. RS485用差分信号传送。+2V~+6V表示“1”, - 6V~- 2V表示“0”。 DI=1,VA>VB, DI=0, VA<VB

  42. 【例6-14】甲乙双方以串口方式1(8位数据)发送/接收数据块。【例6-14】甲乙双方以串口方式1(8位数据)发送/接收数据块。 通信协议: 波特率--4800b/s 应答--甲机发呼叫信号“06H” 乙机发应答信号“00H”表示可以接收 “05H” 暂不接收 数据格式 字节数 数据1 数据2 …… 数据n 累加校验和 乙机计算的累加和与接收的累加和相同时,发“0FH” 否则发“F0H”,甲机收到“F0H”则重发。 二、双机通信

  43. 1. 甲机发送 甲机将30H开始10个单元内容发送给乙机,以查询 方式发送。 晶振11.0592MHz, T1方式2的初值是FAH R1 : 数据区指针 R7: 数据长度 R6: 累加和

  44. R1

  45. ORG 0H START: MOV TMOD, #20H ;T1方式2 MOV TH1, #0FAH ;4800b/s MOV TL1, #0FAH MOV SCON, #50H SETB TR1 AGAIN: CLR P1.0 CLR TI CLR RI MOV R1, #30H ;数据区首地址 MOV R7, #10 ;10个数据 MOV R6, #0 ;累加和清0 TX_ACK: MOV A, #06H ;发呼叫“06H" MOV SBUF, A WAT: JNB TI, WAT CLR TI

More Related