第1章 绪论 1
1.1 单片机的概念 1
1.2 单片机的应用领域 1
1.3 单片机的过去和未来 3
1.3.1 单片机的发展简史 3
1.3.2 单片机的发展趋势 3
1.4 单片机相关概念 5
1.4.1 单片机与CPU的关系 5
1.4.2 单片机与ARM的关系 5
1.5 主流单片机简介 6
1.5.1 8051单片机 6
1.5.2 MOTOROLA(现为Freescale)单片机 6
1.5.3 Microchip单片机 6
1.5.4 ATMEL单片机 6
第2章 AVR系列单片机的结构、时序及指令系统 7
2.1 AVR系列单片机概述 7
2.2 AVR系列单片机的基本组成 9
2.3 ATmega16单片机内部结构 10
2.3.1 ATmega16的总体结构 10
2.3.2 系统的时钟 16
2.3.3 片内存储器 17
2.3.4 电源管理及睡眠模式 18
2.3.5 系统控制和复位 20
2.4 ATmega系列单片机的资源 23
2.5 AVR系列单片机的指令系统 25
2.6 C语言基础 29
2.6.1 数据类型、运算符与表达式 29
2.6.2 最简单的C程序——顺序程序设计 30
2.6.3 控制流程语句 30
2.6.4 数组 32
2.6.5 函数 32
2.6.6 预处理命令 33
第3章 AVR系列单片机快速上手 35
3.1 AVR系列开发软件平台概述 35
3.2 ICC AVR简介 36
3.2.1 ICC AVR中的文件类型及其扩展名 36
3.2.2 ICC AVR软件的安装 37
3.2.3 ICC AVR编译软件的运行 39
3.3 ICC AVR集成开发环境与ICC AVR应用程序创建 41
3.3.1 ICC AVR菜单栏命令、工具栏和快捷方式 41
3.3.2 ICC AVR应用程序的创建 43
3.4 程序文件的编译、连接 47
3.5 下载软件PROGISP的使用 49
3.5.1 系统要求及软件安装 49
3.5.2 下载软件界面功能及参数设置 49
3.5.3 下载第一个代码 53
第4章 输入/输出端口 55
4.1 输入/输出端口是什么?能做什么? 55
4.2 快速上手引例,让单片机跑起来 56
4.2.1 点亮LED 56
4.2.2 拨码开关的检测 58
4.2.3 软件延时 58
4.3 如何操作输入/输出端口 60
4.3.1 AVR I/O端口特性 60
4.3.2 与I/O端口相关的控制寄存器 60
4.3.3 I/O口引脚配置表 62
4.4 “搭积木式”工程实例分析 62
4.4.1 “交通灯”模型硬件电路及源代码分析 62
4.4.2 七段码数码管硬件电路及源代码分析 64
4.4.3 动态扫描LED点阵屏硬件电路及源代码分析 68
4.4.4 行列扫描键盘硬件电路及源代码分析 70
4.4.5 电热水器的设计(一) 74
第5章 模数转换 77
5.1 模数转换是什么?能做什么? 77
5.2 快速上手引例,让A/D跑起来 78
5.3 如何操作片内A/D? 81
5.3.1 AVR片内A/D特性 81
5.3.2 与A/D转换相关的控制寄存器 82
5.4 “搭积木式”工程实例分析 86
5.4.1 多通道A/D采样硬件电路及源代码分析 86
5.4.2 热敏电阻测温硬件原理及代码分析 90
5.4.3 电热水器的设计(二) 97
第6章 USART异步串行通信技术 103
6.1 USART是什么?能做什么? 103
6.1.1 并行通信与串行通信 103
6.1.2 异步串行通信技术与USART接口 104
6.2 快速上手引例,让串口跑起来 106
6.3 如何操作串口? 108
6.3.1 ATmega16片内USART控制器特性 108
6.3.2 与USART控制器相关的寄存器 109
6.4 “搭积木式”工程实例分析 114
6.4.1 RS-232与PC通信硬件电路及源代码分析 114
6.4.2 RS-485与PC通信硬件电路及源代码分析 118
6.4.3 RS-422与PC通信硬件电路及源代码分析 122
6.4.4 USB与PC通信(虚拟串口)通信硬件电路及源代码分析 124
6.4.5 电热水器的设计(三) 128
第7章 TWI/I2C总线技术 137
7.1 TWI/I2C是什么?能做什么? 137
7.1.1 TWI/I2C是什么 137
7.1.2 TWI的工作机制 137
7.1.3 TWI数据传输和帧格式 138
7.2 快速上手引例,让TWI/I2C跑起来 141
7.3 如何操作片内TWI/I2C? 148
7.3.1 AVR的TWI接口特性 148
7.3.2 与TWI相关的寄存器 148
7.3.3 如何使用TWI 152
7.4 “搭积木式”工程实例分析 157
7.4.1 TWI操作IC卡AT24C02硬件电路及源代码分析 157
7.4.2 模拟I2C操作IC卡AT24C02硬件电路及源代码分析 164
7.4.3 电热水器的设计(四) 171
第8章 中断 188
8.1 中断是什么?能做什么? 188
8.1.1 中断是什么? 188
8.1.2 中断能做什么? 189
8.2 快速上手引例,让中断跑起来 190
8.3 如何操作系统中断? 194
8.3.1 AVR中断系统 194
8.3.2 如何操作外部中断? 195
8.3.3 如何操作片内A/D中断? 198
8.3.4 如何操作串口中断? 198
8.4 “搭积木式”工程实例分析 199
8.4.1 基于外部中断的按键硬件电路及源代码分析 199
8.4.2 基于中断的快速片内A/D应用源代码分析 202
8.4.3 中断方式串行总线应用源代码分析 207
8.4.4 电热水器的设计(五) 210
第9章 定时器/计数器 223
9.1 定时器/计数器是什么?能做什么? 223
9.2 快速上手引例,让定时器跑起来 224
9.3 如何操作定时器/计数器? 226
9.3.1 具有PWM功能的8位定时器/计数器0 226
9.3.2 16位定时器/计数器 230
9.3.3 8位有PWM与异步操作的定时器/计数器2 237
9.4 “搭积木式”工程实例分析 242
9.4.1 “交通灯”模型硬件电路及源代码分析 242
9.4.2 “秒表”模块硬件电路及源代码分析 246
9.4.3 简易频率计硬件电路及源代码分析 250
第10章 脉宽调制控制技术(PWM) 256
10.1 PWM是什么?能做什么? 256
10.2 快速上手引例,让PWM跑起来 257
10.3 如何操作PWM? 260
10.3.1 具有PWM功能的8位定时器/计数器T/C0 260
10.3.2 16位定时器/计数器 263
10.4 “搭积木式”工程实例分析 268
10.4.1 简易PWM电子琴硬件电路及源代码分析 268
10.4.2 简易PWM连续可调程控直流电源硬件电路及源代码分析 273
10.4.3 直流电机调速控制硬件电路及源代码分析 283
第11章 液晶显示器 291
11.1 液晶显示器是什么?能做什么? 291
11.1.1 液晶显示器基本知识 291
11.1.2 液晶显示器的应用 292
11.2 代码“积木”——HD44780字符液晶接口 292
11.3 代码“积木”——ST7920汉字/图像点阵液晶接口 301
第12章 一线式数字温度传感器DS18B20的应用 316
12.1 DS18B20是什么?能做什么? 316
12.1.1 基本知识 316
12.1.2 DS18B20温度测量原理 318
12.1.3 DS18B20报警搜索操作 319
12.1.4 单线总线系统 319
12.2 通过单总线端口访问DS18B20 320
12.3 “积木”——DS18B20接口设计 323
12.4改进电热水器设计 327
第13章 实时时钟芯片DS1302的应用 338
13.1 DS1302是什么?能做什么? 338
13.1.1 DS1302结构及功能表 338
13.1.2 DS1302的工作原理 339
13.1.3 DS1302的操作与控制寄存器 340
13.2 “积木”——DS1302接口设计 343
13.3 时间控制型电热水器设计 353
第14章 超声波的应用 368
14.1 超声波是什么?能做什么? 368
14.1.1 超声波测距原理 368
14.1.2 超声波测距误差分析 369
14.1.3 MA40B8R/S简介 369
14.2 “搭积木式”工程实例分析——超声波测距设计 370
附录一 ASCII码表 378
附录二 万年历电路及代码 379
附录三 无功补偿控制器电路及代码 396
参考文献 451