第1章 计算机原理与嵌入式系统基础 1
1.1 计算机的发展及应用 1
1.1.1 微型计算机发展及评价 1
1.1.2 嵌入式系统 3
1.2 计算机中的常用数制及编码 5
1.2.1 计算机中的常用数制及相互转换 5
1.2.2 字符的表示及编码 7
1.3 算术运算和逻辑运算基础 9
1.3.1 带符号数的补码表示与加减法运算 10
1.3.2 数的定点表示与浮点表示 12
1.4 计算机组成及工作模型 15
1.4.1 存储器 16
1.4.2 CPU的内部结构 17
1.4.3 总线与接口 19
1.4.4 模型机的工作过程 21
1.5 51系列单片机 23
1.5.1 单片机及应用概述 23
1.5.2 51经典型架构单片机 24
1.5.3 51单片机的发展及典型产品 28
1.5.4 51单片机最小系统 32
1.6 51单片机存储器结构 33
1.6.1 51单片机存储器构成 33
1.6.2 51单片机特殊功能寄存器 37
习题与思考题 42
第2章 51系列单片机指令系统与汇编程序设计 43
2.1 51系列单片机汇编指令格式及标识 43
2.1.1 指令格式 43
2.1.2 指令中用到的标识符 44
2.2 51系列单片机的寻址方式 45
2.2.1 立即(数)寻址 45
2.2.2 寄存器寻址 45
2.2.3 直接寻址 46
2.2.4 寄存器间接寻址 46
2.2.5 变址寻址 47
2.2.6 位寻址 48
2.2.7 指令寻址 48
2.3 51系列单片机指令系统 49
2.3.1 数据传送指令 49
2.3.2 算术运算指令 53
2.3.3 逻辑操作指令 56
2.3.4 位操作指令 58
2.3.5 控制转移指令 60
2.4 51系列单片机汇编程序常用的伪指令 68
2.5 51系列单片机汇编程序设计 71
2.5.1 延时程序设计 71
2.5.2 数值大小条件判断设计 72
2.5.3 数学运算程序 73
2.5.4 数据的拼拆和转换 77
2.5.5 多分支转移(散转)程序 80
2.5.6 排序 82
习题与思考题 83
第3章 单片机Keil C51语言程序设计基础与开发调试 88
3.1 C语言与51系列单片机 88
3.1.1 C语言的特点及程序结构 89
3.1.2 C51程序结构 91
3.2 C51的数据类型 91
3.3 数据的存储类型和存储模式 95
3.3.1 C语言标准存储类型 95
3.3.2 C51的数据存储类型 95
3.3.3 C51的存储模式 96
3.4 C51对SFR、可寻址位、存储器和I/O口的定义 97
3.4.1 C51中绝对地址的访问 97
3.4.2 特殊功能寄存器SFR的定义 100
3.4.3 对位变量的定义 100
3.5 C51的运算符及表达式 101
3.5.1 赋值运算符 101
3.5.2 算术运算符 102
3.5.3 关系运算符 102
3.5.4 逻辑运算符 103
3.5.5 位运算符 103
3.5.6 复合赋值运算符 104
3.5.7 逗号运算符 104
3.5.8 条件运算符 105
3.5.9 指针与地址运算符 105
3.6 C51应用小结 105
3.7 μVision3集成开发环境 106
3.8 单片机应用系统的开发工具与调试 112
3.8.1 单片机应用系统的开发工具 112
3.8.2 单片机应用系统的调试 114
3.8.3 基于SST89E564自制51系列单片机仿真器 116
习题与思考题 121
第4章 51系列单片机内部资源及编程 122
4.1 51单片机的输入/输出(I/O)接口 122
4.1.1 51单片机的I/O口结构 122
4.1.2 I/O口与上/下拉电阻 126
4.1.3 开关量信号的输入与输出 128
4.2 中断系统 129
4.2.1 中断的基本概念 129
4.2.2 51单片机的中断系统 131
4.2.3 中断程序的编制 136
4.2.4 51单片机多外部中断源系统设计 139
4.3 定时/计数器T0和T1 140
4.3.1 定时/计数器的主要特性 140
4.3.2 定时/计数器T0、T1的结构及工作原理 141
4.3.3 定时/计数器T0和T1的方式和控制寄存器 142
4.3.4 定时/计数器T0和T1的工作方式 143
4.3.5 定时/计数器T0和T1的初始化编程及应用 146
4.3.6 定时/计数器T0和T1小结 150
4.4 定时/计数器T2 151
4.4.1 定时/计数器T2的寄存器 151
4.4.2 定时/计数器T2的工作方式 152
4.5 串行接口 157
4.5.1 通信的基本概念 157
4.5.2 51系列单片机串行口功能与结构 161
4.5.3 串行口的工作方式 165
4.5.4 串行口的初始化编程及应用 167
4.5.5 用51系列单片机的串行口扩展并行口 168
4.5.6 利用方式1实现点对点的双机UART通信与RS-232接口 172
4.5.7 多机通信与RS-485总线系统 180
习题与思考题 204
第5章 单片机系统总线与系统扩展技术 205
5.1 单片机系统总线和系统扩展方法 205
5.1.1 单片机系统总线信号 205
5.1.2 51系列单片机读外部程序存储器及读/写外部数据存储器(I/O口)时序 207
5.1.3 基于系统总线进行系统扩展的总线连接方法 208
5.2 系统存储器扩展 211
5.2.1 程序存储器扩展 211
5.2.2 数据存储器扩展 215
5.2.3 程序存储器与数据存储器综合扩展 216
5.3 双口RAM、异步FIFO及其扩展 218
5.3.1 双口RAM 218
5.3.2 双口RAM与单片机的接口 219
5.3.3 异步FIFO 220
5.3.4 异步FIFO与单片机的接口 221
5.4 输入/输出口及设备扩展 222
5.4.1 简单I/O接口扩展 222
5.4.2 并行日历时钟芯片DS12C887与单片机接口 225
5.5 并行接口扩展技术及应用小结 238
习题与思考题 238
第6章 串行扩展技术 240
6.1 SPI总线扩展接口及应用 240
6.1.1 SPI的原理 240
6.1.2 SPI总线的软件模拟及串并扩展应用 241
6.2 I2C串行总线扩展技术 244
6.2.1 I2C串行总线概述 244
6.2.2 I2C总线的数据传送 246
6.2.3 I2C总线数据传送的模拟 251
6.2.4 典型I2C接口存储器的扩展 265
6.3 单总线技术与基于DS18B20的多点温度巡回检测仪的设计 273
6.3.1 DS18B20概述 273
6.3.2 DS18B20的内部构成及测温原理 274
6.3.3 DS18B20的访问协议 275
6.3.4 DS18B20的自动识别技术 278
6.3.5 DS18B20的单总线读/写时序 279
6.3.6 DS18B20使用中的注意事项 280
6.3.7 单片DS18B20测温应用程序设计 281
习题与思考题 283
第7章 人机接口技术 284
7.1 51系列单片机与LED显示器接口 284
7.1.1 LED显示器的结构与原理 284
7.1.2 LED数码管显示器的译码方式 286
7.1.3 LED数码管的显示方式 286
7.1.4 LED点阵屏技术 290
7.2 51单片机与键盘的接口 292
7.2.1 键盘的工作原理 293
7.2.2 独立式键盘与单片机的接口 297
7.2.3 矩阵式键盘与单片机的接口 299
7.3 人机接口典型应用实例——16键简易计算器的设计 305
7.4 1602字符液晶及其接口技术 311
7.4.1 1602总线方式驱动接口及读/写时序 311
7.4.2 操作1602的11条指令详解 312
7.4.3 1602液晶驱动程序设计 315
7.5 ST7920(128×64点阵)图形液晶及其接口技术 319
7.5.1 ST7920引脚及接口时序 319
7.5.2 ST7920显示RAM及坐标关系 322
7.5.3 ST7920指令集 324
7.5.4 ST7920的C51例程 326
习题与思考题 332
第8章 单片机应用系统设计 333
8.1 单片机应用系统结构 333
8.1.1 应用系统的结构特点 334
8.1.2 应用系统的典型通道接口 335
8.1.3 应用系统设计内容 337
8.2 单片机应用系统的一般设计过程 337
8.2.1 硬件系统设计原则 337
8.2.2 应用软件设计特点 338
8.2.3 应用系统开发过程 338
8.3 单片机应用系统的抗干扰技术 340
8.3.1 软件抗干扰 340
8.3.2 硬件抗干扰 340
8.3.3 “看门狗”技术 342
8.4 单片机应用系统的低功耗设计 344
8.4.1 单片机应用系统的硬件低功耗设计 344
8.4.2 单片机应用系统的软件低功耗设计 347
8.5 优良人机界面与单片机应用系统设计 350
8.6 单片机应用系统设计的思路 353
习题与思考题 354
第9章 时间和频率测量及应用系统设计 355
9.1 定时和计时器应用 356
9.1.1 定时器的时钟源、工作模式与精准定时 356
——典型设计举例E1:(作息时间控制)数字钟/万年历的设计 356
E1.1 数字钟/万年历的方案设计 357
E1.2 直接利用单片机的定时器实现电子钟表 359
E1.3 采用专用日历时钟芯片DS1302实现电子钟表 365
——典型设计举例E2:赛跑电子秒表的设计 375
同类典型应用设计、分析与提示 380
篮球计时计分牌的设计 380
9.1.2 数控方波频率发生技术与频率控制应用 381
——典型设计举例E3:基于单片机的简易电子琴的设计 381
同类典型应用设计、要求、分析与提示 385
基于单片机的音乐门铃设计 385
9.1.3 基于时间触发模式的软件系统设计 389
9.2 时间间隔和时刻的测量及应用 391
9.2.1 时间间隔和时刻的测量及应用概述 391
9.2.2 T0/T1的GATE与时刻和时间段测量 392
9.2.3 T2的捕获功能与时间和时刻的测量 392
——典型设计举例E4:超声波测距仪的设计 392
E4.1 超声波测距原理 392
E4.2 基于单片机的超声波测距仪设计 394
同类典型应用设计、分析与提示 401
利用单摆测重力加速度 401
(扭摆法)转动惯量测试仪的设计 402
基于RC一阶电路的阻容参数测试仪的设计 403
利用单片机和NTC热敏电阻实现极简单的测温电路 404
基于RC一阶电路的电容测试仪的设计 405
9.3 频率测量及应用 407
9.3.1 频率的直接测量方法——定时计数法 407
9.3.2 通过测量周期测量频率 409
9.3.3 等精度测频法 409
9.3.4 频率-电压(F-V)转换法测量频率 413
——典型设计举例E5:(组合法)频率计的设计 413
同类典型应用设计、分析与提示 418
多谐振荡器测电阻或电容 418
心率计的设计 418
里程表、计价器和速度表的设计(光电编码盘、霍尔元件) 420
习题与思考题 421
第10章 A/D、D/A、PWM与测控系统设计 422
10.1 D/A原理、接口技术及应用要点 422
10.1.1 D/A转换器概述 422
10.1.2 51单片机与DAC0832的接口技术 426
10.1.3 基于TL431的基准电压源设计 431
——典型设计举例E6:数控直流稳压电源的设计 432
同类典型应用设计、分析与提示 439
精密数控恒流源设计 439
几种V/I转换和恒流源电路图的比较 439
数控宽范围调整、大电流输出的恒流源核心电路方案 441
——典型设计举例E7:基于DDS技术的低频正弦信号发生器的设计 443
10.2 A/D原理、接口技术及应用要点 446
10.2.1 A/D转换器概述 446
10.2.2 ADC0809与51单片机的接口 447
10.3 常用A/D和D/A 452
10.3.1 目前常用的A/D和D/A芯片简介 452
10.3.2 TLC1543/TLC2543 454
10.3.3 4 1/2位双积分型A/D——ICL7135及其接口技术 459
10.4 电压测量与检测技术 464
10.4.1 电压测量及数据采集系统的基本构成 464
10.4.2 智能化测量系统 466
——典型设计举例E8:简易多路数字电压表的设计 469
同类典型应用设计、分析与提示 475
基于LM35的数显温度计设计 475
真有效值测试仪的设计 476
10.5 V-F(电压-频率转换)接口 480
10.5.1 电压-频率(V-F)转换原理 482
10.5.2 频率-电压(F-V)转换原理 483
10.5.3 V-F转换器LM331在模/数转换电路中的应用 484
10.6 PWM技术及应用系统设计 485
10.6.1 PWM技术概述 486
10.6.2 PWM的功率控制应用 486
10.6.3 基于PWM实现D/A转换 487
习题与思考题 491
第11章 电阻的测量与应用 492
11.1 电阻的测量与应用概述 492
11.1.1 电阻的应用 492
11.1.2 电阻的测量 493
11.2 基于恒流源、A/D转换和欧姆定律测电阻 494
11.2.1 伏安法测电阻分析 494
11.2.2 基于恒流源、A/D转换和欧姆定律测电阻原理 494
——典型设计举例E9:基于Pt100的双恒流源高精度测温传感电路的设计 495
E9.1 铂电阻温度传感器 495
E9.2 铂电阻测温的基本电路 496
E9.3 Pt100三线制桥式测温电路 497
E9.4 基于双恒流源的三线式铂电阻测温探头设计 498
E9.5 基于ICL7135的Pt100测温系统设计 500
11.3 直流电阻电桥测电阻及测压应用 502
11.3.1 基本直流电阻电桥配置 502
11.3.2 电阻电桥应用电路的几个关键技术 505
11.3.3 高精度∑-△A/D转换器与直流电桥 507
11.3.4 电阻电桥实际应用技巧 508
11.3.5 硅应变计 510
11.3.6 电压驱动硅应变计 511
11.3.7 电流驱动硅应变计 516
11.4 程控电阻技术、数字电位器及应用 518
——典型设计举例E10:程控增益放大器的设计 519
同类典型应用设计、分析与提示 520
基于LM317的程控直流稳压电源的设计 520
程控滤波器设计 523
习题与思考题 524
第12章 阻抗特性测量与线性网络分析技术及应用 525
12.1 阻抗测量与应用概述 525
12.1.1 阻抗定义及表示 525
12.1.2 R、L、C阻抗元件的基本特性及电路模型 526
12.2 阻抗测量技术 530
12.2.1 阻抗测量的特点 530
12.2.2 阻抗测量方法 532
12.3 DDS、正弦信号峰值/相位检测与网络分析技术 534
12.3.1 频率特性测量与网络分析技术 534
12.3.2 正弦信号的峰值及相位检测技术 535
12.3.3 DDS扫频信号源AD9833 540
习题与思考题 547
附录A 51系列单片机指令速查表 548
附录B ASCII表 554
附录C C51的库函数 555
C.1 寄存器库函数REGXXX.H 555
C.2 字符函数CTYPE.H 555
C.3 一般输入/输出函数STDIO.H 557
C.4 内部函数INTRINS.H 558
C.5 标准函数STDLIB.H 559
C.6 字符串函数STRING.H 560
C.7 数学函数MATH.H 563
C.8 绝对地址访问函数ABSACC.H 564
附录D C8051F系列51单片机及编程应用 565
D.1 C8051F系列单片机简介 565
D.2 C8051F020单片机 566
D.2.1 C8051F020外部存储器接口 568
D.2.2 配置I/O端口功能及其输入/输出方式 572
D.3 C8051F020开发工具使用 582
D.3.1 目标板JTAG接口 583
D.3.2 在Keil μVision3中使用U-EC5 583
D.4 C8051F020应用实例 584
D.4.1 C8051F020硬件电路图 585
D.4.2 C8051F020程序设计举例 586
参考文献 588