第1部分 51系列单片机基础 1
第1章 51系列单片机概述 2
1.1单片机的产生与发展 2
1.2 51系列单片机介绍 3
1.2.1 51系列单片机简介 3
1.2.2 51系列单片机的应用领域 3
1.2.3常用的单片机介绍 4
1.3小结 4
第2章 51系列单片机基本结构 5
2.1 51系列单片机的内部结构 5
2.1.1内部结构的主要组成部分 6
2.1.2单片机结构的类型 7
2.2 51系列单片机的引脚功能 7
2.2.1 51系列单片机的引脚封装 7
2.2.2 51系列单片机引脚说明 7
2.3中央处理器 10
2.3.1算术逻辑运算部件 10
2.3.2控制器 10
2.3.3通用寄存器 10
2.3.4专用寄存器 11
2.4存储器结构 12
2.4.1程序存储器 13
2.4.2数据存储器 14
2.4.3存储器扩展 17
2.5并行I/O口 18
2.5.1并行I/O口的结构 18
2.5.2并行I/O口的应用 21
2.5.3并行I/O口的扩展 22
2.6 51系列单片机的复位 23
2.6.1单片机的复位状态 23
2.6.2单片机的复位电路 24
2.7 51系列单片机的时钟和时序 25
2.7.1振荡器和时钟电路 26
2.7.2 CPU的时序 27
2.7.3指令执行的时序 28
2.7.4访问外部ROM/RAM的操作时序 29
2.8系统掉电保护和低功耗设计 31
2.8.1掉电保护 31
2.8.2低功耗设计 33
2.9小结 34
第3章 51系列单片机的指令系统 35
3.1指令系统简介 35
3.1.1指令格式 35
3.1.2指令符号 37
3.2寻址方式 37
3.2.1立即寻址 38
3.2.2直接寻址 38
3.2.3寄存器寻址 39
3.2.4寄存器间接寻址 40
3.2.5变址寻址 41
3.2.6相对寻址 41
3.2.7位寻址 42
3.3数据传送指令 43
3.3.1内部RAM数据传送指令 43
3.3.2外部RAM数据传送指令 46
3.3.3程序存储器数据传送指令 47
3.3.4数据交换指令 48
3.3.5堆栈操作指令 49
3.4算术运算指令 49
3.4.1加法指令 50
3.4.2带进位的加法指令 51
3.4.3带借位的减法指令 52
3.4.4加1指令 53
3.4.5减1指令 54
3.4.6乘除法指令 54
3.4.7十进制调整指令 55
3.5逻辑运算及移位指令 57
3.5.1逻辑与指令 57
3.5.2逻辑或指令 57
3.5.3逻辑异或指令 58
3.5.4累加器清零指令 59
3.5.5累加器取反指令 59
3.5.6组合逻辑电路的实现 59
3.5.7循环移位指令 60
3.6控制转移指令 62
3.6.1无条件转移指令 62
3.6.2条件转移指令 65
3.6.3子程序调用及返回指令 67
3.7位操作指令 70
3.7.1位变量传送指令 70
3.7.2置位与清零指令 71
3.7.3位逻辑运算指令 71
3.7.4位控制转移指令 71
3.8空操作指令 73
3.9 51系列单片机指令汇总 73
3.10小结 77
第4章 51系列单片机的定时/计数器 78
4.1定时/计数器0和1 78
4.1.1定时/计数器的结构和功能 79
4.1.2T0和T1的控制寄存器 80
4.1.3 T0和T1的4种工作模式 82
4.2定时/计数器2 85
4.2.1 T2的控制寄存器T2CON和T2MOD 85
4.2.2定时/计数器2的工作模式 87
4.3定时/计数器的典型应用 90
4.3.1定时/计数器模式0的应用 90
4.3.2定时/计数器模式1的应用 90
4.3.3定时/计数器模式2的应用 91
4.3.4定时/计数器模式3的应用 92
4.4小结 94
第5章 51系列单片机中断系统 95
5.1中断系统概述 95
5.1.1中断的概念 95
5.1.2中断需要解决的问题 96
5.1.3中断的用途 97
5.2中断的类型 98
5.2.1外部中断源 98
5.2.2定时中断源 98
5.2.3串行中断源 98
5.3 51系列单片机中断系统的标志 98
5.3.1 51系列单片机的中断源 98
5.3.2中断请求标志 99
5.3.3中断允许标志 100
5.3.4中断优先级标志 101
5.4中断的处理过程 101
5.4.1中断的响应 102
5.4.2中断的处理 103
5.4.3中断的返回 104
5.4.4中断请求的撤离 104
5.5外部中断源的扩展 105
5.5.1定时/计数器扩展外部中断源 105
5.5.2查询方式扩展外部中断源 106
5.6小结 107
第6章 51系列单片机的串行接口 108
6.1串行通信概述 108
6.1.1串行通信简介 109
6.1.2串行通信的数据传送方式 111
6.1.3串行通信接口电路 111
6.2 51系列单片机的串行接口 112
6.2.1单片机串行接口的内部结构 112
6.2.2单片机串行接口的控制 113
6.2.3波特率设计 115
6.3串行接口的工作模式 117
6.3.1模式0 117
6.3.2模式1 118
6.3.3模式2 120
6.3.4模式3 122
6.4单片机串行接口的应用 122
6.4.1双机通信 122
6.4.2多机通信 126
6.4.3扩展I/O口 133
6.5小结 135
第2部分 51系列单片机程序设计 137
第7章 汇编语言程序设计 138
7.1汇编语言概述 138
7.1.1汇编语言简介 138
7.1.2汇编语言程序设计步骤 139
7.1.3汇编语言程序实例 139
7.2汇编语言指令及其格式 140
7.2.1伪指令 140
7.2.2汇编语言程序的格式 143
7.2.3源程序的汇编 144
7.3汇编语言程序设计 144
7.3.1顺序程序设计 144
7.3.2分支程序设计 145
7.3.3循环程序设计 149
7.3.4子程序设计 153
7.3.5查表结构程序设计 155
7.3.6运算类程序设计 158
7.4小结 161
第8章 单片机C语言程序设计基础 162
8.1单片机C语言概述 162
8.1.1 C51语言的特点 162
8.2单片机C语言程序设计基础实例 163
8.3 C51的标识符与关键字 164
8.3.1标识符 164
8.3.2关键字 164
8.4 C51的数据类型 165
8.4.1常量与变量 167
8.4.2整型数据 168
8.4.3浮点型数据 169
8.4.4字符型数据 170
8.4.5指针型数据 173
8.4.6无值型数据 174
8.5 C51的变量作用域 174
8.5.1基本规则 174
8.5.2变量作用域 175
8.6分隔符与const修饰符 178
8.6.1 C51分隔符 178
8.6.2 const修饰符 179
8.7运算符 180
8.7.1算术运算符 180
8.7.2逻辑和关系运算符 182
8.7.3位运算符 185
8.7.4特殊运算符 187
8.7.5运算符优先级和结合性 191
8.8表达式 192
8.8.1算术表达式 193
8.8.2赋值表达式 193
8.8.3逗号表达式 194
8.8.4关系和逻辑表达式 195
8.9小结 197
第9章 C51的数据结构与函数 198
9.1数组 198
9.1.1数组类型说明 198
9.1.2数组元素的表示 199
9.1.3数组元素的初始化赋值 200
9.1.4一维数组 202
9.1.5二维数组 204
9.1.6多维数组 208
9.2指针 208
9.2.1地址、指针和指针变量的概念 208
9.2.2指针变量的定义 209
9.2.3指针变量的赋值 209
9.2.4指针变量的引用 211
9.2.5指针变量的运算 212
9.2.6指针和数组 213
9.2.7字符指针 219
9.2.8指针数组 220
9.3结构 221
9.3.1结构的定义 221
9.3.2结构变量的定义 222
9.3.3结构变量的使用 224
9.3.4多重结构变量的赋值 224
9.3.5结构变量的初始化 225
9.3.6结构数组 226
9.3.7结构指针 228
9.3.8特殊结构 231
9.4联合和枚举 233
9.4.1联合 233
9.4.2结构和联合的区别 237
9.4.3枚举 238
9.5位域和类型说明 241
9.5.1位域 241
9.5.2类型说明 244
9.6函数 245
9.6.1函数的概念和分类 245
9.6.2函数的定义 247
9.6.3函数的参数 249
9.6.4函数的返回值 253
9.7函数的调用 254
9.7.1赋值调用与引用调用 254
9.7.2递归调用 255
9.7.3嵌套调用 256
9.8 函数的作用范围和变量作用域 258
9.8.1函数的作用范围 258
9.8.2函数的变量作用域 258
9.9一些特殊的函数 259
9.9.1 main函数 259
9.9.2库函数 260
9.10中断函数 261
9.10.1中断概述 261
9.10.2中断处理 262
9.10.3中断函数 263
9.11小结 264
第10章 C51语句和流程控制结构 265
10.1 C51语句 265
10.1.1说明语句 265
10.1.2表达式语句 265
10.1.3复合语句 266
10.1.4循环语句 267
10.1.5条件语句 271
10.1.6开关语句 274
10.1.7跳转语句 275
10.1.8函数调用语句 277
10.1.9空语句 278
10.2 C51的流程控制结构 278
10.3小结 278
第11章 预处理 279
11.1预处理命令概述 279
11.2宏定义指令 280
11.2.1 #define 280
11.2.2 #undef 282
11.3文件包含指令 282
11.4条件编译指令 284
11.4.1 #if、 #else、 #endif 284
11.4.2 #elif 284
11.4.3 #ifdef、 #ifndef 285
11.5其他编译指令 286
11.5.1 #line 286
11.5.2 #error 287
11.5.3 #pragma 287
11.6 C51编译器的控制指令 287
11.6.1源文件控制类 287
11.6.2目标文件(Object)控制类 288
11.6.3列表文件(listing)控制类 288
11.7 C51常用的头文件 288
11.8小结 291
第12章 C51的存储结构 292
12.1 51系列单片机的存储器结构与存储类型 292
12.1.1存储器结构 292
12.1.2存储器类型 293
12.1.3扩展数据类型 295
12.1.4存储模式 297
12.1.5 C51的存储器指针 297
12.2动态内存分配 300
12.2.1 C51的动态分配函数 300
12.2.2 malloc()和calloc()函数 301
12.3 C51启动文件STARTUPA51 301
12.4小结 306
第13章 Keil C51开发工具简介 307
13.1 μ Vision3集成开发环境 307
13.1.1安装Keil C51软件 307
13.1.2 μ Vision3项目管理窗口 309
13.1.3 μ Vision3的菜单栏 309
13.1.4 μ Vision3的工具栏 314
13.1.5 μ Vision3的管理配置 317
13.1.6 μ Vision3的各种常用窗口 321
13.2用μ Vision3创建项目 324
13.2.1启动并建立项目 324
13.2.2创建源文件 326
13.2.3编译项目 326
13.3项目仿真和调试 327
13.3.1仿真调试 327
13.3.2断点的使用 328
13.4 Proteus集成开发环境 329
13.4.1安装Proteus 329
13.4.2使用Proteus设计电路 331
13.4.3 Proteus与Keil μ Vision3联合调试仿真 333
13.5小结 336
第3部分 51系列单片机应用设计实例 337
第14章 键盘接口 338
14.1键盘概述 338
14.1.1键盘的编码 338
14.1.2键盘的可靠输入 338
14.1.3键盘的检测及程序响应 339
14.2单片机与键盘的接口 339
14.2.1独立式按键 339
14.2.2矩阵式键盘 341
14.3矩阵式键盘的接口实例 345
14.3.1电路图 345
14.3.2程序设计 346
14.3.3程序仿真 349
14.4小结 351
第15章 串行通信 352
15.1串行通信接口概述 352
15.1.1 RS-232C标准 352
15.1.2 RS-449标准 355
15.1.3 RS-423A标准 356
15.1.4 RS-422A标准 357
15.1.5 RS-485标准 358
15.1.6 20mA电流环路串行接口 358
15.2单片机与计算机的串行通信实例 359
15.2.1计算机读/写RAM 359
15.2.2静态RAM芯片HM628128 360
15.2.3单片机与RS-232C的接口 362
15.2.4系统电路原理图 362
15.2.5单片机程序设计 364
15.2.6上位机程序设计 368
15.2.7系统运行 368
15.3单片机之间的串行通信实例 369
15.3.1双机通信协议一 369
15.3.2双机通信协议二 371
15.4小结 374
第16章 LED及其应用 375
16.1 LED概述 375
16.1.1共阳极7段LED 375
16.1.2共阴极7段LED 377
16.2 LED显示方式 378
16.2.1静态显示 378
16.2.2动态显示 381
16.3 LED显示实例 384
16.3.1电路图 384
16.3.2程序设计 385
16.3.3程序仿真 389
16.4小结 389
第17章 液晶显示 390
17.1液晶显示概述 390
17.1.1液晶的来源 390
17.1.2 LCD结构及原理 391
17.1.3液晶显示模块的种类 391
17.1.4液晶显示模块的优点 392
17.2 1602液晶显示模块 393
17.2.1 1602液晶显示模块介绍 393
17.2.2 1602液晶模块应用实例 398
17.3液晶显示模块 404
17.3.1 LCD控制驱动器 404
17.3.2 ST7920功能说明 405
17.3.3 ST7920指令介绍 409
17.3.4 ST7920的控制方式 412
17.3.5液晶显示模块的控制 414
17.4 LCM控制实例 415
17.4.1电路设计 415
17.4.2程序设计 416
17.4.3运行效果 428
17.5小结 428
第18章 A/D转换 429
18.1 A/D转换概述 429
18.1.1A/D转换原理 429
18.1.2数据采集和转换的应用问题 431
18.1.3 A/D转换器的技术指标 432
18.1.4A/D转换器的选择原则 433
18.2高性能A/D转换器MAX197 433
18.2.1 MAX197的特性及引脚 434
18.2.2 MAX197的接口、控制字及时序 435
18.3 A/D转换实例 438
18.3.1电路图 438
18.3.2程序设计 440
18.4小结 444
第19章 D/A转换 445
19.1 D/A转换概述 445
19.1.1 D/A转换原理 445
19.1.2 D/A转换器的类型 446
19.1.3 D/A转换器的技术指标 448
19.2高性能D/A转换器AD558 449
19.2.1 AD558的引脚功能 450
19.2.2 AD558的电压输出模式 450
19.2.3 AD558的数据锁存 451
19.3光纤型相位调制器驱动电路 452
19.3.1光纤型相位调制器的原理 452
19.3.2电路功能介绍 453
19.3.3系统组成介绍 455
19.3.4电路图 456
19.3.5程序设计 459
19.3.6仿真与运行效果 463
19.4小结 464
第20章 电控调频收音机 466
20.1收音机基础知识 466
20.1.1无线电波的传播和接收 466
20.1.2调频收音机工作原理 467
20.1.3收音机常见电路 468
20.2TEA5767单片调频收音模块 468
20.2.1调频收音模块基础知识 469
20.2.2TEA5767调频收音模块功能特性 469
20.2.3TEA5767调频收音模块结构体系 470
20.2.4TEA5767调频收音模块操作方式 470
20.3使用51单片机控制调频收音模块 473
20.3.1电路图 474
20.3.2程序设计 474
20.3.3实验步骤 482
20.4小结 485
第21章 单片机与I2C总线 486
21.1 I2C总线概述 486
21.1.1 I2C总线工作原理 486
21.1.2 I2C总线的电气结构和负载能力 487
21.1.3 I2C总线器件的寻址方式 487
21.1.4 I2C总线的数据传输协议 488
21.2单片机读/写I2C模块 490
21.2.1汇编语言的I2C读/写模块 490
21.2.2 C语言的I2C读/写模块 494
21.3单片机读/写I2C实例 501
21.3.1 24系列串行EEPROM简介 502
21.3.2电路设计 502
21.3.3程序设计 503
21.3.4仿真分析 505
21.4小结 507
第22章 AT指令与短信收发 508
22.1 AT指令与短信收发概述 508
22.1.1 SMS协议 509
22.1.2 AT指令 510
22.1.3 PDU Mode 514
22.1.4短信中心 517
22.1.5无线MODEM收发短信的工作原理 518
22.2 SMS开发的方法 519
22.2.1 GSM模块 520
22.2.2手机 521
22.3工厂防盗监控系统 522
22.3.1电路图 522
22.3.2程序分析 524
22.3.3程序设计 526
22.4小结 530
第23章 步进电机控制 531
23.1步进电机概述 531
23.1.1步进电机种类 531
23.1.2步进电机的特征 533
23.1.3步进电机的驱动系统 534
23.1.4步进电机的速度、位置控制 534
23.2常用的步进电机 535
23.2.1永磁式步进电机 535
23.2.2步进电机模块 535
23.3步进电机接口实例 536
23.3.1电路图 537
23.3.2程序设计 538
23.3.3程序分析 544
23.4小结 545
第 24章 红外线接口 546
24.1红外线通信 546
24.1.1红外线通信原理 546
24.1.2典型的红外线通信方式 546
24.2红外线接口芯片MAX3100 548
24.2.1引脚及功能 548
24.2.2典型连接方式 549
24.3红外线接口实例 550
24.3.1电路图 550
24.3.2程序设计 552
24.4小结 556
第25章 声音及其应用 557
25.1单片机发音概述 557
25.1.1音调 557
25.1.2节拍 559
25.1.3单片机演奏音乐的方法 560
25.2单片机演奏音乐实例 560
25.2.1电路图 560
25.2.2程序设计 561
25.3小结 571
第4部分 增强型51系列单片机 573
第26章 万年历温度计应用 574
26.1日期和时间控制器DS 1302 574
26.1.1概述 574
26.1.2内部逻辑和操作方法 575
26.1.3命令字和复位控制 576
26.1.4数据读写时序和寄存器 577
26.1.5应用电路 579
26.1.6驱动程序 580
26.1.7实验结果 585
26.2温度传感器DS18B20 588
26.2.1概述 588
26.2.2应用电路 594
26.2.3驱动程序 594
26.2.4实验结果 599
26.3带有温度显示的万年历 602
26.3.1电路图 603
26.3.2配套程序 603
26.3.3实验结果 605
26.4小结 605
第27章 C8051F系列单片机 606
27.1 C8051 F系列单片机简介 606
27.1.1 C8051 F系列单片机基本特性 606
27.1.2 CIP 51内核 609
27.1.3选型表 620
27.2 C8051 F020单片机 622
27.2.1 C8051 F020单片机 622
27.2.2引脚封装 623
27.2.3程序存储器 624
27.2.4特殊功能寄存器 628
27.2.5中断系统 632
27.2.6输入/输出端口 633
27.2.7 ADC0子系统 642
27.2.8 ADC1子系统 647
27.2.9 DAC子系统 650
27.2.10电压基准 653
27.2.11比较器 653
27.2.12复位源 655
27.2.13可编程计数器阵列 658
27.3采集片内温度传感器实例 660
27.3.1电路图 660
27.3.2头文件C8051F020.H 663
27.3.3程序设计 669
27.3.4程序仿真 673
27.4采集端口数据实例 676
27.4.1电路图 676
27.4.2程序设计 677
27.4.3程序仿真 682
27.5液晶显示实例 685
27.5.1电路图 685
27.5.2程序设计 687
27.5.3程序编译仿真 699
27.6小结 700