第1章 概述 1
1.1 采用C语言编程的意义 1
1.2 C语言具有的突出优点 2
1.3 AVR单片机的C编译器简介 4
第2章 AVR单片机的主要特性及开发工具 5
2.1 AVR单片机简介及主要特性 5
2.2 学习开发AVR单片机用到的实验工具及器材 7
第3章 AVR单片机开发软件的安装及初步使用 12
3.1 ICCAVR6.31AC语言编译器安装 12
3.2 AVR Studio集成开发环境安装 15
3.3 PonyProg 2000下载软件安装 16
3.4 创建AVR入门程序 16
第4章 AVR DEMO单片机综合试验板原理介绍及使用 34
4.1 AVR DEMO单片机综合试验板 34
4.2 ATmega16(L)单片机的主要特点与内部组成 36
4.3 使用JTAG ICE仿真器调试AVR DEMO单片机综合试验板 39
第5章 自制JTAG仿真器及并口下载器 43
5.1 JTAG的由来及简介 43
5.2 传统的在线仿真器与JTAG接口的片内调试系统的区别 44
5.3 AVR JTAG ICE仿真时的一些注意事项 45
5.4 AVR JTAG ICE的特点 46
5.5 自制AVR.JTAG ICE 46
5.6 自制并口下载器 57
第6章 ICC AVR使用的C语言基础知识 59
6.1 C语言的标识符与关键字 59
6.2 数据类型 61
6.3 AVR单片机的存储空间 62
6.4 常量、变量及存储方式 62
6.5 数组 63
6.6 C语言的运算 67
6.7 流程控制 73
6.8 函数 78
6.9 指针 81
6.10 结构体 85
6.11 共用体 91
6.12 中断函数 93
第7章 ATmega16(L)的I/O端口特点及使用 96
7.1 ATmega16(L)的I/O端口 96
7.2 ATmega16(L)的I/O端口使用注意事项 98
7.3 ATmega16(L)的I/O端口编程实践 99
第8章 ATmega16(L)的中断系统特点及使用 105
8.1 ATmega16(L)的中断系统 105
8.2 ATmega16(L)的外部中断编程实践 106
第9章 ATmega16(L)的定时/计数器 114
9.1 ATmega16(L)的定时/计数器 114
9.2 ATmega16(L)定时/计数器的时钟选择 115
9.3 计数器的事件 116
9.4 定时/计数器事件的处理 116
9.5 ATmega16(L)的定时/计数器编程实践 117
第10章 ATmega16(L)的模/数转换器 123
10.1 ATmega16(L)的模/数转换器 123
10.2 模/数转换器相关寄存器 123
10.3 模/数转换器的使用 125
10.4 ATmega16(L)的模/数转换器编程实践 126
第11章 ATmega16(L)的内部E2PROM读写 133
11.1 ATmega16(L)的内部E2PROM 133
11.2 与E2PROM相关的寄存器 133
11.3 ATmega16(L)内部E2PROM编程实践 135
第12章 利用ATmega16(L)的PWM功能实现数/模输出 145
12.1 ATmega16(L)的定时/计数器的特性及数/模输出实现 145
12.2 ATmega16(L)的PWM编程实践 145
第13章 ATmega16(L)与PC机的串行通信 150
13.1 通用串行接口USART的主要特征 150
13.2 USART的主要寄存器及设置 150
13.3 ATmega16(L)与PC机的串行通信编程实践 155
第14章 ATmega16(L)驱动16×2点阵字符液晶模块 164
14.1 16×2点阵字符液晶显示器概述 164
14.2 液晶显示器的突出优点 165
14.3 16×2字符型液晶显示模块(LCM)特性 165
14.4 16×2字符型液晶显示模块(LCM)引脚及功能 166
14.5 16×2字符型液晶显示模块(LCM)的内部结构 166
14.6 液晶显示控制驱动集成电路HD44780的特点 167
14.7 HD44780的工作原理 168
14.8 LCD控制器的指令 173
14.9 LCM工作时序 176
14.10 ATmega16(L)驱动16×2点阵字符液晶模块的子程序 177
14.11 在AVR单片机综合试验板上实现16×2LCM演示程序(一) 179
14.12 在AVR单片机综合试验板上实现16×2LCM演示程序(二) 183
第15章 ATmega16(L)驱动I2C串行接口器件24C01的编程 188
15.1 E2PROM AT24C××的性能特点 188
15.2 AT24C××引脚定义 188
15.3 AT24C××系列存储器特点 189
15.4 AT24C××系列E2PROM的内部结构 189
15.5 AT24C××系列E2PROM芯片的寻址 191
15.6 写操作方式 192
15.7 读操作方式 194
15.8 读写AT24C01的相关功能子程序 195
15.9 在AVR单片机综合试验板上完成AT24C01A的读写实验 198
第16章 ATmega16(L)驱动128×64点阵图形液晶模块 233
16.1 128×64点阵图形液晶模块特性 234
16.2 128×64点阵图形液晶模块引脚及功能 234
16.3 128×64点阵图形液晶模块的内部结构 235
16.4 HD61203的特点 237
16.5 HD61202的特点 238
16.6 HD61202的工作原理 239
16.7 HD61202的工作过程 243
16.8 点阵图形液晶模块的控制器指令 244
16.9 HD61202的操作时序图 246
16.10 ATmeag16(L)驱动128×64点阵图形液晶模块的子程序 247
16.11 在AVR单片机综合试验板上实现128×64LCM演示程序 251
第17章 ATmega16(L)的系统控制、复位和看门狗定时器使用 260
17.1 ATmega16(L)的系统控制和复位 260
17.2 ATmega16(L)的复位源 261
17.3 看门狗定时器的使用 263
17.4 在AVRDEMO单片机综合试验板上,进行看门狗实验1(看门狗启动后在程序中定时清除它):D1~D8的8个LED(发光管)依次流水点亮,形成“流水灯”实验 264
17.5 在AVR DEMO单片机综合试验板上,进行看门狗实验2(看门狗启动后在程序中不再清除它,模拟程序失控的情况):D1~D8的8个LED(发光管)依次流水点亮,形成“流水灯”实验 266
第18章 ATmega16(L)应用实例1——风机测试仪 269
18.1 系统功能描述 269
18.2 系统方案及电路设计 269
18.3 测试类型、参数范围及测试过程 272
18.4 程序设计 273
18.5 调试及应用 289
第19章 ATmega16(L)应用实例2——红外线转速仪 290
19.1 转速仪的分类 290
19.2 转速传感器 291
19.3 转速测量的方法 291
19.4 红外线转速仪系统功能描述 292
19.5 系统方案及电路设计 292
19.6 程序设计 295
19.7 调试及应用 302
第20章 ATmega16(L)应用实例3——红外线感应自动移门 304
20.1 红外线感应自动移门的组成及基本工作原理 304
20.2 系统方案设计 305
20.3 电路设计 306
20.4 程序设计详解 310
20.5 保养及维护 335
第21章 ATmega16(L)应用实例4——PID温度控制器 336
21.1 温度控制原理 336
21.2 PID控制原理 336
21.3 系统方案及电路设计 339
21.4 程序设计 342
21.5 调试及应用 352
第22章 ATmega16(L)应用实例5——液晶实时曲线显示监控系统 353
22.1 系统功能描述 353
22.2 系统方案及电路设计 353
22.3 数字温度传感器DS18B20简介 355
22.4 程序设计 361
22.5 调试及应用 393
参考文献 394