第1章 单片机嵌入式系统概述 1
1.1嵌入式系统简介 1
1.1.1嵌入式计算机 1
1.1.2单片机嵌入式系统 2
1.1.3单片机的发展历史 2
1.1.4单片机的发展趋势 3
1.2单片机嵌入式系统的结构与应用领域 4
1.2.1单片机嵌入式系统的结构 4
1.2.2单片机嵌入式系统的应用领域 6
1.3 AVR单片机简介 7
1.3.1 ATMEL公司的单片机简介 7
1.3.2 AVR单片机的主要特点 8
1.3.3 AVR单片机最小系统 10
第2章AVR单片机的基本结构 11
2.1单片机的基本组成 11
2.1.1单片机的基本组成结构 11
2.1.2单片机的基本单元与作用 11
2.2 ATmega16单片机的组成 14
2.2.1 AVR单片机的内核结构 14
2.2.2 ATmega16的特点 16
2.2.3 ATmega16的外部引脚与封装 17
2.3 ATmega16单片机的内部结构 18
2.3.1中央处理器 18
2.3.2系统时钟部件 20
2.3.3 CPU的工作时序 22
2.3.4存储器 22
2.3.5 1/0口 23
2.4存储器结构和地址空间 23
2.4.1支持ISP的Flash程序存储器 23
2.4.2 SRAM数据存储器空间 24
2.4.3内部EEPROM存储器 24
2.5通用寄存器组与1/0寄存器 25
2.5.1通用寄存器组 25
2.5.2 I/0寄存器 26
2.5.3状态寄存器和堆栈指针寄存器 27
2.6 ATmega16单片机的工作状态 29
2.6.1 AVR单片机最小系统 30
2.6.2 AVR单片机的复位源和复位方式 31
2.6.3对AVR单片机的编程下载 34
2.6.4 ATmega16的熔丝位 35
2.6.5 AVR单片机的工作状态 37
2.6.6支持ISP编程的最小系统设计 38
2.7 AVR单片机内部资源的扩展和删减 40
第3章AVR单片机开发工具安装及开发环境的使用 41
3.1 AVR Studio集成开发环境简介及其安装 41
3.2 AVR Studio集成开发环境的使用 43
3.2.1建立一个新的工程项目管理文件 43
3.2.2汇编源文件的建立 44
3.2.3汇编源文件的编译 45
3.3 ICCAVR集成开发环境简介 46
3.3.1 ICCAVR编译器的安装 46
3.3.2 ICCAVR中的文件类型及其扩展名 48
3.3.3 ICCAVR的附注和扩充 49
3.3.4 ICCAVR的代码转换 50
3.4 ICCAVR向导 50
3.5 ICCAVR的IDE环境 52
3.6菜单解释 53
3.7 C库函数与启动文件 56
3.8访问AVR单片机硬件的编程 63
3.9 C语言的运行结构 70
3.10其他主流AVR单片机开发环境简介 72
3.10.1 GCCAVR开发环境 72
3.10.2 CodeVision AVR集成开发环境 72
3.10.3 IAR集成开发环境 72
第4章C语言概论、数据类型、运算符与表达式 74
4.1 C语言概论 74
4.1.1 C语言的发展过程 74
4.1.2 C语言的特点 74
4.1.3 C源程序的结构特点 74
4.1.4 C语言的字符集 75
4.1.5 C语言的词汇 76
4.2数据类型、运算符与表达式 77
4.2.1 C语言的数据类型 77
4.2.2算术运算符和算术表达式 84
4.2.3关系运算符和表达式 88
4.2.4逻辑运算符和表达式 89
第5章 分支与循环控制 92
5.1 if语句 92
5.1.1程序的3种基本结构 92
5.1.2 if语句的3种形式 92
5.1.3 if语句的嵌套 96
5.2条件运算符和条件表达式 98
5.3 switch语句 99
5.4循环控制 102
5.4.1概述 102
5.4.2 goto语句和if语句构成循环 103
5.4.3 while语句 103
5.4.4 do-while语句 105
5.4.5 for语句 106
5.4.6循环的嵌套 108
5.4.7 break和continue语句 109
第6章 编译预处理与位运算 112
6.1概述 112
6.2宏定义 112
6.2.1不带参数的宏定义 112
6.2.2带参数的宏定义 114
6.3文件包含 115
6.4条件编译 116
6.5位操作运算符 118
第7章 数组与函数 121
7.1一维数组的定义和引用 121
7.1.1一维数组的定义方式 121
7.1.2一维数组元素的引用 122
7.1.3一维数组的初始化 124
7.1.4一维数组程序举例 124
7.2二维数组的定义和引用 125
7.2.1二维数组的定义 125
7.2.2二维数组元素的引用 126
7.2.3二维数组的初始化 127
7.3字符数组 128
7.3.1字符数组的定义 128
7.3.2字符数组的初始化 128
7.3.3字符数组的引用 129
7.3.4字符串和字符串结束标志 129
7.4函数概述 129
7.4.1函数定义的一般形式 130
7.4.2函数的参数和函数的值 131
7.4.3函数的返回值 132
7.4.4函数的调用 132
7.4.5被调用函数的声明和函数原型 132
7.4.6函数的嵌套调用 133
7.4.7函数的递归调用 134
7.4.8数组作为函数参数 135
7.5局部变量和全局变量 137
7.5.1局部变量 138
7.5.2全局变量 139
第8章 指针、结构体与共用体 141
8.1指针和地址 141
8.2指针变量和指针运算符 141
8.3指针与函数参数 145
8.4指针、数组和字符串指针 146
8.5指针数组 149
8.6多级指针 151
8.7返回指针的函数 152
8.8函数指针 153
8.9结构与联合 154
8.9.1结构的定义 154
8.9.2结构数组 156
8.9.3结构与函数 157
8.9.4结构的初始化 159
8.9.5联合 159
第9章AVR开发套件快速入门 161
9.1 AVR单片机实验系统简介 161
9.2建立第一个项目(软件操作指南) 164
9.3 AVR单片机综合学习系统芯片烧写操作指南 167
9.4 AVR ATmega16单片机引脚说明 170
第10章ATmega16基础实例 173
10.1发光二极管闪动实验 173
10.1.1实例功能 173
10.1.2器件与原理 173
10.1.3硬件电路 174
10.1.4程序设计 175
10.2流水灯实验 176
10.3按键实验 180
10.3.1实例功能 180
10.3.2器件与原理 181
10.3.3程序设计 182
10.4蜂鸣器实验 185
10.4.1实例功能 185
10.4.2器件与原理 185
10.4.3硬件电路 185
10.4.4程序设计 186
10.5继电器实验 188
10.5.1实例功能 188
10.5.2器件与原理 188
10.5.3硬件电路 189
10.5.4程序设计 189
10.6数码管实验 191
10.6.1实例功能 191
10.6.2器件与原理 191
10.6.3硬件电路 194
10.6.4程序设计 194
10.7串行口实验 196
10.7.1实例功能 197
10.7.2硬件电路 200
10.7.3程序设计 202
第11章ATmega16高级应用实例 206
11.1矩阵键盘应用实例 206
11.1.1矩阵键盘简介 206
11.1.2矩阵键盘的工作原理 206
11.1.3矩阵键盘软硬件设计实例 206
11.2步进电动机应用实例 212
11.2.1步进电动机简介 212
11.2.2步进电动机的控制 219
11.2.3步进电动机的应用设计 221
11.3 DS18B20单总线数字温度传感器应用实例 224
11.3.1单总线技术简介 224
11.3.2 DS18B20单总线温度传感器简介 225
11.3.3 DS18B20软硬件设计 230
11.4 12C总线应用实例 236
11.4.1 12C串行总线简介 237
11.4.2 I2 C总线器件工作原理及时序 238
11.4.3 AT24C系列存储器的软硬件设计实例 242
11.5 93CXX系列存储器应用实例 251
11.5.1 SPI总线简介 251
11.5.2 93C46存储器的软硬件设计实例 254
11.6 DS1302时钟芯片应用实例 265
11.6.1实时时钟(RTC)简介 265
11.6.2 DS1302的软硬件设计实例 268
11.7 ADC应用实例 277
11.7.1 ATmega16片内ADC内部寄存器 277
11.7.2 ADC软硬件设计实例 280
11.8 1602字符型LCD应用实例 284
11.8.1液晶显示简介 284
11.8.2 1602字符型LCD简介 285
11.8.3 1602LCD的软硬件设计实例 290
11.9 12864点阵型LCD应用实例 294
11.9.1点阵LCD的显示原理 295
11.9.2 12864点阵型LCD简介 295
11.9.3 12864点阵型LCD软硬件设计实例 300
11.10红外遥控软件解码应用实例 312
11.10.1红外遥控概述 312
11.10.2 μPD6121红外接收的软件解码应用实例 318
11.10.3 μPD6121解码应用设计 318
11.11无线通信模块应用实例 328
11.11.1无线通信模块原理与分类 329
11.11.2无线通信模块主要技术指标 329
11.11.3 PT2262/PT2272无线模块简介 330
11.11.4无线通信模块的软硬件设计应用 334
11.12 PWM应用实例 338
11.12.1 PWM的特点 338
11.12.2 ATmega16内部PWM简介 339
11.12.3基于ATmega16的PWM应用设计 346
11.13 SD卡读写实例 349
11.13.1 SD卡简介 349
11.13.2 SD卡读写应用实例 362
11.14 LED点阵显示屏的应用实例 374
11.14.1 LED点阵的种类及结构 374
11.14.2 8 × 8单色点阵LED的工作原理 374
11.14.3 LED点阵显示屏系统设计 375
参考文献 379