项目一 发光二极管 LED 点亮控制

58
项项 项项项项项 项项 项项项项项 LED LED 项项项项 项项项项

description

项目一 发光二极管 LED 点亮控制. 教学目的. 了解单片机的内部结构与主要型号; 掌握单片机引脚功能; 掌握单片机 I/O 口的基本功能; 掌握用 I/O 口实现简单控制的方法; 利用单片机的 I/O 口实现 LED闪烁 的控制。. 工作模块一 点亮一个发光二极管. 工作任务 使用 AT89S52 单片机, P1.0 引脚接发光二极管( LED )的阴极,通过 C 语言程序控制,从 P1.0 引脚输出低电平,使发光二极管点亮。 . PROTEUS 简介. - PowerPoint PPT Presentation

Transcript of 项目一 发光二极管 LED 点亮控制

Page 1: 项目一 发光二极管 LED 点亮控制

项目一 发光二极管项目一 发光二极管LEDLED 点亮控制点亮控制

Page 2: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

教学目的教学目的了解单片机的内部结构与主要型号;了解单片机的内部结构与主要型号;掌握单片机引脚功能;掌握单片机引脚功能;掌握单片机掌握单片机 I/OI/O 口的基本功能;口的基本功能;掌握用掌握用 I/OI/O 口实现简单控制的方法;口实现简单控制的方法;利用单片机的利用单片机的 I/OI/O 口实现口实现 LEDLED 闪烁的控制。闪烁的控制。

Page 3: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

工作模块一 点亮一个发光二极管工作模块一 点亮一个发光二极管工作任务工作任务

使用使用 AT89S52AT89S52 单片单片机,机, P1.0P1.0 引脚接发光引脚接发光二极管(二极管( LEDLED )的阴)的阴极,通过极,通过 CC 语言程序语言程序控制,从控制,从 P1.0P1.0 引脚输引脚输出低电平,使发光二出低电平,使发光二极管点亮。 极管点亮。

R110k

C1

30pF

C2

30pF

X1CRYSTAL

C310uF

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P1.0/T21

P1.1/T2EX2

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD 10

P3.1/TXD 11

P3.2/INT0 12

P3.3/INT1 13

P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

P2.7/A15 28

P2.0/A8 21

P2.1/A9 22

P2.2/A10 23

P2.3/A11 24

P2.4/A12 25

P2.5/A13 26

P2.6/A14 27

U1

AT89S52

D1

LED-RED

R2

220

Page 4: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

PROTEUSPROTEUS 简介简介PROTEUSPROTEUS 是英国是英国 Labcenter ElectronicsLabcenter Electronics 公司公司开发的多功能开发的多功能 EDAEDA 软件。软件。 PROTEUSPROTEUS 不仅是模不仅是模拟电路、数字电路、模/数混合电路的设计与仿拟电路、数字电路、模/数混合电路的设计与仿真平台,也是目前较先进的单片机和嵌入式系统真平台,也是目前较先进的单片机和嵌入式系统的设计与仿真平台。的设计与仿真平台。它实现了在计算机上完成从原理图与电路设计、它实现了在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成统测试与功能验证到形成 PCBPCB 的完整的电子设计、的完整的电子设计、研发过程。 研发过程。

Page 5: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

LEDLED 控制电路控制电路按照工作任务要求,点亮一个按照工作任务要求,点亮一个 LEDLED 电路是由电路是由

AT89S52AT89S52 单片机和单片机和 11个个 LEDLED 电路构成。电路构成。AT89S52AT89S52 单片机是美国单片机是美国 ATMELATMEL 公司生产的低电公司生产的低电压、高性能压、高性能 88 位单片机,具有丰富的内部资源位单片机,具有丰富的内部资源 , , 使用使用 AT89S52AT89S52 单片机无须外部存储器。 单片机无须外部存储器。

Page 6: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

用用 PROTEUSPROTEUS 设计第一个设计第一个 LEDLED 控制电控制电路路新建设计文件新建设计文件保存设计文件保存设计文件选取元器件选取元器件放置元器件放置元器件 编辑元器件 编辑元器件 放置终端 放置终端 连线 连线 属性设置 属性设置 电气规则检测电气规则检测

R110k

C1

30pF

C2

30pF

X1CRYSTAL

C310uF

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P1.0/T21

P1.1/T2EX2

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD 10

P3.1/TXD 11

P3.2/INT0 12

P3.3/INT1 13

P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

P2.7/A15 28

P2.0/A8 21

P2.1/A9 22

P2.2/A10 23

P2.3/A11 24

P2.4/A12 25

P2.5/A13 26

P2.6/A14 27

U1

AT89S52

D1

LED-RED

R2

220

Page 7: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

工作过程工作过程P1.0P1.0 引脚接发光二极管(引脚接发光二极管( LEDLED )的阴极,)的阴极, P1.0P1.0 引引脚输出低电平时,发光二极管点亮。脚输出低电平时,发光二极管点亮。

问题问题:: 为什么为什么 P1.0P1.0 引脚输出低电平,发光二极管点亮?引脚输出低电平,发光二极管点亮?通过程序控制,使通过程序控制,使 P1.0P1.0 引脚输出低电平,使发光二引脚输出低电平,使发光二极管点亮。极管点亮。

问题:问题: 程序怎么使程序怎么使 P1P1 口的引脚输出低电平?口的引脚输出低电平? 下面我们来看一下程序,就可以找到答案。下面我们来看一下程序,就可以找到答案。

Page 8: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

LEDLED 点亮程序点亮程序1.1. #include <AT89X52.H> #include <AT89X52.H> //// 包含包含 AT89X52.HAT89X52.H 头文件头文件2.2. sbit LED=P1^0; sbit LED=P1^0; ////定义定义 LEDLED是是 P1.0P1.0 引脚对应的变引脚对应的变量名量名3.3. void main (void)void main (void)4.4. {{5.5. LED=0; LED=0; // P1.0=0// P1.0=0,, LEDLED 点亮点亮 6.6. while(1);while(1);7.7. }}

Page 9: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

KEIL C51(P32)KEIL C51(P32)

Keil C51 Keil C51 是德国是德国 KeilKeil 软件公司开发的基于软件公司开发的基于 8051 8051 内核的微控制器软件开发平台,是内核的微控制器软件开发平台,是 5151 系列单片机系列单片机CC 语言软件开发系统,是目前开发语言软件开发系统,是目前开发 8051 8051 内核单内核单片机的主流工具。片机的主流工具。

Keil C51Keil C51 软件提供丰富的库函数和功能强大的集软件提供丰富的库函数和功能强大的集成开发调试工具,全成开发调试工具,全 WindowsWindows 界面。界面。 μVision2 μVision2 集成开发环境可以完成从工程建立和管理、编译、集成开发环境可以完成从工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。 完整的开发流程。

Page 10: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

用用 KEIL C51KEIL C51 编写第一个编写第一个 CC 语言程序语言程序 建立第一个建立第一个 CC 程序项目程序项目

建立工程文件建立工程文件建立源文件建立源文件加载源文件加载源文件设置工程的配置参数设置工程的配置参数进行编译和连接进行编译和连接进入调试模式进入调试模式全速运行程序全速运行程序

Page 11: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

用用 PROTEUSPROTEUS 仿真运行调试仿真运行调试 加载“点亮一个加载“点亮一个 LED.hex ”LED.hex ” 目标代码文件目标代码文件

打开打开 Proteus “Proteus “ 点亮一个点亮一个 LED”LED” 电路。电路。双击单片机“双击单片机“ AT89S52”AT89S52” ,在弹出的“编辑元件”对,在弹出的“编辑元件”对话框中单击“话框中单击“ Program File”Program File” 栏的打开按钮,在弹出的栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“点亮一个“选择文件名”对话框找到前面编译生成的“点亮一个

LED.hex ”HEXLED.hex ”HEX 文件文件 ,, 单击“打开“按钮,完成“点亮单击“打开“按钮,完成“点亮一个一个 LED.hex ”HEXLED.hex ”HEX 文件加载。文件加载。将“将“ Clock Frequency”Clock Frequency” 栏中的频率设为栏中的频率设为 12MHz12MHz ,单,单击“确定”,即可完成加载目标代码文件。 击“确定”,即可完成加载目标代码文件。

仿真运行调试 仿真运行调试 单击仿真工具栏“运行”按钮,单片机全速运行程序。 单击仿真工具栏“运行”按钮,单片机全速运行程序。

Page 12: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

认识单片机认识单片机单片机实质上是一个芯片单片机实质上是一个芯片 (P7)(P7)

C P U

存 储 器

定 时 器 / 计 数 器 中 断 系 统

P0-P3 TxDRxD

T INT

并行I/O口

串行I/O口

Page 13: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

单片机的发展单片机的发展 第一阶段(第一阶段( 1974-19761974-1976 年)为单片机初级阶段年)为单片机初级阶段

由于受工艺及集成度的限制,单片机采用双片形式,由于受工艺及集成度的限制,单片机采用双片形式,且功能比较简单。且功能比较简单。第二阶段(第二阶段( 1976-19781976-1978 年)为低性能单片机阶年)为低性能单片机阶段段

单片机采用单芯片形式,是“小而全”。单片机采用单芯片形式,是“小而全”。第三阶段(第三阶段( 1978-19821978-1982 年)为高性能单片机阶年)为高性能单片机阶段,也是单片机普及阶段段,也是单片机普及阶段第四阶段(第四阶段( 19821982 年以后)为年以后)为 1616 位单片机阶段位单片机阶段

Page 14: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

单片机的特点单片机的特点 由于单片机是在一块芯片上集成了一台微型计算由于单片机是在一块芯片上集成了一台微型计算机所需的机所需的 CPUCPU 、存储器、输入、存储器、输入 // 输出部件和时钟输出部件和时钟电路等。因此它具有体积小,使用灵活、成本低、电路等。因此它具有体积小,使用灵活、成本低、易于产品化、抗干扰能力强,可在各种恶劣环境易于产品化、抗干扰能力强,可在各种恶劣环境下可靠地工作等特点。下可靠地工作等特点。

体积小、重量轻,价格低、功能强,电源单一、功耗体积小、重量轻,价格低、功能强,电源单一、功耗低,可靠性高、抗干扰能力强;低,可靠性高、抗干扰能力强;使用方便灵活、通用性强;使用方便灵活、通用性强;目前大多数单片机采用哈佛(目前大多数单片机采用哈佛( HarvardHarvard )结构体系;)结构体系;突出控制功能的指令系统;突出控制功能的指令系统;较低的处理速度和较小的存储容量。较低的处理速度和较小的存储容量。

Page 15: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

单片机的应用单片机的应用 单片机主要应用在以下几个方面: 单片机主要应用在以下几个方面:

家用电器家用电器智能卡智能卡智能仪器仪表智能仪器仪表网络与通信网络与通信工业控制工业控制

Page 16: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

单片机的分类单片机的分类单片机可分为通用型单片机和专用型单片单片机可分为通用型单片机和专用型单片机两大类。机两大类。

通用型单片机是把可开发资源全部提供给使用通用型单片机是把可开发资源全部提供给使用者的微控制器。我们通常所说的单片机即指通者的微控制器。我们通常所说的单片机即指通用型单片机。用型单片机。专用型单片机则是为过程控制、参数检测、信专用型单片机则是为过程控制、参数检测、信号处理等方面的特殊需要而设计的单片机。号处理等方面的特殊需要而设计的单片机。

Page 17: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

按片内不同程序存储器的配置来分按片内不同程序存储器的配置来分片内带片内带 ROMROM 、片内带、片内带 EPROMEPROM 型、片内无型、片内无 ROMROM

按片内不同容量的存储器配置来分按片内不同容量的存储器配置来分5151 子系列型(子系列型(是基本型是基本型)、)、 5252 子系列型(子系列型(是增强型是增强型))

按芯片的半导体制造工艺上的不同来分按芯片的半导体制造工艺上的不同来分HMOSHMOS 工艺型、工艺型、 CHMOSCHMOS 工艺型(用工艺型(用““ C”C”表示表示))

按所能适应的环境温度范围,可划分为三个等级:按所能适应的环境温度范围,可划分为三个等级:0℃0℃~~ 70℃70℃民用级、-民用级、- 40℃40℃~~ +85℃+85℃工业级、-工业级、- 65℃65℃~~ +125℃+125℃军用军用级。级。

Page 18: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

MCS-51MCS-51 单片机单片机 MCS-51MCS-51 是美国是美国 IntelIntel 公司的公司的 88 位高档单片机系列,也是位高档单片机系列,也是我国目前应用最为广泛的一种单片机系列。我国目前应用最为广泛的一种单片机系列。 8051/80C518051/80C51 是整个是整个 MCS-51MCS-51 系列单片机的核心。系列单片机的核心。5151 系列单片机源于系列单片机源于 IntelIntel 公司的公司的 MCS-51MCS-51 系列,在系列,在IntelIntel 公司将公司将 MCS-51MCS-51 系列单片机实行技术开放政策之系列单片机实行技术开放政策之后,许多公司都以后,许多公司都以 MCS-51MCS-51 中的基础结构中的基础结构 80518051 为基核推为基核推出了许多各具特色、具有优异性能的单片机,如出了许多各具特色、具有优异性能的单片机,如PhilipsPhilips、、 AtmelAtmel 等。这样,把这些厂家以等。这样,把这些厂家以 80518051 为基为基核推出的各种型号的兼容型单片机统称为核推出的各种型号的兼容型单片机统称为 5151 系列单片机。系列单片机。

Page 19: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AtmelAtmel 公司的公司的 AT89AT89 系列单片机系列单片机 AT89AT89 系列单片机不但具有一般系列单片机不但具有一般 MCS-51MCS-51 单片机的所有特单片机的所有特性,而且其性,而且其 FlashFlash 程序存储器可以用电擦除方式瞬间擦除、程序存储器可以用电擦除方式瞬间擦除、改写改写 , , 写入单片机内的程序还可以进行加密。写入单片机内的程序还可以进行加密。

型号 快闪ROM

片内RAM

寻址范围 并行口线 串行口 中断源 定时器AT89C51 4K 128 2×64K 32 1 5 2×16

AT89C52 8K 256 2×64K 32 1 6 3×16

AT89C2051 2K 128 2×4K 15 1 5 2×16

AT89C4051 4K 128 2×4K 15 1 5 2×16

AT89S51 4K 128 2×64K 32 1 5 2×16

AT89S52 8K 256 2×64K 32 1 6 3×16

Page 20: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

单片机硬件结构单片机硬件结构 (P10)(P10)

时钟电路

CPU

ROM RAM

T0 T1

中断系统串行接口并行接口

P0 P1 P2 P3 TXD RXD INT0 INT1

定时计数器

中央处理器CPU : 8 位,运算和控制功能

内部 RAM :共256 个 RAM 单元,用户使用前 128 个单元,用于存放可读写数据,后128 个单元被专用寄存器占用。

内部 ROM :4KB 掩膜 ROM ,用于存放程序、原始数据和表格。 定时 / 计数器:两个 16 位的定时 / 计数器,实现定时或计数功能。

并行 I/O 口: 4个 8 位的 I/O 口P0 、 P1 、 P2 、P3 。

串行口:一个全双工串行口。 中断控制系统:

5 个中断源(外中断 2 个,定时 / 计数中断 2 个,串行中断 1 个)

时钟电路:可产生时钟脉冲序列,允许晶振频率 6MHZ和 12MHZ

复位电路

Page 21: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

中央处理器(中央处理器( CPUCPU ))中央处理器是单片机的核心,完成运算和控制功中央处理器是单片机的核心,完成运算和控制功

能。能。MCS-51MCS-51的的 CPUCPU 能处理能处理 88 位二进制数或代码。位二进制数或代码。

Page 22: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

内部数据存储器(内部内部数据存储器(内部 RAMRAM ))芯片中共有芯片中共有 256256个个 RAMRAM 单元单元

前前 128128 单元,作为供用户使用的寄存器和用于单元,作为供用户使用的寄存器和用于存放可读写的数据;存放可读写的数据;

后后 128128 单元被专用寄存器占用。单元被专用寄存器占用。通常所说的内部数据存储器就是指前通常所说的内部数据存储器就是指前 128128 单元,单元,

简称内部简称内部 RAMRAM 。。

Page 23: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

内部程序存储器(内部内部程序存储器(内部 ROMROM ))芯片中共有芯片中共有 4 KB4 KB个个 ROMROM 单元。单元。用于存放程序、原始数据或表格,因此,称之为用于存放程序、原始数据或表格,因此,称之为

程序存储器,简称内部程序存储器,简称内部 ROMROM 。。

Page 24: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

定时定时 // 计数器计数器两个两个 1616 位的定时位的定时 // 计数器。计数器。实现定时或计数功能,并以其定时或计数结果对实现定时或计数功能,并以其定时或计数结果对

计算机进行控制。计算机进行控制。

Page 25: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

并行并行 I/OI/O 口口44个个 88 位的位的 I/OI/O 口(口( P0P0、、 P1P1、、 P2P2、、 P3P3 ))实现数据的并行输入实现数据的并行输入 // 输出输出

Page 26: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

串行口串行口一个全双工的串行口,以实现单片机和其它设备一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。发器使用,也可作为同步移位器使用。

Page 27: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

中断控制系统中断控制系统55 个中断源,即外中断两个,定时个中断源,即外中断两个,定时 // 计数中断两个,计数中断两个,串行中断一个。串行中断一个。全部中断分为高级和低级共两个优先级别。全部中断分为高级和低级共两个优先级别。

Page 28: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AT89S52AT89S52 单片机结构单片机结构 一个一个 88位位 CPUCPU ;;一个片内振荡器及时钟电路;一个片内振荡器及时钟电路;8K8K 字节可重复擦写的字节可重复擦写的 FlashFlash 闪速存储器闪速存储器三级加密程序存储器;三级加密程序存储器;256×8256×8 字节内部字节内部 RAMRAM ;;33个个 1616 位定时器位定时器 // 计数器;计数器;3232条可编程的条可编程的 I/OI/O 线(四个线(四个 88 位并行位并行 I/OI/O 端口);端口);一个可编程全双工串行口;一个可编程全双工串行口;具有具有 88 个中断源、两个优先级嵌套中断结构。个中断源、两个优先级嵌套中断结构。

Page 29: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AT89S52AT89S52 引脚功能引脚功能 (P11)(P11) 电源线:电源线: VCC(+5V)VCC(+5V)、、 VSS(VSS(地地 ))振荡电路:振荡电路: XTAL1XTAL1、、 XTAL2XTAL2复位引脚:复位引脚: RSTRST并行口:并行口: P0P0、、 P1P1、、 P2P2、、 P3P3EAEA :访问程序存储控制信号:访问程序存储控制信号PSENPSEN :外部:外部 ROMROM读选通信号读选通信号ALEALE :地址锁存控制信号:地址锁存控制信号P3P3 口线的第二功能口线的第二功能

Page 30: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AT89S52AT89S52 引脚功能引脚功能 电源引脚电源引脚 (2(2根根 ) )

VCC(40VCC(40脚脚 )) :电源端,接:电源端,接 +5V+5V 电源。电源。 VSS(20VSS(20脚脚 )) :接地端。:接地端。

时钟引脚时钟引脚 (2(2根根 ) ) XTAL1(19XTAL1(19脚脚 )) :接外部晶振和微调电容的一端。:接外部晶振和微调电容的一端。 XTAL2(18XTAL2(18脚脚 )) :接外部晶振和微调电容的另一端。:接外部晶振和微调电容的另一端。

Page 31: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AT89S52AT89S52 引脚功能引脚功能• 控制引脚控制引脚 (4(4根根 ))

RST/VPD(9RST/VPD(9脚脚 )):复位信号。:复位信号。 当输入的复位信号延续两个机器周期以上的高电平时即为有效,当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。用以完成单片机的复位初始化操作。 ALE/PROG (30ALE/PROG (30脚脚 )) ::地址锁存控制信号。地址锁存控制信号。 在系统扩展时,在系统扩展时, ALEALE 用于控制把用于控制把 P0P0 口输出的低口输出的低 88 位地址锁位地址锁存起来,以实现低位地址和数据的隔离。存起来,以实现低位地址和数据的隔离。 EA/VPP(31EA/VPP(31脚脚 )) ::访问程序存储控制信号。访问程序存储控制信号。 当信号为低电平时,对当信号为低电平时,对 ROMROM 的读操作限定在外部程序存储器;的读操作限定在外部程序存储器;当信号为高电平时,对当信号为高电平时,对 ROMROM 的读操作是从内部程序存储器开始,的读操作是从内部程序存储器开始,并可延至外部程序存储器。并可延至外部程序存储器。 PSEN(29PSEN(29脚脚 )):片外:片外 ROMROM读选通信号端。读选通信号端。 在读片外在读片外 ROMROM时,时, PSENPSEN有效,为低电平,以实现对片外有效,为低电平,以实现对片外

ROMROM的读操作。的读操作。

Page 32: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

AT89S52AT89S52 引脚功能引脚功能P0P0 口 (引脚口 (引脚 32-3932-39 )普通)普通 I/OI/O 口口P1P1 口 (引脚口 (引脚 1-81-8 ) 普通) 普通 I/OI/O 口口P2P2 口 (引脚口 (引脚 21-2821-28 )普通)普通 I/OI/O 口口P3P3 口 (引脚口 (引脚 10-1710-17 )普通)普通 I/OI/O 口,或作为其他口,或作为其他第二功能口第二功能口

Page 33: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

P3P3 口各引脚与第二功能表口各引脚与第二功能表 引脚 引脚 第二功能 第二功能 功能说明 功能说明

P3.0P3.0 RXDRXD 串行口输入串行口输入P3.1P3.1 TXDTXD 串行口输出串行口输出P3.2P3.2 INT0INT0 外部中断外部中断 00 输入输入P3.3P3.3 INT1INT1 外部中断外部中断 11 输入输入P3.4P3.4 T0T0 定时器定时器 // 计数器计数器 00 计数输入计数输入P3.5P3.5 T1T1 定时器定时器 // 计数器计数器 11 计数输入计数输入P3.6P3.6 WRWR 片外片外 RAMRAM 写选通信号写选通信号 (( 输出输出 ))

P3.7P3.7 RDRD 片外片外 RAMRAM 读选通信号读选通信号 (( 输出输出 ))

Page 34: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

最小单片机系统最小单片机系统 (P13)(P13)单片机单片机5V5V 电源,接地电源,接地时钟电路(晶振)时钟电路(晶振)复位电路复位电路

Page 35: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

时钟电路时钟电路时钟电路为单片机产生时钟时钟电路为单片机产生时钟脉冲序列。脉冲序列。

系统允许的晶振频率一般为系统允许的晶振频率一般为6 MHz6 MHz 和和 12 MHz12 MHz ,电容,电容C1C1和和 C2C2取取 30 pF30 pF左右。左右。

晶体振荡频率高,则系统的晶体振荡频率高,则系统的时钟频率也高,单片机运行时钟频率也高,单片机运行速度也就快。速度也就快。

1

XTAL1

XTAL2

C1

C2

晶振

8051

至内部时钟电路

Page 36: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

时序的概念时序的概念 单片机内的各种操作都是在一系列脉冲控制下进行的,单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。时序。 单片机的时序定时单位从小到大依次为:时钟周期、单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。状态周期、机器周期和指令周期。

振荡周期振荡周期是指晶体振荡器直接产生的振荡信号的周是指晶体振荡器直接产生的振荡信号的周期,是振荡频率期,是振荡频率 foscfosc 的倒数,用的倒数,用 PP 表示。表示。 状态周期状态周期 (( 或或状态状态 SS)) 是振荡周期的两倍,它分为是振荡周期的两倍,它分为P1P1节拍和节拍和 P2P2 节拍。节拍。

11 个个机器周期机器周期是由是由 66 个个状态状态构成。构成。执行一条指令所需的时间称为执行一条指令所需的时间称为指令周期指令周期。。

Page 37: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

各种周期的相互关系各种周期的相互关系

Page 38: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

复位电路复位电路单片机的复位引脚单片机的复位引脚 RSTRST 出现出现 22 个机器周期以上的高电平个机器周期以上的高电平时,单片机就执行复位操作。 时,单片机就执行复位操作。 常见的复位操作有上电自动复位和按键手动复位两种方式 常见的复位操作有上电自动复位和按键手动复位两种方式 。。

上电自动复位是通过外部复位电路的电容充电来实现的。上电自动复位是通过外部复位电路的电容充电来实现的。 按键手动复位是通过复位端经电阻与电源按键手动复位是通过复位端经电阻与电源 VCCVCC 接通而实现的,它接通而实现的,它兼备上电复位功能。兼备上电复位功能。

RST

8051

R

C +5V + RST

8051

R R1

C +5V +

Page 39: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

复位功能复位功能复位是单片机的初始化操作。复位是单片机的初始化操作。

是把是把 PCPC初始化为初始化为 0000H0000H ,使,使 CPUCPU从从 0000H0000H 单元开单元开始执行程序;始执行程序;同时还对其他一些寄存器有影响,但内部同时还对其他一些寄存器有影响,但内部 RAMRAM 的数据的数据是不变的。 是不变的。

除了进入系统的正常初始化之外,当由于程序运除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。脱困境,也需要按复位键重新启动。

Page 40: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

技能训练技能训练 1-11-1 单片机最小系统只是单片机能满足工作的最低要求,它不单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,实现人机对话。能对外完成控制任务,实现人机对话。 单片机最小系统应用单片机最小系统应用——开关控制开关控制 LEDLED 点亮点亮

电路设计 电路设计 程序设计程序设计

R110k

C1

30pF

C2

30pF

X1CRYSTAL

C310uF

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P1.0/T21

P1.1/T2EX2

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD 10

P3.1/TXD 11

P3.2/INT0 12

P3.3/INT1 13

P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

P2.7/A15 28

P2.0/A8 21

P2.1/A9 22

P2.2/A10 23

P2.3/A11 24

P2.4/A12 25

P2.5/A13 26

P2.6/A14 27

U1

AT89S52

D1

LED-RED

R2

220

R310k

Page 41: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

工作模块工作模块 22 --LEDLED 闪烁闪烁分析分析

软件实现思路:软件实现思路:• 点亮发光二极管点亮发光二极管• 延时(延时子程序)延时(延时子程序)• 关闭发光二极管关闭发光二极管• 延时延时• 重复上述动作(循环)重复上述动作(循环)

电路设计和前面一样电路设计和前面一样

Page 42: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

CC 语言程序语言程序#include <AT89X52.h>#include <AT89X52.h>sbit LED = P1^0;sbit LED = P1^0;void Delay()void Delay(){{ unsigned char i, j;unsigned char i, j; for (i=0;i<255;i++)for (i=0;i<255;i++) for (j=0;j<255;j++);for (j=0;j<255;j++);}}void main ()void main (){{ while(1)while(1) {{ LED = 0;LED = 0; Delay();Delay(); LED = 1;LED = 1; Delay();Delay(); }}}}

Page 43: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

思考思考把把 Delay()Delay() 延时函数放在后面如何处理?延时函数放在后面如何处理?

提示:在程序开头加入说明行(即子程序头加分号),提示:在程序开头加入说明行(即子程序头加分号),既定义在前,使用再后。既定义在前,使用再后。

Page 44: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

CC 语言程序的构成语言程序的构成 (P47)(P47) CC 语言的程序是由一个或多个函数构成的,最简语言的程序是由一个或多个函数构成的,最简单的程序只有一个单的程序只有一个 mainmain 函数 。函数 。一个函数由两部份组成 一个函数由两部份组成

函数的首部、即函数的第一行;函数的首部、即函数的第一行; 包括函数名、函数类型、函数属性、函数参数(形包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。参)名、参数类型。 函数体,即函数首部下面的大括号“函数体,即函数首部下面的大括号“ {}”{}” 内的部份。内的部份。函函数体一般包括: 数体一般包括:

• 声明部份:定义所用到的变量,如声明部份:定义所用到的变量,如 void Delay()void Delay() 中的中的unsigned char i, j;unsigned char i, j; 。。

• 执行部份:由若干个语句组成。执行部份:由若干个语句组成。

Page 45: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

标识符标识符 CC 语言规定标识符只能由字母、数字和下划线三种语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。字符组成,且第一个字符必须为字母或下划线。变量名、常数名、数组名、函数名、文件名与类型变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。名等统称为标识符。标识符分为预定义标识符和用户标识符。 标识符分为预定义标识符和用户标识符。 说明:说明:

CC 语言中大写字母与小写字母被认为是两个不同的字符。语言中大写字母与小写字母被认为是两个不同的字符。标识符在命名时应当简单,含义清晰,这样有助于阅读标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。 理解程序。

Page 46: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

关键字关键字 关键字则是编程语言保留的特殊标识符,它们具关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符有固定名称和含义,在程序编写中不允许标识符与关键字相同。在与关键字相同。在 Keil CKeil C 中的关键字除了有中的关键字除了有

ANSI CANSI C 标准的标准的 3232 个关键字外,还根据个关键字外,还根据 5151 单片单片机的特点扩展了相关的关键字。机的特点扩展了相关的关键字。在在 Keil CKeil C 的文本编辑器中编写的文本编辑器中编写 CC 程序,系统把保程序,系统把保留字以不同颜色显示,缺省颜色为天蓝色。 留字以不同颜色显示,缺省颜色为天蓝色。

Page 47: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

CC 语言基本语句语言基本语句 (P52)(P52) CC 语言的程序是由一个或多个函数组成的,而函语言的程序是由一个或多个函数组成的,而函数又是由若干个语句组成的。语句是由一些基本数又是由若干个语句组成的。语句是由一些基本字符和定义符按照字符和定义符按照 CC 语言的语法规定组成的,每语言的语法规定组成的,每个语句以分号结束,分号是个语句以分号结束,分号是 CC 语句的必要组成部语句的必要组成部份。份。 CC 语言的语句可分为以下语言的语句可分为以下 55种类型:种类型:

表达式语句表达式语句函数调用语句函数调用语句控制语句控制语句复合语句复合语句空语句 空语句

Page 48: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

表达式语句表达式语句表达式语句表达式语句是由是由一个表达式一个表达式加加一个分号一个分号构成一个构成一个语句,其作用是计算表达式的值或改变变量的值。语句,其作用是计算表达式的值或改变变量的值。它的一般形式是:它的一般形式是: 表达式表达式 ;; 即在表达式末尾加上分号,就变成了表达式语句。即在表达式末尾加上分号,就变成了表达式语句。最典型的表达式语句是:在赋值表达式后加一个分号最典型的表达式语句是:在赋值表达式后加一个分号构成赋值语句。例如:构成赋值语句。例如:

a=3a=3 是一个赋值表达式是一个赋值表达式 a=3;a=3; 是一个赋值语句是一个赋值语句

Page 49: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

函数调用语句函数调用语句由由一个函数一个函数调用调用加一个分号加一个分号构成函数调用语句,构成函数调用语句,其作用是完成特定的功能。它的一般形式是:其作用是完成特定的功能。它的一般形式是:

函数名函数名 (( 参数列表参数列表 ););例如例如

mDelay(100);mDelay(100); // // 调用延时函数,参数是调用延时函数,参数是 100100

Page 50: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

控制语句控制语句 控制语句用于完成一定的控制功能,以实现程控制语句用于完成一定的控制功能,以实现程序的各种结构方式。序的各种结构方式。 CC 语言有语言有 99种控制语句,种控制语句,可分为以下三类。可分为以下三类。

1.1. 条件判断语句:条件判断语句: ifif 语句、语句、 switchswitch 语句。语句。2.2. 循环语句:循环语句: forfor 语句、语句、 whilewhile 语句、语句、 do-whiledo-while 语句。语句。3.3. 转向语句:转向语句: breakbreak 语句、语句、 continuecontinue 语句、语句、 gotogoto 语语句、句、 returnreturn 语句。 语句。

Page 51: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

复合语句复合语句 复合语句是用一对大括号将若干条语句括复合语句是用一对大括号将若干条语句括起来的,也称为分程序,在语法上相当于起来的,也称为分程序,在语法上相当于一条语句。例如一条语句。例如

1.1. main()main()2.2. {……{……3.3. {t=x;{t=x;4.4. x=y;x=y;5.5. y=t;} //y=t;} // 复合语句复合语句6.6. } }

Page 52: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

空语句空语句只有一个分号的语句称为空语句。它的一只有一个分号的语句称为空语句。它的一般形式是:般形式是:

; ; 空语句是什么操作也不执行,常用于作为循环空语句是什么操作也不执行,常用于作为循环语句中的循环体,表示循环体什么也不做。语句中的循环体,表示循环体什么也不做。

Page 53: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

注释注释 注释内容可以单独写在一行上,也可以写注释内容可以单独写在一行上,也可以写在一个语句之后;在一个语句之后;可以用可以用 /*…..*//*…..*/ 的形式为 的形式为 C C 程序的任何一程序的任何一部份作注释;部份作注释;Keil CKeil C 也支持 也支持 C++C++风格的注释,就是用风格的注释,就是用““ //”//” 引导的后面的语句是注释,例:引导的后面的语句是注释,例: P1_0=!P1_0; //P1_0=!P1_0; // 取反 取反 P1.0P1.0这种风格的注释,只对本行有效,书写比较方这种风格的注释,只对本行有效,书写比较方便,所以在只需要一行注释的时候,我们往往便,所以在只需要一行注释的时候,我们往往采用这种格式。 采用这种格式。

Page 54: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

技能拓展技能拓展 --音频控制应用音频控制应用 音频控制电路由单片机最小系统、放大滤波电路和扬声器音频控制电路由单片机最小系统、放大滤波电路和扬声器构成。放大滤波电路由构成。放大滤波电路由 NPNNPN 三极管三极管 Q1Q1 、电阻、电阻 R3R3 、电、电

容容 C4C4 构成,构成, Q1Q1 的基极经电阻的基极经电阻 R2R2 接到接到 P0.0P0.0 引脚。引脚。 R110k

C1

30pF

C2

30pF

X1CRYSTAL

C310uF

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD0 39

P0.1/AD1 38

P0.2/AD2 37

P0.3/AD3 36

P0.4/AD4 35

P0.5/AD5 34

P0.6/AD6 33

P0.7/AD7 32

P1.0/T21

P1.1/T2EX2

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD 10

P3.1/TXD 11

P3.2/INT0 12

P3.3/INT1 13

P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

P2.7/A15 28

P2.0/A8 21

P2.1/A9 22

P2.2/A10 23

P2.3/A11 24

P2.4/A12 25

P2.5/A13 26

P2.6/A14 27

U1

AT89S52

R2

200

Q12N3392

C40.33uF

LS1

SPEAKER

R3

24

Page 55: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

音频控制流程图音频控制流程图 利用利用 AT89S52AT89S52 端口端口输出脉冲方波输出脉冲方波 ,, 方波经方波经放大滤波后,驱动扬声放大滤波后,驱动扬声器发声,声音的频率高器发声,声音的频率高低由延时长短控制。 低由延时长短控制。

Page 56: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

音频控制程序音频控制程序 音频控制程序和模块二音频控制程序和模块二 LEDLED 闪烁程序基本一样,下闪烁程序基本一样,下面写出程序不同之处。面写出程序不同之处。

1.1. #include <AT89X52.H> //#include <AT89X52.H> // 包含包含 AT89X52.HAT89X52.H头文件头文件2.2. sbit SPK=P0^0; //sbit SPK=P0^0; // 定义定义 SPKSPK 是是 P0.0P0.0 位对应的引位对应的引用符号用符号3.3. …………4.4. SPK = 0; // P0.0=0SPK = 0; // P0.0=0 ,输出低电平,输出低电平5.5. Delay(); // Delay(); // 延时延时6.6. SPK = 1; // P1.0=1SPK = 1; // P1.0=1 ,输出高电平,输出高电平7.7. Delay();Delay();8.8. …… ……

Page 57: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

技能训练技能训练 1-21-2 报警产生器报警产生器

P1.7P1.7 引脚接一个开关;引脚接一个开关;用用 P0.0P0.0 输出输出 1KHz1KHz和和 500Hz500Hz 的音频信号驱动扬声器,的音频信号驱动扬声器,作报警信号。作报警信号。

要求要求1KHz1KHz信号响信号响 100ms100ms,, 500Hz500Hz信号响信号响 200ms,200ms,交替进交替进行;行;当开关合上报警信号响,当开关断开报警信号停止。 当开关合上报警信号响,当开关断开报警信号停止。

Page 58: 项目一 发光二极管 LED 点亮控制

单片机应用技术项目教程( C 语言版) 计算机科学系

项目一 发光二极管 LED 点亮控制

参考程序参考程序 1.1.#include <AT89X52.H> #include <AT89X52.H> 2.2.#include <INTRINS.H> #include <INTRINS.H> 3.3.unsigned char count; unsigned char count; 4.4.void dely500(void) void dely500(void) ////延时延时 500us,500us,即即0.5ms0.5ms

5.5.{ { 6.6. unsigned char i; unsigned char i; 7.7. for(i=250;i>0;i--) for(i=250;i>0;i--) 8.8. { { 9.9. _nop_(); _nop_(); 10.10. } } 11.11.} }

1.1. void main(void) void main(void) 2.2. { { while(1while(1) ) 3.3. { if(P1_7==0) { if(P1_7==0) 4.4.

{ for(count=200;count>0;count--){ for(count=200;count>0;count--)5.5. {{//1KHz//1KHz 信号响信号响 100ms100ms6.6. P1_0=~P1_0; P1_0=~P1_0; 7.7. dely500(); dely500(); 8.8. } } 9.9.

for(count=200;count>0;count--) for(count=200;count>0;count--) 10.10. {{//500Hz//500Hz 信号响信号响 200ms200ms11.11. P1_0=~P1_0; P1_0=~P1_0; 12.12. dely500(); dely500(); 13.13. dely500(); dely500(); 14.14. } } 15.15. } } 16.16. } } 17.17.} }