第1章 51单片机开发基础 1
1.1 单片机发展的历史、现状与趋势 1
1.2 51单片机的引脚与内部结构 3
1.2.1 引脚说明 3
1.2.2 功能模块 5
1.2.3 CPU 5
1.2.4 并行I/O端口 7
1.2.5 存储器结构 8
1.2.6 定时/计数器 12
1.2.7 串行口 17
1.2.8 中断系统 23
1.3 51单片机的指令系统 25
1.3.1 寻址方式 25
1.3.2 指令说明 28
1.3.3 指令表 31
1.4 Keil 8051 C编译器 35
1.4.1 Keil编译器简介 35
1.4.2 如何使用Keil开发 36
1.4.3 dScope for Windows的使用 41
1.5 汇编与C语言的混合使用 46
1.5.1 段和局部变量 47
1.5.2 设置变量地址 48
1.5.3 汇编语言和C语言的结合 49
1.5.4 内联汇编代码 53
1.5.5 提高编译器的汇编能力 56
1.5.6 仿真多级中断 58
1.5.7 时序问题 60
1.5.8 混合编程需要注意的几点 63
1.6 RTX51实时多任务操作系统 64
1.6.1 RTX51操作系统概述 64
1.6.2 软硬件需求和术语定义 71
1.6.3 建立RTX51 Tiny应用程序 74
1.6.4 RTX51 Tiny系统函数 76
1.6.5 系统调试 82
1.6.6 应用程序编写举例 84
1.7 本章总结 99
第一篇 输入输出系统 101
第2章 单片机实现7段数码管显示 102
2.1 实例说明 102
2.2 设计思路分析 103
2.2.1 7段数码管工作原理 103
2.2.2 如何驱动7段数码管 104
2.3 硬件电路设计 105
2.3.1 主要器件 105
2.3.2 电路原理图 105
2.4 软件设计 108
2.4.1 程序流程 108
2.4.2 程序说明 109
2.5 实例总结 111
第3章 基于MAX7219的8位数码管显示 112
3.1 实例说明 112
3.2 设计思路分析 112
3.2.1 LED显示驱动芯片的选取 112
3.2.2 MAX7219的工作原理 113
3.3 硬件电路设计 114
3.3.1 主要器件 114
3.3.2 电路原理图 115
3.4 软件设计 117
3.4.1 MAX7219的工作时序和寄存器描述 117
3.4.2 程序说明 119
3.5 实例总结 122
第4章 单片机实现液晶显示 123
4.1 实例说明 123
4.2 设计思路分析 123
4.2.1 液晶显示模块 124
4.2.2 液晶显示工作原理 125
4.2.3 设计思路 126
4.3 硬件电路设计 126
4.3.1 器件选取 126
4.3.2 电源模块 127
4.3.3 液晶显示模块 128
4.3.4 单片机模块 131
4.4 软件设计 131
4.4.1 液晶控制驱动器指令集 131
4.4.2 程序说明 133
4.5 实例总结 135
第5章 单片机实现电子密码锁 137
5.1 实例说明 137
5.2 设计思路分析 138
5.2.1 键盘输入 138
5.2.2 数码管显示 140
5.3 硬件电路设计 141
5.3.1 结构框图 141
5.3.2 主要器件 141
5.3.3 电路原理图及说明 142
5.4 软件设计 144
5.4.1 程序流程 144
5.4.2 程序说明 144
5.5 实例总结 151
第6章 单片机实现简单音乐发生器 152
6.1 实例说明 152
6.2 设计思路分析 152
6.2.1 音乐相关知识 152
6.2.2 如何用单片机产生音频脉冲 153
6.2.3 如何用单片机实现音乐的节拍 154
6.2.4 音频功放 154
6.3 硬件电路设计 155
6.3.1 结构框图 155
6.3.2 主要器件 155
6.3.3 电路原理图及说明 156
6.4 软件设计 156
6.4.1 程序流程 158
6.4.2 程序说明 158
6.5 实例总结 161
第7章 单片机实现语音录放 162
7.1 实例说明 162
7.2 设计思路分析 163
7.2.1 语音芯片选取 163
7.2.2 语音芯片ISD2560简介 163
7.3 硬件电路设计 164
7.3.1 主要器件 164
7.3.2 电路原理图及说明 167
7.4 软件设计 168
7.4.1 程序流程 169
7.4.2 程序说明 169
7.5 实例总结 171
第二篇 数据采集系统 173
第8章 基于MAX197的并行A/D转换 174
8.1 实例说明 174
8.2 设计思路分析 174
8.2.1 A/D转换原理 175
8.2.2 如何选择A/D转换器件 175
8.2.3 A/D转换对电源电路的要求 176
8.3 硬件电路设计 177
8.3.1 主要器件 177
8.3.2 电路原理图及说明 180
8.4 软件设计 183
8.4.1 MAX197控制字 183
8.4.2 程序流程 183
8.4.3 程序说明 184
8.5 实例总结 185
第9章 基于TLC549的串行A/D转换 186
9.1 实例说明 186
9.2 设计思路分析 186
9.2.1 芯片选取 187
9.2.2 工作原理 187
9.3 硬件电路设计 189
9.3.1 主要器件 189
9.3.2 电路原理图及说明 190
9.4 软件设计 191
9.4.1 转换过程和时序要求 191
9.4.2 程序流程 191
9.4.3 程序说明 191
9.5 实例总结 193
第10章 基于MAX527的并行D/A转换 194
10.1 实例说明 194
10.2 设计思路分析 194
10.2.1 D/A转换原理 195
10.2.2 如何选择D/A转换器件 195
10.2.3 D/A转换对电源电路的要求 196
10.3 硬件电路设计 196
10.3.1 主要器件 196
10.3.2 电路原理图及说明 198
10.4 软件设计 200
10.4.1 MAX527的地址和重要引脚 201
10.4.2 程序流程 201
10.4.3 程序说明 202
10.5 实例总结 203
第11章 基于MAX517的串行D/A转换 204
11.1 实例说明 204
11.2 设计思路分析 205
11.2.1 芯片选取 205
11.2.2 工作原理 205
11.3 硬件电路设计 207
11.3.1 主要器件 207
11.3.2 电路原理图及说明 207
11.4 软件设计 209
11.4.1 时序要求和转换过程 209
11.4.2 程序说明 210
11.5 实例总结 212
第12章 基于DS18B20的数字温度计设计 213
12.1 实例说明 213
12.2 设计思路分析 213
12.2.1 温度传感器DS18B20 214
12.2.2 单线(1-wire)技术 214
12.3 硬件电路设计 215
12.3.1 主要器件 215
12.3.2 电路原理图及说明 218
12.4 软件设计 219
12.4.1 DS18B20的单线协议和命令 219
12.4.2 程序流程 221
12.4.3 程序说明 221
12.5 实例总结 225
第13章 基于MPX4105的数字气压计设计 226
13.1 实例说明 226
13.2 设计思路分析 226
13.2.1 系统总体结构 227
13.2.2 如何选择气压传感器 227
13.2.3 如何选择A/D转换器件 228
13.3 硬件电路设计 229
13.3.1 主要器件 229
13.3.2 电路原理图及说明 230
13.4 软件设计 232
13.4.1 如何由频率计算出气压值 232
13.4.2 程序流程 232
13.4.3 程序说明 233
13.5 实例总结 235
第14章 单片机实现GPS定位设计 236
14.1 实例说明 236
14.2 设计思路分析 236
14.2.1 GPS系统及基本工作原理 237
14.2.2 如何选择GPS器件 238
14.3 硬件电路设计 239
14.3.1 主要器件 239
14.3.2 电路原理图及说明 241
14.4 软件设计 242
14.4.1 GARMIN GPS 25LP的语句格式 242
14.4.2 程序说明 243
14.5 实例总结 246
第三篇 控制系统 247
第15章 单片机控制的步进电机系统 248
15.1 实例说明 248
15.2 设计思路分析 248
15.2.1 步进电机的工作原理 249
15.2.2 步进电机的控制 251
15.2.3 脉冲分配与驱动芯片的选取 252
15.3 硬件电路设计 253
15.3.1 结构框图 253
15.3.2 主要器件 254
15.3.3 电路原理图及说明 255
15.4 软件设计 258
15.4.1 程序流程 258
15.4.2 程序说明 258
15.5 实例总结 260
第16章 基于MAX1898的智能充电器设计 262
16.1 实例说明 262
16.2 设计思路分析 263
16.2.1 为何需要实现充电器的智能化 263
16.2.2 如何选择电池充电芯片 263
16.2.3 MAX1898的充电工作原理 264
16.3 硬件电路设计 266
16.3.1 主要器件 266
16.3.2 电路原理图及说明 267
16.4 软件设计 270
16.4.1 程序流程 270
16.4.2 程序说明 271
16.5 实例总结 272
第17章 基于DS12C887的实时日历时钟显示系统设计 273
17.1 实例说明 273
17.2 设计思路分析 274
17.2.1 选择合适的日历时钟芯片 274
17.2.2 如何由DS12C887芯片获取时间信息 274
17.3 硬件电路设计 275
17.3.1 结构框图 275
17.3.2 主要器件 275
17.3.3 电路原理图及说明 277
17.4 软件设计 279
17.4.1 DS12C877的内存空间 279
17.4.2 程序流程 281
17.4.3 程序代码及说明 281
17.5 实例总结 284
第18章 单片机实现接触式IC卡读写 285
18.1 实例说明 285
18.2 设计思路分析 285
18.2.1 选择IC卡 286
18.2.2 选择带有SPI接口的单片机 286
18.3 硬件电路设计 287
18.3.1 主要器件 287
18.3.2 电路原理图及说明 288
18.4 软件设计 290
18.4.1 单片机AT89S8252的SPI寄存器 290
18.4.2 IC卡芯片AT45D041A的内存空间与指令 291
18.4.3 程序流程 293
18.4.4 程序说明 294
18.5 实例总结 298
第19章 单片机实现非接触式IC卡读写 299
19.1 实例说明 299
19.2 设计思路分析 300
19.2.1 Mifare1射频IC卡 300
19.2.2 H6152读写模块 302
19.3 硬件电路设计 302
19.3.1 主要器件 303
19.3.2 电路原理图及说明 304
19.4 软件设计 305
19.4.1 H6152内部寄存器 305
19.4.2 H6152通信协议与控制命令 307
19.4.3 程序流程 310
19.4.4 程序说明 311
19.5 实例总结 319
第四篇 信号与算法实现 321
第20章 单片机实现智能信号发生器 322
20.1 实例说明 322
20.2 设计思路分析 323
20.2.1 信号发生芯片MAX038 323
20.2.2 如何在单片机系统中使用MAX038 324
20.3 硬件电路设计 325
20.3.1 主要器件 325
20.3.2 电路原理图及说明 326
20.4 软件设计 328
20.4.1 程序流程 329
20.4.2 程序说明 329
20.5 实例总结 331
第21章 单片机实现步进式PWM信号输出 332
21.1 实例说明 332
21.2 设计思路分析 332
21.2.1 PWM控制 333
21.2.2 选择合适的外部计数芯片 333
21.3 硬件电路设计 334
21.3.1 主要器件 334
21.3.2 电路原理图及说明 335
21.4 软件设计 336
21.4.1 8254的内部控制字和计数寄存器 336
21.4.2 程序说明 338
21.5 实例总结 339
第22章 单片机实现CRC算法 340
22.1 实例说明 340
22.2 CRC原理 341
22.3 算法设计与程序实现 342
22.3.1 按位计算CRC 342
22.3.2 按字节计算CRC 343
22.3.3 按半字节计算CRC 346
22.3.4 主程序及测试结果 347
22.4 实例总结 348
第五篇 通信传输系统 350
第23章 单片机实现点对点的数据传输 350
23.1 实例说明 350
23.2 设计思路分析 350
23.2.1 串行通信基本原理 350
23.2.2 接口电平转换 352
23.3 硬件电路设计 353
23.3.1 结构框图 353
23.3.2 主要器件 353
23.3.3 电路原理图及说明 354
23.4 软件设计 355
23.4.1 协议设计 355
23.4.2 主机程序流程及代码 356
23.4.3 从机程序流程及代码 359
23.5 实例总结 361
第24章 单片机实现点对多点的数据传输 362
24.1 实例说明 362
24.2 设计思路分析 363
24.2.1 如何实现从机识别 363
24.2.2 51单片机串口的多机通信功能 363
24.3 硬件电路设计 364
24.4 软件设计 365
24.4.1 协议设计 365
24.4.2 主机程序流程及代码 366
24.4.3 从机程序流程及代码 369
24.5 实例总结 372
第25章 基于双口RAM的单片机间通信 373
25.1 实例说明 373
25.2 设计思路分析 374
25.2.1 双口RAM的工作原理 374
25.2.2 双口RAM芯片IDT7005 374
25.3 硬件电路设计 377
25.3.1 主要器件 377
25.3.2 电路原理图及说明 378
25.4 软件设计 379
25.4.1 地址空间分配和旗语、中断逻辑 380
25.4.2 程序说明 381
25.5 实例总结 384
第26章 单片机实现短距离无线传输 385
26.1 实例说明 385
26.2 设计思路分析 386
26.2.1 如何选择无线通信芯片 386
26.2.2 无线数据传输模块PTR2000和无线通信芯片nRF401 387
26.2.3 如何使用PTR2000实现无线数据传输 388
26.3 硬件电路设计 388
26.3.1 无线通信芯片nRF401引脚功能说明 388
26.3.2 无线数据传输模块PTR2000引脚功能说明 389
26.3.3 单片机和PTR2000接口电路设计 390
26.3.4 PC机和PTR2000接口电路设计 391
26.4 软件设计 392
26.4.1 串行无线通信协议设计 393
26.4.2 程序流程 393
26.4.3 程序说明 394
26.5 实例总结 398
第27章 单片机实现I2C总线通信 399
27.1 实例说明 399
27.2 设计思路分析 400
27.2.1 I2C总线的工作原理 400
27.2.2 I2C总线的通信时序 400
27.3 硬件电路设计 402
27.4 软件设计 402
27.4.1 程序流程 403
27.4.2 程序说明 403
27.5 实例总结 407
第28章 单片机实现485总线现场监测系统 408
28.1 实例说明 408
28.2 设计思路分析 409
28.2.1 RS-485总线 409
28.2.2 RS-485驱动芯片选取 412
28.2.3 MAX481构成的485总线网络 413
28.3 硬件电路设计 414
28.3.1 232/485转接卡 414
28.3.2 带有485接口的单片机系统 415
28.4 软件设计 417
28.4.1 通信协议设计 417
28.4.2 程序流程 418
28.4.3 程序说明 418
28.5 实例总结 424
第六篇 网络应用与电源监控 426
第29章 单片机实现以太网接口 426
29.1 实例说明 426
29.2 设计思路分析 427
29.2.1 以太网协议 427
29.2.2 选择合适的以太网控制芯片 428
29.3 硬件电路设计 429
29.3.1 主要器件 429
29.3.2 电路原理图及说明 432
29.4 软件设计 434
29.4.1 地址空间与寄存器 434
29.4.2 程序说明 436
29.5 实例总结 439
第30章 单片机监控电路设计 440
30.1 实例说明 440
30.2 设计思路分析 441
30.2.1 一种简单的单片机上电复位电路 441
30.2.2 单片机监控芯片的选取 442
30.3 硬件电路设计 443
30.3.1 原理图设计 444
30.3.2 监控芯片的外围电路设计 444
30.4 软件设计 445
30.5 实例总结 446
第31章 光电隔离电路设计 447
31.1 实例说明 447
31.2 设计思路分析 448
31.2.1 光耦器件的工作原理 448
31.2.2 光耦器件的典型应用 449
31.2.3 如何选择光耦器件 450
31.3 硬件电路设计 451
31.3.1 主要器件 451
31.3.2 电路原理图及说明 452
31.4 实例总结 454