第一篇 基础知识篇 2
第1章 51单片机开发的基础知识 2
1.1 51单片机的硬件结构 2
1.1.1 功能模块 2
1.1.2 CPU 2
1.1.3 并行I/O端口 4
1.1.4 存储器结构 6
1.1.5 定时/计数器 10
1.1.6 串行口 14
1.1.7 中断系统 20
1.2 51单片机的指令系统 22
1.2.1 寻址方式 22
1.2.2 指令说明 26
1.2.3 指令系统表 29
1.3 本章总结 32
第2章 C语言程序各语句用法与意义 33
2.1 数据结构 33
2.1.1 数据类型 34
2.1.2 变量与常量 36
2.1.3 数组 40
2.1.4 指针 44
2.1.5 结构 47
2.1.6 共用体 51
2.1.7 枚举 52
2.2 运算符与表达式 53
2.2.1 运算符分类与优先级 53
2.2.2 算术运算符与表达式 54
2.2.3 关系运算符与表达式 55
2.2.4 逻辑运算符与表达式 55
2.2.5 位操作运算符与表达式 55
2.2.6 赋值运算符与表达式 56
2.3 程序结构与函数 57
2.3.1 程序结构 57
2.3.2 函数 58
2.4 流程控制语句 64
2.4.1 选择语句 65
2.4.2 循环语句 68
2.4.3 转移语句 70
2.5 本章总结 72
第3章 Keil 8051 C编译器 73
3.1 Keil编译器简介 73
3.2 使用Keil开发应用软件 74
3.2.1 建立工程 75
3.2.2 工程的设置 77
3.2.3 编译与连接 79
3.3 dScope for Windows的使用 80
3.3.1 如何启动 80
3.3.2 如何调试 81
3.3.3 调试窗口 83
3.4 本章总结 85
第二篇 输入/输出系统设计 88
第4章 单片机实现液晶显示 88
4.1 实例说明 88
4.2 设计思路分析 88
4.2.1 液晶显示模块 88
4.2.2 液晶显示工作原理 89
4.2.3 设计思路 91
4.3 硬件电路设计 91
4.3.1 器件选取 91
4.3.2 电源模块 92
4.3.3 液晶显示模块 93
4.3.4 单片机模块 95
4.4 软件设计 96
4.4.1 液晶控制驱动器指令集 96
4.4.2 程序说明 97
4.5 实例总结 100
第5章 基于MAX7219的8位数码管显示 101
5.1 实例说明 101
5.2 设计思路分析 101
5.2.1 LED显示驱动芯片的选取 101
5.2.2 MAX7219的工作原理 102
5.3 硬件电路设计 103
5.3.1 主要器件 103
5.3.2 电路原理图 104
5.4 软件设计 106
5.4.1 MAX7219的工作时序和寄存器描述 106
5.4.2 程序说明 108
5.5 实例总结 111
第6章 键盘输入实例——实现4×4键盘 112
6.1 实例说明 112
6.2 设计思路分析 112
6.3 硬件电路设计 113
6.4 软件设计 114
6.5 实例总结 118
第7章 单片机实现语音录放 119
7.1 实例说明 119
7.2 设计思路分析 120
7.2.1 语音芯片选取 120
7.2.2 语音芯片ISD2560简介 120
7.3 硬件电路设计 121
7.3.1 主要器件 121
7.3.2 电路原理图及说明 124
7.4 软件设计 125
7.4.1 程序流程 125
7.4.2 程序说明 126
7.5 实例总结 128
第三篇 数据采集系统设计 130
第8章 基于MAX197的并行A/D转换 130
8.1 实例说明 130
8.2 设计思路分析 130
8.2.1 A/D转换原理 131
8.2.2 如何选择A/D转换器件 131
8.2.3 A/D转换器对电源电路的要求 132
8.3 硬件电路设计 133
8.3.1 主要器件 133
8.3.2 电路原理图及说明 136
8.4 软件设计 138
8.4.1 MAX197控制字 138
8.4.2 程序流程 139
8.4.3 程序说明 140
8.5 实例总结 141
第9章 基于TLC549的串行A/D转换 142
9.1 实例说明 142
9.2 设计思路分析 142
9.2.1 芯片选取 143
9.2.2 工作原理 143
9.3 硬件电路设计 145
9.3.1 主要器件 145
9.3.2 电路原理图及说明 145
9.4 软件设计 146
9.4.1 转换过程和时序要求 147
9.4.2 程序流程 147
9.4.3 程序说明 148
9.5 实例总结 149
第10章 基于MAX527的并行D/A转换 150
10.1 实例说明 150
10.2 设计思路分析 150
10.2.1 D/A转换原理 151
10.2.2 如何选择D/A转换器件 151
10.2.3 D/A转换器对电源电路的要求 152
10.3 硬件电路设计 152
10.3.1 主要器件 152
10.3.2 电路原理图及说明 154
10.4 软件设计 156
10.4.1 MAX527的地址和重要引脚 156
10.4.2 程序流程 157
10.4.3 程序说明 158
10.5 实例总结 159
第11章 基于MAX517的串行D/A转换 160
11.1 实例说明 160
11.2 设计思路分析 160
11.2.1 芯片选取 161
11.2.2 工作原理 161
11.3 硬件电路设计 162
11.3.1 主要器件 162
11.3.2 电路原理图及说明 163
11.4 软件设计 164
11.4.1 时序要求和转换过程 164
11.4.2 程序说明 165
11.5 实例总结 167
第12章 基于SHT71数字温/湿度传感器的采集实现 168
12.1 实例说明 168
12.2 设计思路分析 168
12.2.1 SHT71性能概述 168
12.2.2 SHT71的功能说明 169
12.2.3 SHT71的引脚尺寸和说明 170
12.3 硬件电路设计 171
12.4 软件设计 172
12.4.1 SHT71的操作方法 172
12.4.2 程序流程 173
12.4.3 源程序清单 174
12.5 实例总结 181
第13章 基于DS1624的数字温度计设计 182
13.1 实例说明 182
13.2 设计思路分析 182
13.2.1 DS1624简介 183
13.2.2 DS1624基本特性 183
13.2.3 DS1624工作原理 183
13.2.4 DS1624工作方式 186
13.2.5 DS1624的指令集 186
13.3 硬件电路设计 187
13.3.1 硬件设计 187
13.3.2 原理图及其说明 187
13.4 软件设计 188
13.4.1 程序流程 188
13.4.2 程序说明 189
13.5 实例总结 194
第四篇 控制系统设计 196
第14章 基于DS12C887的实时日历时钟显示系统设计 196
14.1 实例说明 196
14.2 设计思路分析 197
14.2.1 选择合适的日历时钟芯片 197
14.2.2 如何由DS12C887芯片获取时间信息 197
14.3 硬件电路设计 198
14.3.1 结构框图 198
14.3.2 主要器件 198
14.3.3 电路原理图及说明 200
14.4 软件设计 202
14.4.1 DS12C877的内存空间 202
14.4.2 程序流程 204
14.4.3 程序代码及说明 205
14.5 实例总结 207
第15章 单片机控制的步进电机系统 208
15.1 实例说明 208
15.2 设计思路分析 208
15.2.1 步进电机的工作原理 209
15.2.2 步进电机的控制 211
15.2.3 脉冲分配与驱动芯片的选取 212
15.3 硬件电路设计 213
15.3.1 结构框图 213
15.3.2 主要器件 214
15.3.3 电路原理图及说明 215
15.4 软件设计 217
15.4.1 程序流程 217
15.4.2 程序说明 218
15.5 实例总结 220
第16章 基于MAX1898的智能充电器设计 222
16.1 实例说明 222
16.2 设计思路分析 223
16.2.1 为何需要实现充电器的智能化 223
16.2.2 如何选择电池充电芯片 223
16.2.3 MAX1898的充电工作原理 224
16.3 硬件电路设计 226
16.3.1 主要器件 226
16.3.2 电路原理图及说明 227
16.4 软件设计 230
16.4.1 程序流程 230
16.4.2 程序说明 231
16.5 实例总结 232
第五篇 存储系统与外设扩展 234
第17章 基于NOR Flash AM29LV320的数据存储 234
17.1 实例说明 234
17.2 设计思路分析 235
17.2.1 芯片AM29LV320 235
17.2.2 具体设计思路 237
17.3 硬件电路设计 237
17.4 软件设计 239
17.4.1 AM29LV320的命令与状态 240
17.4.2 串行异步数据传输 256
17.4.3 程序代码说明 256
17.5 实例总结 265
第18章 基于XC95144的串口扩展 266
18.1 实例说明 266
18.2 设计思路分析 267
18.2.1 串口发送的设计 267
18.2.2 串口接收的设计 269
18.2.3 串口模块的设计 271
18.3 硬件电路设计 273
18.4 软件设计 275
18.4.1 CPLD的设计原理图 275
18.4.2 C51单片机程序代码说明 277
18.5 实例总结 279
第19章 基于8255扩展并行口 280
19.1 实例说明 280
19.2 设计思路分析 280
19.2.1 并行口扩展的原理 280
19.2.2 芯片选择 281
19.3 硬件电路设计 284
19.4 软件设计 286
19.5 实例总结 289
第六篇 信号与算法实现 292
第20章 单片机实现智能信号发生器 292
20.1 实例说明 292
20.2 设计思路分析 293
20.2.1 信号发生芯片MAX038 293
20.2.2 如何在单片机系统中使用MAX038 294
20.3 硬件电路设计 295
20.3.1 主要器件 295
20.3.2 电路原理图及说明 296
20.4 软件设计 298
20.4.1 程序流程 298
20.4.2 程序说明 299
20.5 实例总结 301
第21章 单片机实现步进式PWM信号输出 302
21.1 实例说明 302
21.2 设计思路分析 302
21.2.1 PWM控制 303
21.2.2 选择合适的外部计数芯片 303
21.3 硬件电路设计 304
21.3.1 主要器件 304
21.3.2 电路原理图及说明 305
21.4 软件设计 306
21.4.1 8254的内部控制字和计数寄存器 306
21.4.2 程序说明 308
21.5 实例总结 309
第22章 单片机实现CRC算法 310
22.1 实例说明 310
22.2 CRC原理 311
22.3 算法设计与程序实现 312
22.3.1 按位计算CRC 312
22.3.2 按字节计算CRC 313
22.3.3 按半字节计算CRC 316
22.3.4 主程序及测试结果 317
22.4 实例总结 318
第23章 单片机实现软件滤波 319
23.1 实例说明 319
23.2 设计思路分析 319
23.3 软件设计 322
23.4 实例总结 326
第七篇 通信传输系统设计 328
第24章 单片机实现点对点的数据传输 328
24.1 实例说明 328
24.2 设计思路分析 328
24.2.1 串行通信基本原理 329
24.2.2 接口电平转换 330
24.3 硬件电路设计 331
24.3.1 结构框图 331
24.3.2 主要器件 331
24.3.2 电路原理图及说明 332
24.4 软件设计 333
24.4.1 协议设计 334
24.4.2 机程序流程及代码 335
24.4.3 从机程序流程及代码 338
24.5 实例总结 340
第25章 单片机实现点对多点的数据传输 341
25.1 实例说明 341
25.2 设计思路分析 342
25.2.1 如何实现从机识别 342
25.2.2 51单片机串口的多机通信功能 342
25.3 硬件电路设计 343
25.4 软件设计 344
25.4.1 协议设计 344
25.4.2 主机程序流程及代码 344
25.4.3 从机程序流程及代码 348
25.5 实例总结 351
第26章 单片机实现以太网接口 352
26.1 实例说明 352
26.2 设计思路分析 353
26.2.1 以太网协议 353
26.2.2 选择合适的以太网控制芯片 354
26.3 硬件电路设计 355
26.3.1 主要器件 355
26.3.2 电路原理图及说明 358
26.4 软件设计 360
26.4.1 地址空间与寄存器 360
26.4.2 程序说明 362
26.5 实例总结 365
第27章 单片机实现I2C总线通信 366
27.1 实例说明 366
27.2 设计思路分析 367
27.2.1 I2C总线的工作原理 367
27.2.2 I2C总线的通信时序 367
27.3 硬件电路设计 369
27.4 软件设计 369
27.4.1 程序流程 370
27.4.2 程序说明 370
27.5 实例总结 374
第28章 单片机实现RS-485总线现场监测系统 375
28.1 实例说明 375
28.2 设计思路分析 376
28.2.1 RS-485总线 376
28.2.2 RS-485总线驱动芯片选取 379
28.2.3 MAX481构成的RS-485总线网络 381
28.3 硬件电路设计 381
28.3.1 RS-232/485总线转接卡 381
28.3.2 带有RS-485总线接口的单片机系统 382
28.4 软件设计 383
28.4.1 通信协议设计 384
28.4.2 程序流程 385
28.4.3 程序说明 386
28.5 实例总结 390
第29章 CAN总线接口通信设计 391
29.1 实例说明 391
29.2 设计原理与思路 391
29.2.1 CAN总线及CAN总线协议简介 391
29.3 芯片选型 395
29.4 硬件电路设计 397
29.4.1 结构框图 397
29.4.2 主要器件说明 398
29.5 电路原理图及其说明 401
29.6 软件设计 403
29.6.1 程序总体思路说明 403
29.6.2 程序流程图 403
29.6.3 主要源程序清单和注释 406
29.7 实例总结 413
第八篇 电源监控与抗干扰设计 415
第30章 单片机监控电路设计 416
30.1 实例说明 416
30.2 设计思路分析 417
30.2.1 一种简单的单片机上电复位电路 417
30.2.2 单片机监控芯片的选取 418
30.3 硬件电路设计 419
30.3.1 原理图设计 420
30.3.2 监控芯片的外围电路设计 420
30.4 软件设计 421
30.5 实例总结 422
第31章 光电隔离电路设计 423
31.1 实例说明 423
31.2 设计思路分析 424
31.2.1 光耦器件的工作原理 424
31.2.2 光耦器件的典型应用 425
31.2.3 如何选择光耦器件 427
31.3 硬件电路设计 428
31.3.1 主要器件 428
31.3.2 电路原理图及说明 428
31.4 实例总结 431
附录A 汇编语言与C语言的混合编程 432
附录B 实例配套实验箱 451