《AVR单片机嵌入式系统原理与应用实践》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:马潮编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2007
  • ISBN:7811241897
  • 页数:544 页
图书介绍:本书以ATMEL公司AVR单片机ATmega16为蓝本,由浅入深、软硬结合,全面系统地介绍单片嵌入式系统的原理与结构,开发环境与工具,各种接口与功能单元应用的硬件设计思想和软件编写方法。本书以夯实基础,面向应用,理论与实践、方法与实现紧密结合为主线展开,根据AVR快速、资源丰富、功能强大、以串行扩展为主等显著特点,采用C语言作为系统软件开发平台,以由简到繁、循序渐进、螺旋式上升的方式进行编排。在讲解原理和设计方法的同时,还穿插介绍相关的经验、技巧与注意事项,有很强的实用性和指导性。本书各章还配有问题思考、实践练习,及相关参考文献和资料,供课后复习、实践、开拓知识面以及进一步的深入提高。附带光盘收录了书中所有例程源代码、芯片技术资料、相关技术规范和协议,以及大量参考文献和应用设计参考。作者还设计了适合初中级水平学习人员使用,具有模块独立化、简单、开放、灵活等特点的“AVR-51多功能实验开发板”,配合本书的教学实践,而且也适用于产品的前期开发。本书可作为高等院校电子、自动化、仪器仪表和计算机等相关专业单片机嵌入式系统课程的教材,也可作为AVR单片机的培训教材,或相关技术人员的参考用书。

第1篇 基础与入门 2

第1章 单片机嵌入式系统概述 2

1.1 嵌入式系统简介 2

1.1.1 嵌入式计算机系统 2

1.1.2 单片机嵌入式系统 4

1.1.3 单片机的发展历史 5

1.1.4 单片机的发展趋势 6

1.2 单片机嵌入式系统的结构与应用领域 9

1.2.1 单片机嵌入式系统的结构 9

1.2.2 单片机嵌入式系统的应用领域 10

1.3 AVR单片机简介 11

1.3.1 ATMEL公司的单片机简介 11

1.3.2 AVR单片机的主要特点 13

1.3.3 AVR单片机系列简介 14

1.3.4 AVR与51单片机 18

思考与练习 19

第2章 AVR单片机的基本结构 20

2.1 单片机的基本组成 20

2.1.1 单片机的基本组成结构 20

2.1.2 单片机的基本单元与作用 21

2.2 ATmega16单片机的组成 24

2.2.1 AVR单片机的内核结构 24

2.2.2 ATmega16的特点 26

2.2.3 ATmage16的外部引脚与封装 27

2.3 ATmega16单片机的内部结构 29

2.3.1 中央处理器CPU 29

2.3.2 系统时钟部件 32

2.3.3 CPU的工作时序 33

2.3.4 存储器 35

2.3.5 I/O端口 35

2.4 存储器结构和地址空间 35

2.4.1 支持ISP的Flash程序存储器 35

2.4.2 数据存储器SRAM空间 36

2.4.3 内部EEPROM存储器 36

2.5 通用寄存器组与I/O寄存器 37

2.5.1 通用寄存器组 37

2.5.2 I/O寄存器 38

2.5.3 状态寄存器和堆栈指针寄存器 41

2.6 ATmega16单片机的工作状态 43

2.6.1 AVR单片机最小系统 44

2.6.2 AVR的复位源和复位方式 45

2.6.3 对AVR的编程下载 49

2.6.4 ATmega16的熔丝位 50

2.6.5 AVR单片机的工作状态 52

2.6.6 支持ISP编程的最小系统设计 53

2.7 AVR单片机内部资源的扩展和剪裁 55

思考与练习 55

第3章 AVR的指令与汇编系统 57

3.1 ATmega16指令综述 57

3.1.1 指令格式及3种表示方式 58

3.1.2 AVR指令系统中使用的符号 59

3.1.3 AVR指令的寻址方式和寻址空间 60

3.1.4 AVR指令操作结果对标志位的影响 66

3.2 算术和逻辑指令 66

3.2.1 加法指令 66

3.2.2 减法指令 67

3.2.3 取反码指令 68

3.2.4 取补码指令 68

3.2.5 比较指令 69

3.2.6 逻辑“与”指令 69

3.2.7 逻辑“或”指令 70

3.2.8 逻辑“异或”指令 71

3.2.9 乘法指令 71

3.3 跳转指令 73

3.3.1 无条件跳转指令 73

3.3.2 条件跳转指令 74

3.3.3 子程序调用和返回指令 80

3.4 数据传送指令 81

3.4.1 直接寻址数据传送指令 81

3.4.2 间接寻址数据传送指令 82

3.4.3 从程序存储器中取数装入寄存器指令 84

3.4.4 写程序存储器指令 86

3.4.5 I/O口数据传送指令 86

3.4.6 堆栈操作指令 86

3.5 位操作和位测试指令 87

3.5.1 带进位逻辑操作指令 87

3.5.2 位变量传送指令 88

3.5.3 位变量修改指令 88

3.6 MCU控制指令 91

3.7 AVR汇编语言系统 92

3.7.1 汇编语言语句格式 93

3.7.2 汇编器伪指令 93

3.7.3 表达式 98

3.7.4 器件定义头文件m16def.inc 100

第4章 AVR单片机的系统设计与开发工具 103

4.1 单片机嵌入式应用系统设计 103

4.1.1 单片机嵌入式系统开发所需的基础知识和技能 103

4.1.2 单片机嵌入式系统开发过程 105

4.2 单片机嵌入式系统的开发工具与环境 108

4.2.1 单片机嵌入式系统的程序设计语言 108

4.2.2 单片机嵌入式系统的开发软件平台 109

4.2.3 单片机嵌入式系统的硬件开发工具 110

4.2.4 AVR单片机嵌入式系统的软件开发平台 113

4.2.5 AVR实验开发板 118

4.3 自制ISP下载电缆 124

4.4 AVR开发环境的建立 127

4.4.1 AVR研发型开发环境 127

4.4.2 AVR学习型实验开发环境 127

思考与练习 128

第5章 实战练习(一) 129

5.1 秒节拍显示器系统的设计 129

5.1.1 秒节拍显示器硬件设计 129

5.1.2 秒节拍显示器软件设计思路 131

5.1.3 秒节拍显示器汇编源程序 131

5.1.4 通用延时子程序分析 132

5.2 AVR Studio汇编语言集成开发环境的使用 133

5.2.1 AVR Studio和其他辅助工具的安装 134

5.2.2 系统工程文件与AVR汇编源程序文件的建立、编译 134

5.2.3 使用软件模拟仿真调试程序 138

5.3 CVAVR+AVR Studio——高级语言集成开发环境的使用 142

5.3.1 秒节拍显示器的高级C语言源程序 142

5.3.2 系统工程文件与源程序文件的建立、编译 143

5.3.3 在CVAVR中使用AVR Studio进行软件模拟仿真调试程序 146

5.4 AVR熔丝位的设置和执行代码下载 147

5.4.1 AVR-51多功能板的硬件连接 148

5.4.2 AVR熔丝位的配置 148

5.4.3 执行代码文件的下载 151

5.5 一个比较复杂的AVR汇编语言实例 153

5.5.1 系统功能与硬件设计 153

5.5.2 AVR汇编源代码 154

思考与练习 162

第2篇 基本功能单元的应用 164

第6章 通用I/O接口的基本结构与输出应用 164

6.1 通用I/O接口的基本结构与特性 164

6.1.1 I/O接口的基本结构 164

6.1.2 I/O接口寄存器 167

6.1.3 通用数字I/O接口的设置与编程 168

6.2 通用I/O接口的输出应用 171

6.2.1 通用I/O接口的输出设计要点 171

6.2.2 LED发光二极管的控制 171

6.2.3 继电器控制 174

6.2.4 步进电机控制 175

6.3 LED数码显示器的应用 177

6.3.1 单个LED数码管控制 177

6.3.2 多位LED数码管显示 180

6.3.3 点阵LED显示控制 188

6.4 LCD液晶显示器的应用 190

6.4.1 LCD的特点与分类 191

6.4.2 通用点阵字符LCD显示器的应用 191

思考与练习 197

第7章 中断系统与基本应用 198

7.1 中断的基本概念 198

7.1.1 中断处理过程 198

7.1.2 中断源、中断信号和中断向量 199

7.1.3 中断优先级和中断嵌套 200

7.1.4 中断响应条件与中断控制 201

7.2 ATmega16的中断系统 203

7.2.1 ATmega16的中断源和中断向量 203

7.2.2 ATmega16的中断控制 205

7.2.3 AVR的中断响应过程 207

7.3 中断服务程序的编写 209

7.3.1 汇编语言AVR中断程序的编写 209

7.3.2 CodeVision中断程序的编写 214

7.4 ATmega16的外部中断 217

7.4.1 外部中断的触发方式和特点 217

7.4.2 与外部中断相关的寄存器和标志位 218

7.5 外部中断应用实例 221

思考与练习 232

第8章 定时/计数器的结构与应用 233

8.1 定时/计数器的结构 233

8.1.1 8位定时/计数器T/C0的结构 234

8.1.2 8位T/C0的工作模式 242

8.1.3 8位T/C0的计数工作时序 246

8.2 8位定时/计数器T/C0的应用 248

8.2.1 外部事件计数器 248

8.2.2 定时器应用设计 253

8.3 PWM脉宽调制波的产生和应用 258

8.3.1 PWM脉宽调制波 258

8.3.2 基于比较匹配输出的脉冲宽度调制PWM 260

8.4 16位定时/计数器T/C1的应用 263

8.4.1 16位T/C1增强功能介绍 264

8.4.2 16位T/C1应用示例 267

思考与练习 272

第9章 键盘输入接口与状态机设计 273

9.1 通用I/O数字输入接口设计 273

9.1.1 I/O输入接口硬件设计要点 273

9.1.2 I/O输入接口软件设计要点 275

9.2 基于状态机的按键输入接口设计 276

9.2.1 简单的按键输入硬件接口与分析 276

9.2.2 基于状态机的按键输入软件接口设计 278

9.3 矩阵键盘输入接口设计 291

9.3.1 矩阵键盘的工作原理和扫描确认方式 292

9.3.2 定时扫描方式的键盘接口程序 293

思考与练习 301

第10章 模拟比较器和ADC接口 302

10.1 模拟比较器 302

10.1.1 与模拟比较器相关的寄存器和标志位 302

10.1.2 模拟比较器的应用设计 305

10.2 模/数转换器ADC 306

10.2.1 10位ADC结构 307

10.2.2 与ADC相关的I/O寄存器 309

10.2.3 ADC应用设计要点 313

10.2.4 ADC的应用设计 315

10.2.5 ADC应用设计的深入讨论 318

思考与练习 321

第11章 实践练习(二) 322

11.1 频率测量和简单频率计的设计与实现 322

11.1.1 频率测量原理 322

11.1.2 测频法测量频率 323

11.1.3 测周法测量频率 326

11.1.4 频率测量小结 330

11.2 基于T/C1捕捉功能实现高精度的周期测量 330

11.3 带校时和音乐报时功能时钟的设计与实现 338

思考与练习 344

第3篇 串行接口与通信 348

第12章 串行数据接口概述 348

12.1 串行接口与串行通信基础知识 348

12.1.1 并行传输 348

12.1.2 串行传输 349

12.1.3 常见的串行传输和通信接口 350

12.2 数字I/O口的串行扩展 351

12.2.1 串行扩展并行输出口 352

12.2.2 串行扩展并行输入口 355

12.2.3 数字I/O口串行扩展设计要点 357

思考与练习 357

第13章 异步通信与USART接口基础 359

13.1 异步传输的基本概念 359

13.1.1 异步传输的字符数据帧格式 359

13.1.2 异步通信 361

13.2 AVR的异步传输接口USART 362

13.2.1 概述 363

13.2.2 串行时钟发生器 364

13.2.3 数据帧格式 366

13.2.4 USART寄存器 367

13.2.5 串行通信波特率的设置与偏差 372

13.3 USART的基本操作 375

13.3.1 USART的初始化 375

13.3.2 数据发送 376

13.3.3 数据接收 379

13.4 基于USART接口基本通信的实现与测试 382

13.4.1 USART的数据发送和接收 382

13.4.2 RS-232C总线标准介绍 386

13.4.3 AVR系统的RS-232C传输接口的实现与测试 388

13.4.4 异步通信中易产生的问题与AVR系统时钟的选择 394

13.5 AVR USART接口特性的进一步说明 394

13.5.1 使用独立的高精度波特率发生器 394

13.5.2 数据接收采用3级接收缓冲器结构 395

13.5.3 硬件自动处理校验位及错误检测 395

13.5.4 USART数据接收的硬件扫描检测和接收时序 395

思考与练习 397

第14章 USART实用设计基础 399

14.1 异步通信接口应用设计要点 399

14.1.1 接口的硬件设计 399

14.1.2 上层应用通信协议和规范的制定 401

14.1.3 典型USART底层驱动+中间层软件结构示例 402

14.2 一个USART应用的完整示例 407

14.2.1 硬件系统构成 407

14.2.2 通信协议的制定 408

14.2.3 下位机系统程序 409

14.2.4 测试和上位机程序 413

14.3 基于异步通信接口实现多机通信 414

14.3.1 多机通信实现原理 414

14.3.2 多机通信实现方式一 415

14.3.3 多机通信的通用实现方式 417

思考与练习 422

第15章 串行SPI接口应用 424

15.1 SPI串行总线介绍 424

15.1.1 SPI总线的组成 424

15.1.2 SPI通信的工作模式和时序 425

15.1.3 多机SPI通信 427

15.2 AVR的SPI接口原理与使用 428

15.2.1 SPI接口的结构和功能 428

15.2.2 与SPI相关的寄存器 431

15.2.3 SPI接口的设计应用要点 433

15.3 SPI接口应用实例 435

15.3.1 SPI接口基本方式的应用 435

15.3.2 典型SPI底层驱动+中间层软件结构示例 443

思考与练习 445

第16章 串行TWI(I2C)接口应用 447

16.1 I2C串行总线介绍 447

16.1.1 I2C总线结构和基本特性 447

16.1.2 I2C总线时序与数据传输 448

16.1.3 I2C总线寻址与通信过程 450

16.2 AVR的TWI(I2C)接口与使用 452

16.2.1 TWI模块概述 452

16.2.2 TWI寄存器 454

16.2.3 使用TWI总线 458

16.2.4 TWI(I2C)接口设计应用要点 466

16.3 TWI接口应用实例 467

16.3.1 24C256的结构特点 468

16.3.2 AVR读/写24C256应用设计 471

16.4 专用键盘/LED驱动器ZLG7290的应用 485

16.4.1 ZLG7290简介 485

16.4.2 AVR与ZLG7290的连接 486

思考与练习 488

第4篇 进入实战 491

第17章 AVR片内资源应用补遗 491

17.1 AVR熔丝位的功能与配置 491

17.1.1 AVR熔丝位的正确配置 492

17.1.2 ATmega16中重要熔丝位的配置 493

17.1.3 JTAG口的使用与配置 494

17.1.4 提高系统可靠性的熔丝位配置 496

17.1.5 片内WDT的应用 497

17.2 片内EEPROM的应用 501

17.2.1 EEROM的读/写访问操作 501

17.2.2 寄存器描述 502

17.2.3 简单的读/写EEPROM例程 504

17.2.4 高级语言开发环境中使用EEPROM 506

17.3 外部并行扩展接口 507

17.3.1 关于单片机嵌入式系统的并行接口扩展问题的讨论 507

17.3.2 AVR的并行接口扩展 509

17.4 AVR中断应用设计要点 511

17.4.1 AVR中断设计注意点 511

17.4.2 AVR的中断优先级与中断嵌套处理 512

17.4.3 高级语言开发环境中的中断服务程序的编写 513

17.5 AVR实战应用要点 513

第18章 迎奥运倒计时时钟设计实例 517

18.1 系统功能分析 517

18.2 应用系统设计 518

18.2.1 系统方案设计 518

18.2.2 应用系统结构设计 518

18.2.3 系统面板设计 519

18.2.4 DS1302介绍 520

18.3 控制系统的硬件设计 523

18.4 控制系统软件设计要点 524

附录A ATmega16熔丝位汇总 528

附录B AVR-51多功能实验开发板电原理图 537

附录C 本书所附光盘内容简介 540

附录D 自制USBISP下载线 541

D.1 问题的提出 541

D.2 自制USB下载线 542

参考文献 544