第一篇 一切从“芯”开始 2
第1章 缤纷电世界 2
1.1 电路中的秘密 2
1.1.1 欧姆定律 2
1.1.2 电压、电阻和电流 3
1.2 小元器件有大智慧 4
1.2.1 电阻器 4
1.2.2 电位器 6
1.2.3 电容器 6
1.2.4 电感器 7
1.2.5 继电器 8
1.2.6 蜂鸣器 9
1.2.7 晶体振荡器 10
第2章 神秘的半导体 12
2.1 二极管 12
2.1.1 二极管的原理 12
2.1.2 二极管的功能 13
2.1.3 发光二极管 13
2.1.4 稳压二极管 14
2.2 晶体管 14
2.2.1 晶体管的原理 15
2.2.2 晶体管的功能 15
2.3 场效应晶体管 16
2.3.1 结型场效应晶体管 16
2.3.2 绝缘栅型场效应晶体管(MOS管) 17
2.4 集成电路 18
2.4.1 集成电路的特点 19
2.4.2 集成电路的分类 19
2.5 模拟与数字 20
2.5.1 模拟信号 20
2.5.2 数字信号 20
2.5.3 模拟电子电路 21
2.5.4 运算放大器 21
2.5.5 数字电子电路 22
2.5.6 逻辑状态0和1 22
2.5.7 逻辑门 23
第3章 入门C语言 25
3.1 数据和运算 25
3.1.1 C语言的由来 25
3.1.2 数的进制 26
3.1.3 码制 27
3.1.4 数据类型 27
3.1.5 常量 27
3.1.6 变量 28
3.1.7 运算符 28
3.1.8 复合赋值运算符 30
3.2 语句 31
3.2.1 控制语句 31
3.2.2 其他语句 36
3.3 函数 37
3.3.1 自定义函数 37
3.3.2 函数的声明和调用 38
3.4 程序 39
3.4.1 程序的构成 39
3.4.2 程序的注释 40
3.4.3 局部变量和全局变量 40
3.5 预处理命令 42
3.5.1 宏定义 42
3.5.2 文件包含 42
3.6 构造类型数据 43
3.6.1 数组 43
3.6.2 结构体 43
3.6.3 共用体 44
第4章 8051单片机 46
4.1 内部架构 46
4.1.1 运算和控制 46
4.1.2 8051的由来 46
4.1.3 冯·诺依曼结构 47
4.1.4 8051的功能组件 48
4.2 8051的引脚功能 50
4.2.1 引脚排列 50
4.2.2 I/O口的内部结构 52
4.3 基本运行电路 54
4.3.1 时钟电路 54
4.3.2 时序 55
4.3.3 复位电路 55
第5章 DIY最小系统 57
5.1 元器件的布放 57
5.1.1 PCB 57
5.1.2 洞洞板 58
5.1.3 面包板 58
5.2 工具和材料 58
5.2.1 焊接的工具 59
5.2.2 焊接的方法 62
5.2.3 测量工具 64
5.3 搭建最小系统 65
5.3.1 确定目标单片机 65
5.3.2 ISP下载 66
5.3.3 面包板上的8051 68
第6章 第一个C程序 71
6.1 集成开发环境 71
6.1.1 软件开发流程 71
6.1.2 工具集 72
6.2 C51功能扩展 73
6.2.1 数据类型 73
6.2.2 存储器类型 75
6.2.3 存储模式 76
6.2.4 中断服务程序 77
6.3 编写C程序 78
6.3.1 安装集成开发环境 78
6.3.2 安装ISP下载软件 79
6.3.3 软件开发项目的建立 81
6.3.4 编写C程序 86
6.3.5 程序的编译 87
6.3.6 烧写目标芯片 90
第二篇 经典的内部架构 96
第7章 软件仿真 96
7.1 位操作 96
7.1.1 DIY更加可靠的系统 96
7.1.2 位处理机 97
7.1.3 位寻址的应用 97
7.2 软件仿真的方法 99
7.2.1 μVision2调试器 99
7.2.2 调试工具 100
7.2.3 单步调试 102
7.2.4 使用断点调试 104
7.2.5 使用监视窗口调试 106
7.2.6 调试按钮的功能 110
7.2.7 寄存器的初始状态 111
7.3 库函数 113
7.3.1 库函数的分类 113
7.3.2 库函数的使用 117
7.3.3 头文件 119
第8章 驱动数码管 124
8.1 数码管的原理 124
8.1.1 内部结构 124
8.1.2 显示方式 125
8.1.3 段码 126
8.2 数码管的驱动 127
8.2.1 静态显示实例 127
8.2.2 动态显示实例 130
第9章 按键解码 135
9.1 键盘的原理 135
9.1.1 按键的确认 135
9.1.2 按键抖动的消除 136
9.1.3 键盘接口 136
9.2 键盘的编程 139
9.2.1 独立键盘的编程 140
9.2.2 矩阵键盘的编程 143
第10章 谁打断了我的工作 150
10.1 中断 150
10.1.1 中断源 150
10.1.2 中断的处理过程 151
10.1.3 中断的优先级 151
10.1.4 中断的相关寄存器 153
10.2 外部中断 156
10.2.1 外部中断的触发方式 157
10.2.2 外部中断的应用 157
第11章 肚子里的钟表 161
11.1 定时/计数器 161
11.1.1 定时/计数器的结构 161
11.1.2 定时/计数器的工作原理 162
11.1.3 定时/计数器的控制寄存器 163
11.1.4 定时/计数器的配置 165
11.2 定时/计数器的编程应用 167
11.2.1 基于中断的定时器应用 167
11.2.2 基于查询标志位的定时器应用 171
第12章 串行通信 173
12.1 通信方式 173
12.1.1 并行通信和串行通信 173
12.1.2 单工通信和双工通信 174
12.1.3 同步通信和异步通信 174
12.2 通用异步收发器 175
12.2.1 UART的结构 175
12.2.2 UART的控制寄存器 176
12.2.3 串行口的工作方式 178
12.2.4 数据的校验 182
12.2.5 波特率的设定 182
12.3 串行通信接口 185
12.3.1 串行接口的电气标准 185
12.3.2 串行接口的物理标准 188
12.3.3 多机通信 189
12.4 串行口的编程应用 190
第三篇 越来越少的I/O口 202
第13章 让驱动更给力 202
13.1 总线收发器 202
13.1.1 I/O口的驱动能力 202
13.1.2 74HC245的功能 202
13.1.3 总线收发器的应用 204
13.2 总线收发器的编程应用 205
第14章 数据的闸门 208
14.1 锁存器 208
14.1.1 74HC573的功能 208
14.1.2 74HC573的引脚排列 209
14.2 锁存器的编程应用 210
第15章 三八译码器 214
15.1 三八译码器的原理 214
15.1.1 74HC138的功能 214
15.1.2 74HC138的引脚排列 215
15.1.3 点阵显示块 216
15.1.4 74HC138的应用 216
15.2 74HC138的编程应用 218
15.2.1 显示心形图案 218
15.2.2 让图像动起来 219
第16章 串入并出 222
16.1 串入并出 222
16.1.1 74HC595的功能 222
16.1.2 74HC595的引脚排列 224
16.2 74HC595的编程应用 225
16.2.1 74HC595驱动数码管 225
16.2.2 74HC595驱动点阵显示块 228
第17章 能听话的电动机 232
17.1 步进电动机的特点 232
17.1.1 步进电动机的分类 232
17.1.2 步进电动机的工作原理 233
17.1.3 步距角的计算方法 233
17.2 28BYJ48型步进电动机 233
17.2.1 28BYJ48电动机性能指标 234
17.2.2 28BYJ48电动机线圈结构 234
17.2.3 步进电动机的励磁方式 234
17.3 步进电动机的驱动 235
17.3.1 ULN2003的功能 235
17.3.2 ULN2003的驱动电路 236
17.4 步进电动机的编程应用 237
第18章 控制无处不在 242
18.1 脉冲宽度调制 242
18.1.1 模拟控制与数字控制 242
18.1.2 PWM的理论基础 243
18.1.3 PWM波形的特点 244
18.2 PWM的编程应用 245
18.2.1 PWM调光实验 245
18.2.2 PWM调速实验 248
第四篇 总线魔术师 262
第19章 被诅咒的玻璃 262
19.1 1602液晶显示器 262
19.1.1 1602液晶的特点 262
19.1.2 1602液晶的引脚功能 263
19.1.3 1602液晶的显示数据RAM 263
19.1.4 1602液晶的字符发生器 264
19.1.5 1602液晶的工作时序 265
19.1.6 1602液晶的操作指令 266
19.2 1602液晶的编程应用 268
19.2.1 通用字符显示 268
19.2.2 自定义字符显示 270
第20章 数字万年历 274
20.1 实时时钟 274
20.1.1 DS1302的引脚排列 274
20.1.2 BCD码 275
20.1.3 DS1302的内部结构 276
20.1.4 DS1302的寄存器 276
20.1.5 DS1302的控制指令 278
20.1.6 DS1302数据传输格式 279
20.1.7 DS1302初始化 279
20.2 DS1302的编程应用 280
第21章 威武的SPI总线 285
21.1 SPI总线 285
21.1.1 SPI总线的结构 285
21.1.2 SPI的通信方式 286
21.2 存储器93C46 287
21.2.1 93C46的引脚功能 287
21.2.2 93C46的操作指令 287
21.2.3 93C46的传输时序 289
21.3 93C46的编程应用 289
第22章 优雅的I2C总线 293
22.1 I2C总线 293
22.1.1 I2C总线的特点 293
22.1.2 I2C总线通信协议 294
22.1.3 I2C器件的寻址 295
22.2 存储器24C02 296
22.2.1 24C02的引脚排列 296
22.2.2 24C02的操作 297
22.3 I2C总线的编程应用 300
第23章 模拟与数字间的转换 306
23.1 D/A转换器 306
23.1.1 D/A转换原理 306
23.1.2 D/A转换器的性能参数 307
23.2 A/D转换器 308
23.2.1 A/D转换器的分类 308
23.2.2 A/D转换器的工作原理 308
23.2.3 A/D转换器的性能指标 309
23.3 PCF8591转换器 309
23.3.1 PCF8591内部功能 310
23.3.2 PCF8591的控制 311
23.3.3 PCF8591的D/A转换 312
23.3.4 PCF8591的A/D转换 313
23.4 PCF8591的编程应用 314
23.4.1 D/A转换器的编程应用 314
23.4.2 A/D转换器的编程应用 317
第24章 发热的射线 323
24.1 红外线遥控的特点 323
24.1.1 红外遥控编码的帧结构 323
24.1.2 红外编码的方式 324
24.1.3 红外调制与解调 324
24.2 红外线的接收与发射 325
24.2.1 红外线解码 325
24.2.2 红外线编码 328
第25章 感受你的体温 332
25.1 DS18B20的功能介绍 332
25.1.1 DS18B20的特点 332
25.1.2 DS18B20的引脚定义 333
25.1.3 DS18B20的内部结构 333
25.1.4 温度值的存储方式 334
25.1.5 DS18B20的工作时序 335
25.2 DS18B20的控制指令 337
25.2.1 ROM指令 337
25.2.2 RAM指令 338
25.3 DS18B20的编程应用 338
25.3.1 DS18B20的供电 338
25.3.2 DS18B20的应用 340
25.3.3 DS18B20的编程 340
第26章 梅雨的季节 346
26.1 湿度传感器的功能 346
26.1.1 DHT11的性能指标 346
26.1.2 DHT11的典型应用 347
26.1.3 DHT11的通信时序 347
26.2 DHT11的编程应用 349
第27章 蝙蝠的回声 353
27.1 超声波测距 353
27.1.1 超声波测距模块的工作原理 353
27.1.2 超声波测距模块 354
27.2 超声波测距的编程应用 355
第28章 点阵也疯狂 360
28.1 点阵型液晶 360
28.1.1 COG液晶的功能 360
28.1.2 显示屏与显存的对应关系 362
28.1.3 显存的组织结构 362
28.1.4 读写时序 362
28.1.5 UC1701X指令集 364
28.2 点阵型液晶的应用 365
28.2.1 液晶显示器的接口电路 365
28.2.2 汉字的取模方法 365
28.2.3 图像的取模方法 365
28.2.4 汉字和图形显示 367
附录A 8051系列单片机系统板原理图 392
附录B 搭建系统板所需的材料清单 393
附录C 8051系列单片机全能型实验板:电立方/大学城系列 394
后记 395